1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[RESOLVIDO] Saldo em Poder de Terceiro

Discussão em 'EMS , HCM e Totvs 11' iniciado por Lunardo, Junho 25, 2019.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. Lunardo

    Lunardo Membro Participativo

    Boa tarde Pessoal,
    alguém sabe como faço para buscar o saldo atual em poder de terceiro dentro do Datasul?

    Sei que são algumas das tabelas são 'saldo-terc' e 'componente', mas da forma que fiz a busca esta muito lenta, visto que preciso buscar todo o período de movimentação.
  2. JQMartin

    JQMartin Sem Pontuação

    Boa noite,

    Há um tempo atrás, tive que fazer um programa de ajuste de Saldo em Poder de Terceiros. Um monte de notas saíram para terceiros e o pessoal recebeu de forma descasada, ou seja, o material saiu para um terceiro mas nunca mais voltou daquele terceiro, no sistema. Como o saldo persistia nos relatórios, precisei desenvolver um ajuste que fazia o movimento inverso.

    Compartilho com você o programa que fiz, baseado na tela RE0408, que é a atualização de Saldos em Poder de Terceiros manualmente. Só tenha atenção que este programa que fiz afeta apenas Saldo de Estoque (quantidade de itens). Se você precisar cruzar valores com a conta "Saldo em Poder de Terceiros", aí o buraco é bem mais embaixo.

    As tabelas são componente e saldo-terc of componente. A tua busca deve estar lenta porque não deve estar usando o indice todo da componente, que se baseia em item. Eu sofri bastante com lentidão no começo. A dica seria tentar descobrir os itens que tem relação com terceiro. Importando e buscando só por eles vai ficar mais rápido. É o que o script abaixo faz.

    Código:
    input from "C:\Users\b35ems\Desktop\sdo_terc\unico-final.txt".
    
    def temp-table tt-componente like componente.
    
    def temp-table tt-item no-undo
        field cod-estabel  as char
        field cod-emitente as int
        field it-codigo    as char format "x(16)"
        field dt-movto     as date
        field nr-seq       as int
        field serie        as char
        field nro-docto    as char
        field nat-operacao as char
        field nat-retorno  as char.
       
    def var h-acomp as handle.
    
    run utp/ut-acomp.p persistent set h-acomp.
    
    run pi-inicializar in h-acomp (input "Lendo arquivo de notas").
       
    repeat:
       
        create tt-item.
        import delimiter ";" tt-item.
    
    
    end.
    
    input close.
    
    output to "C:\Users\b35ems\Desktop\sdo_terc\log.txt".
    
    for each tt-item where
             tt-item.cod-estab <> "":
            
             run pi-acompanhar in h-acomp (input string(tt-item.cod-emitente) + " " +
                                                 string(tt-item.nro-docto) + " " +
                                                 string(tt-item.serie) + " " +
                                                 string(tt-item.nr-seq) + " " +
                                                 string(tt-item.nat-operacao) + " " +
                                                 string(tt-item.it-codigo)).
            
             find first componente where
                        componente.cod-emitente = tt-item.cod-emitente and
                        componente.it-codigo    = tt-item.it-codigo    and
                        componente.dt-retorno   = tt-item.dt-movto     and
                        componente.sequencia    = tt-item.nr-seq       and
                        componente.serie-docto  = tt-item.serie        and
                        componente.nro-docto    = tt-item.nro-docto    and
                        componente.nat-operacao = tt-item.nat-operacao no-lock no-error.
             if avail componente then do:
                /*update componente except char-1 char-2 with 1 col scrollable.*/
    
                create tt-componente.
                buffer-copy componente to tt-componente.
                assign tt-componente.componente   = if componente.componente = 1 then 2 else 1
                       tt-componente.nat-operacao = tt-item.nat-retorno
                       tt-componente.nat-comp     = componente.nat-operacao
                       tt-componente.serie-comp   = componente.serie-docto
                       tt-componente.nro-comp     = componente.nro-docto
                       tt-componente.seq-comp     = componente.sequencia
                       tt-componente.dt-retorno   = today.
                      
                find first saldo-terc of componente no-error.
                if avail saldo-terc and saldo-terc.quantidade <> 0 then
                   assign saldo-terc.quantidade = 0.
               
                release componente.                  
             end.
            
             find first componente of tt-componente no-lock no-error.
             if not avail componente then do:
                create componente.
                buffer-copy tt-componente to componente.
             end.
             else  do:
                put unformatted "Ja existe " + string(componente.cod-emitente) + " "
                                             + string(componente.it-codigo)    + " "
                                             + string(componente.sequencia)    + " "
                                             + string(componente.serie-docto)  + " "
                                             + string(componente.nro-docto)    + " "
                                             + string(componente.nat-operacao) skip.
             end.
    end.
    
    run pi-finalizar in h-acomp.
    
    output close.
    reissobr curtiu isso.
  3. Lunardo

    Lunardo Membro Participativo

    Obrigado @JQMartin , vou fazer os teste e dou um retorno.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página