Ver Mensaje Individual
  #105  
Antiguo 24-05-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Reputación: 15
dado Va por buen camino
Hola ifarias, mi solucion es muy parecida a la tuya y me permito hacerte una recomendacion.

El Data Binding del cfdv2.xsl se genera muy bien pero aveces resulta que, por ejemplo, el cliente NO tiene "Numero Interior" o "Colonia" es por eso que en la unidad cfdv2.pas te recomiendo hacer una busqueda y remplazo de :

Buscar : SetAttribute(
Remplazar por : if Value <> '' then SetAttribute(

entonces, por ejemplo, la rutina que graba el "Numero Exterior" quedaria asi :

Código Delphi [-]
procedure TXMLT_UbicacionFiscal.Set_NoExterior(Value: WideString);
begin
  if Value <> '' then SetAttribute('noExterior', Value);
end;

Eso te garantiza que no se vayan a grabar datos nulos o vacios, algo que por cierto no le gusta al validador......

Hay dos valores tipo integer, noAprobacion y anoAprobacion (sic), esos tienes que usar

Código Delphi [-]
if value <> 0

Tambien me permito mostrar como yo solucione los namespace extra, algo que no me deja muy convencido de tu solucion es que creas otro nodo, rompiendo un poco con el pragma del encapsulado que te da el data binding.

Código Delphi [-]
 XMLDoc.XML.Text := ''" target="_blank">http://www.sat.gob.mx/cfd/2">';
 XMLDoc.Active := True; 
 CFD := GetComprobante(XMLDoc);
 with CFD do
 begin
  SetAttribute('xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance');
  SetAttribute('xsi:schemaLocation','http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd');
  Version := '2.0';
  Serie := ...... etc.....
Responder Con Cita