Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Pessoal bom dia, estou precisando de ajuda urgente implanteia a NFe no cliente e na hora de imprimir o danfe ele esta gerando varias linhas (Ex. Se tiver 3 itens na nota ele esta gerando 3 linhas de volumes ), porfavor se poder me ajudar agradeço.

Postado

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);

Postado

Anexe o XML.

Roberval, vc sabe o que é XML ne? Aquele arquivo que depois vc envia pro destinatario da NFe e talz.

Anexa ele aqui no forum (tem que utilizar o modo de resposta completo - Editor Completo)

Postado

vc ja tentou passar valores para esses campos, e ver o que acontece? ele aparece repetido os valores?

pq nesse xml esta td em branco...

da uma analisada no Demo do ACBR pra ver o que vc esta fazendo de diferente.

Postado

vc escreveu 6 tags e falou que sao 5...

mas nao foi isso que o andré quis dizer! Olha a parte que ele citou, ta vendo que tem 5 vezes

é pq no seu XML foi adicionado 5x a tag soh que em branco...

entende? da uma olhada pra ver o que vc esta fazendo de errado

Postado

é isso mesmo me desculpe, vc vil que esta em branco.. é o que esta acontecendo ele gera tudo em branco se eu tiver 5 produtos ele vai gerar 5 volumes em branco.. vc pode dar uma olhada neste codigo que gera meu xml ?..

  • Consultores
Postado

Se você esta gerando uma NFe com 5 produtos e ele gera a tag 5 vezes, isso ignifica que você colocou esse trecho de código dentro do loop.

Sendo que o correto é ficar fora do loop que adiciona os produtos.

Reveja a sua rotina que alimenta o componente.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

é isso mesmo me desculpe, vc vil que esta em branco.. é o que esta acontecendo ele gera tudo em branco se eu tiver 5 produtos ele vai gerar 5 volumes em branco.. vc pode dar uma olhada neste codigo que gera meu xml ?..

Eu posso, mas vc tbm pode! - E pra vc é bem mais facil pq vc pode DEBUGAR passo a passo

Tenta outras coisas. Veja o que o Ítalo disse, se nao tem nenhum loop abrangendo a criacao desta tag.

Tente fazer uma NFe com 10 produtos, veja se serão adicionadas 10 tags em branco.

Faça o que eu falei no começo: tente ATRIBUIR Valores (mesmo que fixos) para as tags que estão dentro da , verifique se eles são atribuidos corretamente ou está mesmo assim em branco.

  • Consultores
Postado

Tanto eu quanto o Igor, já cantamos a bola para você.

A minha suspeita é que você esta colocando o trecho que alimenta o Vol dentro do loop de produtos.

O Igor pediu para você fazer uma nota com 10 produtos, para ver se aparece no xml a tab Vol 10 vezes.

O que você mais quer que de nós? escrever a rotina que alimenta o componente, para você?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Pessoal´ninguem vai me d uma força ai no meu codigo pra tirar minha duvida se eu fiz alguma coisa errada ?

orra! parece que vc está fazendo um monologo no forum entao ne?

faz o que o povo sugeriu e posta os resultados... É dificil saber o que está passando ai, uma vez q o problema nao é no componente, mas sim no seu codigo...

Vc fez o codigo, quem melhor pra saber onde esta errado???

Mais ajuda do que vc esta tendo, somente se vc publicar seus fontes e pedir pra alguem debugar pra vc...

Postado

Pessoal é o seguinte ja fiz a nfe com 10 itens e realmente ele gerou os 10 vol. tirei do loop e agora vo testar

Pessoal depois que fiz uma alteração no meu codigo minha nfe esta dando Rejeição 564 :

564 - [simulacao] Rejeicao: Total do Produto / Servico difere do somatorio dos itens

No XML na Tag esta gerando assim 0

o correto era Gerar 1

No meu codigo esa assim:

Prod.IndTot := qrnota.fieldbyname('Total_nota').asVariant;

If eu colocar Assim : Prod.IndTot : 1;

ele me da erro de imcompatibilidade de tipo 'TpcnIndicadorTotal' and Char

Alguem Tem uma luz

Postado

Igor me desculpe mais quando mandei esta resposta não visto o que os colegas tinha postado

mais blz agradeço a ajuda de vcs e pela as informações

consegui resolver este problema do Volumes o codigo realmente estava em um loop de Produto valeu a pessoal..

  • Este tópico foi criado há 4406 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.