Problema con XML de CFDI.
Publicado: Mié Ene 15, 2014 4:30 pm
Hola.
El Problema es básicamente que al generar el XML para CFDI Version 3.2.
Los nodos interiores se generan sin el prefijo "cfdi:"
<cfdi:Conceptos>
<Concepto xmlns="http://www.sat.gob.mx/cfd/3" unidad="No aplica" importe="0" valorUnitario="0" descripcion="ESTE CFDI ES UN COMPLEMENTO DEL CFD EXPEDIDO" cantidad="1.00"/>
</cfdi:Conceptos>
<cfdi:Impuestos totalImpuestosTrasladados="166.87">
<cfdi:Traslados>
<Traslado xmlns="http://www.sat.gob.mx/cfd/3" importe="166.87" tasa="5" impuesto="IVA"/>
</cfdi:Traslados>
En lugar de que sea:
<cfdi:Conceptos>
<cfdi:Concepto unidad="No aplica" importe="0" valorUnitario="0" descripcion="ESTE CFDI ES UN COMPLEMENTO DEL CFD EXPEDIDO " cantidad="1.00"/>
</cfdi:Conceptos>
<cfdi:Impuestos totalImpuestosTrasladados="166.87">
<cfdi:Traslados>
<cfdi:Traslado importe="166.87" tasa="5" impuesto="IVA"/>
</cfdi:Traslados>
Como Puedo resolver este Problema.
Saludos.
P.D.
Creo el XML de la siguiente manera.
CFD := TCFD.Create(cfdV32);
With CFD.Datos do Begin
Serie := DaFact.NoFactura.Serie; // 'C';
Folio := IntToStr(DaFact.NoFactura.FolioFactura);
For i := 0 to DaFact.NoRegDetalles-1 do begin
With Conceptos.Add do begin
Cantidad := '1.00';
Descripcion := DaFact.DetalleFactura_.Descripcion; // Revisar esta madre bien.
ValorUnitario := floattostr(DaFact.DetalleFactura_.Importe.Subtotal);
Importe := floattostr(DaFAct.DetalleFactura_.Importe.Subtotal);
Unidad:='No aplica';
if length( DaFact.cliente_factura_especial ) > 0 then begin
Cantidad := altera_cfd_cantidad(Cantidad, DaFact, i);
ValorUnitario := altera_cfd_ValorUnitario( ValorUnitario, DaFact, i);
if alterar_cfd_NoIdentificacion( DaFact ) then
NoIdentificacion := altera_cfd_NoIdentificacion('', DaFact );
end;
End;
End; // fin de Detalles.
With Impuestos do Begin {[TRASLADOS]}
TotalImpuestosTrasladados:=floattostr(DaFact.TotalFactura_.Iva); {opc}
with Traslados.Add do begin
Impuesto := 'IVA';
Tasa:=floattostr(DaFact.Iva);
importe:=floattostr(DaFact.TotalFactura_.Iva);
end;
End; {CFD.Impuestos}
End; {with CFD}
El Problema es básicamente que al generar el XML para CFDI Version 3.2.
Los nodos interiores se generan sin el prefijo "cfdi:"
<cfdi:Conceptos>
<Concepto xmlns="http://www.sat.gob.mx/cfd/3" unidad="No aplica" importe="0" valorUnitario="0" descripcion="ESTE CFDI ES UN COMPLEMENTO DEL CFD EXPEDIDO" cantidad="1.00"/>
</cfdi:Conceptos>
<cfdi:Impuestos totalImpuestosTrasladados="166.87">
<cfdi:Traslados>
<Traslado xmlns="http://www.sat.gob.mx/cfd/3" importe="166.87" tasa="5" impuesto="IVA"/>
</cfdi:Traslados>
En lugar de que sea:
<cfdi:Conceptos>
<cfdi:Concepto unidad="No aplica" importe="0" valorUnitario="0" descripcion="ESTE CFDI ES UN COMPLEMENTO DEL CFD EXPEDIDO " cantidad="1.00"/>
</cfdi:Conceptos>
<cfdi:Impuestos totalImpuestosTrasladados="166.87">
<cfdi:Traslados>
<cfdi:Traslado importe="166.87" tasa="5" impuesto="IVA"/>
</cfdi:Traslados>
Como Puedo resolver este Problema.
Saludos.
P.D.
Creo el XML de la siguiente manera.
CFD := TCFD.Create(cfdV32);
With CFD.Datos do Begin
Serie := DaFact.NoFactura.Serie; // 'C';
Folio := IntToStr(DaFact.NoFactura.FolioFactura);
For i := 0 to DaFact.NoRegDetalles-1 do begin
With Conceptos.Add do begin
Cantidad := '1.00';
Descripcion := DaFact.DetalleFactura_.Descripcion; // Revisar esta madre bien.
ValorUnitario := floattostr(DaFact.DetalleFactura_.Importe.Subtotal);
Importe := floattostr(DaFAct.DetalleFactura_.Importe.Subtotal);
Unidad:='No aplica';
if length( DaFact.cliente_factura_especial ) > 0 then begin
Cantidad := altera_cfd_cantidad(Cantidad, DaFact, i);
ValorUnitario := altera_cfd_ValorUnitario( ValorUnitario, DaFact, i);
if alterar_cfd_NoIdentificacion( DaFact ) then
NoIdentificacion := altera_cfd_NoIdentificacion('', DaFact );
end;
End;
End; // fin de Detalles.
With Impuestos do Begin {[TRASLADOS]}
TotalImpuestosTrasladados:=floattostr(DaFact.TotalFactura_.Iva); {opc}
with Traslados.Add do begin
Impuesto := 'IVA';
Tasa:=floattostr(DaFact.Iva);
importe:=floattostr(DaFact.TotalFactura_.Iva);
end;
End; {CFD.Impuestos}
End; {with CFD}