estoy en la fase de certificacion de la addenda PPY de Chrysler, pero tengo un detalle que no puedo resolver, ojala y tu me puedas ayudar
el detalle es que la addenda tiene el nodo llamado factura el cual debera llevar el prefijo PPY, el problema es que no en todo me pone el prefijo en todos los elementos, la manera de como lo estoy haciendo es :
- Despues del proceso normal de la generacion del CFD normal, genero un archivo ya sellado.
- el archivo XML ya sellado lo mando como parametro a una DLL que se encargara de pegar la Addenda y lo regresara completo al modulo principal
- dentro del modulo DLL de la addenda lo hago da la siguiente forma:
Código: Seleccionar todo
function Generar_Addenda(PathCFD : String; ValidaOnly : Integer) : Integer;
const
xmlns = 'xmlns=""'; (* Cadena String a Borrar, (se genera al obtener la interaz Factura) *)
var
XMLFactura : IXMLDocument;
Factura : IXMLFactura;
CFD : TCFD;
begin
Try
CFD := TCFD.Create(cfdV22); // AQUI CREO UNA INSTANCIA DEL CFD, PARA TENER LA CLASE COMPLETA
CFD.LoadFromFile(PathCFD); // AQUI CARGO EL XML YA SELLADO, LISTO PARA PEGAR LA ADDENDA
XMLFactura := TXMLDocument.Create(Nil);
XMLFactura.Active := True;
Factura := GetFactura(XMLFactura);
// ************* PERSONALIZAR ADDENDA CHRYSLER PPY ********************** AQUI LLENO LA ADDENDA CON LOS DATOS DE LA BASE DE DATOS
With Factura do
begin
TipoDocumento := cds_cliente.FieldByName('TipoDocumento').AsString;
TipoDocumentoFiscal := cds_Cliente.FieldByName('TipoDocumentoFiscal').AsString;
Version := cds_Cliente.FieldByName('Version').AsString;
......
.....
end;
FACTURA.OwnerDocument.Options := [doAutoPrefix];
CFD.Datos.Addenda.ChildNodes.Add(Factura);
Factura.SetAttributeNS('xmlns:PPY','', 'http://www.dfdchryslerdemexico.com.mx/Addenda/PPY');
Factura.Attributes['xsi:schemaLocation'] := 'http://www.dfdchryslerdemexico.com.mx/Addenda/PPY http://www.dfdchryslerdemexico.com.mx/Addenda/PPY/PPY.XSD';
CFD.SaveToFile('C:\Paso\CFD_PRUEBA_ADDENDA_CHRYSLER.XML');
Finally
......
......
End;
Código: Seleccionar todo
function Getfactura(Doc: IXMLDocument): IXMLFactura;
function Loadfactura(const FileName: string): IXMLFactura;
function Newfactura: IXMLFactura;
const
TargetNamespace =
'http://www.dfdchryslerdemexico.com.mx/Addenda/PPY'; // xsi:schemaLocation="http://www.dfdchryslerdemexico.com.mx/Addenda/PPY http://www.dfdchryslerdemexico.com.mx/Addenda/PPY/PPY.XSD"';
implementation
{ Global Functions }
function Getfactura(Doc: IXMLDocument): IXMLFactura;
begin
Result := Doc.GetDocBinding('PPY:factura', TXMLFactura, TargetNamespace) as IXMLFactura;
end;
function Loadfactura(const FileName: string): IXMLFactura;
begin
Result := LoadXMLDocument(FileName).GetDocBinding('PPY:factura', TXMLFactura, TargetNamespace) as IXMLFactura;
end;
function Newfactura: IXMLFactura;
begin
Result := NewXMLDocument.GetDocBinding('PPY:factura', TXMLFactura, TargetNamespace) as IXMLFactura;
end;
Código: Seleccionar todo
<Addenda>
<PPY:factura tipoDocumento="PPY" TipoDocumentoFiscal="FA" version="1.0" serie="A" folioFiscal="451" fecha="2012-06-20" montoTotal="9960.98" referenciaProveedor="A 451" xmlns:PPY="http://www.dfdchryslerdemexico.com.mx/Addenda/PPY" xsi:schemaLocation="http://www.dfdchryslerdemexico.com.mx/Addenda/PPY http://www.dfdchryslerdemexico.com.mx/Addenda/PPY/PPY.XSD">
<PPY:moneda tipoMoneda="USD" tipoCambio="1.0000"/>
<PPY:proveedor codigo="20215" nombre="NOMBRE DE LA EMPRESA S.A. DE C.V."/>
<PPY:destino codigo="8476" nombre="PLANTA DE MOTORES 4 CILINDROS - SALTILLO"/>
<nota xmlns="http://www.dfdchryslerdemexico.com.mx/Addenda/PPY">Addenda de Prueba</nota>
<otrosCargos xmlns="http://www.dfdchryslerdemexico.com.mx/Addenda/PPY" codigo="V6" monto="1373.93"/>
<PPY:partes>
<part xmlns="http://www.dfdchryslerdemexico.com.mx/Addenda/PPY" numero="123456" cantidad="1.0000" unidadDeMedida="EA" precioUnitario="8587.0500" montoDeLinea="8587.05">
<references ordenCompra="XYZ6675" releaseRequisicion="XYZ4218000" ammendment="A"/>
<nota>Probando Addenda</nota>
</part>
</PPY:partes>
</PPY:factura>
</Addenda>
Gracias