Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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.

...

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

...

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 documentodo 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 origem do documento de entrada.

Não


ttv_des_aux_5

character

x(40)

Narrativa do item do documento de entrada.

Não


ttv_valcod_chave_aquisaces_bemdocto_patfisc

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


decimal

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

Valor do documento de entrada.

ttv_val_aquis_fasb_bem_pat

decimal

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

Valor FASB do documento de entrada.

ttv_val_aquis_cmi_bem_papat

decimal

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

Valor CMCAC do documento de entrada.

Não


ttv_val_cdnaquis_unidfasb_bem_pat

integerdecimal

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

Valor FASB Quantidade do item do documento de entrada.

SimNão


ttv_cdnval_aquis_orgcmi_bem_pa

integerdecimal

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

Valor CMCAC do documento de entrada.

Não

Número da ordem de investimentos


ttv_cdnval_ordibs_manutmunic

integerdecimal

>>>,>>>,>>>,>>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

Número da ordem de manutenção.


ttv_desval_bemibs_patestad

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.

tta_num_id_ri_bem_pat

integer

>>>,>>>,>>9

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

ttv_gera_bem_quant

logical

yes/no

Indicador de geração de bens por quantidade.

ttv_sequencia

integer

>>9

Número sequencial do item do documento fiscal.

ttv_cod_moed_fasb

character

x(8)

Código da moeda FASB.

ttv_dat_fasb

date

99/99/9999

Data de cotação da moeda FASB.

4) 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

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:

  • Sequência do item - tag nItem, que identifica a posição do item na nota;

  • Unidade de medida do item - tag uCom (no grupo det/prod), que especifica a unidade de comercialização utilizada.

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:

  • ttv_cod_chave_aces_docto_fisc - Chave de Acesso do Documento Fiscal;

  • ttv_val_ibs_munic - Valor do IBS Municipal;

  • ttv_val_ibs_estad - Valor do IBS Estadual;

  • ttv_val_cbs - Valor da CBS;

  • ttv_num_seq_item_xml - Sequência do Item no XML;

  • ttv_cod_unid_medid_item_xml - Unidade de Medida do Item no XML.


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

...

ttv_num_seq

...

integer

...

>>>,>>9

...

Número sequencial.

...

ttv_num_cod_erro

...

integer

...

>>>>,>>9

...

Número do erro.

...

ttv_des_erro

...

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:

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 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 Aquisçã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_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_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_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_fasb                           as date format '99/99/9999'

def var v_handle    as handle no-undo.

...

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.