Documento de API

Produto:

Datasul

Ocorrência:

Documentação de API

Nome Físicoprgfin/fas/fas791za


Observação: A partir da release 12.1.2411.

Objetivo

Criar os documentos de entrada no módulo de Ativo Fixo do EMS 5.

Obs.: Essas informações poderão serem consultadas e manutenidas pelo programa FAS068AA - Manutenção Documento de Entrada.

Funcionamento

Na forma padrão, realiza-se a chamada através de um comando RUN normal, armazenando o programa em uma variável através do comando PERSISTENT e em seguida executando uma PROCEDURE deste programa, passando-se os parâmetros com as informações necessárias.

A sintaxe para a chamada da API é:

DEF VAR v_hdl_program AS HANDLE NO-UNDO.
RUN prgfin\fas\fas791za.py PERSISTENT SET v_hdl_program.
RUN pi_api_criacao_docto_entr IN v_hdl_program (input "ems2",
                                              input table tt_bem_invest_mga,
                                              output table tt_log_erros).
DELETE PROCEDURE v_hdl_program.


Parâmetros

Parâmetro

Descrição

Código Matriz Tradução Organização Externa

Neste parâmetro deverá ser informada a matriz de tradução da organização externa.

tt_bem_invest_mga

Esta temp-table conterá os registros com as informações do documento de entrada e dos itens que serão criados. Deverá ser definida conforme os atributos mencionados a seguir, na seção Tabelas Temporárias.

tt_log_erros

Esta temp-table conterá os erros ocorridos durante as validações feitas pela API no momento da inclusão do documento de entrada. Deverá ser definida conforme os atributos mencionados a seguir, na seção Tabelas Temporárias. Não deverá ser alimentada ao chamar a API.

Observações:

- Deve ser gerada a temp-table no programa que chamará a API. Esta temp-table conterá as informações sobre os documentos de entrada e os itens do documento que serão implantados no Ativo Fixo.


Retorno

A API retornará na tabela temporária tt_log_erros que conterá todos os erros encontrados ou mensagens de alerta gerados durante o processo de validação dos documentos.

Quando ocorrer algum erro antes da criação dos documentos de entrada e seus itens, os mesmos não serão criados.

Observações: Quando a API for executada por um programa externo, logo após a chamada da API, deverá ser criado um tratamento para impressão dos erros. E para a correta visualização dos erros, todos os campos desta tabela devem ser impressos.


Tabelas Temporárias

Nos atributos das tabelas temporárias de entrada e saída, o programa que irá executar a api_docto_entr deverá conter e criar as seguintes tabelas temporárias:


1) Criação de Documentos de entrada e itens do documento de entrada

Tabela Temporária

Descrição

Entrada/Saída

tt_bem_invest_mga

Conterá as informações dos documentos de entrada e seus itens.

Entrada

Atributo

Tipo

Formato

Descrição

Obrigatório

Evolução

ttv_cod_empresa

character

x(3)

Código da empresa externa a ser traduzida pela matriz de tradução de unidade organizacional.

Sim


ttv_cdn_emit

integer

>>>>>>>>9

Código numérico do fornecedor do documento fiscal.

Sim


ttv_cod_nota

character

x(20)

Número do documento fiscal.

Sim


ttv_cod_ser_nota

character

x(5)

Série do documento fiscal.

Sim


ttv_cod_natur_operac

character

x(6)

Natureza de operação do documento fiscal.

Sim


ttv_cod_estab

character

x(3)

Código do estabelecimento externo a ser traduzido pela matriz de tradução de unidade organizacional.

Sim


ttv_dat_aquis_bem_pat

date

99/99/9999

Data de emissão do documento de entrada do qual é extraído um item de um lançamento contábil.

Sim


ttv_cod_cta

character

x(20)

Código do centro de custo.

Não


ttv_cdn_aux

integer

>>>,>>9

Código do centro de custo externo a ser traduzido pela matriz de tradução de centros de custo.

Não


ttv_cod_origem

character

x(8)

Código da origem do documento de entrada.

Não


ttv_des_aux_5

character

x(40)

Narrativa do item do documento de entrada.

Não


ttv_cod_chave_aces_docto_fisc

character

x(60)

Chave de acesso da Nota Fiscal Eletrônica (NF-e) ou do Documento Fiscal correspondente, que será utilizada para a geração dos eventos relativos à CBS e ao IBS no sistema da NF-e.

Não


ttv_ind_gera_event_imob_item

character

x(15)

Indica se o evento de Imobilização do item do documento de entrada da Reforma Tributária (211130) deve ser gerado.

As opções disponíveis são:

  • Não Gerar

  • Gerar

  • Gerado

Não


ttv_val_aquis_bem_pat

decimal

->>,>>>,>>>,>>9.99

Valor do documento de entrada.

Não


ttv_val_aquis_fasb_bem_pat

decimal

>>,>>>,>>>,>>9.99

Valor FASB do documento de entrada.

Não


ttv_val_aquis_cmi_bem_pa

decimal

>>,>>>,>>>,>>9.99

Valor CMCAC do documento de entrada.

Não


ttv_val_ibs_munic

decimal

>>>,>>>,>>>,>>9.99

Valor do IBS - Imposto sobre Bens e Serviços municipal no documento fiscal de entrada sempre que a operação envolver incidência desse tributo.

Não


ttv_val_ibs_estad

decimal

>>>,>>>,>>>,>>9.99

Valor do IBS - Imposto sobre Bens e Serviços estadual no documento fiscal de entrada sempre que a operação envolver incidência desse tributo.

Não


ttv_val_cbs

decimal

>>>,>>>,>>>,>>9.99

Valor da CBS - Contribuição sobre Bens e Serviços do documento fiscal de entrada sempre que a operação envolver incidência desse tributo.

Não


ttv_num_seq_item_xml

integer

>>>>,>>9

Número da sequência do item no XML do documento fiscal de entrada.

Não


ttv_cod_unid_medid_item_xml

character

x(12)

Unidade de medida do item no XML do documento fiscal de entrada.

Não


ttv_rec_id_bem_pat_2

recid/roiwd


Recid ou Rowid, caso já tenha liberação da função 

Não


ttv_cdn_unid_bem

integer

>>>,>>9

Quantidade do item do documento de entrada.

Sim


ttv_cdn_org_bem

integer

>>>,>>9

Número da ordem de investimentos do documento de entrada.

Não


ttv_cdn_ord_manut

integer

>>>,>>9

Número da ordem de manutenção do documento de entrada.

Não


ttv_des_bem_pat

character

x(40)

Descrição do item do documento de entrada

Sim


ttv_cod_unid_negoc

character

x(3)

Código da unidade de negócio.

Não


tta_num_id_ri_bem_pat

integer

>>>,>>>,>>9

Número de identificação do bem patrimonial.

Não


ttv_gera_bem_quant

logical

yes/no

Indicador de geração de bens por quantidade.

Não


ttv_sequencia

integer

>>9

Número sequencial do item do documento fiscal.

Não


ttv_cod_moed_fasb

character

x(8)

Código da moeda FASB.

Não


ttv_dat_cotac_fasb

date

99/99/9999

Data de cotação da moeda FASB.

Não


ttv_cod_ccusto 

character

X(8)

Centro de Custo ems5

Sim


Importante: Com a implantação da Reforma Tributária do Consumo, instituída pela Emenda Constitucional nº 132/2023 e regulamentada pela Lei Complementar nº 214/2025, a apropriação de créditos da CBS - Contribuição sobre Bens e Serviços e do IBS - Imposto sobre Bens e Serviços passa a exigir o correto preenchimento das informações no documento fiscal de entrada.

Isso significa que, sempre que houver a intenção de se apropriar créditos desses tributos, será obrigatória a existência de um documento fiscal de entrada vinculado ao bem patrimonial.

Além disso, para garantir a consistência fiscal e a rastreabilidade dos itens, torna-se obrigatório o preenchimento dos seguintes campos no XML do documento fiscal:

O preenchimento correto desses campos é essencial para o cumprimento das novas regras de validação estabelecidas pelas Notas Técnicas aplicáveis aos Documentos Fiscais Eletrônicos (NF-e, NFC-e, CT-e, MDF-e, NFCom, NFS-e), conforme os layouts padronizados disponíveis nos respectivos portais autorizadores.

Em decorrência dessa exigência, os seguintes campos foram incluídos na API:


2) Tabela de erros

Tabela Temporária

Descrição

Entrada/Saída

tt_log_erros

Conterá as informações das mensagem de erro ocorridas na criação do documento de entrada.

Saída

Atributo

Tipo

Formato

Descrição

Obrigatório

Evolução

ttv_num_seq

integer

>>>,>>9

Número sequencial.



ttv_num_cod_erro

integer

>>>>,>>9

Número do erro.



ttv_des_erro

characterx(50)

Mensagem de erro.



ttv_des_ajuda

character

x(50)

Mensagem de ajuda referente ao erro.




Execução

Leitura e Criação dos Registros

Exemplo do programa para criação dos registros nas temp-tables com os documentos de entrada a serem implantados:

/*-- Filtro RECID x ROWID Aplicado --*/
{include/i_fncrowid.i}
def temp-table tt_bem_invest_mga no-undo
    field ttv_cod_empresa                  as char format 'x(3)' label 'Empresa Externa' column-label 'Empresa Ext Inicial'
    field ttv_cdn_emit                     as integer format '>>>>>>>>9' label 'Emitente' column-label 'Emitente'
    field ttv_cod_nota                     as character format 'x(20)'
    field ttv_cod_ser_nota                 as character format 'x(5)' label 'Série Nota' column-label 'Série Nota'
    field ttv_cod_natur_operac             as character format 'x(6)' label 'Natureza Operação' column-label 'Natureza Operação'
    field ttv_cod_estab                    as character format 'x(3)' label 'Estabelecimento' column-label 'Estabelecimento'
    field ttv_dat_aquis_bem_pat            as date format '99/99/9999' label 'Data Aquisição' column-label 'Data Aquisição'
    field ttv_cod_cta                      as character format 'x(20)'
    field ttv_cdn_aux                      as integer format '>>>,>>9'
    field ttv_cod_origem                   as character format 'x(8)' label 'Origem' column-label 'Origem'
    field ttv_des_aux_5                    as character format 'x(40)'
    field ttv_cod_chave_aces_docto_fisc    as character format 'x(60)' label "Chave Acesso NFE" column-label "Chave Acesso NFE"
    field ttv_ind_gera_event_imob_item     as character format 'x(15)' label 'Gera Event Imob Item' column-label 'Gera Event Imob Item'
    field ttv_val_aquis_bem_pat            as decimal format '->>,>>>,>>>,>>9.99' decimals 2 initial 0 label 'Aquisição Bem' column-label 'Aquisição Bem'
    field ttv_val_aquis_fasb_bem_pat       as decimal format '>>,>>>,>>>,>>9.99' decimals 2
    field ttv_val_aquis_cmi_bem_pat        as decimal format '>>,>>>,>>>,>>9.99' decimals 2
    field ttv_val_ibs_munic                as decimal format '>>>,>>>,>>>,>>9.99' decimals 2
    field ttv_val_ibs_estad                as decimal format '>>>,>>>,>>>,>>9.99' decimals 2
    field ttv_val_cbs                      as decimal format '>>>,>>>,>>>,>>9.99' decimals 2
    field ttv_num_seq_item_xml             as integer format '>>>>,>>9'
    field ttv_cod_unid_medid_item_xml      as character format 'x(12)'
    field ttv_cdn_unid_bem                 as integer format '>>>,>>9'
    field ttv_cdn_org_bem                  as integer format '>>>,>>9'
    field ttv_cdn_ord_manut                as integer format '>>>,>>9'
    field ttv_des_bem_pat                  as character format 'x(40)' label 'Descrição Bem Pat' column-label 'Descrição Bem Pat'
    field ttv_rec_id_bem_pat_2             as &IF "{&ROWID_READY}" = "YES" &THEN rowid &ELSE recid &ENDIF
    field ttv_cod_unid_negoc               as character format 'x(3)' label 'Unid Negócio' column-label 'Un Neg'
    field tta_num_id_ri_bem_pat            as integer format '>>>,>>>,>>9' initial 1 label 'Identific Bem MRI' column-label 'ID Bem MRI'
    field ttv_gera_bem_quant               as logical initial no label "Gerar Bem por Quantidade" column-label "Gerar Bem por Quantidade"
    field ttv_sequencia                    as integer format '>>9' initial 0 label 'Sequencia' column-label 'Seq'
    field ttv_cod_moed_fasb                as character format 'x(8)'
    field ttv_dat_cotac_fasb               as date format '99/99/9999'
    field ttv_cod_ccusto                   as character format "x(8)" label "Centro Custo" column-label "CCusto".

def temp-table tt_log_erros NO-UNDO
    field ttv_num_seq                      as integer format ">>>,>>9" label "Seqüência" column-label "Seq"
    field ttv_num_cod_erro                 as integer format ">>>>,>>9" label "Número" column-label "Número"
    field ttv_des_erro                     as character format "x(50)" label "Inconsistência" column-label "Inconsistência"
    field ttv_des_ajuda                    as character format "x(50)" label "Ajuda" column-label "Ajuda"
    index tt_id
          ttv_num_seq                      ASCENDING
          ttv_num_cod_erro                 ASCENDING.

def var v_hdl_program    as handle no-undo.

create tt_bem_invest_mga.
assign tt_bem_invest_mga.ttv_cod_empresa               = "1"
       tt_bem_invest_mga.ttv_cod_estab                 = "1"
       tt_bem_invest_mga.ttv_dat_aquis_bem_pat         = today
       tt_bem_invest_mga.ttv_cdn_emit                  = 1
       tt_bem_invest_mga.ttv_cod_nota                  = "12345678"
       tt_bem_invest_mga.ttv_cod_natur_operac          = "6181A"
       tt_bem_invest_mga.ttv_cod_ser_nota              = "S"
       tt_bem_invest_mga.ttv_cod_chave_aces_docto_fisc = '34221001442721000333-44-001-000005418-1-17417368-1'
       tt_bem_invest_mga.ttv_ind_gera_event_imob_item  = 'Gerado'
       tt_bem_invest_mga.ttv_val_aquis_bem_pat         = 129.99 //VALOR DO BEM
       tt_bem_invest_mga.ttv_cdn_unid_bem              = 5 //QUANTIDADE
       tt_bem_invest_mga.ttv_val_ibs_munic             = 12.34
       tt_bem_invest_mga.ttv_val_ibs_estad             = 24.56
       tt_bem_invest_mga.ttv_val_cbs                   = 36.78
       tt_bem_invest_mga.ttv_num_seq_item_xml          = 965
       tt_bem_invest_mga.ttv_cod_unid_medid_item_xml   = 'KG'
       tt_bem_invest_mga.ttv_des_bem_pat               = "Primeiro Bem"
       tt_bem_invest_mga.ttv_cod_cta                   = '010701010000101'.

create tt_bem_invest_mga.
assign tt_bem_invest_mga.ttv_cod_empresa               = "1"
       tt_bem_invest_mga.ttv_cod_estab                 = "1"
       tt_bem_invest_mga.ttv_dat_aquis_bem_pat         = today
       tt_bem_invest_mga.ttv_cdn_emit                  = 5
       tt_bem_invest_mga.ttv_cod_nota                  = "12345678"
       tt_bem_invest_mga.ttv_cod_natur_operac          = "6181A"
       tt_bem_invest_mga.ttv_cod_ser_nota              = "S"
       tt_bem_invest_mga.ttv_cod_chave_aces_docto_fisc = '65221001442721000333-44-001-000005418-1-17417368-1'
       tt_bem_invest_mga.ttv_ind_gera_event_imob_item  = 'Gerar'
       tt_bem_invest_mga.ttv_val_aquis_bem_pat         = 655569.99 //VALOR DO BEM
       tt_bem_invest_mga.ttv_cdn_unid_bem              = 34 //QUANTIDADE
       tt_bem_invest_mga.ttv_val_ibs_munic             = 42.34
       tt_bem_invest_mga.ttv_val_ibs_estad             = 54.56
       tt_bem_invest_mga.ttv_val_cbs                   = 66.78
       tt_bem_invest_mga.ttv_num_seq_item_xml          = 465
       tt_bem_invest_mga.ttv_cod_unid_medid_item_xml   = 'M2'
       tt_bem_invest_mga.ttv_cdn_unid_bem              = 20
       tt_bem_invest_mga.ttv_des_bem_pat               = "Segundo Bem"
       tt_bem_invest_mga.ttv_cod_cta                   = '010701010000101'.

run prgfin\fas\fas791za.py persistent set v_hdl_program.

run pi_api_criacao_docto_entr in v_hdl_program (input "ems2",
                                                input-output table tt_bem_invest_mga,
                                                output table tt_log_erros).
delete procedure v_hdl_program.
assign v_hdl_program = ?.

for each tt_log_erros no-lock:
    message "Seq.:  " tt_log_erros.ttv_num_seq skip
            "Cod. Erro: " tt_log_erros.ttv_num_cod_erro skip
            "Descrição Erro: " tt_log_erros.ttv_des_erro skip
            "Ajuda: " tt_log_erros.ttv_des_ajuda skip
            view-as alert-box.
end.