procedure TfrmPrincipal.btnGeraNfe_Click(Sender: TObject); var tIde,tEmit,tDest,tTotal,tTransp,tCobr,tInfAdic : array of shortstring; //prefixo t = tag, ex: tag Ide tProd : ArrayBi; x, qtdItens,nNF : integer; ret : shortstring; begin try Screen.cursor:=crAppStart; btnGeraNfe.Enabled:=false; EditStatus.Text:='Gerando NF-e'; Panel2.Refresh; qtdItens:=StrToInt(EditQtdItens.text); randomize; nNF:=random(9999); { Atenção! Atentar-se nos tamanhos dos array's abaixo sempre que houver atualizacoes. } SetLength(tIde,25); //ide SetLength(tEmit,15); //emit SetLength(tDest,37); //dest SetLength(tProd, qtdItens, 92); //prod SetLength(tTotal,26); //total SetLength(tTransp,22); //transp SetLength(tCobr,6); //cobr SetLength(tInfAdic,21); //infAdic { <ide> TAG de grupo das informações de identificação da NF-e } tIde[0]:='35'; //<cUF> tIde[1]:='00000099'; //<cNF> //Numero aleatorio: apenas 8 digitos: NF-e 2.00 tIde[2]:='VENDA DE PROD. ESTAB'; //<natOp> tIde[3]:='0'; //<indPag> tIde[4]:='55'; //<mod> tIde[5]:='1'; //<serie> tIde[6]:=IntToStr(nNF); //<nNF> //Numero do Documento Fiscal tIde[7]:=FormatDatetime('yyyy-mm-dd',date); //<dEmi> tIde[8]:=FormatDatetime('yyyy-mm-dd',date); //<dSaiEnt> if (rdbSaida.Checked) then tIde[9]:='1' else //<tpNF> if (rdbEntrada.Checked) then tIde[9]:='0'; //<tpNF> tIde[10]:=EditCodMunicipio.text;//<cMunFG> if (chkContingecia.checked) then tIde[11]:='2' else tIde[11]:='1'; //<tpEmis> tIde[12]:='1'; //<finNFe> { Grupo de informação das NF-e e cupom referenciado - tag NFref } tIde[13]:=''; //refNFe ou refECF.nCOO tIde[17]:=''; //refECF mod tIde[18]:=''; //refECF nECF { Grupo de informação da NF modelo 1/1A referenciada} tIde[19]:=''; //cUF --> Utilizar a Tabela do IBGE tIde[20]:=''; //AAMM --> AAMM da emissão da NF tIde[21]:=''; //CNPJ --> CNPJ do emitente da NF tIde[22]:=''; //mod --> Informar o código do modelo do Documento fiscal: 01 – modelo 01 tIde[23]:=''; //serie --> nformar a série do documento fiscal tIde[24]:=''; //nNF --> 1 – 999999999 tIde[14]:='18:01:23'; //<hSaiEnt> tIde[15]:='';//'2010-08-27T08:55:33'; //dhCont AAAA-MM-DDTHH:MM:SS tIde[16]:='';//'Estou me justificando pela contingencia.'; //xJust Justificativa da entrada em contingência { <emit> TAG de grupo de identificação do emitente da NF-e } tEmit[0]:='EMPRESA RAZAO ENGARRAFAMENTOS LTDA.'; //<xNome> tEmit[1]:='ENGARRAFAMENTOS LTDA.'; //<xFant> tEmit[2]:='ROD. ANEL RODOVIARIO KM153'; //<xLgr> tEmit[3]:='236'; //<nro> tEmit[4]:='FAB. FIAT'; //<xCpl> tEmit[5]:='BELO HORIZONTE'; //<xBairro> tEmit[6]:=EditCodMunicipio.Text; //<cMun> tEmit[7]:=Edit2.Text; //<xMun> tEmit[8]:='31310295'; //<CEP> tEmit[9]:='7133711818'; //<fone> tEmit[10]:=EditIE.TExt; //<IE> tEmit[11]:='07440600133'; //<IM> tEmit[12]:='6201500'; //<CNAE> tEmit[13]:=''; //<IEST> tEmit[14]:='3'; //<CRT> 1 – Simples Nacional; 2 – Simples Nacional – excesso de sublimite de receita bruta; 3 – Regime Normal { <dest> TAG de grupo de identificação do Destinatário da NF-e } tDest[0]:='99.999.999/0001-91'; //<CNPJ> ou <CPF> tDest[1]:='RAZAO DESTINATARIO'; //<xNome> tDest[2]:='Rua Padre Casemiro Quiroga'; //<xLgr> tDest[3]:='236'; //<nro> tDest[4]:='Complemento'; //<xCpl> tDest[5]:='Bairro Teste'; //<xBairro> tDest[6]:='2927408'; //<cMun> tDest[7]:='Salvador'; //<xMun> tDest[8]:='BA'; //<UF> tDest[9]:='41720400'; //<CEP> tDest[10]:='1058'; //<cPais> tDest[11]:='BRASIL'; //<xPais> tDest[12]:='7133711818'; //<fone> tDest[13]:=''; //<IE> tDest[14]:=''; //<ISUF> { exporta } tDest[15]:=''; //<UFEmbarq> tDest[16]:=''; //<xLocEmbarq> { compra } tDest[17]:=''; //<xNEmp> tDest[18]:=''; //<xPed> tDest[19]:=''; //<xCont> tDest[20]:=''; //<email> { Grupo de identificação do Local de RETIRADA } { Informar apenas quando for diferente do endereço do remetente. } tDest[21]:=''; //RETIRADA <CNPJ> ou <CPF> tDest[22]:=''; //RETIRADA <xLgr> tDest[23]:=''; //RETIRADA <nro> tDest[24]:=''; //RETIRADA <xCpl> tDest[25]:=''; //RETIRADA <xBairro> tDest[26]:=''; //RETIRADA <cMun> tDest[27]:=''; //RETIRADA <xMun> tDest[28]:=''; //RETIRADA <UF> { Grupo de identificação do Local de ENTREGA } { Informar apenas quando for diferente do endereço do destinatário. } tDest[29]:=''; //ENTREGA <CNPJ> ou <CPF> tDest[30]:=''; //ENTREGA <xLgr> tDest[31]:=''; //ENTREGA <nro> tDest[32]:=''; //ENTREGA <xCpl> tDest[33]:=''; //ENTREGA <xBairro> tDest[34]:=''; //ENTREGA <cMun> tDest[35]:=''; //ENTREGA <xMun> tDest[36]:=''; //ENTREGA <UF> { <prod> TAG de grupo do detalhamento de Produtos e Serviços da NF-e } for x:=0 to (length(tProd)-1) do begin tProd[x,0]:='55'; //<cProd> tProd[x,1]:='7893000980006'; //<cEAN> tProd[x,2]:='MEU PRODUTO DE TESTE '+IntToStr(x+1); //<xProd> tProd[x,3]:='73181500'; //<NCM> tProd[x,4]:=''; //<EXTIPI> //Antes da v6.00, esta posicao era o GENERO. tProd[x,5]:='6152'; //<CFOP> tProd[x,6]:='Kg'; //<uCom> tProd[x,7]:='1.0000'; //<qCom> tProd[x,8]:='10.0000'; //<vUnCom> tProd[x,9]:='10.00'; //<vProd> tProd[x,10]:='7893000980006'; //eantrib //<cEANTrib> tProd[x,11]:='Kg'; //<uTrib> tProd[x,12]:='1.1000'; //<qTrib> tProd[x,13]:='10.0000'; //<vUnTrib> tProd[x,14]:='10.00'; //<vFrete> tProd[x,15]:='1.00'; //<vSeg> tProd[x,16]:='1.00'; //<vDesc> tProd[x,86]:='1.00'; //<voutro> { Grupo do ISSQN } { Se ISSQN for informado os grupos ICMS, IPI e II não serão informados e vice-versa (NF-e v2.0) } tProd[x,39]:='';//'10.00'; //ISSQN <vBC> tProd[x,40]:='';//'5.00'; //ISSQN <vAliq> tProd[x,41]:='';//'0.50'; //ISSQN <vISSQN> tProd[x,42]:='';//EditCodMunicipio.text; //ISSQN <cMunFG> tProd[x,43]:='';//'101'; //ISSQN <cListServ> tProd[x,70]:='';//'N'; //ISSQN: cSitTrib - Código da tributação do ISSQN: N – NORMAL; R – RETIDA; S –SUBSTITUTA; I – ISENTA. (v.2.0) { tag ICMS e CSOSN } tProd[x,17]:='0'; //<orig> tProd[x,18]:=EditICMSCST.Text; //<CST> tProd[x,19]:='3'; //<modBC> tProd[x,20]:='10.00'; //<vBC> tProd[x,21]:='17.00'; //<pICMS> tProd[x,22]:='1.70'; //<vICMS> tProd[x,46]:='0'; //<modBCST> tProd[x,47]:=''; //<pMVAST> tProd[x,48]:=''; //<pRedBCST> tProd[x,49]:='5.1'; //<vBCST> //icms60, ICMSSN500: vBCSTRet tProd[x,50]:='12'; //<pICMSST> tProd[x,51]:='0.12'; //<vICMSST> //icms60,ICMSSN500: vICMSSTRet tProd[x,52]:='0.12'; //<pRedBC> tProd[x,80]:='0.12'; //<pCredSN> tProd[x,81]:='0.13'; //<vCredICMSSN> tProd[x,85]:=''; //<motDesICMS> Informar o motivo da desoneração: 0 a 9, ver tabela no manual do contribuinte NF-e. { tag IPI } tProd[x,23]:=EditIPI.Text; //IPI <CST> { obs: Informar os campos INDEX 24 e 25 caso o cálculo do IPI seja por alíquota ou os campos INDEX 78 e 79 caso o cálculo do IPI seja valor por unidade. } tProd[x,78]:='5'; //IPI qUnid v6.03 tProd[x,79]:='6'; //IPI vUnid v6.03 tProd[x,24]:='0,00'; //IPI <vBC> tProd[x,25]:='0,00'; //IPI <pIPI> { fim obs } tProd[x,26]:='5.00'; //IPI <vIPI> tProd[x,87]:='0'; //IPI <clEnq> tProd[x,88]:='00000000000000'; //IPI <CNPJProd> tProd[x,89]:='0'; //IPI <cSelo> tProd[x,90]:='0'; //IPI <qSelo> tProd[x,91]:='0'; //IPI <cEnq> tProd[x,27]:='0'; //II <vBC> tProd[x,28]:='0'; //II <vDespAdu> tProd[x,29]:='0'; //II <vII> tProd[x,30]:='0'; //II <vIOF> { tag PIS } tProd[x,31]:=EditPis.Text; //<CST> tProd[x,32]:='10.00'; //<vBC> tProd[x,33]:='1.00'; //<pPIS> tProd[x,34]:='0.10'; //<vPis> tProd[x,45]:='0.1'; //<vAliqProd> { tag COFINS } tProd[x,35]:=EditCofins.text; //<CST> tProd[x,36]:='10.00'; //<vBC> tProd[x,37]:='3.00'; //<pCOFINS> tProd[x,38]:='0.30'; //<vCOFINS> tProd[x,44]:='0.3'; //<vAliqProd> { tag PISST } tProd[x,54]:=''; //vBC tProd[x,55]:=''; //pPIS tProd[x,56]:=''; //vPIS { tag COFINSST } tProd[x,57]:=''; //vBC tProd[x,58]:=''; //pCOFINS tProd[x,59]:=''; //vCOFINS { Tag da Declaração de Importação } tProd[x,60]:=''; //nDI tProd[x,61]:=''; //dDI tProd[x,62]:=''; //xLocDesemb tProd[x,63]:=''; //UFDesemb tProd[x,64]:=''; //dDesemb tProd[x,65]:=''; //cExportador tProd[x,66]:=''; //adi: nAdicao tProd[x,67]:=''; //adi: nSeqAdic tProd[x,68]:=''; //adi: cFabricante tProd[x,69]:=''; //adi: vDescDI tProd[x,83]:='1212'; //xPed tProd[x,84]:='1313'; //nItemPed { Grupo do detalhamento de Medicamentos e de matériasprimas farmacêuticas } tProd[x,71]:='1234567'; //nLote tProd[x,72]:='123.123'; //qLote tProd[x,73]:='2010-01-01'; //dFab tProd[x,74]:='2011-01-01'; //dVal tProd[x,75]:='222.123'; //vPMC { infAdProd - 2 posicoes p/ completar 500 caracteres } tProd[x,53]:='REFERENCIA index primeiro '+IntToStr(x+1); tProd[x,77]:='REFERENCIA index segundo '+IntToStr(x+1); tProd[x,76]:='1'; //indTot v6.3.3 --> Indica se valor do Item (vProd) entra no valor total da NF-e (vProd) { Grupo do detalhamento de Veículos novos } { Informar apenas quando se tratar de veículos novos ATENCAO! Informe sempre o delimitador ";" para este grupo } tProd[x,82]:='1' +';'+ //tpOp '12345678901234567' +';'+ //chassi '123' +';'+ //cCor 'PRETO' +';'+ //xCor '220' +';'+ //pot '220' +';'+ //cilin '2' +';'+ //pesoL '2' +';'+ //pesoB '21311213' +';'+ //nSerie '02' +';'+ //tpComb '123' +';'+ //nMotor '500' +';'+ //CMT '15' +';'+ //dist '2011' +';'+ //anoMod '2010' +';'+ //anoFab '1' +';'+ //tpPint '06' +';'+ //tpVeic '1' +';'+ //espVeic 'N' +';'+ //VIN '1' +';'+ //condVeic '1234' +';'+ //cMod '11' +';'+ //cCorDENATRAN '5' +';'+ //lota '0' +';'; //tpRest //NOTA: Caso este item nao possua dados de veiculo, informe: tProd[x,82]:=''; end;
prod[x, 37] = "3.00"; //<pCOFINS> prod[x, 38] = "0.30"; //<vCOFINS> prod[x, 44] = "0.3"; //<vAliqProd> { campo novo } /*tag PISST*/ prod[x, 54] = ""; //vBC prod[x, 55] = ""; //pPIS prod[x, 56] = ""; //vPIS /* tag COFINSST */ prod[x, 57] = ""; //vBC prod[x, 58] = ""; //pCOFINS prod[x, 59] = ""; //vCOFINS /* Tag da Declaração de Importação | DI */ prod[x, 60] = ""; //nDI prod[x, 61] = ""; //dDI prod[x, 62] = ""; //xLocDesemb prod[x, 63] = ""; //UFDesemb prod[x, 64] = ""; //dDesemb prod[x, 65] = ""; //cExportador prod[x, 66] = ""; //adi: nAdicao prod[x, 67] = ""; //adi: nSeqAdic prod[x, 68] = ""; //adi: cFabricante prod[x, 69] = ""; //adi: vDescDI prod[x, 53] = "INF. ADICIONAL PRODUTO"; //infAdProd /* Grupo do detalhamento de Medicamentos e de matériasprimas farmacêuticas */ prod[x, 71] = string.Empty; //"12345671234564654"; //nLote prod[x, 72] = string.Empty; //"123.123"; //qLote prod[x, 73] = string.Empty; //"2010-01-01"; //dFab prod[x, 74] = string.Empty; //"2011-01-01"; //dVal prod[x, 75] = string.Empty; //"222.123"; //vPMC prod[x, 76] = "1"; //indTot v6.03 --> Indica se valor do Item (vProd) entra no valor total da NF-e (vProd) prod[x, 83] = "555"; //xPed prod[x, 84] = "888"; //nItemPed }//for /*<total> TAG de grupo de Valores Totais da NF-eI*/ total[0] = "50.00"; //ICMSTot <vBC> total[1] = "8.50"; //ICMSTot <vICMS> total[2] = "0.00"; //ICMSTot <vBCST> total[3] = "0.00"; //ICMSTot <vST> total[4] = "50.00"; //ICMSTot <vProd> total[5] = "5.00"; //ICMSTot <vFrete> total[6] = "5.00"; //ICMSTot <vSeg> total[7] = "5.00"; //ICMSTot <vDesc> total[8] = "0.00"; //ICMSTot <vII> total[9] = "0.25"; //ICMSTot <vIPI> total[10] = "15.0"; //ICMSTot <vPIS> total[11] = "30.00"; //ICMSTot <vCOFINS> total[12] = "0.00"; //ICMSTot <vOutro> total[13] = "50.00"; //ICMSTot <vNF> total[14] = ""; //ISSQNtot <vServ> total[15] = ""; //ISSQNtot <vBC> total[16] = ""; //ISSQNtot <vISS> total[17] = ""; //ISSQNtot <vPIS> total[18] = ""; //ISSQNtot <vCOFINS> /* retTrib: Grupo de Retenções de Tributos */ total[19] = ""; //vRetPIS total[20] = ""; //vRetCOFINS total[21] = ""; //vRetCSLL total[22] = ""; //vBCIRRF total[23] = ""; //vIRRF total[24] = ""; //vBCRetPrev total[25] = ""; //vRetPrev /*<transp> Informações do Transporte da NF-e*/ transp[0] = "0"; //<modFrete> transp[1] = "34261131000144"; //<CNPJ> ou <CPF> transp[2] = "Teste Transp Jack"; //<xNome> transp[3] = "7012578100048"; //<IE> transp[4] = "Teste End. Transp. Jack"; //<xEnder> transp[5] = "Belo Horizonte"; //<xMun> transp[6] = "MG"; //<UF> transp[7] = "XOX2255"; //<placa> transp[8] = "MG"; //<UF> /* Grupo Volumes */ transp[9] = "5"; //<qVol> transp[10] = "VOLUME"; //<esp> transp[11] = "JACK"; //<marca> transp[12] = "99"; //<nVol> transp[13] = "11.535"; //<pesoL> transp[14] = "15.282"; //<pesoB> /* obs: Separe por ; para informar diversos volumes */ transp[15] = ""; //RNTC/ANTT /* retTransp: Grupo de Retenção do ICMS do transporte */ transp[16] = ""; //vServ transp[17] = ""; //vBCRet transp[18] = ""; //pICMSRet transp[19] = ""; //vICMSRet transp[20] = ""; //CFOP transp[21] = ""; //cMunFG /*<cobr> Dados da Cobrança*/ cobr[0] = "22"; //fat <nFat> cobr[1] = "50"; //fat <vOrig> cobr[2] = "453.28"; //fat <vLiq> /* neste ex, existem 2 parcelas */ cobr[3] = "01;02;"; //dup <nDup> cobr[4] = "2008-05-30;2008-06-30;"; //dup <dVenc> cobr[5] = "226.64;226.64;"; //dup <vDup> /*<infAdic> Informações Adicionais da NF-e*/ infAdic[0] = "Informacoes Adicionais de Interesse do Fisco - Informacoes Adicionais de Interesse do Fisco - " + //infAdFisco "Informacoes Adicionais de Interesse do Fisco - Informacoes Adicionais de Interesse do Fisco"; infAdic[1] = "Informacoes Complementares de interesse do Contribuinte"; //infCpl /* chamar função para gerar a nf-e*/ nfec.nfecsharp nfe = new nfec.nfecsharp(); string ret = nfe.GeraNFe(ide, emit, dest, prod, total, transp, cobr, infAdic, ckbAssinar.Checked); lblStatus.Text = ret; btnGerarNFe.Enabled = true; Cursor = Cursors.Default; }