Ir para conteúdo
  • Cadastre-se

moisesaugusto

Membros
  • Total de ítens

    116
  • Registro em

  • Última visita

Tudo que moisesaugusto postou

  1. Boa tarde, pessoal. Estou tendo um problema no envio de arquivos através do Acbr, então resolvi reativar este tópico, a fim de evitarmos duplicidade nos assuntos. O erro está acontecendo quando tento enviar os arquivos (xmL e Pdf ). o erro retornado é o abaixo : NomeArq := PathWithDelim(TACBrNFe( TNotasFiscais( Collection ).ACBrNFe ).DANFE.PathPDF)+NomeArq+'.pdf' 2) Entenda-se que essa é a linha em que o debug está parando. 3) Interessante é que tenho o mesmo código funcionando perfeitamente utilizando-me de um outro provedor (Lecom). Neste caso atual estou tentando mandar atraves do Hotmail.Abri uma conta la, coloquei os dados, etc, porta 587 mas não consigo fazer funcionar. Se for interessante, postarei o código utilizado (o mesmo do demo do Acbr ). Agradecido pela atenção.
  2. Aqui a rotina que estou utilizando para consultar as notas : Interessante que há uns tres ou quatro meses eu consultava média de 1000 notas por vez e funcionava corretamente. Alguma sugestão ?? Em tempo : obrigado pela resposta ////////// procedure TForm1.Button6Click(Sender: TObject); { Coloquei um Filelistbox para conter os XMLs a serem consultados } var {i = contador para os itens da Lista de xmls.. s = string contendo nome dos arquivos a consultar } I : Integer; S, NomeArq : string; begin { Consulta o status de cada nota, separadamente e refaz o arquivo p/envio cliente -- -procNfe.xml ...} ACBRNfe1.Configuracoes.Certificados.NumeroSerie := 'FICTICIO-4c192799-FICTICIO' ; FileListBox1.Directory := 'D:\ConfereNumeroNotas\Copiadas\'; For i := 0 to FileListBox1.Items.Count -1 do begin S := ''; S := S + FileListBox1.Items ; if uPPERCASE (Copy (S, 45, 8)) = '-NFE.XML' then // chave tem 44 digitos begin ACBrNFe1.NotasFiscais.Clear; ACBrNFe1.NotasFiscais.LoadFromFile(S); ACBrNFe1.Consultar; MemoResp.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Consulta.RetWS); memoRespWS.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Consulta.RetornoWS); LoadXML(MemoResp, WBResposta); NomeArq := 'D:\Usando ACBR para relatorios NF-e\Conferidas\' + S; if pos(UpperCase('-nfe.xml'),UpperCase(NomeArq)) > 0 then NomeArq := StringReplace(NomeArq,'-nfe.xml','-procNfe.xml',[rfIgnoreCase]); ACBrNFe1.NotasFiscais.Items[0].SaveToFile(NomeArq); { apenas para verificar se não " trava " } Label2.Caption := 'Nota Nr. '+ S + ' consultada.' ; {Faz a gravação dos dados da Nf-e num componenente ClientDataSet } ClientDataSet1.Append; ClientDataSet1.FieldByName('Protocolo').AsString := ACBrNFe1.WebServices.Consulta.Protocolo; ClientDataSet1.FieldByName('Numero').AsString := InttoStr(AcBrNfe1.NotasFiscais.Items[0].NFe.Ide.nNF); ClientDataSet1.FieldByName('Emissao').AsDateTime := AcBrNfe1.NotasFiscais.Items[0].NFe.Ide.dEmi; ClientDataSet1.FieldByName('Cliente').AsString := AcBrNfe1.NotasFiscais.Items[0].NFe.Dest.xNome; ClientDataSet1.FieldByName('Valor').AsFloat := AcbrNfe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF; ClientDataSet1.FieldByName('Icms').AsFloat := AcbrNfe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vICMS; ClientDataSet1.FieldByName('CFOP').AsInteger := StrtoInt(AcbrNfe1.NotasFiscais.Items[0].NFe.Det.Items[0].Prod.CFOP); ClientDataSet1.FieldByName('Status').AsInteger := AcbrNfe1.NotasFiscais.Items[0].NFe.procNFe.cStat; ClientDataSet1.FieldByName('CNPJ').AsString := AcBrNfe1.NotasFiscais.Items[0].NFe.Dest.CNPJCPF; { Se a nota foi cancelada , "marca ' para constar no relatorio ...(cancelada=status 101)} if InttoStr (AcbrNfe1.NotasFiscais.Items[0].NFe.procNFe.cStat) = '101' then begin ClientDataSet1.Edit; ClientDataSet1Obs.AsString := 'CANCELADA'; ClientDataSet1.Post; ClientDataSet1.Close; ClientDataSet1.Active := True; end; if (InttoStr(AcbrNfe1.NotasFiscais.Items[0].NFe.procNFe.cStat) <> '100') and (InttoStr (AcbrNfe1.NotasFiscais.Items[0].NFe.procNFe.cStat) <> '101') then begin ClientDataSet1.Edit; ClientDataSet1Obs.AsString := 'INUTILIZADA'; ClientDataSet1.Post; ClientDataSet1.Close; ClientDataSet1.Active := True; end; end; Application.ProcessMessages; end; ShowMessage ('Todas as notas foram consultadas'); end; //
  3. Somente complementando, o erro se dá na linha 2506 do módulo ' AcbrNfeWebservices '.
  4. Olá amigos. Há muito tempo venho, uma ou duas vezes ao mês, consultando no site da SEFAZ as notas emitidas durante determinado período, e a partir dessa consulta emito um relatório de notas de entrada, bonificações, vendas interestaduais, etc. Acontece que de um ou dois meses para cá, não consigo mais fazer a consulta mensal (aproximadamente 800 notas ) , sendo que tenho optado por fazer a cada 10 dias . O erro retornado é o abaixo descrito : Project.exe raised exception class ESOAPHTTPException with message 'A conexão com o servidor foi reconfigurada-URL:Https://nfe.fazenda.sp.gov.br/nfeweb/services/nfeconsulta2.asmxSOAPAction:http:///www.p ortalfiscal.inf.br/nfe/wsd/NfeConsulta2'. Process stopped. Use Step or Run to continue. Acredito que se eu aumentasse o tempo para meu socket aguardar resposta da conexão, resolveria o problema. Gostaria de uma sugestão, se alguem já passou por esse problema. Obrigado. Se quiserem, posso postar o codigo que utilizo para as consultas.
  5. Poxa, Regys, legal.. Vou corrigir, pois eu nem havia pensado nesse detalhe. Obrigado de novo.
  6. Boa noite. Consegui achar o erro. É que eu estava usando o seguinte código : AcbrNfe1.NotasFiscais.Items[0].NFe.Ide.dhCont := Now; // data e hora da entrada em SCAN e outros codigos preenchendo a propriedade items.. Porem o correto (e que agora funciona ) seria : AcbrNfe1.NotasFiscais.Add.NFe.Ide.tpEmis := TeScan; ACBrNFe1.NotasFiscais.Add.NFe.ide.dhCont := now; .. e demais códigos ... Portanto , { R E S O L V I D O }
  7. Ola, Regys. Agradeço-lhe a atenção. Porém, mesmo eu colocando " Now ", o erro continuou. Mais alguma sugestão ? Será que eu reinstalando o componente adiantaria ? Baixei hoje a ultima versao pelo svn mas nao compilei. Os schemas da SEFAZ são os mais atuais (versao PL_006n ). Olha, a propósito nem estou tentando enviar. Ele nem chega a fazer o .XML. Comentei a linha referente ao envio.
  8. { R E S O L V I D O } Prezados amigos. Apos pesquisar e não encontrar algo que responda minha dúvida, tomo a liberdade de abrir novo tópico. Estou implementando uma rotina para que, ao ser acionado o modo SCAN na SEFAZ / SP, o meu cliente possa emitir as respectivas notas. Mas estou encontrando uma dificuldade . Apesar de haver preenchido corretamente (acho) as propriedades do componente ACbrNfe, ao tentar transmitir a dita cuja nota recebo o erro " list out of bounds ". Posto aqui uma parte do código que estou utilizando (só para assegurar que estou fazendo as modificações corretas no componente (pois no modo normal não está dando problema (tanto em produção quanto em homologação )). Obrigado pela ajuda. AcbrNfe1.NotasFiscais.Items[0].NFe.Ide.dhCont := Time; // a principio usei date mas tambem dá o mesmo erro. AcbrNfe1.NotasFiscais.Items[0].NFe.Ide.xJust := 'EMISSAO EM CONTINGENCIA SCAN '; Ide.tpEmis := teSCAN; Ide.modelo := 55; Ide.serie := 900; Ide.nNF := StrtoInt (EdtNumeroNota.text) ; // controle por SP no banco de dados Ide.dEmi := StrtoDate (MaskDataemissao.Text); Ide.dSaiEnt := StrtoDate (MaskDataEntrega.Text); Ide.hSaiEnt := Now; ... outros codigos ... // .... enviar ...
  9. Ola, Fernando. boa tarde. Eu estava procurando ajuda numa rotina para evitar a duplicidade na emissão de nf-e então deparei-me com seu tópico, que me pareceu pertinente .. Só por curiosidade, gostaria de saber se o seu problema foi solucionado, com o envio da nota utilizando o comando acbrNfe1.Webservices.... etc... Abraços. Por oportuno, gostaria de saber como eu saberia o nome do arquivo a ser gerado ANTES dele ser gravado no .XML, para que eu possa consultar se já existe uma nota com o mesmo numero (ou com a mesma chave) no diretorio que utilizo para as autorizadas (tem de ser antes de gravar, para eu desenvolver a rotina de confirmação // ou alteraçãoi ). Aqui vai parte do codigo que uso atualmente : ACBrNFe1.NotasFiscais.Assinar; ACBrNFe1.NotasFiscais.GerarNFe; ACBrNFe1.NotasFiscais.Items[0].SaveToFile; ShowMessage('Arquivo gerado em: '+ ACBrNFe1.NotasFiscais.Items[0].NomeArq); Obrigado.
  10. Olá, TiagoFz, boa noite ! Olha, eu utilizo em meu aplicativo o AcbrDanfeRV. Cheguei a usar tambem o QR, mas por um motivo que não me vem à mente agora eu passei para o RV. Se não me engano ele tem uma alternativa (ou propriedade ) qualquer que não consegui configurar no QR. Acho ele legalzinho, imprime sem problemas. É isso aí. Agora lembrei -- Eu não consegui fazer a conversão do XML para PDF, o componente " fingia " converter mas o Pdf não aparecia no diretorio. Então eu mudei pro Rave e não deu mais problemas.
  11. Olá, pessoal, boas noites. Não é nenhuma resposta, na verdade é uma curiosidade. Estou vendo voces falarem que gravam a propriedade .XML do ACbr em banco de dados. Tudo bem, eu tenho colecionado mesmo os xmls todos, porem sempre gosto de aprender novas possibilidades. Desculpe se for elementar, mas eu não tenho a minima ideia de como voces podem salvar a propriedade do componente em banco de dados ?? Eu uso BD firebird 2.5 , no começo eu guardava numa tabela os dados da nota, como numero, chave, destinatario, etc.. mas a partir da leitura do componente (isso era para fins do relatorio mensal ao escritorio de contabilidade). Porem atualmente eu nem uso mais a gravação, faço uma consulta dos xml na SEFAZ (com um componente ClientDataSet e um directoryList ) e dali mesmo já emito o relatorio, com dados bem atualizados. Porém se puderem me dar um exemplo (da gravação da propriedade ) eu ficaria agradecido. Abraços.
  12. Olá, André e Márcio. André, naturalmente eu havia estudado sim o demo, tanto que aproveitei bastantes rotinas dele , porém reconheço que não devo te-lo feito o suficiente rs rs . Falhei , não procurei direito . Lá tem umas instruções que retornam o numero do certificado. {$IFNDEF ACBrNFeOpenSSL} edtNumSerie.Text := ACBrNFe1.Configuracoes.Certificados.SelecionarCertificado; {$ENDIF} Agradeço-lhe de qualquer forma pela atenção. Márcio, mto obrigado tambem por ter postado a resposta. Valeu cara! Por oportuno, para que servem essas instruções para o compilador ? eu fiz sem elas e funcionou da mesma forma ... Nota : Uso CAPICOM.
  13. Ola, tudo bem ? Não tenho experiência com o ACBRMonitor, não o utilizo. Porém , sugiro que voce verifique se os pcs onde esses problemas ocorrem não têm pouca memória RAM disponível. Eu diria que pode ser, também, um sistema operacional meio deteriorado (quem sabe uma formatação e reinstãlação do SO não resolveria ?) Realmente, erros aleatórios são terríveis... na minha opinião.
  14. Olá, adenilsonjsn Somente estou postando para agradecer pela rotina que vc enviou. Aquele erro eu tinha resolvido já (era mesmo no calculo do valor liquido da fatura ) , porém, estava com a soma de meus descontos (unitários) dando errinho de 1 centavo e os clientes começaram a chiar (rs ).. Coloquei (ainda hoje de manhã ) a rotina de arredondamento que vc enviou e resolveu de vez tambem. Abraços.
  15. Olá, pessoal, boas noites ! Eu gostaria de saber se alguém conhece uma rotina em Delphi, com código nativo ou mesmo atraves do componente ACBRNfe, que faça a leitura do numero de serie do Certificado Digital. 2) Estou utilizando o ACBRNfe sem problema algum, quero apenas fazer um arquivo .ini para dele extrair as informações do emitente (atualmente estou utilizando strings diretamente na geração do XML com essas informações ) . Tambem leio o serial pelo Internet Explorer (opções/conteúdo etc...) mas eu gostaria de que o usuário pudesse " ler " o serial e então gravar no referido arquivo .ini. Agradeço qualquer comentário ou auxílio.
  16. Olá a todos ! Apos ter postado a ultima msg referente à leitura , no XML, do ambiente em que a nota foi emitida, rotina que estou uitilizando para fazer a conferencia de intervalos (falhas ) na numeração das notas emitidas, verifiquei que , da forma que havia colocado antes, apareciam uns erros quando da nota não constasse o Status (autorização, cancelamento, etc ). Então, o ambiente aparecia como o que estava configurado no componente em tempo de design. Para resolver, alterei o codigo para : ClientDataSet1Ambiente.AsString := tpambtoStr (AcbrNfe1.NotasFiscais.Items[0].NFe.Ide.tpAmb); Dessa forma, já fiz uma porção de testes de leitura de notas emitidas, sendo que o ambiente retornado tem sido sempre o correto.
  17. [ Também resolvido ] Apesar de não ter havido nenhuma resposta, venho de qualquer forma agradecer a todos aqueles que tenham se interessado em ler o topico e talvez pensado em auxiliar-me. Assim, coloco a solução, como sempre tenho feito : A instrução a ser colocada a fim de ler-se em qual ambiente a nota foi emitida seria : ClientDataSet1.FieldByName('AMBIENTE').AsString := tpambToStr(ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.tpAmb) ; { creditos ao artigo que foi postado em http://www.activedelphi.com.br/forum/vi ... 848982ac88 onde , com a devida adaptação, encontrei a solução. }
  18. Boa noite, Adenilson . Tudo bem ? E então ? conseguiu solucionar o teu problema ? Eu tenho utilizado normalmente o Acbr há já bastante tempo, e felizmente conseguido resolver a maioria dos problemas que teem surgido, logicamente com a colaboração dos demais amigos do forum. Hoje estava dando uma olhada nas postagens ainda não respondidas, e resolvi trocar algumas ideias contigo, se ainda o desejar. Me informe se o teu certificado é A1 ou A3 e se por acaso não foi emitido em 2012, andei lendo que parece haver algum bug na recepção da SEFAZ ... em ambiente de produção. Já experimentou tambem formatar o Pc e reinstalar Delphi, ACBR, tudo outra vez ? Abraços. Outra coisa : Se tiver um XML gerado, anexe aqui no forum. Geralmente os erros são encontrados quando da analise do mesmo. E na maioria das vezes, o componente nao envia com erro, por causa da validação, porem chega a gerar o XML. Qual a versao dos schemas que vc esta utilizando ( a mais atual é a " PL_006j_semAncora " )
  19. Ola, estou reavivando este topico, a fim de postar outra duvida, relacionada a esta: Estou implementando uma rotina para, a partir da leitura de um XML, escolher se este será processado (relatorio mensal ) ou descartado. Na verdade, essa parte da rotina é para conferir se na sequencia dos arquivos não existe algum intervalo (na numeração das notas ). Como tenho duas numerações (do ambiente de testes e da produção, preciso "ler " no XML qual é esse ambiente . Atualmente a rotina esta assim : begin ACBrNFe1.NotasFiscais.Clear; ACBrNFe1.NotasFiscais.LoadFromFile(S); {Faz a gravação dos dados da Nf-e num componenente ClientDataSet } ClientDataSet1.Append; ClientDataSet1.FieldByName('Protocolo').AsString := ACBrNFe1.WebServices.Consulta.Protocolo; ClientDataSet1.FieldByName('Numero').AsString := InttoStr(AcBrNfe1.NotasFiscais.Items[0].NFe.Ide.nNF); // Aqui a duvida // ClientDataSet1.FieldByName('Ambiente').AsInteger := // ?? // Optei por integer, posso colocar outro tipo de dados ... naturalmente { Faz a comparação } ==== outros codigos. Obrigado pelas atenções que me dispensarem.
  20. Com a edição da Medida Provisoria 522/2011, de 01/12/2011 - isentando algumas empresas do pagamento do Pis e Cofins ate 30/06/2012, procurei pela net e não encontrei exemplo algum de como seriam preenchidos, no XML, os valores relativos ao repasse desse beneficio aos adquirentes de produtos em pauta. Portanto, anexo um arquivo-exemplo, devidamente autorizado pela SEFAZ. Nota : tratando-se de um desconto incondicional, o calculo do ICMS é feito sobre o valor liquido da nota fiscal e nao sobre o valor bruto dos produtos. Se alguem discordar de mim, por favor me avise, pois não sou o dono da verdade, portanto . aceito opinioes ou discordancias. Por oportuno, nesse arquivo, por ser CFOP de remessa para a propria empresa, não precisaria constar o desconto, é que ainda nao tive tempo de colocar os devidos " ifs " conforme os CFOPs. Abraços fraternais .:. 35120102553503000110550010000149121000000017-NFe.xml
  21. Boa tarde Régys e demais amigos do forum. Exatamente . Era ai mesmo o problema., Inclusive eu ia postar aqui que havia solucionado. Hoje eu re-instalei o Unimake (.... creditos a eles ...) e quando tentei enviar por ele, o validador acusou exatamente nessas linhas doi XML. Dai foi so analisar de novo e consertar. Cobr.Fat.nFat := EdtFatura.Text; // 'Numero da Fatura'; Cobr.Fat.vOrig := Valtot ; // Dm.CdsPedidosValorUnit.AsFloat * Dm.CdsPedidosQtdeVendida.AsInteger; Cobr.Fat.vDesc := DescontoTotal; Cobr.Fat.vLiq := Cobr.Fat.vOrig - Cobr.Fat.vDesc; with Cobr.Dup.Add do Essa é a partezinha do codigo que modifiquei. Muito obrigado pela atenção. Valeu !
  22. Olá, senhores, complementando : Acabei de fazer o seguinte teste : enviei 3 notas, sendo a primeira com o primeiro produto, foi autorizada sem problemas; Enviei a segunda com dois produtos, autorizasção OK A terceira, com tres dos produtos, tambem autorizada. Quando inclui o quarto produto, em uma outra nota, deu o problema. Já descobri ONDE esta o erro, mas não consegui ainda soluciona-lo. Obrigado.
  23. Ola, pessoal. Vou aproveitar este topico ainda aberto para expor minha duvida . Tenho utilizado o acbrNfe sem problemas, porem de uns dias para ca, comecei a ter problemas tambem com as casas decimais. Faz dois dias que estou tentando emitir a nota fiscal desse Xml que vou postar, porem aparece um montao de erros nas TAGs (numero maximo de casas decimais pertido = 2 ; Interessante é que o valor unitario de um dos itens, apesar de ser R$ 2,30, sempre aparece com esse monte de digitos. Inclusive no banco de dados esta correto. A versao do componente que utilizo é 0.4.0.a. O problema (acho ) que iniciou-se quando a empresa comecou a conceder um desconto de 3,65 porcento aos clientes deles (relativo ao repasse da isenção do Pis/Cofins. Por favor, se tiverem uma dica, forneçam-me . Agradeço muito. No componente Danfe, o numero de casas decimais esta setado em 2 digitos de centavos. 35120102553503000110550010001003821000000010-NFe.xml
  24. Ola, amigos. boas noites!! Como estou com o mesmo problema (quando há rejeição o arquivo correto anterior é sobrescrito ) eu gostaria de saber se , após fazer essa modificação : if FConfiguracoes.Arquivos.Salvar then para ... if ((FConfiguracoes.Arquivos.Salvar) and (AInfProt.Items.cStat = 100)) then sugerida pelo Ivomar, o que mais eu tenho de fazer para que o componente assuma a modificação ?? porque alterei no fonte (AcbrNFewebServices na função TNFeRetRecepcao.Confirma ) mas nada aconteceu, quando emito nota em duplicidade continua sobrescrevendo. Tenho de compilar alguma coisa outra vez ?? ou reinstalar o componente ? Obrigado. !
  25. Bons dias a todos . Eu tambem estou tendo este erro (exemplo : voce emite a nota numero 1 . Se emitir a nota numero 2 utilizando o numero 1 (por engano ) ela voltara da SEFAZ como duplicada. Então, o arquivo XML da nota numero 1 é sobrescrito, ficando identico ao da nota numero 2. Como paliativo, eu faço um backup de toda nota ao ser emitida. Dessa forma , tenho sempre o XML original, pois não permito sobrescrever o backup. Mas eu queria mesmo resolver o ERRO, que não descobri ainda onde esta. ´Código que utilizo atualmente para gerar a nota e enviar : procedure TFrmPrincipal.GerarNota1Click(Sender: TObject); var Temp : String ; // Servirá para " limpar" os campos com caracteres estranhos GuardaChave, NItem : Integer; S, NomeArq : String; begin { Valida todos os campos obrigatórios da Nota - somente preenchimento } If DBEdtRazao.Text = '' then begin ShowMessage ('Campo < Razão Social > deve ser preenchido'); Abort; end; If DBEdtRua.Text = '' then begin ShowMessage ('Campo < Rua > deve ser preenchido'); Abort; end; If DBEdtNumero.Text = '' then begin ShowMessage ('Campo < Numero > deve ser preenchido'); Abort; end; If DBEdtBairro.Text = '' then begin ShowMessage ('Campo < Bairro > deve ser preenchido'); Abort; end; If DBEdtCnpj.Text = '' then begin ShowMessage ('Campo < CPF/CNPJ > deve ser preenchido'); Abort; end; If DBEdtCodIbge.Text = '' then begin ShowMessage ('Campo < Cod.Ibge > deve ser preenchido'); Abort; end; If DBEdtIe.Text = '' then begin ShowMessage ('Campo < Inscr.Estadual > deve ser preenchido'); Abort; end; If DBEdtCidade.Text = '' then begin ShowMessage ('Campo < Cidade > deve ser preenchido'); Abort; end; If DBEdtRua.Text = '' then begin ShowMessage ('Campo < Estado > deve ser preenchido'); Abort; end; AcbrNfe1.NotasFiscais.Clear; MemoObs.Lines.Clear; AcbrNfe1.Configuracoes.Certificados.NumeroSerie := '1234567890123456'; with ACBrNFe1.NotasFiscais.Add.NFe do begin Ide.tpEmis := teNormal; Ide.cNF := 1; // Se for 0 gera número aleatório Ide.natOp := ComboNatOperacao.Text ; If ComboaVista.ItemIndex = 0 then Ide.indPag := ipVista Else if Comboavista.ItemIndex = 1 then Ide.indPag := ipPrazo; Ide.modelo := 55; Ide.serie := 1; Ide.nNF := StrtoInt (EdtNumeroNota.text) ; Ide.dEmi := StrtoDate (MaskDataemissao.Text); Ide.dSaiEnt := StrtoDate (MaskDataEntrega.Text); Ide.hSaiEnt := Now; If comboSaida.ItemIndex = 0 then Ide.tpNF := tnEntrada Else if comboSaida.ItemIndex = 1 then Ide.tpNF := tnSaida; If Radiogroup1.ItemIndex = 0 then begin Ide.tpAmb := taProducao; AcbrNfe1.Configuracoes.WebServices.Ambiente := taProducao; end Else If Radiogroup1.ItemIndex = 1 then begin Ide.tpAmb := taHomologacao; AcbrNfe1.Configuracoes.WebServices.Ambiente := taHomologacao; end; Ide.verProc := '1.0.0.0'; //Versão deste sistema Ide.cUF := 35 ; // NotaUtil.UFtoCUF(edtEmitUF.Text); (S.Paulo == 35 ) Ide.cMunFG := 3506003 ; // = Bauru = StrToInt(form1.edtEmitCodCidade.Text); Ide.finNFe := fnNormal; { Posteriormente, substituir estes dados por outros utilizando Tabela/Emitente } Emit.CNPJCPF := '12345678901234' ; Emit.IE := '123456789012' ; Emit.xNome := 'NOME DA EMPRESA' ; Emit.xFant := 'NOME FANTASIA' ; Emit.EnderEmit.fone := '14 33333333' ; Emit.EnderEmit.CEP := 17064852 ; // Emit.EnderEmit.xLgr := 'MINHA RUA ' ; Emit.EnderEmit.nro := '10-10' ; Emit.EnderEmit.xBairro := 'DISTR. INDUSTRIAL III' ; Emit.EnderEmit.cMun := 3506003 ; Emit.EnderEmit.xMun := 'BAURU' ; Emit.EnderEmit.UF := 'SP' ; Emit.enderEmit.cPais := 1058; Emit.enderEmit.xPais := 'BRASIL'; Emit.IEST := ''; 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 Emit.CRT := crtRegimeNormal; Dest.CNPJCPF := Dm.QryClientescic.AsString; if not Dm.QryClientes.FieldByName('InscEstadual').IsNull then begin Temp := Dm.QryClientes.FieldByName('InscEstadual').Value; Temp := StringReplace(Temp,'.','',[rfReplaceAll]); Temp := StringReplace(Temp,'-','',[rfReplaceAll]); if Length(Dest.CNPJCPF) <> 11 then Dest.IE := Temp; end; Dest.ISUF := ''; if not Dm.QryClientesRazao.IsNull then Dest.xNome := Dm.QryClientesRazao.AsString; if not Dm.QryClientes.FieldByName('Telefone').IsNull then begin Temp := Dm.QryClientestelefone.AsString; Temp := StringReplace(Temp,' ','',[rfReplaceAll]); Temp := StringReplace(Temp,'(','',[rfReplaceAll]); Temp := StringReplace(Temp,')','',[rfReplaceAll]); Temp := StringReplace(Temp,'-','',[rfReplaceAll]); Dest.EnderDest.Fone := Temp; end; if not Dm.QryClientesCEP.IsNull then begin Temp := Dm.QryClientesCEP.AsString; Temp := StringReplace(Temp,'.','',[rfReplaceAll]); Temp := StringReplace(Temp,'-','',[rfReplaceAll]); Dest.EnderDest.CEP := StrToInt(Temp); end; if not Dm.QryClientesEndereco.IsNull then begin Temp := Dm.QryClientesEndereco.AsString; Temp := StringReplace(Temp,',','',[rfReplaceAll]); Temp := StringReplace(Temp,':',' ',[rfReplaceAll]); Dest.EnderDest.xLgr := Temp ; // Dm.QryClientesEndereco.AsString; end; Dest.EnderDest.nro := Dm.QryClientesNumero.AsString; Dest.EnderDest.xCpl := ''; Dest.EnderDest.xBairro := Dm.QryClientesBairro.AsString; Dest.EnderDest.cMun := Dm.QryClientesCodIbge.AsVariant; Dest.EnderDest.xMun := Dm.QryClientesCidade.AsString; Dest.EnderDest.UF := Dm.QryClientesUF.AsString; Dest.EnderDest.cPais := 1058; Dest.EnderDest.xPais := 'BRASIL'; //Adicionando Produtos NItem := 1; Dm.CDSPedidos.First; While not Dm.CDSPedidos.Eof do begin with Det.Add do begin Prod.nItem := NItem ; // Número sequencial, para cada item deve ser incrementado Prod.cProd := Dm.CDSPedidosCodProduto.AsString; Prod.cEAN := '' ; { obrigatorio a partir de julho/2011 caso haja uso cód. de barras .. '1234567890123';} Prod.xProd := Dm.CDSPedidosProduto.AsString; //'Descrição do Produto'; Prod.NCM := '19021900'; // Tabela NCM disponível na net Prod.EXTIPI := ''; if ComboNatOperacao.ItemIndex = 0 then Prod.CFOP := '5101' // venda de mercadoria - tem icms else if ComboNatOperacao.ItemIndex = 1 then Prod.CFOP := '5904' // remessa para venda fora - nao tem icms else if ComboNatOperacao.ItemIndex = 2 then Prod.CFOP := '1904'; // retorno // nao tem icms if ComboNatOperacao.ItemIndex = 3 then Prod.CFOP := '5910'; // bonificacoes - tem icms if ComboEmbalagem.ItemIndex = 0 then Prod.uCom := 'UN' else if ComboEmbalagem.ItemIndex = 1 then Prod.uCom := 'CX' ; Prod.qCom := Dm.CdsPedidosQtdeVendida.AsInteger; Prod.vUnCom := Dm.CDSPedidosValorUnit.AsFloat ; Prod.vUnCom := Dm.CDSPedidosValorUnit.AsFloat; Prod.vProd := Dm.CDSPedidosValorTotalProd.AsFloat; Prod.cEANTrib := ''; Prod.uTrib := Prod.uCom ; // 'UN'; Prod.qTrib := Prod.qCom; Prod.vUnTrib := Prod.vUnCom; Prod.vFrete := 0; Prod.vSeg := 0; if EdtDesconto.Text <> '' then Prod.vDesc := StrtoInt (EdtDesconto.Text) Else Prod.vDesc := 0; infAdProd := '' ; // Informação Adicional do Produto'; with Imposto do begin with ICMS do begin if (ComboNatOperacao.ItemIndex = 0) or (ComboNatOperacao.ItemIndex = 3) then begin CST := cst20; // esta CST PAGA impostos ... ICMS.orig := oeNacional; ICMS.modBC := dbiValorOperacao; ICMS.vBC := Dm.CDSPedidosValorTotalProd.AsFloat - (Dm.CDSPedidosValorTotalProd.AsFloat * 41.67 /100); ICMS.pICMS := 12; ICMS.vICMS := Icms.vBC * 12 / 100; ICMS.pMVAST := 0; ICMS.pRedBCST:= 0; ICMS.vBCST := 0; ICMS.pICMSST := 0; ICMS.vICMSST := 0; ICMS.pRedBC := 41.67; end; { Caso seja Remessa p/ propria empresa, ou retorno de caminhoes ...} if (ComboNatOperacao.ItemIndex = 1) or (ComboNatOperacao.ItemIndex = 2) then begin CST := cst40; // Esta CST não paga impostos ... ICMS.orig := oeNacional; ICMS.modBC := dbiValorOperacao; ICMS.vBC := 0; // CDSProdPedidoTotalProduto.AsFloat - (CDSProdPedidoTotalProduto.AsFloat * 41.67 /100); ICMS.pICMS := 0; // 12; ICMS.vICMS := 0; // Icms.vBC * 12 / 100; ICMS.pMVAST := 0; ICMS.pRedBCST:= 0; ICMS.vBCST := 0; ICMS.pICMSST := 0; ICMS.vICMSST := 0; ICMS.pRedBC := 0; // 41.67; end; end; with IPI do begin CST := ipi99 ; clEnq := ''; CNPJProd := ''; cSelo := ''; qSelo := 0; cEnq := ''; vBC := 0; qUnid := 0; vUnid := 0; pIPI := 0; vIPI := 0; end; with II do begin vBc := 0; vDespAdu := 0; vII := 0; vIOF := 0; end; with PIS do begin if (ComboNatOperacao.ItemIndex = 0) or (ComboNatOperacao.ItemIndex = 3) then begin CST := pis02; // CST : Código de situação tributária 02-paga, 07- nao paga PIS.vBC := Dm.CDSPedidosValorTotalProd.AsFloat; PIS.pPIS := 0.65; PIS.vPIS := Dm.CDSPedidosValorTotalProd.AsFloat * 0.65 /100; PIS.qBCProd := 0; PIS.vAliqProd := 0; end; if (ComboNatOperacao.ItemIndex = 1) or (ComboNatOperacao.ItemIndex = 2)then begin CST := pis07; PIS.vBC := 0; // CDSProdPedidoTotalProduto.AsFloat; PIS.pPIS := 0; // 0.65; PIS.vPIS := 0; // CDSProdPedidoTotalProduto.AsFloat * 1.65 /100; PIS.qBCProd := 0; PIS.vAliqProd := 0; end; end; with PISST do begin vBc := 0; pPis := 0; qBCProd := 0; vAliqProd := 0; vPIS := 0; end; with COFINS do begin if (ComboNatOperacao.ItemIndex = 0) or (ComboNatOperacao.ItemIndex = 3) then begin CST := cof02; COFINS.vBC := Dm.CDSPedidosValorTotalProd.AsFloat; COFINS.pCOFINS := 3; COFINS.vCOFINS := Dm.CDSPedidosValorTotalProd.AsFloat * 3 / 100; COFINS.qBCProd := 0; COFINS.vAliqProd := 0; end; if (ComboNatOperacao.ItemIndex = 1) or (ComboNatOperacao.ItemIndex = 2) then begin CST := cof07; COFINS.vBC := 0; // CDSProdPedidoTotalProduto.AsFloat; COFINS.pCOFINS := 0; // 3; COFINS.vCOFINS := 0; // CDSProdPedidoTotalProduto.AsFloat * 7.6 / 100; COFINS.qBCProd := 0; COFINS.vAliqProd := 0; end; end; with COFINSST do begin vBC := 0; pCOFINS := 0; qBCProd := 0; vAliqProd := 0; vCOFINS := 0; end; end; end ; NItem := NItem + 1; Dm.CDSPedidos.Next; // Final do while ..; end; if (ComboNatOperacao.ItemIndex = 0) or (ComboNatOperacao.ItemIndex = 3) then begin Total.ICMSTot.vBC := Valtot - (Valtot * 41.67 /100); Total.ICMSTot.vICMS := Total.ICMSTot.vBC / 100 * 12; Total.ICMSTot.vBCST := 0; Total.ICMSTot.vST := 0; Total.ICMSTot.vProd := Valtot; Total.ICMSTot.vFrete := 0; Total.ICMSTot.vSeg := 0; Total.ICMSTot.vDesc := 0; Total.ICMSTot.vII := 0; Total.ICMSTot.vIPI := 0; Total.ICMSTot.vPIS := Valtot * 0.65 / 100 ; // Total.ICMSTot.vBC * 0.65 /100; Total.ICMSTot.vCOFINS := Valtot * 3 /100; Total.ICMSTot.vOutro := 0; Total.ICMSTot.vNF := Valtot ; Total.ISSQNtot.vServ := 0; Total.ISSQNTot.vBC := 0; Total.ISSQNTot.vISS := 0; Total.ISSQNTot.vPIS := 0; Total.ISSQNTot.vCOFINS := 0; end; if (ComboNatOperacao.ItemIndex = 1) or (ComboNatOperacao.ItemIndex = 2)then begin Total.ICMSTot.vBC := 0; // Valtot - (Valtot * 41.67 /100); Total.ICMSTot.vICMS := 0; // Total.ICMSTot.vBC / 100 * 12; Total.ICMSTot.vBCST := 0; Total.ICMSTot.vST := 0; Total.ICMSTot.vProd := Valtot; Total.ICMSTot.vFrete := 0; Total.ICMSTot.vSeg := 0; Total.ICMSTot.vDesc := 0; Total.ICMSTot.vII := 0; Total.ICMSTot.vIPI := 0; Total.ICMSTot.vPIS := 0; // Total.ICMSTot.vBC * 0.65 /100; Total.ICMSTot.vCOFINS := 0; // Valtot * 3 /100; Total.ICMSTot.vOutro := 0; Total.ICMSTot.vNF := Valtot ; Total.ISSQNtot.vServ := 0; Total.ISSQNTot.vBC := 0; Total.ISSQNTot.vISS := 0; Total.ISSQNTot.vPIS := 0; Total.ISSQNTot.vCOFINS := 0; end; IcmsTotal := 0; // Total.ICMSTot.vICMS; Total.retTrib.vRetPIS := 0; Total.retTrib.vRetCOFINS := 0; Total.retTrib.vRetCSLL := 0; Total.retTrib.vBCIRRF := 0; Total.retTrib.vIRRF := 0; Total.retTrib.vBCRetPrev := 0; Total.retTrib.vRetPrev := 0; Transp.modFrete := mfContaEmitente; Transp.Transporta.CNPJCPF := ''; Transp.Transporta.xNome := ''; Transp.Transporta.IE := ''; Transp.Transporta.xEnder := ''; Transp.Transporta.xMun := ''; Transp.Transporta.UF := ''; Transp.retTransp.vServ := 0; Transp.retTransp.vBCRet := 0; Transp.retTransp.pICMSRet := 0; Transp.retTransp.vICMSRet := 0; Transp.retTransp.CFOP := ''; Transp.retTransp.cMunFG := 0; Transp.veicTransp.placa := ''; Transp.veicTransp.UF := ''; Transp.veicTransp.RNTC := ''; with Transp.Vol.Add do begin qVol := TotalVolumes; esp := '.' ; // 'Especie '; marca := '.' ; // 'Marca'; nVol := '.' ; // 'Numero'; pesoL := PesoLiquidoTotal; //Dm.CdsPedidosPesoLiquido.AsFloat; pesoB := PesoBrutoTotal ; // Dm.CDSPedidosPesoBruto.AsFloat; //Lacres do volume. Pode ser adicionado vários //Lacres.Add.nLacre := ''; end; Cobr.Fat.nFat := EdtFatura.Text; // 'Numero da Fatura'; Cobr.Fat.vOrig := Dm.CdsPedidosValorUnit.AsFloat * Dm.CdsPedidosQtdeVendida.AsInteger; // 100 ; Cobr.Fat.vDesc := 0 ; Cobr.Fat.vLiq := Cobr.Fat.vOrig; // 100 ; with Cobr.Dup.Add do begin vDup := Valtot; // 100; end; if CheckBox1.Checked then begin { Inclui uma quebra de linha antes do alerta } MemoObs.Lines.Add(#13 + #10 + 'NAO RECEBENDO BOLETO ATE 3 DIAS ANTES DO VENCIMENTO, FAVOR LIGAR 14 33333333. NAO DISPENSAMOS JUROS. '+ 'SUJEITO A PROTESTO. (C. CIVIL, ART. 389 E LEI 9.492/97). FAVOR CONSULTAR O DDA.'); end; If MemoObs.Text <> '' then InfAdic.infCpl := MemoObs.Lines.Text else InfAdic.infCpl := ''; InfAdic.infAdFisco := ''; with InfAdic.obsCont.Add do begin xCampo := '.' ; // ObsCont'; xTexto := '.' ; // Texto'; end; with InfAdic.obsFisco.Add do begin xCampo := '.' ; // ObsFisco'; xTexto := '.' ; // Texto'; end; exporta.UFembarq := '';; exporta.xLocEmbarq := ''; compra.xNEmp := ''; compra.xPed := ''; compra.xCont := ''; end; ACBrNFe1.NotasFiscais.Assinar; ACBrNFe1.NotasFiscais.Items[0].SaveToFile; ShowMessage('Arquivo gerado em: '+ACBrNFe1.NotasFiscais.Items[0].NomeArq); NomeArq := ACBrNFe1.NotasFiscais.Items[0].NomeArq; NomeArq := Copy (NomeArq, 26, 52); If not FileExists ('\\Servidor\D\Nota Eletronica\Backup\' + NomeArq) then AcbrNfe1.NotasFiscais.SaveToFile('\\Servidor\D\Nota Eletronica\Backup\' + NomeArq); AcbrNfe1.Enviar(1); AcbrNfe1.NotasFiscais.Clear; end; Obrigado pessoal !!
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.