Ir para conteúdo
  • Cadastre-se

dev botao

Integração da NF-e com ERP


moisesaugusto
  • Este tópico foi criado há 4766 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

procedure TFrmPrincipal.BtnGerarNotaClick(Sender: TObject);

var

NItem : Integer; // Nr. sequencial p/ itens (produtos)

begin

AcbrNfe1.Configuracoes.Certificados.NumeroSerie := 'XXXXXXXXXXXXXXXX';

with ACBrNFe1.NotasFiscais.Add.NFe do

begin

Ide.cNF := 1; // Se for 0 gera número aleatório

Ide.natOp := 'VENDA';

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 (EdtNumNota.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;

Ide.tpEmis := teNormal;

If Radiogroup1.ItemIndex = 0 then

Ide.tpAmb := taProducao

Else

If Radiogroup1.ItemIndex = 1 then

Ide.tpAmb := taHomologacao;

Ide.verProc := '1.0.0.0'; //Versão do seu sistema

Ide.cUF := 35 ; // NotaUtil.UFtoCUF(edtEmitUF.Text);

Ide.cMunFG := 3506003 ; // StrToInt(form1.edtEmitCodCidade.Text);

Ide.finNFe := fnNormal;

Emit.CNPJCPF := '02553503000110' ;

Emit.IE := '209245114114' ;

Emit.xNome := 'LUCIA SETSUKO ITOMAN - ME' ;

Emit.xFant := 'MASSA DA FEIRA' ;

Emit.EnderEmit.fone := '14 32038783' ;

Emit.EnderEmit.CEP := 17064852 ; //

Emit.EnderEmit.xLgr := 'RUA WALDEMAR PADILHA' ;

Emit.EnderEmit.nro := '1-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 := Dados.QryClientecic.AsString; // DBEdtCic.Text;

Dest.IE := Dados.QryClienteInscEstadual.AsString; // '687138770110';

Dest.ISUF := '';

Dest.xNome := Dados.QryClienteRazao.AsString;

Dest.EnderDest.Fone := Dados.QryClienteTelefone.Value;

Dest.EnderDest.CEP := StrtoInt (Dados.QryClienteCep.AsString);

Dest.EnderDest.xLgr := Dados.QryClienteEndereco.AsString;

Dest.EnderDest.nro := Dados.QryClienteNumero.AsString;

Dest.EnderDest.xCpl := '';

Dest.EnderDest.xBairro := Dados.QryClienteBairro.AsString;

Dest.EnderDest.cMun := Dados.QryClienteCodIbge.AsVariant;

Dest.EnderDest.xMun := Dados.QryClienteCidade.AsString;

Dest.EnderDest.UF := Dados.QryClienteUF.AsString;

Dest.EnderDest.cPais := 1058;

Dest.EnderDest.xPais := 'BRASIL';

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

//Adicionando Produtos

NItem := 1;

CDSProdPedido.First;

While not CDSProdPedido.Eof do

begin

with Det.Add do

begin

Prod.nItem := NItem ; // Número sequencial, para cada item deve ser incrementado

Prod.cProd := CDSProdPedidoCodigo.AsString; //'123456';

Prod.cEAN := '' ; { obrigatorio a partir de julho/2011

caso haja uso cód. de barras .. '1234567890123';}

Prod.xProd := CDSProdPedidoProduto.AsString; //'Descrição do Produto';

Prod.NCM := '19022000'; // Tabela NCM disponível na net

Prod.EXTIPI := '';

Prod.CFOP := '5101';

Prod.uCom := 'UN';

Prod.qCom := CdsProdPedidoQtdeVendida.AsInteger;

Prod.vUnCom := CDSProdPedidoValor.AsFloat;

Prod.vProd := CDSProdPedidoValor.AsFloat;

Prod.cEANTrib := '';

Prod.uTrib := 'UN';

Prod.qTrib := CDSProdPedidoQtdeVendida.AsInteger ;

Prod.vUnTrib := CDSProdPedidoValor.AsFloat ;

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

CST := cst00;

ICMS.orig := oeNacional;

ICMS.modBC := dbiValorOperacao;

ICMS.vBC := CDSProdPedidoValor.AsFloat;

ICMS.pICMS := 18;

ICMS.vICMS := CdsProdPedidoIcms.AsFloat;

ICMS.modBCST := dbisMargemValorAgregado;

ICMS.pMVAST := 0;

ICMS.pRedBCST:= 0;

ICMS.vBCST := 0;

ICMS.pICMSST := 0;

ICMS.vICMSST := 0;

ICMS.pRedBC := 0;

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

CST := pis99;

PIS.vBC := 0;

PIS.pPIS := 0;

PIS.vPIS := 0;

PIS.qBCProd := 0;

PIS.vAliqProd := 0;

PIS.vPIS := 0;

end;

with PISST do

begin

vBc := 0;

pPis := 0;

qBCProd := 0;

vAliqProd := 0;

vPIS := 0;

end;

with COFINS do

begin

CST := cof99;

COFINS.vBC := 0;

COFINS.pCOFINS := 0;

COFINS.vCOFINS := 0;

COFINS.qBCProd := 0;

COFINS.vAliqProd := 0;

end;

with COFINSST do

begin

vBC := 0;

pCOFINS := 0;

qBCProd := 0;

vAliqProd := 0;

vCOFINS := 0;

end;

end;

end ;

Total.ICMSTot.vBC := CdsProdPedidoTotalProduto.AsFloat;

Total.ICMSTot.vICMS := CdsProdPedidoIcms.AsFloat * CdsProdPedidoQtdeVendida.AsInteger;

Total.ICMSTot.vBCST := 0;

Total.ICMSTot.vST := 0;

Total.ICMSTot.vProd := Valtot; // CdsProdPedidoValor.AsFloat;

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.vCOFINS := 0;

Total.ICMSTot.vOutro := 0;

Total.ICMSTot.vNF := Valtot ; // CdsProdPedidoTotalProduto.AsFloat; //; Substituir pelo valor total NFiscal

Total.ISSQNtot.vServ := 0;

Total.ISSQNTot.vBC := 0;

Total.ISSQNTot.vISS := 0;

Total.ISSQNTot.vPIS := 0;

Total.ISSQNTot.vCOFINS := 0;

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

//Dados do Reboque

{ with Transp.Reboque.Add do

begin

placa := '';

UF := '';

RNTC := '';

end;}

with Transp.Vol.Add do

begin

qVol := 1;

esp := 'Especie';

marca := 'Marca';

nVol := 'Numero';

pesoL := 100;

pesoB := 110;

//Lacres do volume. Pode ser adicionado vários

//Lacres.Add.nLacre := '';

end;

Cobr.Fat.nFat := 'Numero da Fatura';

Cobr.Fat.vOrig := CdsProdPedidoValor.AsFloat; // 100 ;

Cobr.Fat.vDesc := 0 ;

Cobr.Fat.vLiq := CdsProdPedidoValor.AsFloat; // 100 ;

with Cobr.Dup.Add do

begin

nDup := '1234';

dVenc := now+10;

vDup := CdsProdPedidoValor.AsFloat; // 100;

end;

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;

//Processo referenciado

{ with InfAdic.procRef.Add do

begin

nProc := '';

indProc := ipSEFAZ;

end; }

exporta.UFembarq := '';;

exporta.xLocEmbarq := '';

compra.xNEmp := '';

compra.xPed := '';

compra.xCont := '';

NItem := NItem + 1;

CDSProdPedido.Next;

end;

end;

// AcbrNfe1.NotasFiscais.Valida;

ACBrNFe1.NotasFiscais.Assinar;

ACBrNFe1.NotasFiscais.Items[0].SaveToFile;

ShowMessage('Arquivo gerado em: '+ACBrNFe1.NotasFiscais.Items[0].NomeArq);

MemoDados.Lines.Add('Arquivo gerado em: '+ACBrNFe1.NotasFiscais.Items[0].NomeArq);

// MemoResp.Lines.LoadFromFile(ACBrNFe1.NotasFiscais.Items[0].NomeArq);

// LoadXML(MemoResp, WBResposta);

end;

//////// Com o código acima eu consigo emitir uma Nota Fiscal, acessando os dados da tabela de produtos da empresa.

Quer dizer, se eu somente colocar como quantidade o valor " 1 " e também preencher a nota com apenas 1 item.

Gostaria de ajuda, no sentido de me informar quais as variaveis a serem substituidas, para que os impostos sejam calculados corretamente, independente dos valors .

A título de informação, explico que os campos abaixo se referem a :

"CDSProdPedidoQtdeVendida" = quantidade (determinado item )

"CDSProdPedidoValor" = Valor do produto (1 item)

"CDSProdPedidoTotalProduto" = valor do produto X quantidade vendida

"CDSProdPedidoIcms" = o valor do produto dividido por 82 (100-18 porcento) vezes 18

Se alguem puder me dar uma luz eu fico agradecido.

Inclusive após o termino, pretendo postar o codigo completo (incluindo o banco de dados vazio em firebird ) para quem desejar aproveitar algumas ideias.

Eu nunca imaginei que esses componentes funcionassem com tanta eficácia e rapidez.

A título de complementar, eu direciono a geração do XML para o Unimake, o qual assina, valida e transmite para a SEFAZ.

Obrigado a todos.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

O componente não efetua nenhum cálculo, seu sistema é que deve possuir esses valores e informá-los ao componente.

Leia o manual de integração da NFe http://www.nfe.fazenda.gov.br/portal/do ... 09.006.pdf e estude o demo para adaptar seu sistema.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Ola, Andre. Obrigado pelo retorno. Sim, eu sei quanto ao componente nao efetuar calculos. Mas o que eu estou começando a entender agora é o significado de (por exemplo ) :

Prod.vProd := Aqui seria o valor do produto (unitario) vezes quantidade vendida ?

Prod.vUnCom := e aqui seria o valor unitario do produto ?

Sao essas minhas duvidas maiores.

Mas eu estou realmente lendo sobre o assunto e vou chegar la ... rs rs

Minhas rejeições sao somente nessa parte, o restante ja esta dominado.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Leia o manual de integração, o componente segue os mesmos nomes usados no manual.

Se vc já usa o Uninfe, basta vc pegar o XML que é gerado para ele e ver como os campos estão preenchidos.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...
  • Este tópico foi criado há 4766 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.