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

ACR900ZI - Integração\Implantação de Títulos

Discussão em 'Progress 4GL' iniciado por andreluisbrandao, Fevereiro 5, 2016.

  1. gilsiqueira

    gilsiqueira Membro Participativo

    bootstrapmaster, por acaso voce nao tem um exemplo de liquidacao de titulo ?, estou com problemas com a apropriacao contabil. provalvelmente parametros.
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Segue a rotina que eu uso, dá uma estudada e veja se te ajuda.

    Arquivos Anexados:

  3. gilsiqueira

    gilsiqueira Membro Participativo

    valeu, agora é comigo, muito grato.
  4. gilsiqueira

    gilsiqueira Membro Participativo

    bootstrapmaster, eu preciso de um modelo das tabelas temporarias do acr901za.py.
    tt_integr_ace_liquidac_lote
    tt_integr_acr_item_lote
    ...
    e tt_integr_ace_liq_lote_aprop_ctbl, esta que estou com problemas, é a que faz o rateio de valor.
  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    nossa, viajei, vc falando de ACR e eu respondendo APB, desculpa
    Deixa eu ver aqui
  6. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Ve se isso te ajuda ...

    Código:
    /**
    *
    * PROGRAMA:
    *   imp/ime043a.p
    *
    * FINALIDADE:
    *   Faz a liquidacao dos titulos usando as antecipacoes, cheques e dinheiro. O
    *   saldo que restar no titulo eh o valor de boleto
    *
    */
    
    {iminc/ime043a.i}
    {cdp/cd0666.i}
    
    define input  parameter rOrcamento  as rowid    no-undo.
    define input  parameter table for tt_tit_acr.
    define input  parameter table for tt-antecip.
    define input  parameter table for tt-cheq-prop.
    define input  parameter table for tt-cheq-terc.
    define output parameter table for tt-erro.
    
    define variable i-sequencia     as integer no-undo.
    define variable i-sequencia-no  as integer no-undo.
    define variable c-ref           as char    no-undo.
    
    define shared variable c-seg-usuario as char no-undo.
    
    assign i-sequencia-no = i-sequencia-no + 1
           i-sequencia    = 1.
    
    find first tt_tit_acr no-lock no-error.
    
    /* do while true: */
    /*                                                                                             */
    /*     assign c-ref = tt_tit_acr.cod_espec_docto + string(TODAY,"999999") + string(i-sequencia-no). */
    /*                                                                                             */
    /*    find first movto_tit_acr                                         */
    /*         where movto_tit_acr.cod_estab = tt_tit_acr.cod_estab        */
    /*         and   movto_tit_acr.cod_refer = c-ref no-lock no-error.     */
    /*                                                                     */
    /*    find first tit_acr                                               */
    /*         where tit_acr.cod_estab = tt_tit_acr.cod_estab              */
    /*         and   tit_acr.cod_refer = c-ref no-lock no-error.           */
    /*                                                                     */
    /*    find first lote_impl_tit_acr                                     */
    /*         where lote_impl_tit_acr.cod_estab = tt_tit_acr.cod_estab    */
    /*         and   lote_impl_tit_acr.cod_refer = c-ref no-lock no-error. */
    /*                                                                     */
    /*     find first lote_liquidac_acr                                    */
    /*         where lote_liquidac_acr.cod_estab = tt_tit_acr.cod_estab    */
    /*         and   lote_liquidac_acr.cod_refer = c-ref no-lock no-error. */
    /*                                                                     */
    /*       assign i-sequencia-no = i-sequencia-no + 1.                   */
    /*                                                                     */
    /*       if  not avail movto_tit_acr     and                           */
    /*           not avail tit_acr           and                           */
    /*           not avail lote_impl_tit_acr and                           */
    /*           not avail lote_liquidac_acr then                          */
    /*           leave.                                                    */
    /* end.                                                                */
    
    run geraReferencia.
    
    /* release movto_tit_acr.     */
    /* release tit_acr.           */
    /* release lote_impl_tit_acr. */
    /* release lote_liquidac_acr. */
    
    /* trns-block:              */
    /* do on error undo ,leave: */
    
        if (tt_tit_acr.val_tit_acr + tt_tit_acr.val_ava) - tt_tit_acr.val_boleto = 0 then
            return "OK":U.
    
        create  tt_integr_acr_liquidac_lote.                                                       
        assign  tt_integr_acr_liquidac_lote.tta_cod_empresa                  = tt_tit_acr.cod_empresa
                tt_integr_acr_liquidac_lote.tta_cod_estab_refer              = tt_tit_acr.cod_estab
                tt_integr_acr_liquidac_lote.tta_cod_refer                    = c-ref
                tt_integr_acr_liquidac_lote.tta_cod_usuario                  = c-seg-usuario
                tt_integr_acr_liquidac_lote.tta_dat_transacao                = today
                tt_integr_acr_liquidac_lote.tta_dat_gerac_lote_liquidac      = today
                tt_integr_acr_liquidac_lote.tta_val_tot_lote_liquidac_infor  = 0
                tt_integr_acr_liquidac_lote.tta_val_tot_lote_liquidac_efetd  = 0
                tt_integr_acr_liquidac_lote.tta_val_tot_despes_bcia          = 0 
                tt_integr_acr_liquidac_lote.tta_ind_tip_liquidac_acr         = "Lote"
                tt_integr_acr_liquidac_lote.tta_ind_sit_lote_liquidac_acr    = "Em Digita‡Æo"
                tt_integr_acr_liquidac_lote.tta_nom_arq_movimen_bcia         = ""
                tt_integr_acr_liquidac_lote.tta_cdn_cliente                  = tt_tit_acr.cod_emitente
                tt_integr_acr_liquidac_lote.tta_log_enctro_cta               = no
                tt_integr_acr_liquidac_lote.ttv_rec_lote_liquidac_acr        = recid(tt_integr_acr_liquidac_lote)
                tt_integr_acr_liquidac_lote.ttv_log_atualiz_refer            = yes
                tt_integr_acr_liquidac_lote.ttv_log_gera_lote_parcial        = no. 
    
        create tt_integr_acr_liq_item_lote.
        assign tt_integr_acr_liq_item_lote.tta_cod_empresa                  = tt_tit_acr.cod_empresa
               tt_integr_acr_liq_item_lote.tta_cod_estab                    = tt_tit_acr.cod_estab
               tt_integr_acr_liq_item_lote.tta_cod_espec_docto              = tt_tit_acr.cod_espec_docto
               tt_integr_acr_liq_item_lote.tta_cod_ser_docto                = tt_tit_acr.cod_ser_docto
               tt_integr_acr_liq_item_lote.tta_num_seq_refer                = 10
               tt_integr_acr_liq_item_lote.tta_cod_tit_acr                  = tt_tit_acr.cod_tit_acr
               tt_integr_acr_liq_item_lote.tta_cod_parcela                  = string(int(tt_tit_acr.cod_parcela),"99")
               tt_integr_acr_liq_item_lote.tta_cdn_cliente                  = tt_tit_acr.cod_emitente
               tt_integr_acr_liq_item_lote.tta_cod_portador                 = tt_tit_acr.cod_portador
               tt_integr_acr_liq_item_lote.tta_cod_cart_bcia                = tt_tit_acr.cod_cart_bcia
               tt_integr_acr_liq_item_lote.tta_cod_finalid_econ             = "Corrente"
               tt_integr_acr_liq_item_lote.tta_cod_indic_econ               = "Real" 
               tt_integr_acr_liq_item_lote.tta_dat_cr_liquidac_tit_acr      = today 
               tt_integr_acr_liq_item_lote.tta_dat_cr_liquidac_calc         = today 
               tt_integr_acr_liq_item_lote.tta_dat_liquidac_tit_acr         = today
               tt_integr_acr_liq_item_lote.tta_val_tit_acr                  = tt_tit_acr.val_tit_acr + tt_tit_acr.val_ava
               tt_integr_acr_liq_item_lote.tta_val_liquidac_tit_acr         = tt_integr_acr_liq_item_lote.tta_val_tit_acr - tt_tit_acr.val_boleto /*DINHEIRO + CHEQUE + ANTEC*/
               tt_integr_acr_liq_item_lote.tta_val_desc_tit_acr             = 0
               tt_integr_acr_liq_item_lote.tta_val_abat_tit_acr             = 0
               tt_integr_acr_liq_item_lote.tta_val_despes_bcia              = 0
               tt_integr_acr_liq_item_lote.tta_val_multa_tit_acr            = 0
               tt_integr_acr_liq_item_lote.tta_val_juros                    = 0
               tt_integr_acr_liq_item_lote.tta_val_cm_tit_acr               = 0
               tt_integr_acr_liq_item_lote.tta_val_liquidac_orig            = 0
               tt_integr_acr_liq_item_lote.tta_ind_sit_item_lote_liquidac   = "Gerado". 
               tt_integr_acr_liq_item_lote.tta_log_gera_avdeb               = no.
               tt_integr_acr_liq_item_lote.tta_ind_tip_item_liquidac_acr    = "Pagamento".
               tt_integr_acr_liq_item_lote.ttv_rec_lote_liquidac_acr        = recid(tt_integr_acr_liquidac_lote).
               tt_integr_acr_liq_item_lote.ttv_rec_item_lote_liquidac_acr   = recid(tt_integr_acr_liq_item_lote).
               tt_integr_acr_liq_item_lote.tta_ind_tip_calc_juros           = "Simples".
              
        for each tt-cheq-prop:
            find first emsuni.cliente no-lock
                where emsuni.cliente.cdn_cliente = tt_tit_acr.cod_emitente.
    
            if cliente.num_pessoa mod 2 = 0 then
                find first pessoa_fisic no-lock
                    where pessoa_fisic.num_pessoa_fisic = cliente.num_pessoa no-error.
            else
                find first pessoa_jurid no-lock
                    where pessoa_jurid.num_pessoa_jurid = cliente.num_pessoa no-error.
    
            create tt_integr_acr_cheq.
            assign tt_integr_acr_cheq.tta_cod_banco                    = tt-cheq-prop.cod_banco
                   tt_integr_acr_cheq.tta_cod_agenc_bcia               = tt-cheq-prop.cod_agenc_bcia
                   tt_integr_acr_cheq.tta_cod_cta_corren               = tt-cheq-prop.cod_cta_corren
                   tt_integr_acr_cheq.tta_num_cheque                   = tt-cheq-prop.num_cheque
                   tt_integr_acr_cheq.tta_dat_emis_cheq                = tt-cheq-prop.dat_emis_cheq
                   tt_integr_acr_cheq.tta_dat_depos_cheq_acr           = tt-cheq-prop.Dat_prev_apres_cheq_acr
                   tt_integr_acr_cheq.tta_dat_prev_depos_cheq_acr      = tt-cheq-prop.Dat_prev_apres_cheq_acr
                   tt_integr_acr_cheq.tta_dat_desc_cheq_acr            = tt-cheq-prop.Dat_prev_apres_cheq_acr
                   tt_integr_acr_cheq.tta_dat_prev_desc_cheq_acr       = tt-cheq-prop.Dat_prev_apres_cheq_acr
                   tt_integr_acr_cheq.tta_val_cheque                   = tt-cheq-prop.Val_Cheque
                   tt_integr_acr_cheq.tta_log_cheq_terc                = no
                   tt_integr_acr_cheq.tta_num_pessoa                   = cliente.num_pessoa
                   tt_integr_acr_cheq.tta_cod_usuar_cheq_acr_terc      = c-seg-usuario
                   tt_integr_acr_cheq.tta_cod_indic_econ               = "Real"
                   tt_integr_acr_cheq.tta_cod_id_feder                 = cliente.cod_id_feder
                   tt_integr_acr_cheq.tta_nom_emit                     = if avail pessoa_fisic
                                                                         then pessoa_fisic.nom_pessoa
                                                                         else pessoa_jurid.nom_pessoa
                   tt_integr_acr_cheq.tta_nom_cidad_emit               = if avail pessoa_fisic
                                                                         then pessoa_fisic.nom_cidade
                                                                         else pessoa_jurid.nom_cidade
                   tt_integr_acr_cheq.tta_cod_estab                    = tt_tit_acr.cod_estab
                   tt_integr_acr_cheq.tta_cod_pais                     = "Bra".
    
            create tt_integr_acr_rel_pend_cheq.
            assign tt_integr_acr_rel_pend_cheq.ttv_rec_item_lote_liquidac_acr   = recid(tt_integr_acr_liq_item_lote)
                   tt_integr_acr_rel_pend_cheq.tta_cod_banco                    = tt-cheq-prop.cod_banco
                   tt_integr_acr_rel_pend_cheq.tta_cod_agenc_bcia               = tt-cheq-prop.cod_agenc_bcia
                   tt_integr_acr_rel_pend_cheq.tta_cod_cta_corren               = tt-cheq-prop.cod_cta_corren
                   tt_integr_acr_rel_pend_cheq.tta_num_cheque                   = tt-cheq-prop.num_cheque
                   tt_integr_acr_rel_pend_cheq.tta_val_vincul_cheq_acr          = tt-cheq-prop.val_utilizado.
    
        end.
    
    
        for each tt-cheq-terc:
            find first emsuni.cliente no-lock
                where emsuni.cliente.cdn_cliente = tt_tit_acr.cod_emitente.
    
            if cliente.num_pessoa mod 2 = 0 then
                find first pessoa_fisic no-lock
                    where pessoa_fisic.num_pessoa_fisic = cliente.num_pessoa no-error.
            else
                find first pessoa_jurid no-lock
                    where pessoa_jurid.num_pessoa_jurid = cliente.num_pessoa no-error.
    
            create tt_integr_acr_cheq.
            assign tt_integr_acr_cheq.tta_cod_banco                    = tt-cheq-terc.cod_banco
                   tt_integr_acr_cheq.tta_cod_agenc_bcia               = tt-cheq-terc.cod_agenc_bcia
                   tt_integr_acr_cheq.tta_cod_cta_corren               = tt-cheq-terc.cod_cta_corren
                   tt_integr_acr_cheq.tta_num_cheque                   = tt-cheq-terc.num_cheque
                   tt_integr_acr_cheq.tta_dat_emis_cheq                = tt-cheq-terc.dat_emis_cheq
                   tt_integr_acr_cheq.tta_dat_depos_cheq_acr           = tt-cheq-terc.Dat_prev_apres_cheq_acr
                   tt_integr_acr_cheq.tta_dat_prev_depos_cheq_acr      = tt-cheq-terc.Dat_prev_apres_cheq_acr
                   tt_integr_acr_cheq.tta_dat_desc_cheq_acr            = tt-cheq-terc.Dat_prev_apres_cheq_acr
                   tt_integr_acr_cheq.tta_dat_prev_desc_cheq_acr       = tt-cheq-terc.Dat_prev_apres_cheq_acr
                   tt_integr_acr_cheq.tta_val_cheque                   = tt-cheq-terc.Val_Cheque
                   tt_integr_acr_cheq.tta_log_cheq_terc                = yes
                   tt_integr_acr_cheq.tta_num_pessoa                   = tt-cheq-terc.Num_Pessoa
                   tt_integr_acr_cheq.tta_cod_usuar_cheq_acr_terc      = c-seg-usuario
                   tt_integr_acr_cheq.tta_cod_indic_econ               = "Real"
                   tt_integr_acr_cheq.tta_cod_id_feder                 = tt-cheq-terc.Cod_Id_Feder
                   tt_integr_acr_cheq.tta_nom_emit                     = tt-cheq-terc.Nom_Emit
                   tt_integr_acr_cheq.tta_nom_cidad_emit               = tt-cheq-terc.Nom_Cidad_Emit
                   tt_integr_acr_cheq.tta_cod_estab                    = tt_tit_acr.cod_estab
                   tt_integr_acr_cheq.tta_cod_pais                     = "Bra".
    
            create tt_integr_acr_rel_pend_cheq.
            assign tt_integr_acr_rel_pend_cheq.ttv_rec_item_lote_liquidac_acr   = recid(tt_integr_acr_liq_item_lote)
                   tt_integr_acr_rel_pend_cheq.tta_cod_banco                    = tt-cheq-terc.cod_banco
                   tt_integr_acr_rel_pend_cheq.tta_cod_agenc_bcia               = tt-cheq-terc.cod_agenc_bcia
                   tt_integr_acr_rel_pend_cheq.tta_cod_cta_corren               = tt-cheq-terc.cod_cta_corren
                   tt_integr_acr_rel_pend_cheq.tta_num_cheque                   = tt-cheq-terc.num_cheque
                   tt_integr_acr_rel_pend_cheq.tta_val_vincul_cheq_acr          = tt-cheq-terc.val_utilizado.
    
        end.
    
        for each tt-antecip:
            create tt_integr_acr_abat_antecip.
            assign  tt_integr_acr_abat_antecip.ttv_rec_item_lote_impl_tit_acr  = recid(tt_integr_acr_liq_item_lote)
                    tt_integr_acr_abat_antecip.ttv_rec_abat_antecip_acr        = recid(tt_integr_acr_abat_antecip)
                    tt_integr_acr_abat_antecip.tta_cod_estab                   = tt-antecip.cod_estab
                    tt_integr_acr_abat_antecip.tta_cod_estab_ext               = ""
                    tt_integr_acr_abat_antecip.tta_cod_espec_docto             = tt-antecip.cod_espec_docto
                    tt_integr_acr_abat_antecip.tta_cod_ser_docto               = tt-antecip.cod_ser_docto
                    tt_integr_acr_abat_antecip.tta_cod_tit_acr                 = tt-antecip.cod_tit_acr
                    tt_integr_acr_abat_antecip.tta_cod_parcela                 = tt-antecip.cod_parcela
                    tt_integr_acr_abat_antecip.tta_val_abtdo_antecip_tit_abat  = tt-antecip.Vl_Antec_Utiliz.
        end.
    
        run prgfin/acr/acr901ze.py (input  1,
                                    input  table tt_integr_acr_liquidac_lote,
                                    input  table tt_integr_acr_liq_item_lote,
                                    input  table tt_integr_acr_abat_antecip,
                                    input  table tt_integr_acr_abat_prev,
                                    input  table tt_integr_acr_cheq,
                                    input  table tt_integr_acr_liquidac_impto_2,
                                    input  table tt_integr_acr_rel_pend_cheq,
                                    input  table tt_integr_acr_liq_aprop_ctbl,
                                    input  table tt_integr_acr_liq_desp_rec,
                                    input  table tt_integr_acr_aprop_liq_antec,
                                    input  '',
                                    output table tt_log_erros_import_liquidac,
                                    input  table tt_integr_cambio_ems5).
        /* Muda portador dos cheques */
        if not can-find(first tt_log_erros_import_liquidac) then
            run imp/ime043b.p(input        rOrcamento,
                              input        table tt-cheq-prop,
                              input        table tt-cheq-terc,
                              input-output table tt-erro).
    
        for each tt_log_erros_import_liquidac:
            create tt-erro.
            assign tt-erro.i-sequen = tt_log_erros_import_liquidac.tta_num_seq       
                   tt-erro.cd-erro  = 17006
                   tt-erro.mensagem = '[Liq tit] - ' + string(tt_log_erros_import_liquidac.ttv_num_erro_log) + ' - ':u +
                                      tt_log_erros_import_liquidac.ttv_des_msg_erro.
    
        end.
    
        if can-find(first tt_log_erros_import_liquidac) then
            return 'NOK':u.
    
        return 'OK':u.
    /* end. */
    
    procedure geraReferencia:
        define variable iCont   as integer    no-undo.
        define variable iRandom as integer    no-undo.
        define variable iHandle as integer    no-undo.
    
        assign iHandle = integer(this-procedure:handle).
    
        assign i-sequencia-no = i-sequencia-no + 1
               c-ref = string(today - date(1, 1, year(today)) + 1) +
                       string(year(today)) +
                       'L':u. /* Liquidacao */
    
        do iCont = 1 to 3:
            assign iRandom = (random(0, iHandle) mod 26) + 97
                   c-ref = c-ref + chr(iRandom).
        end.
    
        assign c-ref = c-ref + string(random(iHandle, iHandle + 9)).
    end procedure.
    

Compartilhe esta Página