rogercon
Membros-
Total de ítens
301 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que rogercon postou
-
ok, segue o clique no botao VALIDAR que chama a rotina... procedure Tfrmcadastropedidos.cxButton3Click(Sender: TObject); begin IF q_pedidos.IsEmpty then begin ShowMessage('Nenhum pedidos selecionado!'); exit; end; gerarnfe('VALIDAR'); end; lobo abaixo segue toda a procedure GERARNFE que faz a validacao, observe que a parte que faz a validade está lá no final, após o ELSE. //inicio gerarnfe procedure tfrmcadastropedidos.gerarnfe(tipo: string); var vAux : String; vNumLote : integer; CRT,NomeComp,CODCSOSN, COD_CST : string; LocNFeW : TNFeW; wchave: string; wnome_arquivo: string; Qtd_Prd_Frete, Qtd_Prd_Desc: integer; rat_frete, rat_desc, Total_desc,Total_Frete: real; Tot_CSOSN, Tot_vBCST,TOT_ICMS, TOT_ICMS_ST, TOT_BC_ICMS, TOT_BC_ICMS_ST : real; Tot_CST10,Tot_CST30,Tot_CST60,Tot_CST90 : Real; Para : String; CC: Tstrings; varbcicmsstVSaliq,varTotProdVSaliq: real; Vctofatura:string; itemTOT_ICMS_ST: Double; itemTOT_BC_ICMS_ST: Double; begin TOT_ICMS := 0; TOT_ICMS_ST := 0; TOT_BC_ICMS := 0; TOT_BC_ICMS_ST:= 0; Tot_CST10:= 0; Tot_CST30 := 0; Tot_CST60 := 0; Tot_CST90 := 0; vAux := frmcadastropedidos.q_pedidoside_nnf.AsString; // vNumLote := frmcadastropedidos.q_pedidoside_nnf.AsString; vnumlote := StrToInt(FormatDateTime('yymmddhhmm', NOW)); frmprincipal.ACBrNFe1.NotasFiscais.Clear; frmprincipal.ACBrNFe1.Configuracoes.Certificados.NumeroSerie:= dm.q_empresalogadaNSERIE_CERTIFICADO.AsString; frmprincipal.ACBrNFe1.Configuracoes.Certificados.Senha:= dm.q_empresalogadaSENHA_CERTIFICADO.AsString; frmprincipal.ACBrNFe1.DANFE.PathPDF:= ExtractFilePath(ParamStr(0))+'\nfe\pdf'; frmprincipal.ACBrNFe1.Configuracoes.Arquivos.PathCan:= ExtractFilePath(ParamStr(0))+'\nfe\cancelar'; frmprincipal.ACBrNFe1.Configuracoes.Arquivos.PathInu:= ExtractFilePath(ParamStr(0))+'\nfe\inutilizar'; frmprincipal.ACBrNFe1.Configuracoes.Arquivos.PathNFe:= ExtractFilePath(ParamStr(0))+'\nfe\enviadas'; frmprincipal.ACBrNFe1.Configuracoes.Arquivos.PathEvento:= ExtractFilePath(ParamStr(0))+'\nfe\eventos'; frmprincipal.ACBrNFe1.Configuracoes.Arquivos.PathCCe:= ExtractFilePath(ParamStr(0))+'\nfe\cce'; IF tipo='GERAR' then begin frmprincipal.ACBrNFe1.DANFE.Logo:= dm.q_empresalogadaCAMINHOLOGOTIPO.AsString; frmprincipal.ACBrNFeDANFERaveCB1.Logo:= dm.q_empresalogadaCAMINHOLOGOTIPO.AsString; end; with frmprincipal.ACBrNFe1.NotasFiscais.Add.NFe do begin Ide.natOp := copy(frmcadastropedidos.q_pedidosNATUREZA.AsString,0,59); Qry_Aux.close; Ide.nNF := StrToInt(vAux); Ide.cNF := StrToInt(vAux); Ide.modelo := 55; Ide.serie := 1; Ide.dEmi := Date; Ide.dSaiEnt := frmcadastropedidos.q_pedidosIDE_DSAIENT.AsDateTime; ide.hSaiEnt := frmcadastropedidos.q_pedidosIDE_HSAIENT.AsDateTime; if dm.q_empresalogadaambiente.asstring='PRODUCAO' then begin Ide.tpAmb := taProducao; frmprincipal.ACBrNFe1.Configuracoes.WebServices.Ambiente:= taProducao; end else begin Ide.tpAmb := taHomologacao; frmprincipal.ACBrNFe1.Configuracoes.WebServices.Ambiente:= taHomologacao; end; if frmcadastropedidos.q_pedidoside_tpnf.asstring = 'ENTRADA' then Ide.tpNF := tnEntrada else Ide.tpNF := tnSaida; q_contas.close; q_contas.sql.clear; q_contas.sql.Add('select * from contas where cod_pedido = '+ quotedstr(q_pedidoscodigo.AsString)); q_contas.open; if q_contas.IsEmpty then begin Ide.indPag := ipVista; end else begin q_contas.First; while not q_contas.Eof do begin q_contas.edit; if q_contasDATA_VENCIMENTO.AsDateTime > frmcadastropedidos.q_pedidosIDE_DEMI.AsDateTime then Vctofatura:='APRAZO'; q_contas.next; end; end; if Vctofatura='APRAZO' then Ide.indPag:= ipPrazo; // Ide.indPag := ipOutras // Ide.indPag := ipPrazo; Qry_Aux.close; ////////////////////////////////////////////////////// Ide.verProc := '2.0.0.0'; Ide.cUF := StrToIntDef(Copy(dm.q_empresalogadaCOD_UF.AsString, 1, 2), 0); Ide.cMunFG := StrToIntDef(dm.q_empresalogadaCOD_CIDADE.AsString, 0); if frmcadastropedidos.q_pedidoside_finnfe.asstring = 'NORMAL' then Ide.finNFe := fnNormal else if frmcadastropedidos.q_pedidoside_finnfe.asstring = 'COMPLEMENTAR' then begin Ide.finNFe := fnComplementar; //Para NFe referenciada use os campos abaixo with Ide.NFref.Add do begin { refNFe := frmcadastropedidos.q_pedidosNFE_REF.AsString; RefNF.cUF := StrToIntDef(Copy(QryEmpCODCID.AsString, 1, 2), 0); RefNF.AAMM := FormatDateTime('yymm', date); RefNF.CNPJ := QryEmpCGC.AsString; RefNF.modelo := 1; RefNF.serie := 1; RefNF.nNF := StrToInt(vAux);} end; end else Ide.finNFe := fnAjuste; Emit.CNPJCPF := dm.q_empresalogadaCNPJ.AsString; Emit.IE := dm.q_empresalogadaINSCEST.AsString; Emit.xNome := dm.q_empresalogadaRAZAO.AsString; Emit.xFant := dm.q_empresalogadaFANTASIA.AsString; Emit.EnderEmit.fone := dm.q_empresalogadaTELEFONE.AsString; Emit.EnderEmit.CEP := StrToInt(dm.q_empresalogadacep.AsString); Emit.EnderEmit.xLgr := dm.q_empresalogadaLOGRADOURO.AsString; Emit.EnderEmit.nro := dm.q_empresalogadaNUMERO.asstring; Emit.EnderEmit.xCpl := dm.q_empresalogadaCOMPLEMENTO.AsString; Emit.EnderEmit.xBairro := dm.q_empresalogadaBAIRRO.asstring; Emit.EnderEmit.cMun := StrToInt(dm.q_empresalogadacod_cidade.asstring); Emit.EnderEmit.xMun := dm.q_empresalogadacidade.asstring; Emit.EnderEmit.UF := dm.q_empresalogadauf.AsString; Emit.enderEmit.cPais := 1058; Emit.enderEmit.xPais := 'BRASIL'; Emit.IEST := ''; // NFE 2.0 Emit.IM := ''; // Preencher no caso de existir serviços na nota Emit.CNAE := ''; // Verifique na cidade do emissor da NFe se é permitido // a inclusão de serviços na NFe if frmcadastropedidos.q_pedidosTIPO_DESTINO.AsString = 'E' then begin exporta.UFembarq := frmcadastropedidos.q_pedidosUFEMBARQ.AsString; exporta.xLocEmbarq := frmcadastropedidos.q_pedidosXLOCEMBARQ.AsString; end; if dm.q_empresalogadaCOD_REGIME.AsString='1' then begin Emit.CRT := crtSimplesNacional; //nfe 2.0 CRT := '1'; end else if dm.q_empresalogadaCOD_REGIME.AsString='1' then begin Emit.CRT := crtSimplesExcessoReceita; //nfe 2.0 CRT := '2'; end else if dm.q_empresalogadaCOD_REGIME.AsString='1' then begin Emit.CRT := crtRegimeNormal; //nfe 2.0 CRT := '3'; end; q_clientes.close; q_clientes.sql.clear; q_clientes.sql.add('select * from clientes where codigo = '+ quotedstr(frmcadastropedidos.q_pedidosDEST_CODIGO.AsString)); q_clientes.open; // se for uma nota de exportação devo limpar alguns campos if frmcadastropedidos.q_pedidosPAIS.AsString <> 'BRASIL' then begin Dest.CNPJCPF := ''; Dest.IE := ''; Dest.EnderDest.cMun := 9999999; Dest.EnderDest.xMun := 'EXTERIOR'; end else begin if frmcadastropedidos.q_pedidosdest_TIPOPESSOA.AsString = 'J' then Dest.CNPJCPF := q_clientesCPF.AsString else Dest.CNPJCPF := removechar(q_clientescpf.AsString); Dest.IE := q_clientesRG.AsString; Dest.EnderDest.cMun := StrToInt(q_pedidosDEST_CODCIDADE.AsString); Dest.EnderDest.xMun := q_pedidosDEST_XMUN.AsString; end; Dest.ISUF := ''; //NFE2.0 Dest.EnderDest.CEP := StrToInt(q_pedidosDEST_CEP.AsString); Dest.EnderDest.xLgr := q_pedidosDEST_XLGR.asstring; Dest.EnderDest.nro := q_pedidosDEST_NRO.asstring; Dest.EnderDest.xCpl := q_pedidosDEST_XCPL.AsString; Dest.EnderDest.xBairro := q_pedidosDEST_XBAIRRO.asstring; Dest.EnderDest.UF := q_pedidosDEST_UF.AsString; Dest.EnderDest.Fone := q_clientesTELEFONE.AsString; Dest.xNome := q_clientesRAZAO.AsString; Dest.EnderDest.cPais := strtoint(q_pedidosCODPAIS.AsString); Dest.EnderDest.xPais := q_pedidosPAIS.AsString; //Use os campos abaixo para informar o endereço de retirada quando for diferente do Remetente/Destinatário { Retirada.CNPJCPF := ''; Retirada.xLgr := ''; Retirada.nro := ''; Retirada.xCpl := ''; Retirada.xBairro := ''; Retirada.cMun := 0; Retirada.xMun := ''; Retirada.UF := '';} //Use os campos abaixo para informar o endereço de entrega quando for diferente do Remetente/Destinatário { Entrega.CNPJCPF := ''; Entrega.xLgr := ''; Entrega.nro := ''; Entrega.xCpl := ''; Entrega.xBairro := ''; Entrega.cMun := 0; Entrega.xMun := ''; Entrega.UF := '';} // QryProduto.Close; // QryProduto.Params.ParamByName('PNum').asinteger := frmcadastropedidos.q_pedidosCODIGO.AsInteger; // QryProduto.Open; q_buscaitem.close; q_buscaitem.sql.clear; q_buscaitem.sql.add('select * from itens where nroped = '+ QuotedStr(frmcadastropedidos.q_pedidosCODIGO.AsString)); q_buscaitem.open; Qtd_Prd_Frete := q_buscaitem.RecordCount; Qtd_Prd_Desc := q_buscaitem.RecordCount; Total_Frete := frmcadastropedidos.q_pedidosVL_FRETE.AsFloat; Total_desc := frmcadastropedidos.q_pedidosVL_DESCONTO.AsFloat; itemTOT_ICMS_ST:= 0; itemTOT_BC_ICMS_ST:= 0; q_buscaitem.first; While not q_buscaitem.eof do begin with Det.Add do begin Prod.nItem := q_buscaitemNITEM.AsInteger; prod.NCM := q_buscaitemNCM.AsString; //NFe 2.0 if q_buscaitemcod_anp.asstring <> '' then begin Prod.comb.cProdANP:= strtoint(q_buscaitemcod_anp.asstring); prod.comb.UFcons := 'SP'; prod.comb.qTemp:= 1; end; if not q_buscaitem.isempty then begin Prod.CFOP := q_buscaitemcfop.asstring; end else begin prod.cfop := frmcadastropedidos.q_pedidoscfop.asstring; end; Prod.cProd := q_buscaitemCODPRODUTO.AsString; Prod.EXTIPI := ''; //NFE 2.0 Prod.xProd := q_buscaitemproduto.AsString; Prod.qCom := q_buscaitemQUANTIDADE.AsFloat; Prod.uCom := q_buscaitemUNIDADE.AsString; Prod.vProd := q_buscaitemVALOR_TOTAL.AsFloat; Prod.vUnCom := q_buscaitemPRECO.AsFloat; // ver esse campo // prod.IndTot := itNaoSomaTotalNFe; //Rateio do desconto rat_desc := Arredondar((Total_desc / Qtd_Prd_Desc),2); Prod.vDesc := rat_desc; Total_desc := Total_desc - rat_desc; dec(Qtd_Prd_Desc); //fim rateio desconto Prod.qTrib := q_buscaitemQUANTIDADE.AsFloat; Prod.uTrib := q_buscaitemUNIDADE.AsString; Prod.vUnTrib := q_buscaitemPRECO.AsFloat; //*Rateio do frete rat_frete := Arredondar((Total_Frete / Qtd_Prd_Frete),2); prod.vFrete := rat_frete; Total_Frete := Total_Frete - rat_frete; dec(Qtd_Prd_Frete); //** fim rateio frete infAdProd := ''; //NFE 2. //Declaração de Importação. Pode ser adicionada várias através do comando Prod.DI.Add // if frmcadastropedidos.q_pedidosIMP_DI.AsString <> '' then // begin // with Prod.DI.Add do // begin // nDi := '1'; // dDi := date; // xLocDesemb := ''; // UFDesemb := ''; // dDesemb := date; // cExportador := ''; // // with adi.Add do // begin // nAdicao := ''; // nSeqAdi := ''; // cFabricante := ''; // vDescDI := ''; // end; // end; // end; with Imposto do begin with ICMS do begin if CRT = '1' then begin // inicio teste CSOSN if q_buscaitemCSOSN.AsString = '101' then begin Orig := q_buscaitemORIGEM.AsVariant; CSOSN := csosn101; pCredSN := q_buscaitemICMS.AsCurrency; vCredICMSSN := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat)*((q_buscaitemICMS.AsCurrency) / 100); CODCSOSN := q_buscaitemCSOSN.AsString; end else if q_buscaitemCSOSN.AsString = '102' then begin Orig := q_buscaitemORIGEM.AsVariant; CSOSN := csosn102; CODCSOSN := q_buscaitemCSOSN.AsString; end else if q_buscaitemCSOSN.AsString = '103' then begin Orig := q_buscaitemORIGEM.AsVariant; CSOSN := csosn103; CODCSOSN := q_buscaitemCSOSN.AsString; end else if q_buscaitemCSOSN.AsString = '201' then begin ICMS.Orig := q_buscaitemORIGEM.AsVariant; ICMS.CSOSN := csosn201; ICMS.modBCST := q_buscaitemICMS_BC_ST_MOD.AsVariant; ICMS.pMVAST := q_buscaitemICMS_PMVAST.AsVariant; ICMS.pRedBCST := q_buscaitemICMS_REDUCAO_ST.AsVariant; if (frmcadastropedidos.q_pedidoside_finnfe.asstring = 'AJUSTE') or (frmcadastropedidos.q_pedidoside_finnfe.asstring = 'COMPLEMENTAR') then begin ICMS.VBCST := frmcadastropedidos.q_pedidosBS_ICMS_ST.AsFloat; ICMS.VICMSST := frmcadastropedidos.q_pedidosVL_ICMS_ST.value; end else begin ICMS.vBCST := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); ICMS.VICMSST := ((ICMS.vBCST + (ICMS.vBCST * q_buscaitemICMS_PMVAST.AsVariant / 100)) * q_buscaitemICMS_ALIQ_ST.AsVariant / 100); end; ICMS.pICMSST := q_buscaitemICMS_ALIQ_ST.AsVariant; TOT_BC_ICMS_ST := TOT_BC_ICMS_ST + ICMS.VBCST; TOT_ICMS_ST := TOT_ICMS_ST + ICMS.VICMSST; pCredSN := 0; vCredICMSSN := 0; CODCSOSN := q_buscaitemCSOSN.AsString; end else if q_buscaitemCSOSN.AsString = '202' then begin ICMS.Orig := q_buscaitemORIGEM.AsVariant; ICMS.CSOSN := csosn202; ICMS.modBCST := q_buscaitemICMS_BC_ST_MOD.AsVariant; ICMS.pMVAST := q_buscaitemICMS_PMVAST.AsVariant; ICMS.pRedBCST := q_buscaitemICMS_REDUCAO_ST.AsVariant; if (frmcadastropedidos.q_pedidoside_finnfe.asstring = 'AJUSTE') or (frmcadastropedidos.q_pedidoside_finnfe.asstring = 'COMPLEMENTAR') then begin ICMS.VBCST := frmcadastropedidos.q_pedidosBS_ICMS_ST.AsFloat; ICMS.VICMSST := frmcadastropedidos.q_pedidosVL_ICMS_ST.AsFloat; end else begin ICMS.vBCST := (q_buscaitemVALOR_TOTAL.value * q_buscaitemICMS_PMVAST.value) / 100; varbcicmsstVSaliq:= ((ICMS.vBCST+q_buscaitemVALOR_TOTAL.value)* q_buscaitemICMS_ALIQ_ST.value) / 100; varTotProdVSaliq:= (q_buscaitemVALOR_TOTAL.value) * (q_buscaitemICMS_ALIQ_ST.value / 100); ICMS.VICMSST := varbcicmsstVSaliq - varTotProdVSaliq; end; ICMS.pICMSST := q_buscaitemICMS_ALIQ_ST.value; // TOT_BC_ICMS_ST := TOT_BC_ICMS_ST + ICMS.VBCST; // TOT_ICMS_ST := TOT_ICMS_ST + ICMS.VICMSST; TOT_BC_ICMS_ST := TOT_BC_ICMS_ST+(ICMS.VBCST+q_buscaitemVALOR_TOTAL.value); TOT_ICMS_ST := TOT_ICMS_ST+ ICMS.VICMSST; CODCSOSN := q_buscaitemCSOSN.AsString; ICMS.vBCST:= ICMS.vBCST+q_buscaitemVALOR_TOTAL.value; end else if q_buscaitemCSOSN.AsString = '203' then begin Orig := q_buscaitemORIGEM.AsVariant; CSOSN := csosn203; modBCST := q_buscaitemICMS_BC_ST_MOD.AsVariant; pMVAST := q_buscaitemICMS_PMVAST.AsVariant; pRedBCST := q_buscaitemICMS_REDUCAO_ST.AsVariant; if (frmcadastropedidos.q_pedidoside_finnfe.asstring = 'AJUSTE') or (frmcadastropedidos.q_pedidoside_finnfe.asstring = 'COMPLEMENTAR') then begin ICMS.VBCST := frmcadastropedidos.q_pedidosBS_ICMS_ST.AsFloat; ICMS.VICMSST := frmcadastropedidos.q_pedidosVL_ICMS_ST.AsFloat; end else begin vBCST := Tot_vBCST + (Tot_vBCST * q_buscaitemICMS_PMVAST.AsVariant / 100); ICMS.VICMSST := ((ICMS.vBCST + (ICMS.vBCST * q_buscaitemICMS_PMVAST.AsVariant / 100)) * q_buscaitemICMS_ALIQ_ST.AsVariant / 100); end; pICMSST := q_buscaitemICMS_ALIQ_ST.AsVariant; TOT_BC_ICMS_ST := TOT_BC_ICMS_ST + ICMS.VBCST; TOT_ICMS_ST := TOT_ICMS_ST + ICMS.VICMSST; CODCSOSN := q_buscaitemCSOSN.AsString; end else if q_buscaitemCSOSN.AsString = '300' then begin Orig := q_buscaitemORIGEM.AsVariant; CSOSN := csosn300; CODCSOSN := q_buscaitemCSOSN.AsString; end else if q_buscaitemCSOSN.AsString = '400' then begin Orig := q_buscaitemORIGEM.AsVariant; CSOSN := csosn400; CODCSOSN := q_buscaitemCSOSN.AsString; end else if q_buscaitemCSOSN.AsString = '500' then begin Orig := q_buscaitemORIGEM.AsVariant; CSOSN := csosn500; vBCSTRet := 0; //?? vICMSSTRet := 0; //? CODCSOSN := q_buscaitemCSOSN.AsString; end else if q_buscaitemCSOSN.AsString = '900' then begin Orig := q_buscaitemORIGEM.AsVariant; CSOSN := csosn900; modBC := q_buscaitemICMS_BC_MOD.AsVariant; vBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); pRedBC := q_buscaitemICMS_REDUCAO.AsVariant; pICMS := q_buscaitemICMS.AsCurrency; vICMS := (vBC * q_buscaitemICMS.AsCurrency) / 100; modBCST := q_buscaitemICMS_BC_ST_MOD.AsVariant; pMVAST := q_buscaitemICMS_PMVAST.AsVariant; pRedBCST := q_buscaitemICMS_REDUCAO_ST.AsVariant; vBCST := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); pICMSST := q_buscaitemICMS_ALIQ_ST.AsVariant; ICMS.VICMSST := ((ICMS.vBCST + (ICMS.vBCST * q_buscaitemICMS_PMVAST.AsVariant / 100)) * q_buscaitemICMS_ALIQ_ST.AsVariant / 100); TOT_BC_ICMS_ST := TOT_BC_ICMS_ST + ICMS.VBCST; TOT_ICMS_ST := TOT_ICMS_ST + ICMS.VICMSST; TOT_BC_ICMS := TOT_BC_ICMS + ICMS.VBC; TOT_ICMS := TOT_ICMS + ICMS.VICMS; pCredSN := 0; //?? vCredICMSSN := 0; // ?? CODCSOSN := q_buscaitemCSOSN.AsString; end; // fim teste CSOSN end else begin if q_buscaitemCST.AsString = '0' then begin ICMS.CST := cst00; ICMS.Orig := q_buscaitemORIGEM.AsVariant; ICMS.ModBC := q_buscaitemICMS_BC_MOD.AsVariant; if (frmcadastropedidos.q_pedidoside_finnfe.asstring = 'AJUSTE') or (frmcadastropedidos.q_pedidoside_finnfe.asstring = 'COMPLEMENTAR') then begin ICMS.VBC := frmcadastropedidos.q_pedidosBS_ICMS.AsFloat; ICMS.VICMS := frmcadastropedidos.q_pedidosVL_ICMS.AsFloat; end else begin ICMS.VBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); ICMS.VICMS := (ICMS.vBC * q_buscaitemICMS.AsCurrency) / 100; end; ICMS.PICMS := q_buscaitemICMS.AsCurrency; COD_CST := '0'; TOT_BC_ICMS := TOT_BC_ICMS + ICMS.VBC; TOT_ICMS := TOT_ICMS + ICMS.VICMS; end; if q_buscaitemCST.AsString = '10' then begin ICMS.CST := cst10; ICMS.Orig := q_buscaitemORIGEM.AsVariant; ICMS.ModBC := q_buscaitemICMS_BC_MOD.AsVariant; ICMS.VBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); ICMS.PICMS := q_buscaitemICMS.AsCurrency; ICMS.VICMS := (ICMS.vBC * q_buscaitemICMS.AsCurrency) / 100; ICMS.ModBCST := q_buscaitemICMS_BC_ST_MOD.AsVariant; ICMS.PMVAST := q_buscaitemICMS_PMVAST.AsVariant; ICMS.PRedBCST := q_buscaitemICMS_REDUCAO_ST.AsVariant; ICMS.VBCST := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); ICMS.PICMSST := q_buscaitemICMS_ALIQ_ST.AsVariant; Tot_CST10 := q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat; ICMS.VICMSST := ((Tot_CST10 + (Tot_CST10 * q_buscaitemICMS_PMVAST.AsVariant / 100)) * q_buscaitemICMS_ALIQ_ST.AsVariant / 100) - ICMS.VICMS; TOT_BC_ICMS_ST := TOT_BC_ICMS_ST + ICMS.VBCST; TOT_ICMS_ST := TOT_ICMS_ST + ICMS.VICMSST; TOT_BC_ICMS := TOT_BC_ICMS + ICMS.VBC; TOT_ICMS := TOT_ICMS + ICMS.VICMS; COD_CST := '10'; end; if q_buscaitemCST.AsString = '20' then begin ICMS.CST := cst20; ICMS.Orig := q_buscaitemORIGEM.AsVariant; ICMS.ModBC := q_buscaitemICMS_BC_MOD.AsVariant; ICMS.PRedBC := q_buscaitemICMS_REDUCAO.AsVariant; ICMS.VBC := ((q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat) - ((q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat) * q_buscaitemICMS_REDUCAO.AsVariant /100)); ICMS.PICMS := q_buscaitemICMS.AsCurrency; ICMS.VICMS := (ICMS.vBC * q_buscaitemICMS.AsCurrency) / 100; TOT_BC_ICMS := TOT_BC_ICMS + ICMS.VBC; TOT_ICMS := TOT_ICMS + ICMS.VICMS; COD_CST := '20'; end; if q_buscaitemCST.AsString = '30' then begin ICMS.CST := cst30; ICMS.Orig := q_buscaitemORIGEM.AsVariant; ICMS.ModBCST := q_buscaitemICMS_BC_ST_MOD.AsVariant; ICMS.PMVAST := q_buscaitemICMS_PMVAST.AsVariant; ICMS.PRedBCST := q_buscaitemICMS_REDUCAO_ST.AsVariant; ICMS.VBCST := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); ICMS.PICMSST := q_buscaitemICMS_ALIQ_ST.AsVariant; Tot_CST30 := q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat; ICMS.VICMSST := ((Tot_CST30 + (Tot_CST30 * q_buscaitemICMS_PMVAST.AsVariant / 100)) * q_buscaitemICMS_ALIQ_ST.AsVariant / 100) - ICMS.VICMS; TOT_BC_ICMS_ST := TOT_BC_ICMS_ST + ICMS.VBCST; TOT_ICMS_ST := TOT_ICMS_ST + ICMS.VICMSST; COD_CST := '30'; end; if q_buscaitemCST.AsString = '40' then begin ICMS.CST := cst40; ICMS.Orig := q_buscaitemORIGEM.AsVariant; COD_CST := '40'; end; if q_buscaitemCST.AsString = '41' then begin ICMS.CST := cst41; ICMS.Orig := q_buscaitemORIGEM.AsVariant; COD_CST := '41'; end; if q_buscaitemCST.AsString = '50' then begin ICMS.CST := cst50; ICMS.Orig := q_buscaitemORIGEM.AsVariant; COD_CST := '50'; end; if q_buscaitemCST.AsString = '51' then begin ICMS.CST := cst51; ICMS.Orig := q_buscaitemORIGEM.AsVariant; ICMS.ModBC := q_buscaitemICMS_BC_MOD.AsVariant; ICMS.PRedBC := q_buscaitemICMS_REDUCAO.AsVariant; ICMS.VBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); ICMS.PICMS := q_buscaitemICMS.AsCurrency; ICMS.VICMS := (ICMS.vBC * q_buscaitemICMS.AsCurrency) / 100; TOT_BC_ICMS := TOT_BC_ICMS + ICMS.VBC; TOT_ICMS := TOT_ICMS + ICMS.VICMS; COD_CST := '51'; end; if q_buscaitemCST.AsString = '60' then begin ICMS.CST := cst60; ICMS.Orig := q_buscaitemORIGEM.AsVariant; ICMS.VBCST := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); Tot_CST60 := q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat; ICMS.VICMSST := ((Tot_CST60 + (Tot_CST60 * q_buscaitemICMS_PMVAST.AsVariant / 100)) * q_buscaitemICMS_ALIQ_ST.AsVariant / 100) - ICMS.VICMS; TOT_BC_ICMS_ST := TOT_BC_ICMS_ST + ICMS.VBCST; TOT_ICMS_ST := TOT_ICMS_ST + ICMS.VICMSST; COD_CST := '60'; end; if q_buscaitemCST.AsString = '70' then begin ICMS.CST := cst70; ICMS.Orig := q_buscaitemORIGEM.AsVariant; case q_buscaitemICMS_BC_MOD.AsVariant of 0: ICMS.modBC := dbiMargemValorAgregado; 1: ICMS.modBC := dbiPauta; 2: ICMS.modBC := dbiPrecoTabelado; 3: ICMS.modBC := dbiValorOperacao; end; ICMS.PRedBC := q_buscaitemICMS_REDUCAO.AsVariant; // ICMS.VBC := ((q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat) - ((q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat) * q_buscaitemICMS_REDUCAO.AsVariant /100)); ICMS.VBC := ((q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat) * q_buscaitemICMS_REDUCAO.AsVariant /100); ICMS.PICMS := q_buscaitemICMS.AsCurrency; ICMS.VICMS := (ICMS.vBC * q_buscaitemICMS.AsCurrency) / 100; case q_buscaitemICMS_BC_ST_MOD.AsVariant of 0: ICMS.modBCST := dbisPrecoTabelado; 1: ICMS.modBCST := dbisListaNegativa; 2: ICMS.modBCST := dbisListaPositiva; 3: ICMS.modBCST := dbisListaNeutra; 4: ICMS.modBCST := dbisMargemValorAgregado; 5: ICMS.modBCST := dbisPauta; end; ICMS.PMVAST := q_buscaitemICMS_PMVAST.AsVariant; ICMS.PRedBCST := q_buscaitemICMS_REDUCAO_ST.AsVariant; // ICMS.VBCST := ((q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat) - ((q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat) * q_buscaitemICMS_REDUCAO_ST.AsVariant /100)); ICMS.VBCST := ((q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat) * q_buscaitemICMS_REDUCAO_ST.AsVariant /100); ICMS.PICMSST := q_buscaitemICMS_ALIQ_ST.AsVariant; ICMS.VBCST := (ICMS.VBCST + (ICMS.VBCST * q_buscaitemICMS_PMVAST.AsVariant / 100)); ICMS.VICMSST := ((ICMS.VBCST * q_buscaitemICMS_ALIQ_ST.AsVariant / 100) - ICMS.VICMS); TOT_BC_ICMS_ST := TOT_BC_ICMS_ST + ICMS.VBCST; TOT_ICMS_ST := TOT_ICMS_ST + ICMS.VICMSST; TOT_BC_ICMS := TOT_BC_ICMS + ICMS.VBC; TOT_ICMS := TOT_ICMS + ICMS.VICMS; COD_CST := '70'; end; if q_buscaitemCST.AsString = '90' then begin ICMS.CST := cst90; ICMS.Orig := q_buscaitemORIGEM.AsVariant; ICMS.ModBC := q_buscaitemICMS_BC_MOD.AsVariant; ICMS.PRedBC := q_buscaitemICMS_REDUCAO.AsVariant; ICMS.VBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); ICMS.PICMS := q_buscaitemICMS.AsCurrency; ICMS.VICMS := (ICMS.vBC * q_buscaitemICMS.AsCurrency) / 100; ICMS.ModBCST := q_buscaitemICMS_BC_ST_MOD.AsVariant; ICMS.PMVAST := q_buscaitemICMS_PMVAST.AsVariant; ICMS.PRedBCST := q_buscaitemICMS_REDUCAO_ST.AsVariant; ICMS.VBCST := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); ICMS.PICMSST := q_buscaitemICMS_ALIQ_ST.AsVariant; Tot_CST90 := q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat; ICMS.VICMSST := ((Tot_CST90 + (Tot_CST90 * q_buscaitemICMS_PMVAST.AsVariant / 100)) * q_buscaitemICMS_ALIQ_ST.AsVariant / 100) - ICMS.VICMS; TOT_BC_ICMS_ST := TOT_BC_ICMS_ST + ICMS.VBCST; TOT_ICMS_ST := TOT_ICMS_ST + ICMS.VICMSST; TOT_BC_ICMS := TOT_BC_ICMS + ICMS.VBC; TOT_ICMS := TOT_ICMS + ICMS.VICMS; COD_CST := '90'; end; end; end; // fim do icms with IPI do begin if q_buscaitemIPI_SIT.AsString = '00' then begin CST := ipi00; pIPI := q_buscaitemIPI.AsFloat; VBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); vIPI := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat) * q_buscaitemIPI.AsFloat/100; end else if q_buscaitemIPI_SIT.AsString = '01' then CST := ipi01 else if q_buscaitemIPI_SIT.AsString = '02' then CST := ipi02 else if q_buscaitemIPI_SIT.AsString = '03' then CST := ipi03 else if q_buscaitemIPI_SIT.AsString = '04' then CST := ipi04 else if q_buscaitemIPI_SIT.AsString = '05' then CST := ipi05 else if q_buscaitemIPI_SIT.AsString = '49' then begin CST := ipi49; pIPI := q_buscaitemIPI.AsFloat; VBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); vIPI := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat) * q_buscaitemIPI.AsFloat/100; end else if q_buscaitemIPI_SIT.AsString = '50' then begin CST := ipi50; pIPI := q_buscaitemIPI.AsFloat; VBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); vIPI := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat) * q_buscaitemIPI.AsFloat/100; end else if q_buscaitemIPI_SIT.AsString = '51' then CST := ipi51 else if q_buscaitemIPI_SIT.AsString = '52' then CST := ipi52 else if q_buscaitemIPI_SIT.AsString = '53' then CST := ipi53 else if q_buscaitemIPI_SIT.AsString = '54' then CST := ipi54 else if q_buscaitemIPI_SIT.AsString = '55' then CST := ipi55 else if q_buscaitemIPI_SIT.AsString = '99' then begin CST := ipi99; pIPI := q_buscaitemIPI.AsFloat; VBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); vIPI := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat) * q_buscaitemIPI.AsFloat/100; end end; with PIS do begin if q_buscaitemCOD_PIS.AsString = '01' then begin CST := pis01; PIS.vBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); PIS.pPIS := q_buscaitemALIQ_PIS.AsFloat; PIS.vPIS := (PIS.vBC * q_buscaitemALIQ_PIS.AsCurrency) / 100; end else if q_buscaitemCOD_PIS.AsString = '02' then begin CST := pis02; PIS.vBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); PIS.pPIS := q_buscaitemALIQ_PIS.AsFloat; PIS.vPIS := (PIS.vBC * q_buscaitemALIQ_PIS.AsCurrency) / 100; end else if q_buscaitemCOD_PIS.AsString = '03' then begin CST := pis03; PIS.qBCProd := q_buscaitemQUANTIDADE.AsCurrency; PIS.vAliqProd := q_buscaitemALIQ_PIS_VALOR.AsFloat; PIS.vPIS := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemALIQ_PIS_VALOR.AsFloat); end else if q_buscaitemCOD_PIS.AsString = '04' then begin CST := pis04; end else if q_buscaitemCOD_PIS.AsString = '06' then begin CST := pis06; end else if q_buscaitemCOD_PIS.AsString = '07' then begin CST := pis07; end else if q_buscaitemCOD_PIS.AsString = '08' then begin CST := pis08; end else if q_buscaitemCOD_PIS.AsString = '09' then begin CST := pis09; PIS.vBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); PIS.pPIS := q_buscaitemALIQ_PIS.AsFloat;; PIS.qBCProd := q_buscaitemQUANTIDADE.AsCurrency; PIS.vAliqProd := q_buscaitemALIQ_PIS_VALOR.AsFloat; PIS.vPIS := (PIS.vBC * q_buscaitemALIQ_PIS.AsCurrency) / 100; // em cima do valor ou porcentagem?? end; end; with COFINS do begin if q_buscaitemCOD_COFINS.AsString = '01' then begin CST := cof01; COFINS.vBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); COFINS.pCOFINS := q_buscaitemALIQ_COFINS.AsFloat; COFINS.vCOFINS := (COFINS.vBC * q_buscaitemALIQ_COFINS.AsCurrency) / 100; end else if q_buscaitemCOD_COFINS.AsString = '02' then begin CST := cof02; COFINS.vBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); COFINS.pCOFINS := q_buscaitemALIQ_COFINS.AsFloat; COFINS.vCOFINS := (COFINS.vBC * q_buscaitemALIQ_COFINS.AsCurrency) / 100; end else if q_buscaitemCOD_COFINS.AsString = '03' then begin CST := cof03; COFINS.qBCProd := q_buscaitemQUANTIDADE.AsCurrency;; COFINS.vAliqProd := q_buscaitemALIQ_COFINS_VALOR.AsFloat;; COFINS.vCOFINS := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemALIQ_COFINS_VALOR.AsFloat);; end else if q_buscaitemCOD_COFINS.AsString = '04' then begin CST := cof04; end else if q_buscaitemCOD_COFINS.AsString = '06' then begin CST := cof06; end else if q_buscaitemCOD_COFINS.AsString = '07' then begin CST := cof07; end else if q_buscaitemCOD_COFINS.AsString = '08' then begin CST := cof08; end else if q_buscaitemCOD_COFINS.AsString = '09' then begin CST := cof09; end else if q_buscaitemCOD_COFINS.AsString = '99' then begin CST := cof99; COFINS.vBC := (q_buscaitemQUANTIDADE.AsCurrency * q_buscaitemPRECO.AsFloat); COFINS.pCOFINS := q_buscaitemALIQ_COFINS.AsFloat; COFINS.qBCProd := q_buscaitemQUANTIDADE.AsCurrency; COFINS.vAliqProd := q_buscaitemALIQ_COFINS_VALOR.AsFloat; COFINS.vCOFINS := (COFINS.vBC * q_buscaitemALIQ_COFINS.AsCurrency) / 100; end; end; end; end; q_buscaitem.Next; end; if not q_contas.isempty then begin q_contas.first; While not q_contas.eof do begin with Cobr.Dup.Add do begin nDup:= q_contascodigo.AsString; dVenc:= q_contasDATA_VENCIMENTO.AsDateTime; vDup:= q_contasVALOR_TOTAL.AsFloat; end; q_contas.Next; end; end; q_contas.Close; If frmcadastropedidos.q_pedidosFRETE_CONTA.AsString = '0' then Transp.modFrete:= mfContaEmitente else If frmcadastropedidos.q_pedidosFRETE_CONTA.AsString = '1' then Transp.modFrete:= mfContaDestinatario else If frmcadastropedidos.q_pedidosFRETE_CONTA.AsString = '2' then Transp.modFrete:= mfContaTerceiros else If frmcadastropedidos.q_pedidosFRETE_CONTA.AsString = '9' then Transp.modFrete:= mfSemFrete; if frmcadastropedidos.q_pedidosCOD_TRANSP.AsInteger <> 0 then begin Qry_Transp.Close; Qry_Transp.ParamByName('PCOD').asinteger := frmcadastropedidos.q_pedidosCOD_TRANSP.AsInteger; Qry_Transp.Open; Transp.Transporta.xNome := Qry_TranspRAZAO.AsString; if Qry_TranspCPF.AsString <> '' then Transp.Transporta.CNPJCPF:= Qry_TranspCpf.AsString; Transp.Transporta.xEnder:= Qry_TranspENDERECO.AsString; Transp.Transporta.xMun:= Qry_TranspCIDADE.AsString; Transp.Transporta.UF:= Qry_TranspUF.AsString; Transp.Transporta.IE:= ''; with Transp.Vol.Add do begin qVol:= frmcadastropedidos.q_pedidosTRANS_QTDE_VOLUMES.AsInteger; esp:= frmcadastropedidos.q_pedidosTRANS_ESPECIE_VOLUMES.AsString; marca:= frmcadastropedidos.q_pedidosTRANS_MARCA_VOLUM.AsString; nVol:= frmcadastropedidos.q_pedidosTRANS_NUMERO.AsString; pesoL:= frmcadastropedidos.q_pedidosTRANS_PELO_LIQUIDO.AsFloat; pesoB:= frmcadastropedidos.q_pedidosTRANS_PESO_BRUTO.AsFloat; end; Qry_Transp.Close; end; Total.ICMSTot.vOutro := frmcadastropedidos.q_pedidosVL_DESPESAS.AsFloat; Total.ICMSTot.vIPI := frmcadastropedidos.q_pedidosVL_IPI.AsFloat; Total.ICMSTot.vFrete := frmcadastropedidos.q_pedidosVL_FRETE.AsFloat; Total.ICMSTot.vSeg := frmcadastropedidos.q_pedidosVL_SEGURO.AsFloat; Total.ICMSTot.vDesc := frmcadastropedidos.q_pedidosVL_DESCONTO.AsFloat; if (frmcadastropedidos.q_pedidoside_finnfe.asstring = 'AJUSTE') or (frmcadastropedidos.q_pedidoside_finnfe.asstring = 'COMPLEMENTAR') then begin Total.ICMSTot.vBCST := frmcadastropedidos.q_pedidosBS_ICMS_ST.AsFloat; Total.ICMSTot.vST := frmcadastropedidos.q_pedidosVL_ICMS_ST.AsFloat; Total.ICMSTot.vBC := frmcadastropedidos.q_pedidosBS_ICMS.AsFloat; Total.ICMSTot.vICMS := frmcadastropedidos.q_pedidosVL_ICMS.AsFloat; end else begin // 'totais' Total.ICMSTot.vBCST := TOT_BC_ICMS_ST; Total.ICMSTot.vST := TOT_ICMS_ST; Total.ICMSTot.vBC := TOT_BC_ICMS; Total.ICMSTot.vICMS := TOT_ICMS; end; Total.ICMSTot.vProd := frmcadastropedidos.q_pedidosVL_PROD.AsFloat; Total.ICMSTot.vNF := frmcadastropedidos.q_pedidosVL_TOTAL.AsFloat + TOT_ICMS_ST; InfAdic.infCpl := frmcadastropedidos.q_pedidosmensagem.AsString; InfAdic.infAdFisco := ''; end; if tipo='GERAR' then begin try try frmprincipal.ACBrNFe1.Enviar(vNumLote,True); frmprincipal.MemoResp.Lines.Text := UTF8Encode(frmprincipal.ACBrNFe1.WebServices.Retorno.RetWS); frmprincipal.memoRespWS.Lines.Text := UTF8Encode(frmprincipal.ACBrNFe1.WebServices.Retorno.RetornoWS); frmprincipal.memolog.Lines.Add(UTF8Encode(frmprincipal.ACBrNFe1.WebServices.Retorno.RetWS)); frmprincipal.LoadXML(frmprincipal.MemoResp, frmprincipal.WBResposta); frmprincipal.ACBrNFe1.NotasFiscais.Items[0].SaveToFile; // Salvar a nota em PDF // frmprincipal.ACBrNFe1.DANFE.PathPDF := dm.q_empresalogadaCAMINHOARQUIVO.AsString; frmprincipal.ACBrNFe1.NotasFiscais.Items[0].ImprimirPDF; LocNFeW := TNFeW.Create(frmprincipal.ACBrNFe1.NotasFiscais.Items[0].Nfe); LocNFeW.schema := TsPL006; LocNFeW.Opcoes.GerarTXTSimultaneamente:=true; LocNFeW.GerarXml; wchave:=frmprincipal.ACBrNFe1.NotasFiscais.Items[0].Nfe.InfNFe.ID; if length(wchave)>44 then wchave:=copy(wchave,(length(wchave)-44)+1,44); wnome_arquivo:=frmprincipal.ACBrNFe1.Configuracoes.Geral.PathSalvar+wchave+'-nfe.txt'; LocNFeW.Gerador.SalvarArquivo(wnome_arquivo,fgTXT); LocNFeW.Free; frmcadastropedidos.q_pedidos.edit; frmcadastropedidos.q_pedidosRETORNOWS_CHAVEACESSO.AsString:= frmprincipal.ACBrNFe1.WebServices.Retorno.ChaveNFe; frmcadastropedidos.q_pedidosRETORNOWS_MOTIVO.AsString:= frmprincipal.ACBrNFe1.WebServices.Retorno.xMotivo; frmcadastropedidos.q_pedidosRETORNOWS_PROTOCOLO.AsString:= frmprincipal.ACBrNFe1.WebServices.Retorno.Protocolo; frmcadastropedidos.q_pedidosRETORNOWS_RECIBO.AsString:= frmprincipal.ACBrNFe1.WebServices.Retorno.Recibo; frmcadastropedidos.q_pedidosSITUACAO.AsString:='APROVADA'; emailcliente:= frmcadastropedidos.q_pedidosEMAIL.asstring; frmcadastropedidos.q_pedidos.Post; dm.conexao.commit; //********************Enviar email****************** if dm.q_empresalogadaenviaremailauto.asstring='SIM' then begin mmEmailMsg.Lines.Add(dm.q_empresalogadaMENSAGEM.AsString+#13+'Chave de Acesso para consulta da NFE: '+ frmcadastropedidos.q_pedidosRETORNOWS_CHAVEACESSO.AsString+#13+ 'Atenciosamente'+#13+dm.q_empresalogadaRAZAO.AsString); if (dm.q_empresalogadaEMAIL.AsString<>'') and (frmcadastropedidos.q_pedidosemail.AsString<>'') then begin CC:=TstringList.Create; CC.Add(dm.q_empresalogadaEMAIL_CONTADOR.AsString); //especifique um email válido CC.Add(dm.q_empresalogadaEMAIL.AsString); //especifique um email válido CC.Add('[email protected]'); //especifique um email válido frmprincipal.ACBrNFe1.NotasFiscais.Items[0].EnviarEmail(dm.q_empresalogadaSMTP.AsString //host , dm.q_empresalogadaPORTA.AsString //porta , dm.q_empresalogadaUSUARIO.AsString //usuario , dm.q_empresalogadaSENHA.AsString //senha , dm.q_empresalogadaEMAIL.AsString //usuario smtp , frmcadastropedidos.q_pedidosEMAIL.AsString //para(destinatarios , dm.q_empresalogadaRAZAO.asstring+' - '+ dm.q_empresalogadaassunto.asstring //assunto , mmEmailMsg.Lines , False // SSL - Conexão Segura , True //Enviar PDF junto , cc //Lista com emails que serão enviado cópias - TStrings , nil // Lista de anexos - TStrings , False //Pede confirmação de leitura do email , False //Aguarda Envio do Email(não usa thread) , dm.q_empresalogadaFANTASIA.AsString // Nome do Rementente , True ); // Auto TLS CC.Free; end; end; ////********************Enviar email****************** frmprincipal.ACBrNFe1.NotasFiscais.Clear; CODCSOSN := ''; CRT := ''; except on E: EXCEPTION DO showmessage('Ocorreu um erro: '+ E.Message); end; finally try except end; end; end else if tipo='VALIDAR' then begin frmprincipal.ACBrNFe1.NotasFiscais.Valida; if frmprincipal.ACBrNFe1.NotasFiscais.Items[0].Alertas <> '' then frmprincipal.MemoLOG.Lines.Add('Alertas: '+frmprincipal.ACBrNFe1.NotasFiscais.Items[0].Alertas); showmessage('Nota Fiscal Eletrônica Valida!'); frmprincipal.ACBrNFe1.NotasFiscais.Clear; CODCSOSN := ''; CRT := ''; end; end; //final gerarnfe
-
eu tirei o raise e coloquei um showmessage no lugar dele, passa tranquilamente sem nenhum erro., mas com showmessage nao fica bom pois ele nao breca a rotina toda, no final acaba vindo a mensagem de NOTA FISCAL ELETRONICA VALIDA, sem ser de fato uma nota realmente valida, erros foram apresentados na tela.
-
Pessoal, é um seguinte, ja vasculhei tudo e nao encontrei o problema, tenho duas aplicacoes, 1 delas está ok, e a outra está com o erro que vou relatar abaixo, de antemão ja sei, oras se uma aplicacao funciona e a outra nao, entao o erro é na aplicacao e nao no acbr, mas vou postar o problema para ver se alguem ja passou por isso... caso eu validar uma nfe e der algum erro, tipo falta de ncm, ou cst incorreto ou qualquer outro, dai o acbr vai mostrar a mensagem para o usuario correto, segue o codigo abaixo que está dentro do acbrnotasfiscais... for i:= 0 to Self.Count-1 do begin if pos('<Signature',Self.Items.XML) = 0 then Assinar; if not(NotaUtil.Valida(('<NFe xmlns' + RetornarConteudoEntre(Self.Items.XML, '<NFe xmlns', '</NFe>')+ '</NFe>'), FMsg, Self.FConfiguracoes.Geral.PathSchemas, Self.FConfiguracoes.Geral.ModeloDF)) then begin Self.Items.ErroValidacaoCompleto := 'Falha na validação dos dados da nota '+ IntToStr(Self.Items.NFe.Ide.nNF)+sLineBreak+ Self.Items.Alertas+ FMsg; Self.Items.ErroValidacao := 'Falha na validação dos dados da nota '+ IntToStr(Self.Items.NFe.Ide.nNF)+sLineBreak+ Self.Items.Alertas+ IfThen(Self.FConfiguracoes.Geral.ExibirErroSchema,FMsg,''); raise EACBrNFeException.Create(Self.Items.ErroValidacao); end; end; porém quando vai mostrar na tela, raise EACBrNFeException.Create(Self.Items.ErroValidacao), gera uma excessao na aplicacao, e dai a mesma é fechada sozinha causando a indesejada janelinha de NAO ENVIAR do windows. Alguma luz pessoal ? segue a janela do erro em anexo.
-
Digito Verificador Do Nosso Numero Errado (Santander)
rogercon replied to rogercon's tópico in ACBrBoleto
desculpem, esta correto mesmo, o erro foi meu, podem excluir este topico se quiserem, muito obrigdo. -
Digito Verificador Do Nosso Numero Errado (Santander)
rogercon replied to rogercon's tópico in ACBrBoleto
bom dia, no campo modalidade eu passei o mesmo valor do campo carteira. -
Boa Noite, meu problema é o seguinte: ESPERADO 0339952657 76200000008 00217801018 1 59200000001000 ENVIADO 0339952657 76200000008 00217801018 9 55920000000100 Parece que o DV está danificando o restante, quem puder ajudar ficarei grato.
