Escolar Documentos
Profissional Documentos
Cultura Documentos
Versão: 11.0
Manual de uso
API de calculo
Março de 2019
A API de simulação de cálculo foi projetada para permitir que os sistemas externos troquem informações "on-
line" com o módulo "Expert Fiscal" do produto Synchro Solução Fiscal.
2. Utilização
1)
EXFCONN_SIMULA.Calcula(mDofIn IN DOF_type_in,
mIdfsIn IN listaIDF_type_in,
mParcIn IN listaPARC_type_in,
mDofOut OUT DOF_type_out,
mIdfsOut OUT listaIDF_type_out,
mParcOut OUT listaPARC_type_out,
mMsgErro OUT EXFCONN.dbg_Type
);
Parâmetros requeridos:
Nome da
Input/Output Tipo Descrição
variável
mDofIn IN EXF_SIMULA_DOF%Rowtype Capa da Nota
mIdfsIn IN EXF_SIMULA_IDF%Rowtype Itens da Nota
mParcIn IN EXF_SIMULA_PARCELA%Rowtype Parcelas da Nota
mDofOut OUT COR_DOF%Rowtype Capa da Nota calculada
mIdfsOut OUT COR_IDF%Rowtype Itens da Nota calculada
mParcOut OUT COR_DOF_PARCELA%Rowtype Parcelas da Nota
calculada
mMsgErro OUT EXFCONN.dbg_Type Mensagem de erro
2)
EXFCONN_SIMULA.Calcula(mDofIn IN DOF_type_in,
mIdfsIn IN listaIDF_type_in,
mParcIn IN listaPARC_type_in,
mDofOut OUT DOF_type_out,
mIdfsOut OUT listaIDF_type_out,
mParcOut OUT listaPARC_type_out
mMsgDOFOut OUT listaMsgDOF_type_out,
mMsgIDFOut OUT ETAX_VARS.msglista,
Nome da
Input/Output Tipo Descrição
variável
mDofIn IN EXF_SIMULA_DOF%Rowtype Capa da Nota
mIdfsIn IN EXF_SIMULA_IDF%Rowtype Itens da Nota
mParcIn IN EXF_SIMULA_PARCELA%Rowtype Parcelas da Nota
mDofOut OUT COR_DOF%Rowtype Capa da Nota calculada
mIdfsOut OUT COR_IDF%Rowtype Itens da Nota calculada
mParcOut OUT COR_DOF_PARCELA%Rowtype Parcelas da Nota calculada
mMsgDOFOut OUT EXFCONN_SIMULA.listaMsgDOF_ty Linhas de mensagens da
pe_out nota
mMsgIDFOut OUT ETAX_VARS.msglista Linhas de mensagens dos
itens
mMsgErro OUT EXFCONN.dbg_Type Mensagem de erro
3)
EXFCONN_SIMULA.Calcula(mDofIn IN DOF_type_in,
mIdfsIn IN listaIDF_type_in,
mParcIn IN listaPARC_type_in,
mClasseIn IN listaCLSPFJ_in,
mClasseIdfIn IN ETAX_VARS.TClassesIDF,
mDofOut OUT DOF_type_out,
mIdfsOut OUT listaIDF_type_out,
mParcOut OUT listaPARC_type_out
mMsgDOFOut OUT listaMsgDOF_type_out,
mMsgIDFOut OUT ETAX_VARS.msglista,
mMsgErro OUT EXFCONN.dbg_Type
);
Parâmetros requeridos:
4)
EXFCONN_SIMULA.Calcula(mDofIn IN DOF_type_in,
mIdfsIn IN listaIDF_type_in,
mParcIn IN listaPARC_type_in,
mRetidos IN RETIDOS_type_in,
mDofOut OUT DOF_type_out,
mIdfsOut OUT listaIDF_type_out,
mParcOut OUT listaPARC_type_out
mMsgDOFOut OUT listaMsgDOF_type_out,
mMsgIDFOut OUT ETAX_VARS.msglista,
mMsgErro OUT EXFCONN.dbg_Type
);
Parâmetros requeridos:
5)
EXFCONN_SIMULA.Calcula(mDofIn IN DOF_type_in,
mIdfsIn IN listaIDF_type_in,
mParcIn IN listaPARC_type_in,
mDofOut OUT DOF_type_out,
mIdfsOut OUT listaIDF_type_out,
mParcOut OUT listaPARC_type_out
mMsgDOFOut OUT listaMsgDOF_type_out,
mMsgIDFOut OUT ETAX_VARS.msglista,
mEnquadramentoDebug OUT EXFCONN.dbg_Type,
mMsgErro OUT EXFCONN.dbg_Type
);
Parâmetros requeridos:
O motor de calculo Expert no Synchro funcionará apenas se alguns campos exigidos dos tipos
listados acima forem cumpridos. Para saber quais são os campos, verifique o tópico "Detalhes
da interface".
3. Detalhes da Interface
/*
Prepare invoice header attributes for tests
This attributes will be fullfilled by ORFM
*/
Procedure PreparaDof is
BEGIN
mdof.id := 1;
mdof.informante_est_codigo := '11863';
mdof.edof_codigo := 'NF';
mdof.ind_entrada_saida := 'S';
mdof.dh_emissao := SYSDATE;
mdof.dt_fato_gerador_imposto := SYSDATE;
mdof.nop_codigo := 'S101.01';
-- campos utilizados para CALCULO COM CADASTRO
mdof.emitente_pfj_codigo := '11863';
mdof.emitente_loc_codigo := '1';
mdof.remetente_pfj_codigo := '11863';
mdof.remetente_loc_codigo := '1';
mdof.destinatario_pfj_codigo := '12063';
mdof.destinatario_loc_codigo := '1';
--
-- CFOP se não informado será deduzido a partir da NOP informada
mdof.cfop_codigo := '5.920';
/*
Prepare invoice line attributes
This attributes will be fullfilled by ORFM
*/
Procedure PreparaIdf is
BEGIN
midf(1).id := 1239;
midf(1).dof_id := 1;
midf(1).idf_num := 1;
midf(1).subclasse_idf := 'M';
-- se subclasse_idf= M informar mercadoria em merc_codigo
-- se subclasse_idf= P informar prestação em pres_codigo
-- se subclasse_idf= S informar serviço em siss_codigo
-- se CALCULO SEM CADASTRO campos podem ser nulos
midf(1).merc_codigo := 'MER-1';
midf(1).pres_codigo := '';
midf(1).siss_codigo := '';
midf(1).entsai_uni_codigo := '';
midf(1).preco_unitario := 10;
midf(1).qtd := 100;
midf(1).nop_codigo := 'S101.01';
midf(1).cfop_codigo := '5.920';
midf(1).preco_total := midf(1).qtd * midf(1).preco_unitario;
midf(1).am_codigo := '';
midf(1).fin_codigo := '';
midf(2).id := 1240;
midf(2).dof_id := 1;
midf(2).idf_num := 2;
midf(2).subclasse_idf := 'S';
midf(2).merc_codigo := '';
midf(2).pres_codigo := '';
midf(2).siss_codigo := 'ALIMENTACAO';
midf(2).entsai_uni_codigo := 'HR';
midf(2).preco_unitario := 10;
midf(2).qtd := 100;
midf(2).nop_codigo := 'S933.01';
midf(2).cfop_codigo := '5.949';
midf(2).preco_total := midf(1).qtd * midf(1).preco_unitario;
midf(2).am_codigo := '';
midf(2).fin_codigo := '';
midf(2).nbm_codigo := '';
midf(2).peso_bruto_kg := 0;
midf(2).peso_liquido_kg := 0;
midf(2).vl_ajuste_preco_total := 0;
midf(2).idf_texto_complementar := '';
midf(2).om_codigo := '';
midf(2).ind_vl_icms_no_preco := 'S';
midf(2).ind_vl_pis_cofins_no_preco := 'S';
midf(3).id := 1241;
midf(3).dof_id := 1;
midf(3).idf_num := 3;
midf(3).subclasse_idf := 'M';
midf(3).merc_codigo := 'SBS-001';
midf(3).pres_codigo := '';
midf(3).siss_codigo := '';
midf(3).entsai_uni_codigo := 'UN';
midf(3).preco_unitario := 17;
midf(3).qtd := 200;
midf(3).nop_codigo := 'S101.01';
midf(3).cfop_codigo := '5.920';
midf(3).preco_total := midf(1).qtd * midf(1).preco_unitario;
midf(3).am_codigo := '';
midf(3).fin_codigo := '';
midf(3).nbm_codigo := '';
midf(3).peso_bruto_kg := 0;
midf(3).peso_liquido_kg := 0;
midf(3).vl_ajuste_preco_total := 0;
midf(3).idf_texto_complementar := '';
midf(3).om_codigo := '';
midf(3).ind_vl_icms_no_preco := 'S';
midf(3).ind_vl_pis_cofins_no_preco := 'S';
END;
/*
Prepare invoice installments/quotas attributes
This attributes will be fullfilled by ORFM
*/
Procedure PreparaParcela is
BEGIN
--mparc(1).id := 1;
mparc(1).dof_id := 1;
mparc(1).num_parcela := 1;
mparc(1).vl_parcela := 0;
END;
Procedure PreparaClassePFJ is
BEGIN
--mClassePfjIn(1).id := 1;
mClassePfjIn(1).dof_id := 1;
mClassePfjIn(1).CLASSE_PFJ_EMITENTE := 'CL1';
mClassePfjIn(1).ELEMENTO_PFJ_EMITENTE := 'ELEMENTO1';
mClassePfjIn(1).CLASSE_PFJ_REMETENTE :='';
mClassePfjIn(1).ELEMENTO_PFJ_REMETENTE:='';
mClassePfjIn(1).CLASSE_PFJ_DESTINATARIA :='';
mClassePfjIn(1).ELEMENTO_PFJ_DESTINATARIA:='';
Procedure PreparaClasseMerc is
BEGIN
mClasseIdfIn(1).idf_num := 1;
mClasseIdfIn(1).Classe := 'CLM1';
mClasseIdfIn(1).Elemento := 'ELEMENTO_MERC-1';
mClasseIdfIn(2).idf_num := 1;
mClasseIdfIn(2).Classe := 'CLM2';
mClasseIdfIn(2).Elemento := 'ELEMENTO_MERC-2';
end;
Procedure PreparaRetidos is
BEGIN
mRetidos.dof_id := 1;
mRetidos.VL_IRRF_ACUM := 10;
mRetidos.VL_RENDIMENTO_IRRF_ACUM := 10;
mRetidos.VL_INSS_RET_ACUM := 10;
mRetidos.VL_BASE_INSS_RET_ACUM := 10;
end;
/*******************************************************************************/
/* reading the return of calculation API */
-- Retorno do documento calculado
-- INVOICE HEADER
dbms_output.put_line('--------------- HEADER DOCUMENTO -----------------');
dbms_output.put_line('id = ' || mdofout.id);
dbms_output.put_line('preco_total_m = ' || mdofout.preco_total_m);
dbms_output.put_line('preco_total_o = ' || mdofout.preco_total_o);
dbms_output.put_line('preco_total_p = ' || mdofout.preco_total_p);
dbms_output.put_line('preco_total_s = ' || mdofout.preco_total_s);
dbms_output.put_line('vl_abat_nt = ' || mdofout.vl_abat_nt);
dbms_output.put_line('vl_ajuste_preco_total_m = ' || mdofout.vl_ajuste_preco_total_m);
dbms_output.put_line('vl_ajuste_preco_total_p = ' || mdofout.vl_ajuste_preco_total_p);
dbms_output.put_line('vl_ajuste_preco_total_s = ' || mdofout.vl_ajuste_preco_total_s);
dbms_output.put_line('vl_base_inss_ret_per = ' || mdofout.vl_base_inss_ret_per);
dbms_output.put_line('vl_cofins_st = ' || mdofout.vl_cofins_st);
dbms_output.put_line('vl_fiscal_m = ' || mdofout.vl_fiscal_m);
-- INVOICE LINE
-- retorno dos itens calculados
dbms_output.put_line('--------------- INVOICE LINE -----------------');
i := midfout.FIRST;
LOOP
exit when i is null;
dbms_output.put_line('id = ' || midfout(i).id);
dbms_output.put_line('dof_id = ' || midfout(i).dof_id);
dbms_output.put_line('idf_num = ' || midfout(i).idf_num);
dbms_output.put_line('merc_codigo = ' || midfout(i).merc_codigo);
dbms_output.put_line('AM_CODIGO='||midfout(i).am_codigo);
dbms_output.put_line('fin_codigo='||midfout(i).fin_codigo);
dbms_output.put_line('om_codigo='||midfout(i).om_codigo);
dbms_output.put_line('nbm_codigo = ' || midfout(i).nbm_codigo);
dbms_output.put_line('CEST_codigo = ' || midfout(i).cest_codigo);
dbms_output.put_line('entsai_uni_codigo = ' || midfout(i).entsai_uni_codigo);
dbms_output.put_line('PESO_BRUTO_KG = ' || midfout(i).PESO_BRUTO_KG);
dbms_output.put_line('PESO_LIQUIDO_KG = ' || midfout(i).PESO_LIQUIDO_KG);
dbms_output.put_line('siss_codigo = ' || midfout(i).siss_codigo);
dbms_output.put_line('CODIGO_RETENCAO = ' || midfout(i).CODIGO_RETENCAO);
dbms_output.put_line('aliq_antecip_icms = ' || midfout(i).aliq_antecip_icms);
dbms_output.put_line('aliq_antecipacao = ' || midfout(i).aliq_antecipacao);
dbms_output.put_line('aliq_cofins = ' || midfout(i).aliq_cofins);
dbms_output.put_line('aliq_cofins_ret = ' || midfout(i).aliq_cofins_ret);
END;