Você está na página 1de 14

SolFis/ Expert

Versão: 11.0

Manual de uso
API de calculo

Março de 2019

Copyright © 1991 Synchro Solução Fiscal Brasil


Conteúdo
1. Introdução ................................................................................................................................................. 3
2. Utilização ................................................................................................................................................... 3
3. Detalhes da Interface ................................................................................................................................ 7
4. Exemplo de chamada da API ..................................................................................................................... 7

Manual de Uso – Solfis – Expert – API de Calculo 2


Copyright © 1991 Synchro Solução Fiscal Brasil
1. Introdução

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

As interfaces disponíveis (EXFCONN_SIMULA.CALCULA) permitem o uso da inteligência fiscal Synchro para


calcular ou validar documentos fiscais sem a necessidade de escrever registros no banco de dados Synchro
Solução Fiscal.
A interface API foi implementada inteiramente em PL / SQL nativo.
Basicamente, o sistema externo deve fazer uma chamada para a API EXFCONN_SIMULA.CALCULA () passando os
parâmetros necessários (apresentados abaixo).
Existem algumas formas de chamada para a API do cálculo, podendo ser com ou sem classes de pessoas e
mercadorias, com ou sem valores de retenção de impostos de serviço, com ou sem mensagens legais (parâmetro
out).

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,

Manual de Uso – Solfis – Expert – API de Calculo 3


Copyright © 1991 Synchro Solução Fiscal Brasil
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
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:

Manual de Uso – Solfis – Expert – API de Calculo 4


Copyright © 1991 Synchro Solução Fiscal Brasil
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
mClasseIn IN EXF_SIMULA_DOF_CLASSE%Rowtype Classes de Pessoas
da Nota
mClasseIdfIn IN ETAX_VARS.TClassesIDF Classes de
Mercadorias dos itens
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_type_o Linhas de mensagens
ut da nota
mMsgIDFOut OUT ETAX_VARS.msglista Linhas de mensagens
dos itens
mMsgErro OUT EXFCONN.dbg_Type Mensagem de erro

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:

Manual de Uso – Solfis – Expert – API de Calculo 5


Copyright © 1991 Synchro Solução Fiscal Brasil
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
mRetidos IN EXF_SIMULA_RETIDOS%Rowtype Valores retidos de
serviços
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_type_o Linhas de mensagens
ut da nota
mMsgIDFOut OUT ETAX_VARS.msglista Linhas de mensagens
dos itens
mMsgErro OUT EXFCONN.dbg_Type Mensagem de erro

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:

Manual de Uso – Solfis – Expert – API de Calculo 6


Copyright © 1991 Synchro Solução Fiscal Brasil
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_type_o Linhas de mensagens
ut da nota
mMsgIDFOut OUT ETAX_VARS.msglista Linhas de mensagens
dos itens
mEnquadramento OUT EXFCONN.dbg_Type Mensagem de
Debug enquadramento em
regras de calculo
mMsgErro OUT EXFCONN.dbg_Type Mensagem de erro

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

Os detalhes da API e os campos obrigatórios estão listados na planilha: Synchro_Espec_API_Calculo_V4.xlsx.


Essa planilha identifica os campos pertinentes ao calculo, mas não detalha todas as colunas do rowtype, que
devem ser obtidos de sua instalação se necessário.
Para identificação do documento pode ser utilizado campos ID e DOF_ID.

4. Exemplo de chamada da API


DECLARE

/***** Parametros IN **********************************************************************************/


-- Invoice header -- required fileds must be fullfilled
mdof EXFCONN_SIMULA.DOF_type_in; -- EXF_SIMULA_DOF%Rowtype
-- Invoice lines - required fileds must be fullfilled
midf EXFCONN_SIMULA.listaIDF_type_in; -- IS TABLE OF EXF_SIMULA_IDF%ROWTYPE INDEX BY BINARY_INTEGER
mparc EXFCONN_SIMULA.listaParc_type_in; -- IS TABLE OF EXF_SIMULA_PARCELA%ROWTYPE INDEX BY BINARY_INTEGER
-- Valores retidos
mRetidos exfconn_simula.RETIDOS_type_in;
-- Classe de Pessoas
mClassePfjIn exfconn_simula.listaCLSPFJ_TYPE_IN;
-- Classe de Mercadorias
mClasseIdfIn ETAX_VARS.TClassesIDF;

/***** Parametros Out *******************************************************************************/


-- invoice header
mdofOut EXFCONN.DOF_TYPE; -- COR_DOF%Rowtype;
-- invoice line
midfOut EXFCONN.IDF_TYPE; -- lista de COR_IDF%Rowtype INDEX BY BINARY_INTEGER
-- invoice installments
mparcOut EXFCONN.PAR_type; -- cor_dof_parcela%Rowtype INDEX BY BINARY_INTEGER
-- invoice header messages
--mmsgdofOut EXFCONN.msg_Type; -- TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER
mmsgdofOut exfconn_simula.listaMsgDOF_type_out;
-- invoice line messages
mmsgidfOut etax_vars.listamsg;
-- mensagem de erro, quando ocorrer
mMsgErro EXFCONN.dbg_Type; -- TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER

Manual de Uso – Solfis – Expert – API de Calculo 7


Copyright © 1991 Synchro Solução Fiscal Brasil
-- enquadramento de regras do calculo
mEnquadramentoDebug EXFCONN.dbg_Type; -- TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER
/*****************************************************************************************************/
i INTEGER;

/*
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';

-- campos utilizados para CALCULO SEM CADASTRO


--mdof.mun_pres_servico := 'SAO PAULO';
--mdof.uf_codigo_destino := 'SP';
--mdof.uf_codigo_emitente := 'SP';
--mdof.uf_codigo_entrega := 'SP';
--mdof.uf_codigo_origem := 'SP';
--mdof.uf_codigo_retirada := 'SP';
--mdof.cpag_codigo := 1;
--mdof.peso_bruto_kg := 1;
--mdof.peso_liquido_kg := 1;
--
mdof.vl_ajuste_preco_total_m := 0;
mdof.vl_ajuste_preco_total_p := 0;
mdof.vl_ajuste_preco_total_s := 0;
mdof.vl_frete := 0;
mdof.vl_outras_despesas := 0;
mdof.vl_seguro := 0;

-- campos utilizados para CALCULO SEM CADASTRO


--mdof.ind_nacional_estrangeira := '';
--mdof.ind_fisica_juridica := '';
--mdof.ind_orgao_governamental := '';
--mdof.tico_codigo := '';
--mdof.ind_contr_icms := 'S';
--mdof.ind_contr_ipi := 'S';
--mdof.ind_simples_nacional := '';
--mdof.ind_substituto_icms := '';
END;

/*
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 := '';

Manual de Uso – Solfis – Expert – API de Calculo 8


Copyright © 1991 Synchro Solução Fiscal Brasil
-- informação importante para enquadramento em regras
midf(1).nbm_codigo := '';
midf(1).peso_bruto_kg := 10;
midf(1).peso_liquido_kg := 10;
midf(1).vl_ajuste_preco_total := 0;
midf(1).idf_texto_complementar := '';
-- informações importantes se CALCULO SEM CADASTRO
midf(1).om_codigo := '';
midf(1).ind_vl_icms_no_preco := 'S';
midf(1).ind_vl_pis_cofins_no_preco := 'N';

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:='';

Manual de Uso – Solfis – Expert – API de Calculo 9


Copyright © 1991 Synchro Solução Fiscal Brasil
END;

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;

/***** Begining of API test *****************************************************************************/


--
BEGIN

/* invoice creation simulation */


PreparaDof;
PreparaIdf;
PreparaParcela;
PreparaRetidos;
PreparaClassePFJ;
PreparaClasseMerc;

/** Calculation API Call ****************************************************************************/


-- exemplo 1)
-- EXFCONN_SIMULA.Calcula(mdof, midf, mparc, mdofout, midfout, mparcOut, mMsgErro);
--
-- exemplo 2)
-- EXFCONN_SIMULA.Calcula(mdof, midf, mparc, mdofout, midfout, mparcOut, mmsgdofOut, mmsgidfOut, mMsgErro);
--
-- exemplo 3) COM MENSAGENS De Documentos e Itens
-- EXFCONN_SIMULA.Calcula(mdof, midf, mparc, mClassePfjIn, mClasseIdfIn, mdofout, midfout, mparcOut,
mmsgdofOut, mmsgidfOut, mMsgErro);
--
-- exemplo 4)
-- EXFCONN_SIMULA.Calcula(mdof, midf, mparc, mRetidos, mdofout, midfout, mparcOut, mMsgErro);
--
-- exemplo 5) COM MENSAGENS De Documentos e Itens e COM ENQUADRAMENTO
EXFCONN_SIMULA.Calcula(mdof, midf, mparc, mdofout, midfout, mparcOut, mmsgdofOut, mmsgidfOut,
mEnquadramentoDebug, mMsgErro);

-- Retorno de mensagem de erro, quando ocorre erro ao calcular


dbms_output.put_line('--------------- MENSAGEM DE ERRO AO CALCULAR -----------------');
if mMsgErro is not null then
for i in 1 .. mMsgErro.count loop
dbms_output.put_line(mMsgErro(i));
end loop;
end if;

/*******************************************************************************/
/* 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);

Manual de Uso – Solfis – Expert – API de Calculo 10


Copyright © 1991 Synchro Solução Fiscal Brasil
dbms_output.put_line('vl_fiscal_o = ' || mdofout.vl_fiscal_o);
dbms_output.put_line('vl_fiscal_p = ' || mdofout.vl_fiscal_p);
dbms_output.put_line('vl_fiscal_s = ' || mdofout.vl_fiscal_s);
dbms_output.put_line('vl_frete = ' || mdofout.vl_frete);
dbms_output.put_line('vl_inss = ' || mdofout.vl_inss);
dbms_output.put_line('vl_outras_despesas = ' || mdofout.vl_outras_despesas);
dbms_output.put_line('vl_outros_abat = ' || mdofout.vl_outros_abat);
dbms_output.put_line('vl_pedagio = ' || mdofout.vl_pedagio);
dbms_output.put_line('vl_pis_st = ' || mdofout.vl_pis_st);
dbms_output.put_line('vl_sec_cat = ' || mdofout.vl_sec_cat);
dbms_output.put_line('vl_seguro = ' || mdofout.vl_seguro);
dbms_output.put_line('vl_serv_nt = ' || mdofout.vl_serv_nt);
dbms_output.put_line('vl_total_base_cofins = ' || mdofout.vl_total_base_cofins);
dbms_output.put_line('vl_total_base_cofins_ret = ' || mdofout.vl_total_base_cofins_ret);
dbms_output.put_line('vl_total_base_csll_ret = ' || mdofout.vl_total_base_csll_ret);
dbms_output.put_line('vl_total_base_icms = ' || mdofout.vl_total_base_icms);
dbms_output.put_line('vl_total_base_icms_difa = ' || mdofout.vl_total_base_icms_difa);
dbms_output.put_line('vl_total_base_inss = ' || mdofout.vl_total_base_inss);
dbms_output.put_line('vl_total_base_inss_ret = ' || mdofout.vl_total_base_inss_ret);
dbms_output.put_line('vl_total_base_ipi = ' || mdofout.vl_total_base_ipi);
dbms_output.put_line('vl_total_base_irrf = ' || mdofout.vl_total_base_irrf);
dbms_output.put_line('vl_total_base_iss = ' || mdofout.vl_total_base_iss);
dbms_output.put_line('vl_total_base_pis_pasep = ' || mdofout.vl_total_base_pis_pasep);
dbms_output.put_line('vl_total_base_pis_ret = ' || mdofout.vl_total_base_pis_ret);
dbms_output.put_line('vl_total_base_senat = ' || mdofout.vl_total_base_senat);
dbms_output.put_line('vl_total_base_sest = ' || mdofout.vl_total_base_sest);
dbms_output.put_line('vl_total_base_stf = ' || mdofout.vl_total_base_stf);
dbms_output.put_line('vl_total_base_stf_fronteira = ' || mdofout.vl_total_base_stf_fronteira);
dbms_output.put_line('vl_total_base_stf_ido = ' || mdofout.vl_total_base_stf_ido);
dbms_output.put_line('vl_total_base_stt = ' || mdofout.vl_total_base_stt);
dbms_output.put_line('vl_total_cofins = ' || mdofout.vl_total_cofins);
dbms_output.put_line('vl_total_cofins_ret = ' || mdofout.vl_total_cofins_ret);
dbms_output.put_line('vl_total_contabil = ' || mdofout.vl_total_contabil);
dbms_output.put_line('vl_total_csll_ret = ' || mdofout.vl_total_csll_ret);
dbms_output.put_line('vl_total_faturado = ' || mdofout.vl_total_faturado);
dbms_output.put_line('vl_total_fcp = ' || mdofout.vl_total_fcp);
dbms_output.put_line('vl_total_icms = ' || mdofout.vl_total_icms);
dbms_output.put_line('vl_total_icms_difa = ' || mdofout.vl_total_icms_difa);
dbms_output.put_line('vl_total_ii = ' || mdofout.vl_total_ii);
dbms_output.put_line('vl_total_inss = ' || mdofout.vl_total_inss);
dbms_output.put_line('vl_total_inss_ret = ' || mdofout.vl_total_inss_ret);
dbms_output.put_line('vl_total_inss_ret_per = ' || mdofout.vl_total_inss_ret_per);
dbms_output.put_line('vl_total_ipi = ' || mdofout.vl_total_ipi);
dbms_output.put_line('vl_total_irrf = ' || mdofout.vl_total_irrf);
dbms_output.put_line('vl_total_isento_icms = ' || mdofout.vl_total_isento_icms);
dbms_output.put_line('vl_total_iss = ' || mdofout.vl_total_iss);
dbms_output.put_line('vl_total_mat_terc = ' || mdofout.vl_total_mat_terc);
dbms_output.put_line('vl_total_outros_icms = ' || mdofout.vl_total_outros_icms);
dbms_output.put_line('vl_total_pis_pasep = ' || mdofout.vl_total_pis_pasep);
dbms_output.put_line('vl_total_pis_ret = ' || mdofout.vl_total_pis_ret);
dbms_output.put_line('vl_total_senat = ' || mdofout.vl_total_senat);
dbms_output.put_line('vl_total_sest = ' || mdofout.vl_total_sest);
dbms_output.put_line('vl_total_stf = ' || mdofout.vl_total_stf);
dbms_output.put_line('vl_total_stf_fronteira = ' || mdofout.vl_total_stf_fronteira);
dbms_output.put_line('vl_total_stf_ido = ' || mdofout.vl_total_stf_ido);
dbms_output.put_line('vl_total_stf_substituido = ' || mdofout.vl_total_stf_substituido);
dbms_output.put_line('vl_total_stt = ' || mdofout.vl_total_stt);
dbms_output.put_line('vl_tributavel_difa = ' || mdofout.vl_tributavel_difa);

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

Manual de Uso – Solfis – Expert – API de Calculo 11


Copyright © 1991 Synchro Solução Fiscal Brasil
dbms_output.put_line('aliq_cofins_st = ' || midfout(i).aliq_cofins_st);
dbms_output.put_line('aliq_csll_ret = ' || midfout(i).aliq_csll_ret);
dbms_output.put_line('aliq_difa = ' || midfout(i).aliq_difa);
dbms_output.put_line('aliq_icms = ' || midfout(i).aliq_icms);
dbms_output.put_line('aliq_icms_desc_l = ' || midfout(i).aliq_icms_desc_l);
dbms_output.put_line('aliq_ii = ' || midfout(i).aliq_ii);
dbms_output.put_line('aliq_inss = ' || midfout(i).aliq_inss);
dbms_output.put_line('aliq_inss_ret = ' || midfout(i).aliq_inss_ret);
dbms_output.put_line('aliq_ipi = ' || midfout(i).aliq_ipi);
dbms_output.put_line('aliq_iss = ' || midfout(i).aliq_iss);
dbms_output.put_line('aliq_pis = ' || midfout(i).aliq_pis);
dbms_output.put_line('aliq_pis_ret = ' || midfout(i).aliq_pis_ret);
dbms_output.put_line('aliq_pis_st = ' || midfout(i).aliq_pis_st);
dbms_output.put_line('aliq_senat = ' || midfout(i).aliq_senat);
dbms_output.put_line('aliq_sest = ' || midfout(i).aliq_sest);
dbms_output.put_line('aliq_stf = ' || midfout(i).aliq_stf);
dbms_output.put_line('aliq_stt = ' || midfout(i).aliq_stt);
dbms_output.put_line('cfop_codigo = ' || midfout(i).cfop_codigo);
dbms_output.put_line('dof_sequence = ' || midfout(i).dof_sequence);
dbms_output.put_line('emerc_codigo = ' || midfout(i).emerc_codigo);
dbms_output.put_line('fat_base_calculo_stf = ' || midfout(i).fat_base_calculo_stf);
dbms_output.put_line('fat_inclusao_icms_preco = ' || midfout(i).fat_inclusao_icms_preco);
dbms_output.put_line('pauta_flut_icms = ' || midfout(i).pauta_flut_icms);
dbms_output.put_line('perc_ajuste_preco_total = ' || midfout(i).perc_ajuste_preco_total);
dbms_output.put_line('perc_irrf = ' || midfout(i).perc_irrf);
dbms_output.put_line('preco_total = ' || midfout(i).preco_total);
dbms_output.put_line('preco_unitario = ' || midfout(i).preco_unitario);
dbms_output.put_line('pres_codigo = ' || midfout(i).pres_codigo);
dbms_output.put_line('qtd = ' || midfout(i).qtd);
dbms_output.put_line('qtd_base_cofins = ' || midfout(i).qtd_base_cofins);
dbms_output.put_line('qtd_base_pis = ' || midfout(i).qtd_base_pis);
dbms_output.put_line('sta_codigo = ' || midfout(i).sta_codigo);
dbms_output.put_line('stc_codigo = ' || midfout(i).stc_codigo);
dbms_output.put_line('sti_codigo = ' || midfout(i).sti_codigo);
dbms_output.put_line('stm_codigo = ' || midfout(i).stm_codigo);
dbms_output.put_line('stn_codigo = ' || midfout(i).stn_codigo);
dbms_output.put_line('stp_codigo = ' || midfout(i).stp_codigo);
dbms_output.put_line('vl_ajuste_preco_total = ' || midfout(i).vl_ajuste_preco_total);
dbms_output.put_line('vl_aliq_cofins = ' || midfout(i).vl_aliq_cofins);
dbms_output.put_line('vl_aliq_pis = ' || midfout(i).vl_aliq_pis);
dbms_output.put_line('vl_antecip_icms = ' || midfout(i).vl_antecip_icms);
dbms_output.put_line('vl_antecipacao = ' || midfout(i).vl_antecipacao);
dbms_output.put_line('vl_base_cofins = ' || midfout(i).vl_base_cofins);
dbms_output.put_line('vl_base_cofins_ret = ' || midfout(i).vl_base_cofins_ret);
dbms_output.put_line('vl_base_cofins_st = ' || midfout(i).vl_base_cofins_st);
dbms_output.put_line('vl_base_csll_ret = ' || midfout(i).vl_base_csll_ret);
dbms_output.put_line('vl_base_icms = ' || midfout(i).vl_base_icms);
dbms_output.put_line('vl_base_icms_desc_l = ' || midfout(i).vl_base_icms_desc_l);
dbms_output.put_line('vl_base_ii = ' || midfout(i).vl_base_ii);
dbms_output.put_line('vl_base_inss = ' || midfout(i).vl_base_inss);
dbms_output.put_line('vl_base_inss_ret = ' || midfout(i).vl_base_inss_ret);
dbms_output.put_line('vl_base_ipi = ' || midfout(i).vl_base_ipi);
dbms_output.put_line('vl_base_irrf = ' || midfout(i).vl_base_irrf);
dbms_output.put_line('vl_base_iss = ' || midfout(i).vl_base_iss);
dbms_output.put_line('vl_base_pis = ' || midfout(i).vl_base_pis);
dbms_output.put_line('vl_base_pis_ret = ' || midfout(i).vl_base_pis_ret);
dbms_output.put_line('vl_base_pis_st = ' || midfout(i).vl_base_pis_st);
dbms_output.put_line('vl_base_senat = ' || midfout(i).vl_base_senat);
dbms_output.put_line('vl_base_sest = ' || midfout(i).vl_base_sest);
dbms_output.put_line('vl_base_stf = ' || midfout(i).vl_base_stf);
dbms_output.put_line('vl_base_stf_fronteira = ' || midfout(i).vl_base_stf_fronteira);
dbms_output.put_line('vl_base_stf_ido = ' || midfout(i).vl_base_stf_ido);
dbms_output.put_line('vl_base_stt = ' || midfout(i).vl_base_stt);
dbms_output.put_line('vl_base_suframa = ' || midfout(i).vl_base_suframa);
dbms_output.put_line('vl_cofins = ' || midfout(i).vl_cofins);
dbms_output.put_line('vl_cofins_ret = ' || midfout(i).vl_cofins_ret);
dbms_output.put_line('vl_cofins_st = ' || midfout(i).vl_cofins_st);
dbms_output.put_line('vl_contabil = ' || midfout(i).vl_contabil);
dbms_output.put_line('vl_csll_ret = ' || midfout(i).vl_csll_ret);
dbms_output.put_line('vl_deducao_dependente_prg = ' || midfout(i).vl_deducao_dependente_prg);
dbms_output.put_line('vl_deducao_inss = ' || midfout(i).vl_deducao_inss);
dbms_output.put_line('vl_deducao_irrf_prg = ' || midfout(i).vl_deducao_irrf_prg);
dbms_output.put_line('vl_deducao_pensao_prg = ' || midfout(i).vl_deducao_pensao_prg);
dbms_output.put_line('vl_difa = ' || midfout(i).vl_difa);
dbms_output.put_line('vl_faturado = ' || midfout(i).vl_faturado);
dbms_output.put_line('vl_fiscal = ' || midfout(i).vl_fiscal);
dbms_output.put_line('vl_icms = ' || midfout(i).vl_icms);
dbms_output.put_line('vl_icms_desc_l = ' || midfout(i).vl_icms_desc_l);
dbms_output.put_line('vl_ii = ' || midfout(i).vl_ii);
dbms_output.put_line('vl_imposto_cofins = ' || midfout(i).vl_imposto_cofins);
dbms_output.put_line('vl_imposto_pis = ' || midfout(i).vl_imposto_pis);
dbms_output.put_line('vl_inss = ' || midfout(i).vl_inss);
dbms_output.put_line('vl_inss_ret = ' || midfout(i).vl_inss_ret);

Manual de Uso – Solfis – Expert – API de Calculo 12


Copyright © 1991 Synchro Solução Fiscal Brasil
dbms_output.put_line('vl_iof = ' || midfout(i).vl_iof);
dbms_output.put_line('vl_ipi = ' || midfout(i).vl_ipi);
dbms_output.put_line('vl_irrf = ' || midfout(i).vl_irrf);
dbms_output.put_line('vl_isento_icms = ' || midfout(i).vl_isento_icms);
dbms_output.put_line('vl_isento_ipi = ' || midfout(i).vl_isento_ipi);
dbms_output.put_line('vl_iss = ' || midfout(i).vl_iss);
dbms_output.put_line('vl_outros_abat = ' || midfout(i).vl_outros_abat);
dbms_output.put_line('vl_outros_icms = ' || midfout(i).vl_outros_icms);
dbms_output.put_line('vl_outros_ipi = ' || midfout(i).vl_outros_ipi);
dbms_output.put_line('vl_pis = ' || midfout(i).vl_pis);
dbms_output.put_line('vl_pis_ret = ' || midfout(i).vl_pis_ret);
dbms_output.put_line('vl_pis_st = ' || midfout(i).vl_pis_st);
dbms_output.put_line('vl_rateio_ajuste_preco = ' || midfout(i).vl_rateio_ajuste_preco);
dbms_output.put_line('vl_rateio_frete = ' || midfout(i).vl_rateio_frete);
dbms_output.put_line('vl_rateio_oda = ' || midfout(i).vl_rateio_oda);
dbms_output.put_line('vl_rateio_seguro = ' || midfout(i).vl_rateio_seguro);
dbms_output.put_line('vl_recuperado = ' || midfout(i).vl_recuperado);
dbms_output.put_line('vl_senat = ' || midfout(i).vl_senat);
dbms_output.put_line('vl_sest = ' || midfout(i).vl_sest);
dbms_output.put_line('vl_st_fronteira = ' || midfout(i).vl_st_fronteira);
dbms_output.put_line('vl_stf = ' || midfout(i).vl_stf);
dbms_output.put_line('vl_stf_fronteira = ' || midfout(i).vl_stf_fronteira);
dbms_output.put_line('vl_stf_ido = ' || midfout(i).vl_stf_ido);
dbms_output.put_line('vl_stt = ' || midfout(i).vl_stt);
dbms_output.put_line('vl_suframa = ' || midfout(i).vl_suframa);
dbms_output.put_line('vl_tributavel_antec = ' || midfout(i).vl_tributavel_antec);
dbms_output.put_line('vl_tributavel_difa = ' || midfout(i).vl_tributavel_difa);
dbms_output.put_line('vl_tributavel_icms = ' || midfout(i).vl_tributavel_icms);
dbms_output.put_line('vl_tributavel_icms_desc_l = ' || midfout(i).vl_tributavel_icms_desc_l);
dbms_output.put_line('vl_tributavel_ipi = ' || midfout(i).vl_tributavel_ipi);
dbms_output.put_line('vl_tributavel_stf = ' || midfout(i).vl_tributavel_stf);
dbms_output.put_line('vl_tributavel_stt = ' || midfout(i).vl_tributavel_stt);
dbms_output.put_line('vl_tributavel_suframa = ' || midfout(i).vl_tributavel_suframa);
i := midfout.next(i);
dbms_output.put_line('-------------------------------------');
END LOOP;

-- Retorno das mensagens de documento


dbms_output.put_line('---------- DOF MESSAGE -----------------');
i := mmsgdofOut.first;
LOOP
EXIT WHEN i IS NULL;
dbms_output.put_line('MSG do dof = ' || mmsgdofOut(i));
i := mmsgdofOut.next(i);
END LOOP;

-- Retorno das mensagens dos itens


dbms_output.put_line('---------- IDF MESSAGE -----------------');
i := mmsgidfOut.first;
LOOP
EXIT WHEN i IS NULL;
dbms_output.put_line('MSG IDF item = ' ||mmsgidfOut(i).item);
dbms_output.put_line('Mensagem = ' ||mmsgidfOut(i).mensagem );
dbms_output.put_line('Tipo da mensagem = ' ||mmsgidfOut(i).tipo );
i := mmsgidfOut.next(i);
END LOOP;

-- retorno do enquadramento do calculo


dbms_output.put_line('------- ENQUADRAMENTO DO CALCULO -------------');
if mEnquadramentoDebug is not null then
for i in 1 .. mEnquadramentoDebug.count loop
dbms_output.put_line(mEnquadramentoDebug(i));
end loop;
end if;

-- retorno das parcelas de pagamento


dbms_output.put_line('---------- PARCELAS DE PAGAMENTO -----------------');
i := mparcOut.first;
LOOP
EXIT WHEN i IS NULL;
dbms_output.put_line('NUM_PARCELA = ' ||mparcOut(i).num_parcela);
dbms_output.put_line('DT_VENCIMENTO_PARCELA = ' ||mparcOut(i).dt_vencimento_parcela);
dbms_output.put_line('VL_PARCELA = ' ||mparcOut(i).vl_parcela);
dbms_output.put_line('VL_FISCAL = ' ||mparcOut(i).vl_fiscal);
dbms_output.put_line('VL_BASE_IRRF_RET = '|| mparcOut(i).VL_BASE_IRRF_RET);
dbms_output.put_line('VL_IRRF_RET = '|| mparcOut(i).VL_IRRF_RET);
dbms_output.put_line('VL_BASE_ISS_RET = '|| mparcOut(i).VL_BASE_ISS_RET);
dbms_output.put_line('VL_ISS_RET = '|| mparcOut(i).VL_ISS_RET);
dbms_output.put_line('VL_BASE_PIS_COFINS_CSLL_RET = '|| mparcOut(i).VL_BASE_PIS_COFINS_CSLL_RET);
dbms_output.put_line('VL_PIS_COFINS_CSLL_RET = '|| mparcOut(i).VL_PIS_COFINS_CSLL_RET);
dbms_output.put_line('VL_BASE_PIS_RET = '|| mparcOut(i).VL_BASE_PIS_RET);
dbms_output.put_line('VL_PIS_RET = '|| mparcOut(i).VL_PIS_RET);
dbms_output.put_line('VL_BASE_COFINS_RET = '|| mparcOut(i).VL_BASE_COFINS_RET);

Manual de Uso – Solfis – Expert – API de Calculo 13


Copyright © 1991 Synchro Solução Fiscal Brasil
dbms_output.put_line('VL_COFINS_RET = '|| mparcOut(i).VL_COFINS_RET);
dbms_output.put_line('VL_BASE_CSLL_RET = '|| mparcOut(i).VL_BASE_CSLL_RET);
dbms_output.put_line('VL_CSLL_RET = '|| mparcOut(i).VL_CSLL_RET);
i := mparcOut.next(i);
END LOOP;

END;

Manual de Uso – Solfis – Expert – API de Calculo 14


Copyright © 1991 Synchro Solução Fiscal Brasil

Você também pode gostar