Pessoal este é meu codigo que gera o xml:
function Tfrmnotafiscal_menu.Gerar_XML():string;
var
vAux : String;
BnF_VEICULO : BOOLEAN;
iCRT, i : Integer;
begin
if qrnota.RecordCount = 0 then exit;
// filial
query2.close;
query2.sql.clear;
query2.sql.add('select * from c000004');
query2.sql.add('where codigo = '''+qrnota.fieldbyname('codfilial').asstring+'''');
query2.open;
qrnfe_cliente.close;
qrnfe_cliente.sql.clear;
qrnfe_cliente.sql.add('select * from c000007');
qrnfe_cliente.sql.add('where codigo = '''+qrnota.fieldbyname('codcliente').asstring+'''');
qrnfe_cliente.open;
qrtransportador2.close;
qrtransportador2.sql.clear;
qrtransportador2.sql.add('select * from c000010');
qrtransportador2.sql.add('where codigo = '''+qrnota.fieldbyname('codtransportador').asstring+'''');
qrtransportador2.open;
ACBrNFe1.NotasFiscais.Clear;
with ACBrNFe1.NotasFiscais.Add.NFe do
begin
infNFe.ID := qrnota.fieldbyname('numero').asstring;
Ide.natOp := qrnota.fieldbyname('natureza').asstring;
Ide.nNF := StrToInt(qrnota.fieldbyname('numero').asstring);
Ide.cNF := StrToInt(qrnota.fieldbyname('numero').asstring);
Ide.modelo := 55;
Ide.serie := StrToInt(qrnota.fieldbyname('serie_nf').asstring);
Ide.dEmi := qrnota.fieldbyname('data').AsDateTime;
Ide.dSaiEnt := qrnota.fieldbyname('data_saida').asdatetime;
Ide.hSaiEnt := StrToTime(qrnota.fieldbyname('hora').asstring);;
IF QRNOTA.FIELDBYNAME('MOVIMENTO').ASSTRING = 'S' Then
Ide.tpNF := tnSaida
else
Ide.tpNF := tnEntrada;
if qrnota.FieldByName('fat_tipo').asinteger = 1 then
Ide.indPag := ipVista
else
Ide.indpag := ipPrazo;
Ide.verProc := '7.0';
Ide.cUF := strtoint(Copy(QUERY2.FIELDBYNAME('COD_MUNICIPIO_IBGE').ASstring,1,2));
Ide.cMunFG := QUERY2.FIELDBYNAME('COD_MUNICIPIO_IBGE').ASINTEGER;
// dados do emitente
Emit.CNPJCPF := sn(QUERY2.FIELDBYNAME('CNPJ').ASSTRING);
IF (QUERY2.FIELDBYNAME('IE').ASSTRING = '') or
(QUERY2.FIELDBYNAME('IE').ASSTRING = 'ISENTO') Then
Emit.IE := '1234567890'
else
Emit.IE := SN(QUERY2.FIELDBYNAME('IE').ASSTRING);
Emit.IM := sn(QUERY2.FIELDBYNAME('INSC_MUNICIPAL').ASSTRING);
Emit.CNAE := sn(QUERY2.FIELDBYNAME('CNAE').ASSTRING);
IF QUERY2.FIELDBYNAME('CRT').ASSTRING = '1' Then
Emit.CRT := crtSimplesNacional
else
IF QUERY2.FIELDBYNAME('CRT').ASSTRING = '2' Then
Emit.CRT := crtSimplesExcessoReceita
else
IF QUERY2.FIELDBYNAME('CRT').ASSTRING = '3' Then
Emit.CRT := crtRegimeNormal;
Emit.xNome := QUERY2.FIELDBYNAME('FILIAL').ASSTRING;
Emit.xFant := QUERY2.FIELDBYNAME('FILIAL').ASSTRING;
Emit.EnderEmit.fone := QUERY2.FIELDBYNAME('TELEFONE').ASSTRING;
Emit.EnderEmit.CEP := StrToInt(SN(QUERY2.FIELDBYNAME('CEP').ASSTRING));
Emit.EnderEmit.xLgr := QUERY2.FIELDBYNAME('ENDERECO').ASSTRING;
Emit.EnderEmit.nro := QUERY2.FIELDBYNAME('NUMERO').ASSTRING;
Emit.EnderEmit.xCpl := QUERY2.FIELDBYNAME('COMPLEMENTO').ASSTRING;
Emit.EnderEmit.xBairro := QUERY2.FIELDBYNAME('BAIRRO').ASSTRING;
Emit.EnderEmit.cMun := StrToInt(QUERY2.FIELDBYNAME('COD_MUNICIPIO_IBGE').ASSTRING);
Emit.EnderEmit.xMun := QUERY2.FIELDBYNAME('CIDADE').ASSTRING;
Emit.EnderEmit.UF := QUERY2.FIELDBYNAME('UF').ASSTRING;
Emit.enderEmit.cPais := 1058;
Emit.enderEmit.xPais := 'BRASIL';
// destinatario
Dest.xNome := qrnfe_cliente.fieldbyname('nome').asstring;
Dest.CNPJCPF := sn(qrnfe_cliente.fieldbyname('cpf').asstring);
Dest.EnderDest.CEP := StrToInt(sn(qrnfe_cliente.fieldbyname('cep').asstring));
Dest.EnderDest.xLgr := qrnfe_cliente.fieldbyname('endereco').asstring;
Dest.EnderDest.nro := qrnfe_cliente.fieldbyname('numero').asstring;
Dest.EnderDest.xCpl := qrnfe_cliente.fieldbyname('complemento').asstring;
Dest.EnderDest.xBairro := qrnfe_cliente.fieldbyname('bairro').asstring;
Dest.EnderDest.cMun := StrToInt(qrnfe_cliente.fieldbyname('cod_municipio_ibge').asstring);
Dest.EnderDest.xMun := qrnfe_cliente.fieldbyname('cidade').asstring;
Dest.EnderDest.UF := qrnfe_cliente.fieldbyname('uf').asstring;
Dest.EnderDest.Fone := sn(qrnfe_cliente.fieldbyname('telefone1').asstring);
Dest.IE := sn(qrnfe_cliente.fieldbyname('rg').asstring);
Dest.ISUF := '';
Dest.EnderDest.cPais := 1058;
Dest.EnderDest.xPais := 'BRASIL';
Dest.Email := qrnfe_cliente.fieldbyname('email').asstring;
// itens
qrnota_item.close;
qrnota_item.sql.clear;
qrnota_item.sql.add('select c000062.*, c000025.produto, c000025.codbarra cod_barra, c000025.unidade un');
qrnota_item.sql.add('from c000062, c000025 where c000062.codproduto = c000025.codigo');
qrnota_item.sql.add('and c000062.codnota = '''+qrnota.fieldbyname('codigo').asstring+'''');
qrnota_item.open;
qrnota_item.Last;
qrnota_item.first;
while not qrnota_item.eof do
begin
bnf_veiculo := false;
frmmodulo.qrconfig.Open;
IF FRMMODULO.QRCONFIG.FieldByName('CADASTRO_PRODUTO').asstring = 'PECAS' then
BEGIN
query.close;
query.sql.clear;
query.sql.add('select * from c000025 where codigo = '''+qrnota_item.fieldbyname('codproduto').asstring+'''');
query.open;
IF query.FieldByName('CODRECEITA').ASSTRING = 'SIM' THEN
BEGIN
bnf_veiculo := true;
END;
END;
if BNF_VEICULO THEN
begin
with Det.Add do
begin
Prod.nItem := qrnota_item.fieldbyname('item').asinteger;
Prod.cProd := qrnota_item.fieldbyname('codproduto').asstring;
if length(trim(qrnota_item.fieldbyname('codbarra').asString))>0 then
Prod.cEAN := frmPrincipal.Zerarcodigo(qrnota_item.fieldbyname('codbarra').asstring, 13)
else
Prod.cEAN := '';
prod.NCM := sn(qrnota_item.fieldbyname('classificacao_fiscal').asstring);
Prod.xProd := copy(query.fieldbyname('veic_especie').asstring,1,3)+'/'+
query.fieldbyname('veic_tipo').asstring;
infAdProd := query.fieldbyname('veic_cod_marca').asstring+'/'+
qrnota_item.fieldbyname('produto').asstring+';'+
'Ano: '+query.fieldbyname('veic_ano_fabricacao').asstring+' '+
'Mod: '+query.fieldbyname('veic_ano_modelo').asstring+';'+
'Cor: '+query.fieldbyname('veic_cor').asstring+';'+
'Combustivel: '+query.fieldbyname('veic_tipo_combustivel').asstring+';'+
'Placa: '+query.fieldbyname('VEIC_SERIE').asstring+';'+
'Renavam: '+query.fieldbyname('veic_renavam').asstring+';'+
'Chassi: '+query.fieldbyname('veic_chassi').asstring+';'+
'Categoria: '+query.fieldbyname('VEIC_NUMERO_MOTOR').asstring;
Prod.CFOP := qrnota_item.fieldbyname('cfop').asstring;
Prod.EXTIPI := '23';
Prod.uCom := qrnota_item.fieldbyname('UN').asstring;
Prod.qCom := qrnota_item.fieldbyname('qtde').asfloat;
Prod.vUnCom := qrnota_item.fieldbyname('unitario').asfloat;
Prod.vProd := qrnota_item.fieldbyname('total').asfloat;
Prod.cEANTrib := '';
Prod.qTrib := qrnota_item.fieldbyname('qtde').asfloat;
Prod.vUnTrib := qrnota_item.fieldbyname('unitario').asfloat;
prod.uTrib := qrnota_item.fieldbyname('UN').asstring;
prod.vDesc := qrnota_item.fieldbyname('desconto').asfloat;
Prod.vFrete := qrnota.fieldbyname('frete').AsCurrency;
Prod.vSeg := qrnota.fieldbyname('seguro').AsCurrency;
Prod.vOutro := qrnota.fieldbyname('outras_despesas').AsCurrency;
Prod.IndTot := qrnota.fieldbyname('total_nota').AsVariant;
with Imposto do
begin
ICMS.orig := oeNacional;
iCRT := StrToInt(frmmodulo.qrfilial.fieldbyname('crt').asstring);
case iCRT of
1:begin // Linhas para o simples nacional
if qrnota_item.fieldbyname('csosn').asstring = '101' then ICMS.CSOSN := csosn101;
if qrnota_item.fieldbyname('csosn').asstring = '102' then ICMS.CSOSN := csosn102;
if qrnota_item.fieldbyname('csosn').asstring = '103' then ICMS.CSOSN := csosn103;
if qrnota_item.fieldbyname('csosn').asstring = '300' then ICMS.CSOSN := csosn300;
if qrnota_item.fieldbyname('csosn').asstring = '400' then ICMS.CSOSN := csosn400;
if qrnota_item.fieldbyname('csosn').asstring = '201' then ICMS.CSOSN := csosn201;
if qrnota_item.fieldbyname('csosn').asstring = '202' then ICMS.CSOSN := csosn202;
if qrnota_item.fieldbyname('csosn').asstring = '500' then ICMS.CSOSN := csosn500;
if qrnota_item.fieldbyname('csosn').asstring = '900' then ICMS.CSOSN := csosn900;
case ICMS.CSOSN of
csosn101 : begin
ICMS.pCredSN := 0.0; // Colocar o percentual do Crédito
ICMS.vCredICMSSN := 0.0; // Colocar o valor do Crédito
end;
csosn102 : begin
end;
csosn103 : begin
end;
csosn300 : begin
end;
csosn400 : begin
end;
csosn201 : begin
ICMS.modBCST := dbisMargemValorAgregado;;
ICMS.pMVAST := qrnota_item.fieldbyname('margem_agregada').Value;
ICMS.pRedBCST := 00.00;
ICMS.vBCST := qrnota_item.fieldbyname('base_sub').Value;
ICMS.pICMSST := 00.00;
ICMS.vICMSST := qrnota_item.fieldbyname('icms_sub').Value;
ICMS.pCredSN := 0.0; // Colocar o percentual do Crédito
ICMS.vCredICMSSN := 0.0; // Colocar o valor do Crédito
end;
csosn202 : begin
ICMS.modBCST := dbisMargemValorAgregado;
ICMS.pMVAST := qrnota_item.fieldbyname('margem_agregada').Value;
ICMS.pRedBCST := 00.00;
ICMS.vBCST := qrnota_item.fieldbyname('base_sub').Value;
ICMS.pICMSST := 00.00;
ICMS.vICMSST := qrnota_item.fieldbyname('icms_sub').Value;
end;
csosn500 : begin
ICMS.vBCSTRet := qrnota_item.fieldbyname('base_sub').Value;
ICMS.vICMSSTRet := qrnota_item.fieldbyname('icms_sub').Value;
end;
csosn900 : begin
ICMS.modBC := dbiMargemValorAgregado;
ICMS.vBC := qrnota_item.fieldbyname('base_calculo').Value;
ICMS.pRedBC := qrnota_item.fieldbyname('icms_reduzido').Value;
ICMS.pICMS := qrnota_item.fieldbyname('ICMS').asfloat;
ICMS.vICMS := qrnota_item.fieldbyname('valor_icms').Value;
ICMS.modBCST := dbisMargemValorAgregado;
ICMS.pMVAST := qrnota_item.fieldbyname('margem_agregada').Value;
ICMS.pRedBCST := 00.00;
ICMS.vBCST := qrnota_item.fieldbyname('base_sub').Value;
ICMS.pICMSST := 00.00;
ICMS.vICMSST := qrnota_item.fieldbyname('icms_sub').Value;
ICMS.pCredSN := 0.0; // Colocar o percentual do Crédito
ICMS.vCredICMSSN := 0.0; // Colocar o valor do Crédito
end;
end; // fim do case icms.csosn
end;
2:begin
// (...)
end;
3:begin
if qrnota_item.fieldbyname('cst').asstring = '000' then ICMS.CST := cst00;
if qrnota_item.fieldbyname('cst').asstring = '010' then ICMS.CST := cst10;
if qrnota_item.fieldbyname('cst').asstring = '020' then ICMS.CST := cst20;
if qrnota_item.fieldbyname('cst').asstring = '030' then ICMS.CST := cst30;
if qrnota_item.fieldbyname('cst').asstring = '040' then ICMS.CST := cst40;
if qrnota_item.fieldbyname('cst').asstring = '041' then ICMS.CST := cst41;
if qrnota_item.fieldbyname('cst').asstring = '050' then ICMS.CST := cst50;
if qrnota_item.fieldbyname('cst').asstring = '051' then ICMS.CST := cst51;
if qrnota_item.fieldbyname('cst').asstring = '060' then ICMS.CST := cst60;
if qrnota_item.fieldbyname('cst').asstring = '070' then ICMS.CST := cst70;
if qrnota_item.fieldbyname('cst').asstring = '080' then ICMS.CST := cst80;
if qrnota_item.fieldbyname('cst').asstring = '081' then ICMS.CST := cst81;
if qrnota_item.fieldbyname('cst').asstring = '090' then ICMS.CST := cst90;
ICMS.modBC := dbiPrecoTabelado;
ICMS.pICMS := qrnota_item.fieldbyname('ICMS').asfloat;
ICMS.vICMS := qrnota_item.fieldbyname('valor_icms').asfloat;
ICMS.vBC := qrnota_item.fieldbyname('base_calculo').asfloat;
ICMS.orig := oeNacional;
IPI.CST := ipi00;
IPI.clEnq := '';
IPI.cEnq := '999';
end;
end; // fim do case iCRT
end; //fim do with imposto
end;
end
ELSE
BEGIN
With Det.Add do
begin
Prod.nItem := qrnota_item.fieldbyname('item').asinteger;
Prod.cProd := qrnota_item.fieldbyname('codproduto').asstring;
// Aqui verifica se há codBarra se não tiver deixa em branco
if length(trim(qrnota_item.fieldbyname('codbarra').asString))>0 then
Prod.cEAN := frmPrincipal.Zerarcodigo(qrnota_item.fieldbyname('codbarra').asstring, 13)
else
Prod.cEAN := '';
prod.NCM := sn(qrnota_item.fieldbyname('classificacao_fiscal').asstring);
Prod.xProd := qrnota_item.fieldbyname('produto').asstring;
Prod.CFOP := qrnota_item.fieldbyname('cfop').asstring;
Prod.uCom := qrnota_item.fieldbyname('UN').asstring;
Prod.qCom := qrnota_item.fieldbyname('qtde').asfloat;
Prod.vUnCom := qrnota_item.fieldbyname('unitario').asfloat;
Prod.vProd := qrnota_item.fieldbyname('total').asfloat;
Prod.qTrib := qrnota_item.fieldbyname('qtde').asfloat;
Prod.vUnTrib := qrnota_item.fieldbyname('unitario').asfloat;
prod.uTrib := qrnota_item.fieldbyname('UN').asstring;
prod.vDesc := qrnota_item.fieldbyname('desconto').AsCurrency;
Prod.vFrete := qrnota.fieldbyname('frete').AsCurrency;
Prod.vSeg := qrnota.fieldbyname('seguro').AsCurrency;
Prod.vOutro := qrnota.fieldbyname('outras_despesas').AsCurrency;
infAdProd := ''; // complemento do nome do item
Prod.EXTIPI := '23';
Prod.cEANTrib := '';
Prod.IndTot := qrnota.fieldbyname('total_nota').AsVariant;
with Imposto do
begin
ICMS.orig := oeNacional;
iCRT := StrToInt(frmmodulo.qrfilial.fieldbyname('crt').asstring);
case iCRT of
1:begin // Linhas para o simples nacional
if qrnota_item.fieldbyname('csosn').asstring = '101' then ICMS.CSOSN := csosn101;
if qrnota_item.fieldbyname('csosn').asstring = '102' then ICMS.CSOSN := csosn102;
if qrnota_item.fieldbyname('csosn').asstring = '103' then ICMS.CSOSN := csosn103;
if qrnota_item.fieldbyname('csosn').asstring = '300' then ICMS.CSOSN := csosn300;
if qrnota_item.fieldbyname('csosn').asstring = '400' then ICMS.CSOSN := csosn400;
if qrnota_item.fieldbyname('csosn').asstring = '201' then ICMS.CSOSN := csosn201;
if qrnota_item.fieldbyname('csosn').asstring = '202' then ICMS.CSOSN := csosn202;
if qrnota_item.fieldbyname('csosn').asstring = '500' then ICMS.CSOSN := csosn500;
if qrnota_item.fieldbyname('csosn').asstring = '900' then ICMS.CSOSN := csosn900;
case ICMS.CSOSN of
csosn101 : begin
ICMS.pCredSN := 0.0; // Colocar o percentual do Crédito
ICMS.vCredICMSSN := 0.0; // Colocar o valor do Crédito
end;
csosn102 : begin
end;
csosn103 : begin
end;
csosn300 : begin
end;
csosn400 : begin
end;
csosn201 : begin
ICMS.modBCST := dbisMargemValorAgregado;
ICMS.pMVAST := qrnota_item.fieldbyname('margem_agregada').Value;
ICMS.pRedBCST := 00.00;
ICMS.vBCST := qrnota_item.fieldbyname('base_sub').Value;
ICMS.pICMSST := 00.00;
ICMS.vICMSST := qrnota_item.fieldbyname('icms_sub').Value;
ICMS.pCredSN := 0.0; // Colocar o percentual do Crédito
ICMS.vCredICMSSN := 0.0; // Colocar o valor do Crédito
end;
csosn202 : begin
ICMS.modBCST := dbisMargemValorAgregado;
ICMS.pMVAST := qrnota_item.fieldbyname('margem_agregada').Value;
ICMS.pRedBCST := 00.00;
ICMS.vBCST := qrnota_item.fieldbyname('base_sub').Value;
ICMS.pICMSST := 00.00;
ICMS.vICMSST := qrnota_item.fieldbyname('icms_sub').Value;
end;
csosn500 : begin
ICMS.vBCSTRet := qrnota_item.fieldbyname('base_sub').Value;
ICMS.vICMSSTRet := qrnota_item.fieldbyname('icms_sub').Value;
end;
csosn900 : begin
ICMS.modBC := dbiMargemValorAgregado;
ICMS.vBC := qrnota_item.fieldbyname('base_calculo').Value;
ICMS.pRedBC := qrnota_item.fieldbyname('icms_reduzido').Value;
ICMS.pICMS := qrnota_item.fieldbyname('ICMS').asfloat;
ICMS.vICMS := qrnota_item.fieldbyname('valor_icms').Value;
ICMS.modBCST := dbisMargemValorAgregado;
ICMS.pMVAST := qrnota_item.fieldbyname('margem_agregada').Value;
ICMS.pRedBCST := 00.00;
ICMS.vBCST := qrnota_item.fieldbyname('base_sub').Value;
ICMS.pICMSST := 00.00;
ICMS.vICMSST := qrnota_item.fieldbyname('icms_sub').Value;
ICMS.pCredSN := 0.0; // Colocar o percentual do Crédito
ICMS.vCredICMSSN := 0.0; // Colocar o valor do Crédito
end;
end; // fim do case icms.csosn
end;
2:begin
// (...)
end;
3:begin
if qrnota_item.fieldbyname('cst').asstring = '000' then ICMS.CST := cst00;
if qrnota_item.fieldbyname('cst').asstring = '010' then ICMS.CST := cst10;
if qrnota_item.fieldbyname('cst').asstring = '020' then ICMS.CST := cst20;
if qrnota_item.fieldbyname('cst').asstring = '030' then ICMS.CST := cst30;
if qrnota_item.fieldbyname('cst').asstring = '040' then ICMS.CST := cst40;
if qrnota_item.fieldbyname('cst').asstring = '041' then ICMS.CST := cst41;
if qrnota_item.fieldbyname('cst').asstring = '050' then ICMS.CST := cst50;
if qrnota_item.fieldbyname('cst').asstring = '051' then ICMS.CST := cst51;
if qrnota_item.fieldbyname('cst').asstring = '060' then ICMS.CST := cst60;
if qrnota_item.fieldbyname('cst').asstring = '070' then ICMS.CST := cst70;
if qrnota_item.fieldbyname('cst').asstring = '080' then ICMS.CST := cst80;
if qrnota_item.fieldbyname('cst').asstring = '081' then ICMS.CST := cst81;
if qrnota_item.fieldbyname('cst').asstring = '090' then ICMS.CST := cst90;
ICMS.modBC := dbiPrecoTabelado;
ICMS.pICMS := qrnota_item.fieldbyname('ICMS').asfloat;
ICMS.vICMS := qrnota_item.fieldbyname('valor_icms').asfloat;
ICMS.vBC := qrnota_item.fieldbyname('base_calculo').asfloat;
ICMS.orig := oeNacional;
IPI.CST := ipi00;
IPI.clEnq := '';
IPI.cEnq := '999';
end;
end; // fim do case iCRT
end; // fim do with imposto
end; // fim do with det.add
qrnota_item.Next;
end; // fim do loop de itens
// base de calculo do icms
Total.ICMSTot.vBC := qrnota.fieldbyname('base_calculo').asfloat;
// valor do icms
Total.ICMSTot.vICMS := qrnota.fieldbyname('valor_icms').asfloat;
// base de calculo st
Total.ICMSTot.vBCST := qrnota.fieldbyname('base_sub').AsFloat;
// valor st
Total.ICMSTot.vst := qrnota.fieldbyname('icms_sub').AsFloat;
// frete
Total.ICMSTot.vFrete:= qrnota.fieldbyname('frete').asfloat;
// seguro
Total.ICMSTot.vSeg := qrnota.fieldbyname('seguro').AsFloat;
// outras despesas
Total.ICMSTot.vOutro:= qrnota.fieldbyname('OUTRAS_DESPESAS').asfloat;
// ipi
Total.ICMSTot.vIPI:= qrnota.fieldbyname('VALOR_TOTAL_IPI').asfloat;
// valor da nota
Total.ICMSTot.vNF := qrnota.fieldbyname('TOTAL_NOTA').asfloat;
// valor dos produtos
Total.ICMSTot.vProd := qrnota.fieldbyname('VALOR_PRODUTOS').asfloat;
// desconto
Total.ICMSTot.vDesc := qrnota.fieldbyname('DESCONTO').asfloat;
//contas a pagar
cobr.Fat.nFat := qrnota.fieldbyname('numero').AsString;
cobr.Fat.vOrig := RoundTo(qrnota.fieldbyname('TOTAL_NOTA').asfloat, -2);
cobr.Fat.vDesc := RoundTo(0.0, -2);
cobr.Fat.vLiq := RoundTo(qrnota.fieldbyname('TOTAL_NOTA').asfloat, -2);
for i:=1 to qrnota.fieldbyname('fat_qtde_prestacao').AsInteger do
begin
with Cobr.Dup.Add do
begin
// nDup := FormatFloat('00', i); -> para que o numero saisse 01, 02, 03...
case i of
1: begin
nDup := qrnota.fieldbyname('faturamento_numero1').AsString;
dVenc := qrnota.fieldbyname('faturamento_data1').AsDateTime;
vDup := RoundTo(qrnota.fieldbyname('faturamento_valor1').asfloat, -2);
end;
2: begin
nDup := qrnota.fieldbyname('faturamento_numero2').AsString;
dVenc := qrnota.fieldbyname('faturamento_data2').AsDateTime;
vDup := RoundTo(qrnota.fieldbyname('faturamento_valor2').asfloat, -2);
end;
3: begin
nDup := qrnota.fieldbyname('faturamento_numero3').AsString;
dVenc := qrnota.fieldbyname('faturamento_data3').AsDateTime;
vDup := RoundTo(qrnota.fieldbyname('faturamento_valor3').asfloat, -2);
end;
4: begin
nDup := qrnota.fieldbyname('faturamento_numero4').AsString;
dVenc := qrnota.fieldbyname('faturamento_data4').AsDateTime;
vDup := RoundTo(qrnota.fieldbyname('faturamento_valor4').asfloat, -2);
end;
5: begin
nDup := qrnota.fieldbyname('faturamento_numero5').AsString;
dVenc := qrnota.fieldbyname('faturamento_data5').AsDateTime;
vDup := RoundTo(qrnota.fieldbyname('faturamento_valor5').asfloat, -2);
end;
6: begin
nDup := qrnota.fieldbyname('faturamento_numero6').AsString;
dVenc := qrnota.fieldbyname('faturamento_data6').AsDateTime;
vDup := RoundTo(qrnota.fieldbyname('faturamento_valor6').asfloat, -2);
end;
end;
end;
end;
//trasnportadora
case qrnota.fieldbyname('frete_conta').AsInteger of
0 : Transp.modFrete := mfContaEmitente;
1 : Transp.modFrete := mfContaDestinatario;
2 : Transp.modFrete := mfContaTerceiros;
9 : Transp.modFrete := mfSemFrete;
end;
Transp.Transporta.CNPJCPF := qrtransportador2.fieldbyname('cpf').asstring;
Transp.Transporta.xNome := Trim(qrtransportador2.fieldbyname('nome').asstring);
Transp.Transporta.IE := qrtransportador2.fieldbyname('rg').asstring;
Transp.Transporta.xEnder := Trim(qrtransportador2.fieldbyname('endereco').asstring)+', '+
Trim(qrtransportador2.fieldbyname('numero').asstring);
Transp.Transporta.xMun := Trim(qrtransportador2.fieldbyname('cidade').asstring);
Transp.Transporta.UF := qrtransportador2.fieldbyname('uf').asstring;
Transp.retTransp.vServ := RoundTo(0.0, -2);; // X12 - Valor do Serviço
Transp.retTransp.vBCRet := RoundTo(0.0, -2);; // X13 - BC da Retenção do ICMS
Transp.retTransp.pICMSRet := RoundTo(0.0, -2);; // X14 - Alíquota da Retenção
Transp.retTransp.vICMSRet := RoundTo(0.0, -2);; // X15 - Valor do ICMS Retido
Transp.retTransp.CFOP := ''; // X16 - CFOP (Utilizar Tabela de CFOP)
Transp.retTransp.cMunFG := 0; // X17 - Código do município de ocorrência do fato gerador do ICMS do transporte (Tabela do IBGE)
if qrnota.fieldbyname('frete_conta').AsString = '9' then
begin
Transp.Transporta.xEnder := '';
Transp.veicTransp.placa := '';
Transp.veicTransp.UF := '';
Transp.veicTransp.RNTC := ''; // X21 - Registro Nacional de Transportador de Carga (ANTT)
end
else
begin
Transp.Transporta.xEnder := Trim(qrtransportador2.fieldbyname('endereco').asstring)+', '+
Trim(qrtransportador2.fieldbyname('numero').asstring);
Transp.veicTransp.placa := qrnota.fieldbyname('placa').asstring;
Transp.veicTransp.UF := qrnota.fieldbyname('placa_uf').asstring;
Transp.veicTransp.RNTC := qrtransportador2.fieldbyname('antt').asstring; // X21 - Registro Nacional de Transportador de Carga (ANTT)
end;
end;
//Dados sobre Volumes Transportados
with Transp.Vol.Add do
begin
qVol := qrnota.fieldbyname('vol_qtde').AsInteger;
esp := qrnota.fieldbyname('vol_especie').AsString;
marca := qrnota.fieldbyname('vol_marca').AsString;
nVol := qrnota.fieldbyname('vol_numero').AsString;
pesoL := RoundTo(qrnota.fieldbyname('peso_liquido').AsFloat, -3);
pesoB := RoundTo(qrnota.fieldbyname('peso_bruto').AsFloat, -3);
end;
// Informações complementares
InfAdic.infCpl := qrnota.fieldbyname('inf1').asstring+';'+
qrnota.fieldbyname('inf2').asstring+';'+
qrnota.fieldbyname('inf3').asstring+';'+
qrnota.fieldbyname('inf4').asstring+';'+
qrnota.fieldbyname('inf5').asstring+';';
end;
ACBrNFe1.NotasFiscais.Items[0].SaveToFile;
result := ACBrNFe1.NotasFiscais.Items[0].NomeArq;
MemoResp.Lines.LoadFromFile(PathWithDelim(ACBrNFe1.Configuracoes.Geral.PathSalvar)+copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, (length(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID)-44)+1, 44)+'-NFe.xml');
LoadXML(MemoResp, WBResposta);