CFD Honorarios con Impuesto Cedular
Publicado: Vie Ene 07, 2011 11:11 am
Buen día me podrian ayudar a validar un XML con Complemento de Recibos de Honorarios, me marca sello no valido
si le quito la parte de complemento si me valida correctamente el CFD. Solo cuando hago un recibo de honorarios
y le agrego el complemente me marca sello no valido.
Este es parte de mi código para generar el XML
with CFD do
begin
SetAttribute('xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance');
DeclareNamespace('implocal','http://www.sat.gob.mx/implocal');
SetAttribute('xsi:schemaLocation','http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd
http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cf ... local.xsd');
Version := '2.0';
...
...
...
with Impuestos do
begin
TotalImpuestosRetenidos:=FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName('isr_ret').AsFloat+Frm_Cap_REcibo.Qry_Principal.FieldByName('isr_iva').AsFloat,ffFixed,10,2);
{opc} TotalImpuestosTrasladados := FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName('iva').AsFloat,ffFixed,10,2);
with Retenciones.Add do
begin
Importe := FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName('isr_iva').AsFloat,ffFixed,10,2);
Impuesto := 'IVA';
end;
with Retenciones.Add do
begin
Importe := FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName('isr_ret').AsFloat,ffFixed,10,2);
Impuesto := 'ISR';
end;
with Traslados.Add do
begin
Impuesto := 'IVA';
Tasa := '16.00';
Importe := FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName ('iva').AsFloat,ffFixed,10,2);
end;
end ; {CFD.Impuestos}
with Complemento.AddChild('implocal:ImpuestosLocales') do begin
SetAttribute('version','1.0');
SetAttribute('TotaldeTraslados','0.00');
SetAttribute('TotaldeRetenciones',FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName('IMP_CED').AsFloat,ffFixed,10,2));
with AddChild('implocal:RetencionesLocales') do begin
SetAttribute('TasadeRetencion','3.00');
SetAttribute('ImpLocRetenido','IMCD');
SetAttribute('Importe',FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName('IMP_CED').AsFloat,ffFixed,10,2));
end;
end;{CFD.Complemento}
end; {with CFD}
//////////////////////
Esta es parte de la generacion para la cadena original
with Impuestos do
begin
with Retenciones do
for n:= 0 to ChildNodes.Count-1 do
if ChildNodes[n].NodeType = ntElement then
begin
AgregaDato(Retencion[n].Impuesto); AgregaDato(Retencion[n].Importe);
end; {with CFD.Impuestos.Retenciones}
AgregaDato(TotalImpuestosRetenidos);
with Traslados do
for n:= 0 to ChildNodes.Count-1 do
if ChildNodes[n].NodeType = ntElement then
begin
AgregaDato(Traslados[n].Impuesto); AgregaDato(Traslados[n].Tasa); AgregaDato(Traslados[n].Importe);
end; {with CFD.Impuestos.Traslados}
AgregaDato(TotalImpuestosTrasladados);
end; {with CFD.Impuestos}
Esto otra parte agregue para generar la cadena original con el complemento, la cual lo hace pero me genera el sello no valido al momento de validar
if Complemento.ChildNodes.Count>0 then
with Complemento do
begin
if ChildNodes[0].NodeName = 'implocal:ImpuestosLocales' then
begin
AgregaDato(ChildNodes[0].Attributes['TotaldeTraslados']);
AgregaDato(ChildNodes[0].Attributes['TotaldeRetenciones']);
AgregaDato(ChildNodes[0].Attributes['version']);
if ChildNodes[0].ChildNodes[0].NodeName = 'implocal:RetencionesLocales' then
begin
AgregaDato(ChildNodes[0].ChildNodes[0].Attributes['TasadeRetencion']);
AgregaDato(ChildNodes[0].ChildNodes[0].Attributes['ImpLocRetenido']);
AgregaDato(ChildNodes[0].ChildNodes[0].Attributes['Importe']);
end;
end;
end; {with CFD.Complemento}
Perdón por el lugar donde lo habia puesto anteriormente
y de la abreviación IMCD (Impuesto Cedular) según yo asi es en un ejemplo que vi de otro XML
lo que estoy haciendo es un recibo de honorarios y es lo que quise decir con Complemento de Recibos de Honorarios
como los represento en el XML o bien cual es mi error del porque no es valido el sello?
envio un xml
Realmente me urge de su ayuda
De Antemano muchas gracias
si le quito la parte de complemento si me valida correctamente el CFD. Solo cuando hago un recibo de honorarios
y le agrego el complemente me marca sello no valido.
Este es parte de mi código para generar el XML
with CFD do
begin
SetAttribute('xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance');
DeclareNamespace('implocal','http://www.sat.gob.mx/implocal');
SetAttribute('xsi:schemaLocation','http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd
http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cf ... local.xsd');
Version := '2.0';
...
...
...
with Impuestos do
begin
TotalImpuestosRetenidos:=FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName('isr_ret').AsFloat+Frm_Cap_REcibo.Qry_Principal.FieldByName('isr_iva').AsFloat,ffFixed,10,2);
{opc} TotalImpuestosTrasladados := FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName('iva').AsFloat,ffFixed,10,2);
with Retenciones.Add do
begin
Importe := FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName('isr_iva').AsFloat,ffFixed,10,2);
Impuesto := 'IVA';
end;
with Retenciones.Add do
begin
Importe := FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName('isr_ret').AsFloat,ffFixed,10,2);
Impuesto := 'ISR';
end;
with Traslados.Add do
begin
Impuesto := 'IVA';
Tasa := '16.00';
Importe := FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName ('iva').AsFloat,ffFixed,10,2);
end;
end ; {CFD.Impuestos}
with Complemento.AddChild('implocal:ImpuestosLocales') do begin
SetAttribute('version','1.0');
SetAttribute('TotaldeTraslados','0.00');
SetAttribute('TotaldeRetenciones',FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName('IMP_CED').AsFloat,ffFixed,10,2));
with AddChild('implocal:RetencionesLocales') do begin
SetAttribute('TasadeRetencion','3.00');
SetAttribute('ImpLocRetenido','IMCD');
SetAttribute('Importe',FloatToStrF(Frm_Cap_REcibo.Qry_Principal.FieldByName('IMP_CED').AsFloat,ffFixed,10,2));
end;
end;{CFD.Complemento}
end; {with CFD}
//////////////////////
Esta es parte de la generacion para la cadena original
with Impuestos do
begin
with Retenciones do
for n:= 0 to ChildNodes.Count-1 do
if ChildNodes[n].NodeType = ntElement then
begin
AgregaDato(Retencion[n].Impuesto); AgregaDato(Retencion[n].Importe);
end; {with CFD.Impuestos.Retenciones}
AgregaDato(TotalImpuestosRetenidos);
with Traslados do
for n:= 0 to ChildNodes.Count-1 do
if ChildNodes[n].NodeType = ntElement then
begin
AgregaDato(Traslados[n].Impuesto); AgregaDato(Traslados[n].Tasa); AgregaDato(Traslados[n].Importe);
end; {with CFD.Impuestos.Traslados}
AgregaDato(TotalImpuestosTrasladados);
end; {with CFD.Impuestos}
Esto otra parte agregue para generar la cadena original con el complemento, la cual lo hace pero me genera el sello no valido al momento de validar
if Complemento.ChildNodes.Count>0 then
with Complemento do
begin
if ChildNodes[0].NodeName = 'implocal:ImpuestosLocales' then
begin
AgregaDato(ChildNodes[0].Attributes['TotaldeTraslados']);
AgregaDato(ChildNodes[0].Attributes['TotaldeRetenciones']);
AgregaDato(ChildNodes[0].Attributes['version']);
if ChildNodes[0].ChildNodes[0].NodeName = 'implocal:RetencionesLocales' then
begin
AgregaDato(ChildNodes[0].ChildNodes[0].Attributes['TasadeRetencion']);
AgregaDato(ChildNodes[0].ChildNodes[0].Attributes['ImpLocRetenido']);
AgregaDato(ChildNodes[0].ChildNodes[0].Attributes['Importe']);
end;
end;
end; {with CFD.Complemento}
Perdón por el lugar donde lo habia puesto anteriormente
y de la abreviación IMCD (Impuesto Cedular) según yo asi es en un ejemplo que vi de otro XML
lo que estoy haciendo es un recibo de honorarios y es lo que quise decir con Complemento de Recibos de Honorarios
como los represento en el XML o bien cual es mi error del porque no es valido el sello?
envio un xml
Realmente me urge de su ayuda
De Antemano muchas gracias