[RESOLVIDO] API para gerar antecipação no APB EMS506

Discussão em 'EMS , HCM e Totvs 11' iniciado por roberto.silva, Junho 4, 2014.

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

    roberto.silva Sem Pontuação

    Bom dia.

    Alguém teria a documentação ou exemplo de código para gerar títulos de antecipação no EMS506, módulo APB?

    Desde já, agradeço.
  2. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Olá @roberto.silva,

    Ainda não cheguei a utilizar, pois abortaram a tarefa, mas me passaram que o programa é esse prgfin/apb/apb905zd.py , precisa ir atrás das definições das temp-table.

    Se conseguir mais alguma coisa eu passo.
  3. andcamargo

    andcamargo Sem Pontuação

    Segue documentação da Api e definições de temp-table usadas no processo.

    Arquivos Anexados:

    pizzaia e Cobra.cne curtiram isso.
  4. roberto.silva

    roberto.silva Sem Pontuação

    Obrigado pela ajuda. Estou fazendo um programa para gerar antecipações de importação (COMEX) direto no APB, a partir do pedido de compra. Faltava apenas este script para completar.

    Valeu!!!!
  5. carsystem

    carsystem Sem Pontuação

    Segue exemplo de Programa:
    /****************************************************************************
    ** Programa..: ccp/gera-apb-af.p
    ** Objetivo..: Gera Antecipação a Fornecedor no APB
    ** Autor.....: Claudio Ribeiro
    ** Data......: 12/09/2013
    **
    ** Alterações:
    **
    ****************************************************************************/

    {include/buffers.i}
    {include/i-prgvrs.i CN0620RP 2.00.00.003} /*** 010003 ***/

    {utp/ut-glob.i} /* Definicao Variaveis Globais */
    {cnp/cn0620.i} /* Temp-table's Integracao EMS 5 */
    {cnp/cn0620.i1} /* Temp-table's Integracao EMS 5 */
    {btb/btb009za.i} /* Temp-table tt_erros_conexao */
    {cdp/cdcfgmat.i} /* Pre-processadores Materiais */
    {cdp/cdcfgdis.i} /* Pre-processadores Distribuicao */

    /* Recebimento de Parametros */
    DEF INPUT PARAM p-id_aut_pagto LIKE es_aut_pagto.id_aut_pagto.
    DEF INPUT-OUTPUT PARAM TABLE FOR tt-integ-erro.
    /* DEF VAR p-id_aut_pagto LIKE es_aut_pagto.id_aut_pagto INIT 1 NO-UNDO. */

    CREATE tt-param.
    ASSIGN tt-param.usuario = c-seg-usuario
    tt-param.destino = 3
    tt-param.data-exec = TODAY
    tt-param.hora-exec = TIME
    tt-param.arquivo = SESSION:TEMP-DIRECTORY + "ad-apb-" + STRING(p-id_aut_pagto) + ".tmp":U.

    FIND FIRST es_aut_pagto NO-LOCK WHERE
    es_aut_pagto.id_aut_pagto = p-id_aut_pagto NO-ERROR.
    IF NOT AVAIL es_aut_pagto THEN DO:
    RETURN "NOK".
    END.

    DEF BUFFER b-tit_ap FOR tit_ap.

    /* Include Padrao para Variaveis de Relatorio */
    {include/i-rpvar.i}

    /* Definicao de Variaveis */
    DEF VAR h-acomp AS HANDLE NO-UNDO.
    DEF VAR h-apapi022b AS HANDLE NO-UNDO.
    DEF VAR c-selecao AS CHAR FORMAT "X(15)":U NO-UNDO.
    DEF VAR c-parametros AS CHAR FORMAT "X(15)":U NO-UNDO.
    DEF VAR c-destino AS CHAR FORMAT "X(20)":U NO-UNDO.
    DEF VAR c-arquivo AS CHAR FORMAT "X(35)":U NO-UNDO.
    DEF VAR c-observacao AS CHAR FORMAT "X(23)":U NO-UNDO.
    DEF VAR c-descricao AS CHAR FORMAT "X(18)":U NO-UNDO.
    DEF VAR l-impressao AS LOG NO-UNDO.
    DEF VAR l-ems50 AS LOG NO-UNDO.
    DEF VAR l-possui-erro AS LOG NO-UNDO.
    DEF VAR l-validacao-ok AS LOG INIT YES NO-UNDO.
    DEF VAR l-imp-cabecalho AS LOG INIT YES NO-UNDO.
    DEF VAR l-cabec-principal AS LOG INIT YES NO-UNDO.
    DEF VAR i-empresa-prin AS INTEGER NO-UNDO.
    DEF VAR c-cod_refer AS CHAR NO-UNDO.

    /* Definicao Temp-Table's */

    {app/apapi022a.i} /* Programa APAPI022B */
    {app/ap0503aa.i} /* Variaveis IR */

    /* Definicao Literais */
    DEF VAR c-str-acomp1 AS CHAR NO-UNDO.
    DEF VAR c-str-erro AS CHAR NO-UNDO.
    DEF VAR c-str-advertencia AS CHAR NO-UNDO.
    DEF VAR c-str-impressao AS CHAR NO-UNDO.
    DEF VAR c-str-arquivo AS CHAR NO-UNDO.
    DEF VAR c-str-usuario AS CHAR NO-UNDO.
    DEF VAR de-perc-total AS DEC NO-UNDO.
    DEF VAR de-valor-total LIKE es_aut_pagto.valor_pagto NO-UNDO.

    /* Definicao de FRAME's do Relatorio */
    FORM SKIP(2)
    es_aut_pagto.cod-emitente AT 11 "-"
    emitente.nome-emit NO-LABEL SKIP
    es_aut_pagto.id_aut_pagto AT 06
    WITH NO-BOX SIDE-LABEL WIDTH 132 FRAME f-contrato STREAM-IO.

    RUN utp/ut-trfrrp.p (INPUT FRAME f-contrato:HANDLE).

    /* FORM SKIP(2) */
    /* es_aut_pagto.cod-emitente AT 11 */
    /* es_aut_pagto.id_aut_pagto AT 06 */
    /* WITH NO-BOX SIDE-LABEL WIDTH 132 FRAME f-contrato-branco STREAM-IO. */
    /* */
    /* RUN utp/ut-trfrrp.p (INPUT FRAME f-contrato-branco:HANDLE). */

    FORM es_aut_pagto.id_aut_pagto COLUMN-LABEL "Evento" SPACE(0)
    c-descricao COLUMN-LABEL "Descrição" SPACE(0)
    es_aut_pagto.dt_pagto SPACE(0)
    es_aut_pagto.valor_pagto COLUMN-LABEL "Vlr Realizado" SPACE(0)
    WITH NO-BOX WIDTH 132 ATTR-SPACE 64 DOWN FRAME f-evento STREAM-IO.

    RUN utp/ut-trfrrp.p (INPUT FRAME f-evento:HANDLE).

    FORM tt-integ-erro.cod-msg AT 08 COLUMN-LABEL "Mensag" FORMAT ">>>>>9":U SPACE(0)
    tt-integ-erro.des-msg COLUMN-LABEL "Descrição" FORMAT "X(100)":U SPACE(0)
    tt-integ-erro.tipo-msg COLUMN-LABEL "Tipo" FORMAT "X(011)":U SPACE(0)
    WITH NO-BOX WIDTH 132 ATTR-SPACE 64 DOWN FRAME f-erro STREAM-IO.

    RUN utp/ut-trfrrp.p (INPUT FRAME f-erro:HANDLE).

    /* Strings do Programa */

    {utp/ut-liter.i Geração_AF_da_Autorização_Pagto * C}
    ASSIGN c-str-acomp1 = TRIM(RETURN-VALUE).

    {utp/ut-liter.i Erro * C}
    ASSIGN c-str-erro = TRIM(RETURN-VALUE).

    {utp/ut-liter.i Advertência * C}
    ASSIGN c-str-advertencia = TRIM(RETURN-VALUE).

    {utp/ut-liter.i IMPRESSÃO * C}
    ASSIGN c-str-impressao = TRIM(RETURN-VALUE).

    {utp/ut-liter.i Arquivo * C}
    ASSIGN c-str-arquivo = TRIM(RETURN-VALUE).

    {utp/ut-liter.i Usuário * C}
    ASSIGN c-str-usuario = TRIM(RETURN-VALUE).

    {utp/ut-liter.i Geração_Antecipação * C}
    ASSIGN c-titulo-relat = TRIM(RETURN-VALUE) + " - ":U.

    {utp/ut-liter.i Eventos * C}
    ASSIGN c-titulo-relat = c-titulo-relat + TRIM(RETURN-VALUE).

    /* Include Padrao para Output de Relatorios */
    {include/i-rpout.i &STREAM="stream str-rp"}

    /* Include com a Definicao da FRAME de Cabecalho e Rodape */
    {include/i-rpcab.i &STREAM="str-rp"}

    /* Bloco Principal do Programa */
    ASSIGN c-programa = "Gera-AF-APB":U
    c-versao = "1.00"
    c-revisao = ".00.000"
    c-sistema = "CCP":U.

    FIND FIRST param-global NO-LOCK NO-ERROR.

    IF AVAIL param-global THEN DO:
    FIND FIRST empresa
    WHERE empresa.ep-codigo = param-global.empresa-prin NO-LOCK NO-ERROR.

    IF AVAIL empresa THEN
    ASSIGN c-empresa = empresa.nome.
    END.

    /* Integra EMS5? */
    ASSIGN l-ems50 = CAN-FIND (FIRST funcao
    WHERE funcao.cd-funcao = "adm-apb-ems-5.00":U AND
    funcao.ativo = YES AND
    funcao.log-1 = YES).

    VIEW STREAM str-rp FRAME f-cabec.
    VIEW STREAM str-rp FRAME f-rodape.

    RUN utp/ut-acomp.p PERSISTENT SET h-acomp.
    RUN pi-inicializar IN h-acomp (INPUT c-str-acomp1).

    ASSIGN l-impressao = NO.

    IF l-ems50 THEN DO:
    RUN pi-conecta-ems50 IN THIS-PROCEDURE (INPUT 1).
    END.
    ELSE DO:
    IF NOT VALID-HANDLE(h-apapi022b) OR
    h-apapi022b:TYPE <> "PROCEDURE":U OR
    h-apapi022b:FILE-NAME <> "app/apapi022b.p":U THEN DO:
    RUN app/apapi022b.p PERSISTENT SET h-apapi022b.
    END.
    END.

    ASSIGN l-cabec-principal = YES.

    FOR EACH es_aut_pagto NO-LOCK WHERE
    es_aut_pagto.id_aut_pagto = p-id_aut_pagto,
    FIRST es_aut_pagto_param NO-LOCK WHERE
    es_aut_pagto_param.id_aut_pagto_param = es_aut_pagto.id_aut_pagto_param.

    ASSIGN l-impressao = YES.

    &IF INTEGER(ENTRY(1,PROVERSION,".")) >= 9 &THEN
    EMPTY TEMP-TABLE tt-integ-erro.
    &ELSE
    FOR EACH tt-integ-erro:
    DELETE tt-integ-erro.
    END.
    &ENDIF

    RUN pi-acompanhar IN h-acomp (INPUT "ID: " + STRING(es_aut_pagto.id_aut_pagto)).

    /* Validacoes */
    ASSIGN c-observacao = "":U
    l-possui-erro = NO
    l-validacao-ok = YES
    de-perc-total = 0
    de-valor-total = 0.

    RUN pi-validacao IN THIS-PROCEDURE.

    IF RETURN-VALUE = "NOK":U THEN
    ASSIGN c-observacao = "Conta Contábil inválida".

    /* Nenhum Erro Encontrado? */
    IF c-observacao = "":U THEN DO:

    /* Gera Antecipacao? */
    IF es_aut_pagto_param.cod_espec_docto = "AF" OR es_aut_pagto_param.cod_espec_docto = "AV" THEN DO:

    IF l-ems50 THEN DO:
    /* Integracao Contas Pagar EMS5 */
    RUN pi-criar-tt-ems5 IN THIS-PROCEDURE.

    RUN prgfin/apb/apb905za.py (INPUT 1,
    INPUT "":U,
    INPUT-OUTPUT TABLE tt_integr_apb_antecip_pef_pend,
    INPUT TABLE tt_integr_apb_aprop_ctbl_pend,
    INPUT TABLE tt_integr_apb_impto_impl_pend,
    INPUT TABLE tt_integr_apb_abat_prev_provis,
    OUTPUT TABLE tt_log_erros_atualiz).

    IF CAN-FIND (FIRST tt_log_erros_atualiz) THEN DO:
    ASSIGN l-possui-erro = YES.

    /* OUTPUT TO c:\temp\tt_log_erros_atualiz.txt NO-CONVERT. */
    FOR EACH tt_log_erros_atualiz:
    CREATE tt-integ-erro.
    ASSIGN tt-integ-erro.cod-msg = tt_log_erros_atualiz.ttv_num_mensagem
    tt-integ-erro.des-msg = tt_log_erros_atualiz.ttv_des_msg_erro
    tt-integ-erro.tipo-msg = "":U.
    /* DISP tt_log_erros_atualiz */
    /* WITH WIDTH 600 STREAM-IO. */
    END.
    /* OUTPUT CLOSE. */
    END.
    ELSE DO:
    FOR FIRST tt_integr_apb_antecip_pef_pend:
    ASSIGN c-observacao = tt_integr_apb_antecip_pef_pend.tta_cod_refer.
    END.
    END.
    END.
    ELSE DO:
    /* Integracao Contas Pagar EMS2 */
    RUN pi-criar-tt-ems2 IN THIS-PROCEDURE.

    RUN pi-execulte IN h-apapi022b (INPUT TABLE tt-antecip,
    INPUT TABLE tt-previsao,
    OUTPUT TABLE tt-log-tit-ap,
    INPUT TABLE tt-ant-ir).

    IF CAN-FIND (FIRST tt-log-tit-ap) THEN DO:
    ASSIGN l-possui-erro = YES.

    FOR EACH tt-log-tit-ap:
    CREATE tt-integ-erro.
    ASSIGN tt-integ-erro.cod-msg = tt-log-tit-ap.cod-erro
    tt-integ-erro.des-msg = tt-log-tit-ap.descricao.

    CASE tt-log-tit-ap.tipo-erro:
    WHEN 1 THEN ASSIGN tt-integ-erro.tipo-msg = c-str-erro.
    WHEN 2 THEN ASSIGN tt-integ-erro.tipo-msg = c-str-advertencia.
    END CASE.
    END.
    END.
    ELSE DO:
    FOR FIRST tt-antecip:
    ASSIGN c-observacao = tt-antecip.referencia.
    END.
    END.
    END.

    /* Antecipacao Gerada com Sucesso */
    IF NOT l-possui-erro THEN DO:

    /* ASSIGN es_aut_pagto.log-antecip-gerad = YES. */

    END.
    END.

    IF l-validacao-ok THEN DO:

    /* Impressao do Cabecalho */
    IF l-cabec-principal THEN DO:
    ASSIGN l-imp-cabecalho = YES
    /*l-cabec-principal = NO*/.

    FOR FIRST emitente
    FIELDS (nome-emit)
    WHERE emitente.cod-emitente = es_aut_pagto.cod-emitente NO-LOCK: END.

    DISPLAY STREAM str-rp
    es_aut_pagto.cod-emitente
    emitente.nome-emit
    es_aut_pagto.id_aut_pagto
    WITH FRAME f-contrato.
    DOWN WITH FRAME f-contrato.

    /* ELSE DO: */
    /* DISPLAY STREAM str-rp */
    /* "0":U @ es_aut_pagto.cod-emitente */
    /* "0":U @ es_aut_pagto.id_aut_pagto */
    /* WITH FRAME f-contrato-branco. */
    /* DOWN WITH FRAME f-contrato-branco. */
    /* END. */
    END.

    DISPLAY STREAM str-rp
    es_aut_pagto.id_aut_pagto
    es_aut_pagto_param.desc_aut_pagto @ c-descricao
    es_aut_pagto.dt_pagto
    es_aut_pagto.valor_pagto
    WITH FRAME f-evento.
    DOWN WITH FRAME f-evento.
    END.

    END.


    IF CAN-FIND(FIRST tt-integ-erro) AND
    l-imp-cabecalho THEN DO:

    PUT STREAM str-rp UNFORMATTED SKIP(1).

    FOR EACH tt-integ-erro:
    DISPLAY STREAM str-rp
    tt-integ-erro.cod-msg
    tt-integ-erro.des-msg
    tt-integ-erro.tipo-msg
    WITH FRAME f-erro.
    DOWN WITH FRAME f-erro.
    END.
    END.

    END.

    IF l-ems50 THEN DO:
    RUN pi-conecta-ems50 IN THIS-PROCEDURE (INPUT 2).
    END.
    ELSE DO:
    IF VALID-HANDLE(h-apapi022b) THEN DO:
    DELETE PROCEDURE h-apapi022b.
    ASSIGN h-apapi022b = ?.
    END.
    END.

    ASSIGN c-destino = {varinc/var00002.i 04 tt-param.destino}
    c-arquivo = tt-param.arquivo.

    PUT STREAM str-rp UNFORMATTED SKIP (2)
    c-str-impressao AT 05 SKIP(1)
    c-str-arquivo AT 29 ": ":U c-destino " - ":U c-arquivo
    c-str-usuario AT 29 ": ":U c-seg-usuario.

    /* Fechamento do Output do Relatorio */
    {include/i-rpclo.i &STREAM="stream str-rp"}

    /* /* Grava os dados da Integração */ */
    /* IF NOT CAN-FIND(FIRST tt-integ-erro) THEN DO: */
    /* FOR FIRST es_aut_pagto WHERE */
    /* es_aut_pagto.id_aut_pagto = p-id_aut_pagto. */
    /* ASSIGN es_aut_pagto.dt_int_FIN = NOW */
    /* es_aut_pagto.LOG_int_FIN = YES. */
    /* END. */
    /* RELEASE es_aut_pagto. */
    /* END. */

    RUN pi-finalizar IN h-acomp.

    /* OUTPUT TO c:\temp\erro.txt NO-CONVERT. */
    /* FOR EACH tt-integ-erro: */
    /* DISPLAY */
    /* tt-integ-erro.cod-msg */
    /* tt-integ-erro.des-msg */
    /* tt-integ-erro.tipo-msg */
    /* WITH WIDTH 600 STREAM-IO. */
    /* END. */
    /* OUTPUT CLOSE. */

    RETURN "OK":U.


    /* Procedures Internas */

    PROCEDURE pi-criar-tt-ems2:

    &IF INTEGER(ENTRY(1,PROVERSION,".")) >= 9 &THEN
    EMPTY TEMP-TABLE tt-antecip.
    EMPTY TEMP-TABLE tt-previsao.
    EMPTY TEMP-TABLE tt-log-tit-ap.
    EMPTY TEMP-TABLE tt-ant-ir.
    &ELSE
    FOR EACH tt-antecip:
    DELETE tt-antecip.
    END.

    FOR EACH tt-previsao:
    DELETE tt-previsao.
    END.

    FOR EACH tt-log-tit-ap:
    DELETE tt-log-tit-ap.
    END.

    FOR EACH tt-ant-ir:
    DELETE tt-ant-ir.
    END.
    &ENDIF

    FOR FIRST emitente
    FIELDS (nome-abrev cgc tp-pagto tp-desp-padrao)
    WHERE emitente.cod-emitente = es_aut_pagto.cod-emitente NO-LOCK: END.

    RUN pi-definirEmpresa IN THIS-PROCEDURE (INPUT es_aut_pagto.cod-estabel,
    OUTPUT i-empresa-prin).

    CREATE tt-antecip.
    ASSIGN tt-antecip.ep-codigo = i-empresa-prin
    tt-antecip.cod-estabel = es_aut_pagto.cod-estabel
    tt-antecip.cod-esp = "" /* es_aut_pagto.cod-especie*/
    tt-antecip.serie = ""
    tt-antecip.nr-docto = STRING(es_aut_pagto.id_aut_pagto)
    tt-antecip.parcela = "1":U
    tt-antecip.cod-fornec = es_aut_pagto.cod-emitente
    tt-antecip.transacao = 0
    tt-antecip.dt-transacao = es_aut_pagto.dt_pagto
    tt-antecip.dt-emissao = es_aut_pagto.dt_pagto
    tt-antecip.dt-vencimen = (es_aut_pagto.dt_pagto + 2)
    tt-antecip.valor-saldo = es_aut_pagto.valor_pagto
    tt-antecip.vl-original = es_aut_pagto.valor_pagto
    tt-antecip.lancamento = 0
    tt-antecip.portador = 0
    tt-antecip.moeda = es_aut_pagto.ind-moeda-tit
    tt-antecip.origem = 1 /* Manual */
    tt-antecip.tipo = 2
    tt-antecip.nr-bordero = 0
    tt-antecip.emissao-bord = NO
    tt-antecip.atualiza-bor = NO
    tt-antecip.modalidade = 0
    tt-antecip.nome-abrev = emitente.nome-abrev
    tt-antecip.vl-imposto = 0
    tt-antecip.calcula-fasb = NO
    tt-antecip.calcula-cmi = NO
    tt-antecip.cgc = emitente.cgc
    tt-antecip.valor-ir = 0
    tt-antecip.cond-pagto = 2 /* es_aut_pagto.cod-cond-pag */
    tt-antecip.enviado = NO
    tt-antecip.titulo-banco = "":U
    tt-antecip.cod-banco = 0
    tt-antecip.cod-retencao = 0
    tt-antecip.dt-vecto-orig = es_aut_pagto.dt_pagto
    tt-antecip.arq-remessa = "":U
    tt-antecip.emitiu = NO
    tt-antecip.ir-antec = NO
    tt-antecip.tp-pagto = 5
    tt-antecip.conta-debito = es_aut_pagto.conta-contab
    tt-antecip.conta-fornecedor = "0":U
    tt-antecip.cotacao-dia = 1
    tt-antecip.tem-credito = NO
    tt-antecip.vl-orig-me = es_aut_pagto.valor_pagto
    tt-antecip.usuario = c-seg-usuario
    tt-antecip.sequencia = 1
    tt-antecip.cod-versao-integracao = 2
    tt-antecip.nominal = 2
    tt-antecip.tipo-implantacao = 1
    tt-antecip.tp-codigo = es_aut_pagto_param.tp-desp
    tt-antecip.observacao = es_aut_pagto.obs.

    REPEAT:
    ASSIGN tt-antecip.referencia = SUBSTRING(STRING(YEAR(TODAY)),03,02)
    + STRING(MONTH(TODAY), "99":U)
    + STRING(DAY (TODAY), "99":U)
    + CHR(RANDOM(97,122))
    + CHR(RANDOM(97,122))
    + CHR(RANDOM(97,122))
    + CHR(RANDOM(97,122)).

    IF NOT CAN-FIND (FIRST tit-ap
    WHERE tit-ap.referencia = tt-antecip.referencia NO-LOCK) THEN LEAVE.
    END.

    RETURN "OK":U.

    END PROCEDURE.


    PROCEDURE pi-criar-tt-ems5:

    &IF INTEGER(ENTRY(1,PROVERSION,".")) >= 9 &THEN
    EMPTY TEMP-TABLE tt_integr_apb_antecip_pef_pend.
    EMPTY TEMP-TABLE tt_integr_apb_aprop_ctbl_pend.
    EMPTY TEMP-TABLE tt_integr_apb_impto_impl_pend.
    EMPTY TEMP-TABLE tt_integr_apb_abat_prev_provis.
    EMPTY TEMP-TABLE tt_log_erros_atualiz.
    &ELSE
    FOR EACH tt_integr_apb_antecip_pef_pend:
    DELETE tt_integr_apb_antecip_pef_pend.
    END.

    FOR EACH tt_integr_apb_aprop_ctbl_pend:
    DELETE tt_integr_apb_aprop_ctbl_pend.
    END.

    FOR EACH tt_integr_apb_impto_impl_pend:
    DELETE tt_integr_apb_impto_impl_pend.
    END.

    FOR EACH tt_integr_apb_abat_prev_provis:
    DELETE tt_integr_apb_abat_prev_provis.
    END.

    FOR EACH tt_log_erros_atualiz:
    DELETE tt_log_erros_atualiz.
    END.
    &ENDIF

    FOR FIRST estabelec
    FIELDS (ep-codigo)
    WHERE estabelec.cod-estabel = es_aut_pagto.cod-estabel NO-LOCK: END.

    RUN pi-definirEmpresa IN THIS-PROCEDURE (INPUT es_aut_pagto.cod-estabel,
    OUTPUT i-empresa-prin).

    FIND FIRST portad_finalid_econ NO-LOCK WHERE
    portad_finalid_econ.cod_portador = "23701" AND
    portad_finalid_econ.cod_cart_bcia = "APB" AND
    portad_finalid_econ.cod_estab = es_aut_pagto.cod-estabel AND
    portad_finalid_econ.cod_finalid_econ = "CORRENTE" NO-ERROR.

    RUN pi-ver-refer (INPUT es_aut_pagto.cod-estabel).

    CREATE tt_integr_apb_antecip_pef_pend.
    ASSIGN tt_integr_apb_antecip_pef_pend.tta_cod_espec_docto = es_aut_pagto_param.cod_espec_docto
    tt_integr_apb_antecip_pef_pend.tta_cod_ser_docto = ""
    tt_integr_apb_antecip_pef_pend.tta_cdn_fornecedor = es_aut_pagto.cod-emitente
    tt_integr_apb_antecip_pef_pend.tta_cod_tit_ap = (IF es_aut_pagto.cod_tit_ap = "" THEN STRING(es_aut_pagto.id_aut_pagto) ELSE es_aut_pagto.cod_tit_ap)
    tt_integr_apb_antecip_pef_pend.tta_cod_parcela = STRING(1)
    tt_integr_apb_antecip_pef_pend.tta_cod_indic_econ = "0" /*portad_finalid_econ.cod_finalid_econ*/
    tt_integr_apb_antecip_pef_pend.tta_val_tit_ap = es_aut_pagto.valor_pagto
    tt_integr_apb_antecip_pef_pend.tta_val_cotac_indic_econ = 1 /* Cotação */
    tt_integr_apb_antecip_pef_pend.tta_dat_emis_docto = es_aut_pagto.dt_pagto
    tt_integr_apb_antecip_pef_pend.tta_dat_vencto_tit_ap = es_aut_pagto.dt_pagto
    tt_integr_apb_antecip_pef_pend.tta_ind_tip_refer = "Antecipação"
    tt_integr_apb_antecip_pef_pend.tta_ind_natur_cta_ctbl = "" /*"DB":U*/
    tt_integr_apb_antecip_pef_pend.tta_cod_usuar_gerac_movto = c-seg-usuario
    tt_integr_apb_antecip_pef_pend.ttv_cod_empresa_ext = STRING(i-empresa-prin)
    tt_integr_apb_antecip_pef_pend.tta_cod_estab_ext = es_aut_pagto.cod-estabel
    tt_integr_apb_antecip_pef_pend.ttv_rec_antecip_pef_pend = RECID(tt_integr_apb_antecip_pef_pend)
    tt_integr_apb_antecip_pef_pend.tta_cod_refer = c-cod_refer.

    /* Portador */
    ASSIGN tt_integr_apb_antecip_pef_pend.tta_cod_portador = portad_finalid_econ.cod_portador /* "Portador" */
    tt_integr_apb_antecip_pef_pend.tta_cod_cart_bcia = portad_finalid_econ.cod_cart_bcia /* "Carteira" */
    tt_integr_apb_antecip_pef_pend.tta_ind_favorec_cheq = ""
    tt_integr_apb_antecip_pef_pend.tta_des_text_histor = "Docto gerado automaticamente via Sistema de Autorização de Pagamento AURORA"
    .

    /* Ver forma pagto Cheque */
    /* field tta_num_cheque as integer format ">>>>,>>>,>>9" initial ? label "Num Cheque" column-label "Num Cheque" */
    /* field tta_ind_favorec_cheq as CHAR format "X(15)" initial "Portador" label "Favorecido" column-label "Favorecido" */
    /* field tta_nom_favorec_cheq as CHAR format "x(40)" label "Nome Favorecido" column-label "Nome Favorecido" */




    &if '{&bf_mat_versao_ems}' < '2.062' &THEN
    CREATE tt_integr_apb_aprop_ctbl_pend.
    ASSIGN tt_integr_apb_aprop_ctbl_pend.ttv_rec_antecip_pef_pend = RECID(tt_integr_apb_antecip_pef_pend)
    tt_integr_apb_aprop_ctbl_pend.tta_val_aprop_ctbl = es_aut_pagto.valor_pagto
    tt_integr_apb_aprop_ctbl_pend.ttv_cod_tip_fluxo_financ_ext = STRING(es_aut_pagto_param.tp-desp).

    FOR FIRST conta-contab
    FIELDS (ct-codigo sc-codigo)
    WHERE conta-contab.ep-codigo = i-empresa-prin AND
    conta-contab.conta-contabil = es_aut_pagto.conta NO-LOCK:
    ASSIGN tt_integr_apb_aprop_ctbl_pend.tta_cod_cta_ctbl_ext = conta-contab.ct-codigo
    tt_integr_apb_aprop_ctbl_pend.tta_cod_sub_cta_ctbl_ext = conta-contab.sc-codigo.
    END.
    &else

    RUN pi-cria-aprop-ctbl-unid-negoc (/*INPUT ordem-compra.cod-unid-negoc,*/
    INPUT 100,
    INPUT es_aut_pagto.conta-contab).

    /* FOR EACH matriz-rat-contr NO-LOCK */
    /* WHERE matriz-rat-contr.nr-contrato = 0: */
    /* RUN pi-cria-aprop-ctbl-unid-negoc (INPUT matriz-rat-contr.cod-unid-negoc, */
    /* INPUT matriz-rat-contr.perc-rateio, */
    /* INPUT matriz-rat-contr.conta-contabil). */
    /* END. */
    &ENDIF

    RETURN "OK":U.

    END PROCEDURE.

    &IF '{&bf_mat_versao_ems}' >= '2.062' &THEN
    PROCEDURE pi-cria-aprop-ctbl-unid-negoc:
    /* DEF INPUT PARAM pi-cod-unid-negoc LIKE unid-negoc.cod-unid-negoc NO-UNDO. */
    DEF INPUT PARAM pi-perc-rateio LIKE matriz-rat-item.perc-rateio NO-UNDO.
    DEF INPUT PARAM p-conta-ctbl LIKE matriz-rat-med.conta-contabil NO-UNDO.

    CREATE tt_integr_apb_aprop_ctbl_pend.
    ASSIGN tt_integr_apb_aprop_ctbl_pend.ttv_rec_antecip_pef_pend = RECID(tt_integr_apb_antecip_pef_pend)
    tt_integr_apb_aprop_ctbl_pend.tta_val_aprop_ctbl = es_aut_pagto.valor_pagto /*ROUND(es_aut_pagto.valor_pagto * pi-perc-rateio / 100,2)*/
    /* tt_integr_apb_aprop_ctbl_pend.tta_cod_unid_negoc = "AUR" /*pi-cod-unid-negoc*/ */
    .

    /* FOR FIRST conta-contab */
    /* FIELDS (ct-codigo sc-codigo) */
    /* WHERE conta-contab.ep-codigo = i-empresa-prin AND */
    /* conta-contab.conta-contabil = p-conta-ctbl NO-LOCK: */
    /* ASSIGN tt_integr_apb_aprop_ctbl_pend.tta_cod_cta_ctbl_ext = "00000000" /*conta-contab.ct-codigo*/ */
    /* tt_integr_apb_aprop_ctbl_pend.tta_cod_sub_cta_ctbl_ext = "00000000" /*conta-contab.sc-codigo*/. */
    /* END. */


    /* ASSIGN tt_integr_apb_aprop_ctbl_pend.tta_cod_plano_cta_ctbl = "AURFIS" /* "Plano Contas" */ */
    /* tt_integr_apb_aprop_ctbl_pend.tta_cod_cta_ctbl = string(es_aut_pagto.conta-contabil, param-global.formato-conta-contabil) /* "Conta Contábil" */ */
    /* tt_integr_apb_aprop_ctbl_pend.tta_cod_plano_ccusto = "Aurora" /* "Plano Centros Custo" */ */
    /* tt_integr_apb_aprop_ctbl_pend.tta_cod_ccusto = "" /* "Centro Custo" */ */
    .

    ASSIGN /*tt_integr_apb_aprop_ctbl_pend.tta_cod_plano_cta_ctbl = "AURFIS" /* "Plano Contas" */ */
    tt_integr_apb_aprop_ctbl_pend.ttv_cod_tip_fluxo_financ_ext = STRING(es_aut_pagto_param.tp-desp) /* Tipo Fluxo Financ (Tipo de Despesa) */
    /* tt_integr_apb_aprop_ctbl_pend.tta_cod_cta_ctbl_ext = "21101000" /* es_aut_pagto.ct-codigo /* Conta Contab Extern */ */ */
    /* tt_integr_apb_aprop_ctbl_pend.tta_cod_sub_cta_ctbl_ext = "00000000" /* es_aut_pagto.sc-codigo /* Sub Conta Externa */ */ */
    /* tt_integr_apb_aprop_ctbl_pend.tta_cod_ccusto_ext = "" /* Centro Custo Externo */ */
    tt_integr_apb_aprop_ctbl_pend.tta_cod_unid_negoc = "AUR" /* Unid Negócio */
    .


    /* /* Tratamento para Arredondamento */ */
    /* ASSIGN de-perc-total = de-perc-total + pi-perc-rateio. */
    /* de-valor-total = de-valor-total + tt_integr_apb_aprop_ctbl_pend.tta_val_aprop_ctbl. */
    /* */
    /* IF de-perc-total = 100 AND de-valor-total <> es_aut_pagto.valor_pagto THEN */
    /* ASSIGN tt_integr_apb_aprop_ctbl_pend.tta_val_aprop_ctbl = tt_integr_apb_aprop_ctbl_pend.tta_val_aprop_ctbl + */
    /* (es_aut_pagto.valor_pagto - de-valor-total). */


    END PROCEDURE.
    &ENDIF


    PROCEDURE pi-conecta-ems50:

    /* Definicao de Parametros */
    DEFINE INPUT PARAMETER i-conexao AS INTEGER NO-UNDO.

    /* Definicao de Variaveis */
    DEF VAR h-btb009za AS HANDLE NO-UNDO.

    &IF INTEGER(ENTRY(1,PROVERSION,".")) >= 9 &THEN
    EMPTY TEMP-TABLE tt_erros_conexao.
    &ELSE
    FOR EACH tt_erros_conexao:
    DELETE tt_erros_conexao.
    END.
    &ENDIF

    IF NOT VALID-HANDLE(h-btb009za) OR
    h-btb009za:TYPE <> "PROCEDURE":U OR
    h-btb009za:FILE-NAME <> "btb/btb009za.p":U THEN DO:
    RUN btb/btb009za.p PERSISTENT SET h-btb009za.
    END.

    IF VALID-HANDLE(h-btb009za) THEN DO:
    RUN pi-conecta-bco IN h-btb009za (INPUT 1, /* Versao Integracao API */
    INPUT i-conexao, /* 1 - Conecta; 2 - Desconecta */
    INPUT param-global.empresa-prin, /* Codigo da Empresa */
    INPUT "all":U, /* Codigo Banco Externo */
    OUTPUT TABLE tt_erros_conexao). /* Temp-table Erros */
    END.

    /* OUTPUT TO C:\TEMP\erro-conexao-ems5.txt NO-CONVERT. */
    /* FOR EACH tt_erros_conexao NO-LOCK. */
    /* DISP tt_erros_conexao */
    /* WITH WIDTH 600 STREAM-IO. */
    /* END. */
    /* OUTPUT CLOSE. */

    IF VALID-HANDLE(h-btb009za) THEN DO:
    DELETE PROCEDURE h-btb009za.
    ASSIGN h-btb009za = ?.
    END.

    RETURN "OK":U.

    END PROCEDURE.


    PROCEDURE pi-validacao:

    RUN pi-definirEmpresa IN THIS-PROCEDURE (INPUT es_aut_pagto.cod-estabel,
    OUTPUT i-empresa-prin).

    FIND FIRST conta-contab
    WHERE conta-contab.ep-codigo = i-empresa-prin AND
    conta-contab.conta-contabil = es_aut_pagto.conta-contab NO-LOCK NO-ERROR.

    IF AVAIL conta-contab THEN DO:

    IF conta-contab.tipo = 6 THEN DO:
    RUN utp/ut-msgs.p (INPUT "msg":U,
    INPUT 636,
    INPUT es_aut_pagto.conta-contab).

    CREATE tt-integ-erro.
    ASSIGN tt-integ-erro.cod-msg = 636
    tt-integ-erro.des-msg = RETURN-VALUE
    tt-integ-erro.tipo-msg = c-str-erro.
    RETURN "NOK":U.
    END.

    IF conta-contab.estado <> 3 THEN DO:
    RUN utp/ut-msgs.p (INPUT "msg":U,
    INPUT 638,
    INPUT es_aut_pagto.conta-contab).

    CREATE tt-integ-erro.
    ASSIGN tt-integ-erro.cod-msg = 638
    tt-integ-erro.des-msg = RETURN-VALUE
    tt-integ-erro.tipo-msg = c-str-erro.
    RETURN "NOK":U.
    END.

    /* IF conta-contab.contas-pagar = 1 THEN DO: */
    /* RUN utp/ut-msgs.p (INPUT "msg":U, */
    /* INPUT 637, */
    /* INPUT es_aut_pagto.conta-contab). */
    /* */
    /* CREATE tt-integ-erro. */
    /* ASSIGN tt-integ-erro.cod-msg = 637 */
    /* tt-integ-erro.des-msg = RETURN-VALUE */
    /* tt-integ-erro.tipo-msg = c-str-erro. */
    /* RETURN "NOK":U. */
    /* END. */

    IF conta-contab.contas-pagar = 3 THEN DO:
    RUN utp/ut-msgs.p (INPUT "msg":U,
    INPUT 289,
    INPUT "":U).

    CREATE tt-integ-erro.
    ASSIGN tt-integ-erro.cod-msg = 289
    tt-integ-erro.des-msg = RETURN-VALUE
    tt-integ-erro.tipo-msg = c-str-erro.
    RETURN "NOK":U.
    END.

    IF conta-contab.caixa-bancos = 3 THEN DO:
    RUN utp/ut-msgs.p (INPUT "msg":U,
    INPUT 639,
    INPUT es_aut_pagto.conta-contab).

    CREATE tt-integ-erro.
    ASSIGN tt-integ-erro.cod-msg = 639
    tt-integ-erro.des-msg = RETURN-VALUE
    tt-integ-erro.tipo-msg = c-str-erro.
    RETURN "NOK":U.
    END.
    END.
    ELSE DO:
    RUN utp/ut-msgs.p (INPUT "msg":U,
    INPUT 19,
    INPUT es_aut_pagto.conta-contab).

    CREATE tt-integ-erro.
    ASSIGN tt-integ-erro.cod-msg = 19
    tt-integ-erro.des-msg = RETURN-VALUE
    tt-integ-erro.tipo-msg = c-str-erro.
    RETURN "NOK":U.
    END.

    RETURN "OK":U.
    END.


    PROCEDURE pi-definirEmpresa:

    /* Definicao de Parametros */
    DEFINE INPUT PARAMETER p-cod-estabel AS CHAR NO-UNDO.
    DEFINE OUTPUT PARAMETER p-empresa AS INTEGER NO-UNDO.

    ASSIGN p-empresa = param-global.empresa-prin.

    &IF DEFINED (bf_dis_consiste_conta) &THEN
    FOR FIRST estabelec
    WHERE estabelec.cod-estabel = p-cod-estabel NO-LOCK:
    RUN cdp/cd9970.p (INPUT ROWID(estabelec),
    OUTPUT p-empresa).
    END.
    &ENDIF

    RETURN "OK":U.

    END PROCEDURE.

    PROCEDURE pi-ver-refer:

    DEF INPUT PARAM p-cod-estabel LIKE estabelec.cod-estabel NO-UNDO.

    ver-refer:
    REPEAT:
    ASSIGN c-cod_refer = SUBSTRING(STRING(YEAR(TODAY)),03,02)
    + STRING(MONTH(TODAY), "99":U)
    + STRING(DAY (TODAY), "99":U)
    + CHR(RANDOM(97,122))
    + CHR(RANDOM(97,122))
    + CHR(RANDOM(97,122))
    + CHR(RANDOM(97,122)).

    FIND LAST b-tit_ap USE-INDEX titap_token NO-LOCK WHERE
    b-tit_ap.cod_estab = p-cod-estabel AND
    b-tit_ap.cod_refer = c-cod_refer NO-ERROR.
    IF NOT AVAIL b-tit_ap THEN DO:
    LEAVE ver-refer.
    END.

    END.

    END PROCEDURE.

    Se tiver dúvida me avise. Fiz vários programas específicos para o COMEX se precisar me avise.
  6. roberto.silva

    roberto.silva Sem Pontuação

    Obrigado!!!
    carsystem curtiu isso.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página