Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var
- ConverteOk: Boolean;
- CountItem: Integer;
- VlrProdutos, VlrTotalDesconto, VlrTotalOutros, VlrTotalNF, VlrBaseICMS, VlrICMS, VlrPis, VlrCofins: Double;
- vlrTribFederal, vlrTribEstadual: Double;
- vlrTTTotTrib, vlrTTTribFederal, vlrTTTribEstadual: Double;
- begin
- Self.ConfigurarNFe;
- try
- ACBrNFe1.NotasFiscais.Clear;
- with ACBrNFe1.NotasFiscais.Add.NFe do
- begin
- // Ambiente
- Ide.tpAmb := ACBrNFe1.Configuracoes.WebServices.Ambiente;
- Ide.verProc := '1.0.0.0';
- Ide.tpImp := ACBrNFe1.DANFE.TipoDANFE;
- // tipo de emissão
- Ide.tpEmis := StrToTpEmis(ConverteOk, cdsNFeTIPO_EMISSAO.AsString);
- if not ConverteOk then
- raise EDatabaseError.CreateFmt('Tipo de Emissão "%d" desconhecida.', [cdsNFeTIPO_EMISSAO.AsInteger])
- else
- ACBrNFe1.Configuracoes.Geral.FormaEmissao := Ide.tpEmis;
- // Identificação da nota fiscal eletrônica
- Ide.modelo := 65;
- Ide.tpImp := tiNFCe;
- Ide.tpNF := tnSaida;
- Ide.finNFe := fnNormal;
- Ide.indPag := ipVista;
- Ide.indFinal := cfConsumidorFinal;
- Ide.indPres := pcPresencial;
- Ide.cNF := cdsNFeNUMERO.AsInteger;
- Ide.nNF := cdsNFeNUMERO.AsInteger;
- Ide.serie := cdsNFeSERIE.AsInteger;
- Ide.natOp := 'VENDA CONSUMIDOR';
- Ide.dEmi := Now;
- Ide.tpEmis := StrToTpEmis(ConverteOk, cdsNFeTIPO_EMISSAO.AsString);
- Ide.cUF := cdsNFeEMPRESA_UF_IBGE.AsInteger;
- Ide.cMunFG := cdsNFeEMPRESA_CIDADE_IBGE.AsInteger;
- Ide.verProc := 'v1.0';
- if Ide.tpEmis = teOffLine then
- begin
- Ide.dhCont := Now;
- Ide.xJust := 'ERRO ACESSO WEBSERVICE';
- end;
- // identificação do EMITENTE
- Emit.xNome := cdsNFeEMPRESA_RAZAO_SOCIAL.AsString;
- Emit.xFant := cdsNFeEMPRESA_NOME_FANTASIA.AsString;
- Emit.CNPJCPF := cdsNFeEMPRESA_CNPJ.AsString;
- Emit.IE := cdsNFeEMPRESA_IE.AsString;
- Emit.IEST := '';
- Emit.CNAE := cdsNFeEMPRESA_CNAE.AsString;
- Emit.IM := cdsNFeEMPRESA_IM.AsString;
- Emit.EnderEmit.fone := cdsNFeEMPRESA_FONE.AsString;
- Emit.EnderEmit.xLgr := cdsNFeEMPRESA_ENDERECO.AsString;
- Emit.EnderEmit.nro := cdsNFeEMPRESA_NUMERO.AsString;
- Emit.EnderEmit.xCpl := cdsNFeEMPRESA_COMPLEMENTO.AsString;
- Emit.EnderEmit.xBairro := cdsNFeEMPRESA_BAIRRO.AsString;
- Emit.EnderEmit.xMun := cdsNFeEMPRESA_CIDADE.AsString;
- Emit.EnderEmit.cMun := cdsNFeEMPRESA_CIDADE_IBGE.AsInteger;
- Emit.EnderEmit.UF := cdsNFeEMPRESA_UF.AsString;
- Emit.EnderEmit.CEP := cdsNFeEMPRESA_CEP.AsInteger;
- Emit.enderEmit.cPais := 1058;
- Emit.enderEmit.xPais := 'BRASIL';
- // tipo de regime tributário
- Emit.CRT := StrToCRT(ConverteOk, cdsNFeEMPRESA_CRT.AsString);
- if not ConverteOk then
- raise EDatabaseError.CreateFmt('Código do regime tributário "%d" desconhecido.', [cdsNFeEMPRESA_CRT.AsInteger]);
- // informações do destinatário da nota fiscal
- Dest.xNome := cdsNFePESSOA_NOME.AsString.Trim;
- Dest.CNPJCPF := cdsNFePESSOA_CNPJ_CPF.AsString.Trim;
- Dest.IE := '';
- Dest.ISUF := '';
- Dest.indIEDest := inNaoContribuinte;
- Dest.EnderDest.Fone := cdsNFePESSOA_FONE.AsString.Trim;
- Dest.EnderDest.xLgr := cdsNFePESSOA_ENDERECO.AsString.Trim;
- Dest.EnderDest.nro := cdsNFePESSOA_NUMERO.AsString.Trim;
- Dest.EnderDest.xCpl := cdsNFePESSOA_COMPLEMENTO.AsString.Trim;
- Dest.EnderDest.xBairro := cdsNFePESSOA_BAIRRO.AsString.Trim;
- Dest.EnderDest.xMun := cdsNFePESSOA_CIDADE.AsString.Trim;
- Dest.EnderDest.cMun := cdsNFePESSOA_CIDADE_IBGE.AsInteger;
- Dest.EnderDest.UF := cdsNFePESSOA_UF.AsString.Trim;
- Dest.EnderDest.CEP := StrToIntDef(cdsNFePESSOA_CEP.AsString, 0);
- Dest.EnderDest.cPais := 1058;
- Dest.EnderDest.xPais := 'Brasil';
- // Informações do frete ( não possui na NFC-e )
- Transp.modFrete := mfSemFrete;
- // inicialização de totais
- VlrBaseICMS := 0.00;
- VlrICMS := 0.00;
- VlrPis := 0.00;
- VlrCofins := 0.00;
- vlrTTTotTrib := 0.00;
- vlrTTTribFederal := 0.00;
- vlrTTTribEstadual := 0.00;
- VlrProdutos := 0.00;
- VlrTotalNF := 0.00;
- VlrTotalDesconto := 0.00;
- VlrTotalOutros := 0.00;
- // itens da nota fiscal
- Det.Clear;
- CountItem := 0;
- cdsNFeItem.First;
- while not cdsNFeItem.Eof do
- begin
- Inc(CountItem);
- with Det.Add do
- begin
- Prod.nItem := CountItem;
- Prod.cProd := Trim(cdsNFeItemID_PRODUTO.AsString);
- Prod.cEAN := Trim(cdsNFeItemGTIN.AsString);
- Prod.xProd := Trim(cdsNFeItemDESCRICAO.AsString);
- Prod.NCM := cdsNFeItemNCM.AsString;
- Prod.EXTIPI := cdsNFeItemEXTIPI.AsString;
- Prod.CFOP := cdsNFeItemCFOP.AsString;
- Prod.uCom := cdsNFeItemUND.AsString;
- Prod.qCom := cdsNFeItemQUANTIDADE.AsFloat;
- Prod.vUnCom := cdsNFeItemVL_UNITARIO.AsFloat;
- Prod.vProd := RoundABNT(Prod.qCom * Prod.vUnCom, 2);
- Prod.cEANTrib := cdsNFeItemGTIN.AsString;
- Prod.uTrib := Prod.uCom;
- Prod.qTrib := Prod.qCom;
- Prod.vUnTrib := Prod.vUnCom;
- Prod.vFrete := 0.00;
- Prod.vSeg := 0.00;
- Prod.vOutro := RoundABNT(cdsNFeItemVL_OUTROS.AsFloat + cdsNFeItemVL_OUTROS_RATEIO.AsFloat, 2);
- Prod.vDesc := RoundABNT(cdsNFeItemVL_DESCONTO.AsFloat + cdsNFeItemVL_DESCONTO_RATEIO.AsFloat, 2);
- infAdProd := cdsNFeItemINF_ADICIONAL.AsString;
- // calculos de totais
- VlrProdutos := VlrProdutos + Prod.vProd;
- VlrTotalNF := VlrTotalNF + (Prod.vProd - Prod.vDesc + Prod.vOutro);
- VlrTotalDesconto := VlrTotalDesconto + Prod.vDesc;
- VlrTotalOutros := VlrTotalOutros + Prod.vOutro;
- // calculos de impostos da note aproximados
- vlrTribFederal := RoundABNT(cdsNFeItemIN_VL_FEDERAL.AsCurrency, 2);
- vlrTribEstadual := RoundABNT(cdsNFeItemIN_VL_ESTADUAL.AsCurrency, 2);
- // totais de impostos aproximados
- vlrTTTribFederal := vlrTTTribFederal + vlrTribFederal;
- vlrTTTribEstadual := vlrTTTribEstadual + vlrTribEstadual;
- // Tributação do ICMS
- with Imposto do
- begin
- vTotTrib := vlrTribFederal + vlrTribEstadual;
- vlrTTTotTrib := vlrTTTotTrib + vTotTrib;
- // origem da mercadoria
- ICMS.orig := StrToOrig(ConverteOk, cdsNFeItemORIGEM.AsString);
- if not ConverteOk then
- raise EDatabaseError.CreateFmt('Origem "%d" desconhecida.', [cdsNFeItemORIGEM.AsInteger]);
- // situação tributária
- if Emit.CRT = crtRegimeNormal then
- begin
- // ICMS normal
- ICMS.CST := StrToCSTICMS(ConverteOk, cdsNFeItemCST.AsString);
- if not ConverteOk then
- raise EDatabaseError.CreateFmt('Situação tributária "%s" desconhecida.',[cdsNFeItemCST.AsString]);
- if Imposto.ICMS.CST in [cst10, cst30, cst60, cst70, cst90] then
- Prod.CEST := cdsNFeItemCEST.AsString;
- ICMS.modBC := dbiValorOperacao;
- ICMS.vBC := cdsNFeItemICMS_VBASE.AsFloat;
- ICMS.pICMS := cdsNFeItemICMS_ALIQUOTA.AsFloat;
- ICMS.vICMS := cdsNFeItemICMS_VIMPOSTO.AsFloat;
- ICMS.pRedBC := 0.00;
- if ICMS.vBC > 0 then
- begin
- VlrBaseICMS := VlrBaseICMS + ICMS.vBC;
- VlrICMS := VlrICMS + ICMS.vICMS;
- end;
- end
- else
- begin
- // campos do simples nacional
- ICMS.CSOSN := StrToCSOSNIcms(ConverteOk, cdsNFeItemCST.AsString);
- if not ConverteOk then
- raise EDatabaseError.CreateFmt('Situação tributária no simples nacional "%s" desconhecida.', [cdsNFeItemCST.AsString]);
- if Imposto.ICMS.CSOSN in [csosn201, csosn202, csosn203, csosn500,csosn900] then
- Prod.CEST := cdsNFeItemCEST.AsString;
- ICMS.pCredSN := cdsNFeItemSN_ALIQCREDITO.AsFloat;
- ICMS.vCredICMSSN := cdsNFeItemSN_VCREDITO.AsFloat;
- end;
- // imposto do pis
- PIS.CST := StrToCSTPIS(ConverteOk, FormatFloat('00', cdsNFeItemPIS_CST.AsInteger));
- if not ConverteOk then
- raise EDatabaseError.CreateFmt('Situação tributária do PIS "%s" desconhecida.', [cdsNFeItemPIS_CST.AsString]);
- PIS.vBC := cdsNFeItemPIS_VBASE.AsFloat;
- PIS.pPIS := cdsNFeItemPIS_ALIQUOTA.AsFloat;
- PIS.vPIS := cdsNFeItemPIS_VIMPOSTO.AsFloat;
- // imposto do cofins
- COFINS.CST := StrToCSTCOFINS(ConverteOk, FormatFloat('00', cdsNFeItemCOFINS_CST.AsInteger));
- if not ConverteOk then
- raise EDatabaseError.CreateFmt('Situação tributária do COFINS "%s" desconhecida.', [cdsNFeItemCOFINS_CST.AsString]);
- COFINS.vBC := cdsNFeItemCOFINS_VBASE.AsFloat;
- COFINS.pCOFINS := cdsNFeItemCOFINS_ALIQUOTA.AsFloat;
- COFINS.vCOFINS := cdsNFeItemCOFINS_VIMPOSTO.AsFloat;
- VlrPis := VlrPis + PIS.vPIS;
- VlrCofins := VlrCofins + COFINS.vCOFINS;
- end;
- end;
- cdsNFeItem.Next;
- end;
- // Totais da nota fiscal
- Total.ICMSTot.vBC := VlrBaseICMS;
- Total.ICMSTot.vICMS := VlrICMS;
- Total.ICMSTot.vFrete := 0.00;
- Total.ICMSTot.vSeg := 0.00;
- Total.ICMSTot.vOutro := VlrTotalOutros;
- Total.ICMSTot.vDesc := VlrTotalDesconto;
- Total.ICMSTot.vBCST := 0.00;
- Total.ICMSTot.vST := 0.00;
- Total.ICMSTot.vII := 0.00;
- Total.ICMSTot.vIPI := 0.00;
- Total.ICMSTot.vPIS := VlrPis;
- Total.ICMSTot.vCOFINS := VlrCofins;
- Total.ICMSTot.vProd := VlrProdutos;
- Total.ICMSTot.vNF := VlrTotalNF;
- Total.ICMSTot.vTotTrib := vlrTTTotTrib;
- // informações complementares
- InfAdic.infCpl := cdsNFeOBSERVACAO.AsString;
- InfAdic.infAdFisco := '';
- // tributos aproximados incidentes sobre a nota
- ACBrNFe1.DANFE.TributosSeparadamente := True;
- ACBrNFe1.DANFE.vTribFed := vlrTTTribFederal;
- ACBrNFe1.DANFE.vTribEst := vlrTTTribEstadual;
- ACBrNFe1.DANFE.vTribMun := 0.00;
- ACBrNFe1.DANFE.FonteTributos := ACBrIBPTax1.Fonte;
- ACBrNFe1.DANFE.ChaveTributos := ACBrIBPTax1.ChaveArquivo;
- // valor do troco, quando houver
- ACBrNFe1.DANFE.vTroco := cdsNFeVL_TROCO.AsFloat;
- //PAGAMENTOS apenas para NFC-e
- cdsNFePagto.First;
- while not cdsNFePagto.Eof do
- begin
- with pag.Add do
- begin
- tPag := StrToFormaPagamento(ConverteOk, Format('%2.2d', [cdsNFePagtoFORMA_PAGAMENTO.AsInteger]));
- if not ConverteOk then
- tPag := fpOutro;
- vPag := cdsNFePagtoVALOR.AsFloat;
- if tPag in [fpCartaoCredito, fpCartaoDebito] then
- tpIntegra := tiPagNaoIntegrado;
- // remover o troco da finalizadora dinheiro para fechar
- // na versão 4.0 isso não mais será necessário
- if (tPag = fpDinheiro) and (cdsNFeVL_TROCO.AsFloat > 0) then
- vPag := vPag - cdsNFeVL_TROCO.AsFloat;
- end;
- cdsNFePagto.Next;
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement