procedure TfrmPrincipal.btnGeraNfe_Click(Sender: TObject); var tIde, tEmit, tRem, tExped, tReceb, tDest, tvPrest, tImp, tRodo, tInfCTeNorm : array of shortstring; //prefixo t = tag, ex: tag Ide tRemInfNF, tInfQ, tDocAnt : ArrayBi; x, qtdItens,cCT : integer; ret : shortstring; begin try Screen.cursor:=crAppStart; btnGeraCTe.Enabled:=false; EditStatus.Text:='Gerando CT-e'; Panel2.Refresh; qtdItens:=10; randomize; cCT:=random(9999); SetLength(tIde,36); //ide SetLength(tEmit,10); //emit SetLength(tRem,11); //rem SetLength(tExped,12); //exped SetLength(tReceb,12); //receb SetLength(tvPrest,2); //vPrest SetLength(tDest,13); //dest SetLength(tImp,6); //imp SetLength(tRodo,4); //rodo SetLength(tInfCTeNorm,6); //infCteNorm SetLength(tRemInfNF,3,11); //imp --> 3 = qtd de registro (linhas), 0 = nenhum. SetLength(tInfQ,2,3); //tInfQ --> 2 = qtd de registro (linhas), 0 = nenhum. SetLength(tDocAnt,10,8); //docAnt --> 10 = qtd de registro (linhas), 0 = nenhum. { <ide> TAG de grupo das informações de identificação da NF-e } tIde[0]:=FormatFloat('000000000',cCT); //<cCT> tIde[1]:='5357'; //CFOP tIde[2]:='TRANSPORTE RODOVIARIO DE CARGAS'; //<natOp> tIde[3]:='0'; //<forPag> tIde[4]:='0'; //<serie> tIde[5]:='99'; //<nCT> tIde[6]:=FormatDateTime('yyyy-mm-dd',date)+'T10:00:00'; //<dhEmi> ex: 2009-08-01T10:00:00 tIde[7]:='1'; //<tpEmis> tIde[8]:='0'; //<tpCTe> tIde[9]:='3550308'; //<cMunEmi> tIde[10]:='SAO PAULO'; //<xMunEmi> tIde[11]:='SP'; //<UFEmi> tIde[12]:='01'; //<modal> tIde[13]:='0'; //<tpServ> tIde[14]:='3550308'; //<cMunIni> tIde[15]:='SAO PAULO'; //<xMunIni> tIde[16]:='SP'; //<UFIni> tIde[17]:='3106200'; //<cMunFim> tIde[18]:='BELO HORIZONTE'; //<xMunFim> tIde[19]:='MG'; //<UFFim> tIde[20]:='0'; //<retira> tIde[21]:='0'; //<toma> { informar apenas se o valor do index 21 for igual a "4"} tIde[22]:=''; //<toma04> CNPJ ou CPF tIde[23]:=''; //<toma04> IE tIde[24]:=''; //<toma04> xNome tIde[25]:=''; //<toma04> xFant tIde[26]:=''; //<toma04> xLgr tIde[27]:=''; //<toma04> xNum tIde[28]:=''; //<toma04> xCpl tIde[29]:=''; //<toma04> xBairro tIde[30]:=''; //<toma04> cMun tIde[31]:=''; //<toma04> xMun tIde[32]:=''; //<toma04> CEP tIde[33]:=''; //<toma04> UF tIde[34]:=''; //<toma04> cPais tIde[35]:=''; //<toma04> xPais { <emit> TAG de grupo de identificação do emitente da NF-e } tEmit[0]:='Transportadora de Carga'; //<xNome> tEmit[1]:='TransCarga'; //<xFant> tEmit[2]:='Av Rangel Pestana'; //<xLgr> tEmit[3]:='300'; //<nro> tEmit[4]:='10 andar'; //<xCpl> tEmit[5]:='Mirante'; //<xBairro> tEmit[6]:='3550308'; //<cMun> tEmit[7]:='SAO PAULO'; //<xMun> tEmit[8]:='01301910'; //<CEP> tEmit[9]:='1132433400'; //<fone> { <rem> TAG de grupo de informações do remetente das mercadorias transportadas pelo CT-e } tRem[0]:='11222333000181'; //<CNPJ> tRem[1]:=edtIE.text; //<IE> tRem[2]:='Joao sem Terra'; //<xNome> tRem[3]:='1132201234'; //<fone> tRem[4]:='Praca Matriz'; //<xLgr> tRem[5]:='S/N'; //<nro> tRem[6]:='SAO PAULO'; //<xBairro> tRem[7]:=edtCMun.text; //<cMun> tRem[8]:=edtXMun.text; //<xMun> tRem[9]:='01000000'; //<CEP> tRem[10]:='SP'; //<UF> {infNF} for x:=0 to 2 do //3 registros begin tRemInfNF[x,0]:='0'; //<serie> tRemInfNF[x,1]:=FormatFloat('000000',(x+1)); //<nDoc> tRemInfNF[x,2]:=FormatDateTime('yyyy-mm-dd',date); //<dEmi> tRemInfNF[x,3]:='1000'; //<vBC> tRemInfNF[x,4]:='120'; //<vICMS> tRemInfNF[x,5]:='0'; //<vBCST> tRemInfNF[x,6]:='0'; //<vST> tRemInfNF[x,7]:='1000'; //<vProd> tRemInfNF[x,8]:='10.00'; //<vNF> tRemInfNF[x,9]:='5112'; //<nCFOP> tRemInfNF[x,10]:='10.000'; //<nPeso> end; { <exped> TAG de grupo de informações do Expedidor da Carga} tExped[0]:='34261131000144'; //<CNPJ> ou <CPF> tExped[1]:=edtIE.text; //IE tExped[2]:='Empresa de Destino Teste'; //<xNome> tExped[3]:='8388881234'; //<fone> tExped[4]:='Rua Padre Casemiro Quiroga'; //<xLgr> tExped[5]:='236'; //<nro> tExped[6]:='Complemento'; //<xCpl> tExped[7]:='Bairro Teste'; //<xBairro> tExped[8]:='2927408'; //<cMun> tExped[9]:='Salvador'; //<xMun> tExped[10]:='41720400'; //<CEP> tExped[11]:='BA'; //<UF> { <receb> TAG de grupo de informações do Recebedor da carga} tReceb[0]:='34261131000144'; //<CNPJ> ou <CPF> tReceb[1]:=edtIE.text; //IE tReceb[2]:='Empresa de Destino Teste'; //<xNome> tReceb[3]:='8388881234'; //<fone> tReceb[4]:='Rua Padre Casemiro Quiroga'; //<xLgr> tReceb[5]:='236'; //<nro> tReceb[6]:='Complemento'; //<xCpl> tReceb[7]:='Bairro Teste'; //<xBairro> tReceb[8]:='2927408'; //<cMun> tReceb[9]:='Salvador'; //<xMun> tReceb[10]:='41720400'; //<CEP> tReceb[11]:='BA'; //<UF> { <dest> TAG de grupo de identificação do Destinatário da NF-e } tDest[0]:='34261131000144'; //<CNPJ> ou <CPF> tDest[1]:='Empresa de Destino Teste'; //<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]:='1130302233'; //<fone> { TAG de grupo de valores da prestação de serviço } tvPrest[0]:='200.00'; //vTPrest tvPrest[1]:='200.00'; //vRec {TAG de grupo de informações relativas aos Impostos } { CST do serviço: 00 - ICMS Normal; 20 - ICMS com redução de Base de Cálculo; 40 - ICMS isenção; 41 - ICMS não tributada; 51 - ICMS diferido; 80 - ICMS pagto atribuído ao tomador ou ao terceiro previsto para substituição tributária; 81 - ICMS devido para outras UF; 90 - ICMS outras situações. } tImp[0]:='00'; //CST - classificação tributária do serviço tImp[1]:='200.00'; //vBC - Valor da BC do ICMS tImp[2]:='12.00'; //pICMS - Alíquota do ICMS tImp[3]:='24.00'; //vICMS - Valor do ICMS tImp[4]:=''; //vCred - Valor do Crédito outorgado/Presumido tImp[5]:=''; //pRedBC - Percentual de redução da BC { Dados específicos do Transporte Rodoviário } tRodo[0]:='12345678901234'; //RNTRC tRodo[1]:=FormatDateTime('yyyy-mm-dd',date); //dPrev tRodo[2]:='0'; //lota tInfCTeNorm[0]:='1.00'; //<infCarga> vMerc tInfCTeNorm[1]:='MEU PRODUTO DE TESTES - JAKSSON'; //<infCarga> proPred tInfCTeNorm[2]:='GRANEL'; //<infCarga> xOutCat { infQ - Informações de quantidades da Carga do CT-e } for x:=0 to 1 do //--> substitua 1, pela quantidade de registro de sua tabela. Neste ex. gerará 2 registros. begin tInfQ[x,0]:='01'; //<infQ> cUnid tInfQ[x,1]:='PESO BRUTO'; //<infQ> tpMed tInfQ[x,2]:='111.15'; //<infQ> qCarga end; { Informações de identificação dos documentos de Transporte Anterior } for x:=0 to 9 do // --> substitua 7, pela quantidade de registro de sua tabela. Neste ex. gerará 8 registros. begin tDocAnt[x,0]:='34261131000144'; //cnpj ou cpf tDocAnt[x,1]:='34261131000144'; //IE tDocAnt[x,2]:='SP'; //UF tDocAnt[x,3]:='EMPRESA DE TESTE '+FormatFloat('00',x+1); //xNome tDocAnt[x,4]:=FormatFloat('00',x+1); //tpDoc tDocAnt[x,5]:='55'; //serie tDocAnt[x,6]:='00001015'+FormatFloat('00',x+1); //nDoc tDocAnt[x,7]:='2010-08-30'; //dEmi end; ret := GeraCTe(tIde, tEmit, tRem, tExped, tReceb, tVprest, tDest, tImp, tRodo, tInfCTeNorm, tRemInfNF, tInfQ, tDocAnt, ckbAssinar.Checked); if (ckbAssinar.Checked) then EditStatus.Text:='CT-e Gerada e Assinada: '+ret else EditStatus.Text:='CT-e Gerada: '+ret finally btnGeraCTe.enabled:=true; btnGeraCTe.SEtFocus; Screen.cursor:=crDefault; end; end;