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

Estornar Movimento ACR

Discussão em 'EMS , HCM e Totvs 11' iniciado por baierski, Setembro 23, 2019.

  1. baierski

    baierski Sem Pontuação

    Boa tarde,

    Preciso estonar somente o movimento "Acerto Valor a Menor" de vários títulos no ACR.
    Alguém conhece alguma API que eu possa utilizar para estornar esse movimento automaticamente?
    Manualmente está inviável.

    Grato pela ajuda.

    Cristiano.
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Código:
    /*  ------------------------------------------------------------
        Programa .:
        Autor ....: Richard Edgar - Imesul
        Data .....:
        Descricao :
        ------------------------------------------------------------ */
        {grid2/error.i}
    
        define variable error as ExceptionControl no-undo.
    
        define temp-table ttTitulos no-undo
            field cod_estab          as character
            field cod_espec_docto    as character
            field cod_ser_docto      as character
            field cod_tit_acr        as character
            field cod_parcela        as character
    
            field cod_estab_ca       as character
            field cod_espec_docto_ca as character
            field cod_ser_docto_ca   as character
            field cod_tit_acr_ca     as character
            field cod_parcela_ca     as character.
    
        def temp-table tt_input_estorno no-undo
            field ttv_cod_label                    as character
            field ttv_des_conteudo                 as character
            field ttv_num_seq                      as integer
            index tt_primario                      is primary
                  ttv_num_seq                      ascending.
    
        def temp-table tt_log_erros_estorn_cancel no-undo
            field tta_cod_estab                    as character
            field tta_num_id_tit_acr               as integer
            field tta_num_id_movto_tit_acr         as integer
            field ttv_num_mensagem                 as integer
            field ttv_des_msg_erro                 as character
            field ttv_des_msg_ajuda                as character
            index tt_relac_tit_acr               
                  tta_cod_estab                    ascending
                  tta_num_id_tit_acr               ascending
                  tta_num_id_movto_tit_acr         ascending
                  ttv_num_mensagem                 ascending.
    
    
        function geraReferencia returns character(codEstabel as character):
            define variable c-ref          as character no-undo.
            define variable i-sequencia-no as integer   no-undo.
    
            define buffer bTitAcr      for tit_acr.
            define buffer bMovtoTitAcr for movto_tit_acr.
    
            assign i-sequencia-no = 0.
            do while true:
               assign c-ref = "ES" + string(TODAY,"999999") + string(i-sequencia-no).
    
               find first bMovtoTitAcr no-lock
                    where bMovtoTitAcr.cod_estab = codEstabel
                      and bMovtoTitAcr.cod_refer = c-ref
                          no-error.
    
               find first bTitAcr no-lock
                    where bTitAcr.cod_estab = codEstabel
                      and bTitAcr.cod_refer = c-ref
                          no-error.
    
               find first lote_impl_tit_acr no-lock
                    where lote_impl_tit_acr.cod_estab = codEstabel
                      and lote_impl_tit_acr.cod_refer = c-ref
                          no-error.
    
               find first lote_liquidac_acr no-lock
                    where lote_liquidac_acr.cod_estab = codEstabel
                      and lote_liquidac_acr.cod_refer = c-ref
                          no-error.
    
               if  not avail bMovtoTitAcr      and
                   not avail bTitAcr           and
                   not avail lote_impl_tit_acr and
                   not avail lote_liquidac_acr then
                   leave.
    
               assign i-sequencia-no = i-sequencia-no + 1.
            end.
    
            release bMovtoTitAcr.
            release bTitAcr.
            release lote_impl_tit_acr.
            release lote_liquidac_acr.
    
            return c-ref.
    
        end function.
    
    
    
        define variable linha       as character no-undo.
        define variable contador    as integer   no-undo.
        define variable cod_refer   as character no-undo.
        define variable contadorLIQ as integer   no-undo.
    
    
        define buffer cheques for tit_acr.
        define buffer titulos for tit_acr.
    
        empty temp-table ttTitulos.
    
        assign error = ExceptionControl:getInstance().
    
        input from value('c:\temp\titulosNACA.csv').
    
    
        repeat:
            import unformatted linha.
            if num-entries(linha,';') = 10 then do:
                create ttTitulos.
                assign ttTitulos.cod_estab          = entry( 1,linha,';')
                       ttTitulos.cod_espec_docto    = entry( 2,linha,';')
                       ttTitulos.cod_ser_docto      = entry( 3,linha,';')
                       ttTitulos.cod_tit_acr        = entry( 4,linha,';')
                       ttTitulos.cod_parcela        = entry( 5,linha,';')
                       ttTitulos.cod_estab_ca       = entry( 6,linha,';')
                       ttTitulos.cod_espec_docto_ca = entry( 7,linha,';')
                       ttTitulos.cod_ser_docto_ca   = entry( 8,linha,';')
                       ttTitulos.cod_tit_acr_ca     = entry( 9,linha,';')
                       ttTitulos.cod_parcela_ca     = entry(10,linha,';').
                assign contador = contador + 1.
            end.
        end.
        input close.
    
        output to value('c:\temp\errosNACA.txt').
        error:clearExceptions().
        for each ttTitulos no-lock
            break
              by ttTitulos.cod_estab_ca
              by ttTitulos.cod_espec_docto_ca
              by ttTitulos.cod_ser_docto_ca
              by ttTitulos.cod_tit_acr_ca
              by ttTitulos.cod_parcela_ca:
    
            find first cheques no-lock
                 where cheques.cod_estab       = ttTitulos.cod_estab_ca
                   and cheques.cod_espec_docto = ttTitulos.cod_espec_docto_ca
                   and cheques.cod_ser_docto   = ttTitulos.cod_ser_docto_ca
                   and cheques.cod_tit_acr     = ttTitulos.cod_tit_acr_ca
                   and cheques.cod_parcela     = ttTitulos.cod_parcela_ca
                       no-error.
    
            if not avail cheques then next.
    
            if cheques.log_sdo_tit_acr     = no  then next.
            if cheques.log_tit_acr_estordo = yes then next.
            assign cod_refer = ''.
            for each movto_tit_acr of cheques no-lock:
                if movto_tit_acr.ind_trans_acr_abrev = 'IMPL' then do:
                    assign cod_refer = movto_tit_acr.cod_refer.
                end.
            end.
    
            find first titulos no-lock
                 where titulos.cod_estab       = ttTitulos.cod_estab
                   and titulos.cod_espec_docto = ttTitulos.cod_espec_docto
                   and titulos.cod_ser_docto   = ttTitulos.cod_ser_docto
                   and titulos.cod_tit_acr     = ttTitulos.cod_tit_acr
                   and titulos.cod_parcela     = ttTitulos.cod_parcela
                       no-error.
    
            assign contadorLIQ = 0.
            for each movto_tit_acr of titulos no-lock:
                if movto_tit_acr.ind_trans_acr_abrev = 'LIQ' then do:
                    if movto_tit_acr.log_movto_estordo = no then do:
                        assign contadorLIQ = contadorLIQ + 1.
                    end.
                end.
            end.
            if contadorLIQ = 1 then do:
                for each movto_tit_acr of titulos no-lock:
                    if movto_tit_acr.ind_trans_acr_abrev = 'LIQ' then do:
                        if movto_tit_acr.log_movto_estordo = no then do:
                            run estornarTitulo.
                        end.
                    end.
                end.
            end.
        end.
    
        output close.
    
        procedure estornarTitulo:
            empty temp-table tt_input_estorno.
            empty temp-table tt_log_erros_estorn_cancel.
    
            create tt_input_estorno.
            assign tt_input_estorno.ttv_cod_label    = "N¡vel"
                   tt_input_estorno.ttv_des_conteudo = "Movimentos"
                   tt_input_estorno.ttv_num_seq      = 1.
    
            create tt_input_estorno.
            assign tt_input_estorno.ttv_cod_label    = "Opera‡Æo"
                   tt_input_estorno.ttv_des_conteudo = "Estorno"
                   tt_input_estorno.ttv_num_seq      = 1.
    
            create tt_input_estorno.
            assign tt_input_estorno.ttv_cod_label    = "Estabelecimento"
                   tt_input_estorno.ttv_des_conteudo = string(titulos.cod_estab)
                   tt_input_estorno.ttv_num_seq      = 1.
    
            create tt_input_estorno.
            assign tt_input_estorno.ttv_cod_label    = "Data"
                   tt_input_estorno.ttv_des_conteudo = string(today)
                   tt_input_estorno.ttv_num_seq      = 1.
    
            create tt_input_estorno.
            assign tt_input_estorno.ttv_cod_label    = "Referˆncia"
                   tt_input_estorno.ttv_des_conteudo = geraReferencia(titulos.cod_estab)
                   tt_input_estorno.ttv_num_seq      = 1.
    
            create tt_input_estorno.
            assign tt_input_estorno.ttv_cod_label    = "Hist¢rico"
                   tt_input_estorno.ttv_des_conteudo = 'Ajuste Contabil'
                   tt_input_estorno.ttv_num_seq      = 1.
    
            create tt_input_estorno.
            assign tt_input_estorno.ttv_cod_label    = "ID Titulo"
                   tt_input_estorno.ttv_des_conteudo = string(titulos.num_id_tit_acr).
                   tt_input_estorno.ttv_num_seq      = 1.
    
            create tt_input_estorno.
            assign tt_input_estorno.ttv_cod_label    = "ID Movimento"
                   tt_input_estorno.ttv_des_conteudo = string(movto_tit_acr.num_id_movto_tit_acr)
                   tt_input_estorno.ttv_num_seq      = 1.
    
            run prgfin/acr/acr715zb.py (input 1,
                                        input  table tt_input_estorno,
                                        output table tt_log_erros_estorn_cancel).
    
            error:clearExceptions().
            if can-find(first tt_log_erros_estorn_cancel) then do:
                for each tt_log_erros_estorn_cancel:
                    error:addException('acr715zb',
                                       'Erro estorno titulo',
                                       substitute('&1 &2 &3 - Erro &4 - &5 - &6',
                                                  titulos.cod_estab,
                                                  titulos.cod_tit_acr,
                                                  titulos.cod_parcela,
                                                  tt_log_erros_estorn_cancel.ttv_num_mensagem,
                                                  tt_log_erros_estorn_cancel.ttv_des_msg_erro,
                                                  tt_log_erros_estorn_cancel.ttv_des_msg_ajuda)
                                       ).
                end.
                error:printExceptions().
            end.
        end procedure.
    
    
  3. baierski

    baierski Sem Pontuação

    Funcionou, Obrigado.
  4. lfernando

    lfernando Sem Pontuação

    Boa tarde, eu usei a ideia do programa de OO para estornar movimento e titulos, usando api acr715zb.py, so que ele estorna o movimento mas da o erro.
    Erro 13995 - T¡tulo vinculado a outro documento! - O t¡tulo foi gerado a partir de uma liquida‡Æo ou foi
    se eu for no produto depois de rodar o programa para estornar bas_tit_acr_estorno ele da a mesma mensagem, mas como pergunta, ai e so dar o sim que ele estorna.
    Alguma Idéia?
  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    achar o outro documento em titulos relacionados e externar o vinculo.
  6. lfernando

    lfernando Sem Pontuação

    Obrigado Richard pela reposta tão rápida, não conheço muito do Financeiro, minha praia e manufatura e materiais, como poderia encontrar um titulo relacionado no próprio tit_acr , qual campo faz este vinculo?
    Obrigado

Compartilhe esta Página