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;