Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


CARTA PORTE V3.1

ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03


.

Como crear el complemento Donatarias

Para los que programamos en Delphi, aqui estan las respuestas
[[ FORO CERRADO DEBIDO A QUE YA LA INFORMACION YA NO ES VIGENTE ]]
Cerrado
Chuy
Mensajes: 9
Registrado: Sab Dic 04, 2010 8:27 am

Como crear el complemento Donatarias

Mensaje por Chuy »

Hola a todos, gracias por su valiosa ayuda en todo este proceso para la generacion de cfd,
tengo un problema pues un cliente me pidio la facturacion electronica para una Donataria,
y como sabes hay que agregar este concepto, y bueno pues lo hice y
creo debe de jalar, pero me esta marcando un error en run time,
el cual dice: "Projet MiCFD.exe raised exception class EIntfCastError with message Interface Not Supported".
Process stopped

Estoy agregando el codigo para ver si me pueden echar una mano y salir de este problema, agradesco de antemano
toda la ayuda posible.

{ Forward Decls }

IXMLComplemento = interface; == > Este ya esta definido Complemento
IXMLComplementoDonat = interface; == > Agregue este para Donatarias

{ IXMLComplemento }

IXMLComplemento = interface(IXMLNode)
['{2A73E219-B90F-4D73-B74A-B05E2A4761AB}'] == > Se tiene Definido el Complemento pero en Blanco, y agregue
function Get_Donatarias : IXMLComplementoDonat; == > El Procedimiento para Obtener valores de donatarias
property Donatarias : IXMLComplementoDonat read Get_Donatarias;
end;

== > Asi defino IXMLComplementoDonat, donde creo esta el error pues me marca interface not supported en run time
IXMLComplementoDonat = interface(IXMLNode)
['{502DF01A-B90F-4D73-ADAF-B05E2A4761AB}']
{ Property Accessors }
function Get_Version: WideString;
procedure Set_Version(Value: WideString);
{ Methods & Properties }
property Version: WideString read Get_Version write Set_Version;
end;

{ Forward Decls }

TXMLComplemento = class; == > Ya se tiene esta Definicion
TXMLComplementoDonat = class; == > yo añadi este

{ TXMLComplemento }

=== >>> Esta def. la modifico y le agrege
TXMLComplemento = class(TXMLNode, IXMLComplemento)
protected
{ IXMLComplemento }
function Get_Donatarias : IXMLComplementoDonat; == > Modifico esta parte para donatarias
end;

== >> Complemente con esta definicion
TXMLComplementoDonat = class(TXMLNode, IXMLComplementoDonat)
protected
{ IXMLComplemento }
function Get_Version: WideString;
procedure Set_Version(Value: WideString);
end;

== >> y Finalmente los procedimientos

{ TXMLComplemento }
// estos son mis procedimientos para Donatarias

function TXMLComplemento.Get_Donatarias : IXMLComplementoDonat;
begin
Result := ChildNodes['Donatarias'] as IXMLComplementoDonat; == > EL SISTEMA TRUENA AQUI Y MARCA "INTERFACE NOT SUPPORTED"
end;

function TXMLComplementoDonat.Get_Version : WideString;
begin
Result := AttributeNodes['Version'].Text;
end;

procedure TXMLComplementoDonat.Set_Version(Value: WideString);
begin
if Value <> '' then SetAttribute('Version', Value);
end;

(* ESTE ES MI PROCEDIMIENto PARA AGREGAR DATOS A DONATARIAS EN FacturaE
With Complemento Do
begin
With Donatarias Do
begin
Version := '1.0';
// NoAutorizacion := 'PRUEBA AUTOR.';
// FechaAutorizacion := '2010-12-05';
end {CFD.Complemento.Donatarias}
end; {CFD.Complemento}
Avatar de Usuario
Dado
Mensajes: 15980
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Como crear el complemento Donatarias

Mensaje por Dado »

@Chuy

Hola, bienvenido al foro. Movi tu tema aqui a "Delphi" ya que es mas conveniente de acuerdo al tema que comentas.

Veamos, creo entender lo que intentas hacer y mi recomendacion es que NO lo hagas asi.

Mi recomendacion es (disculpa si no explico mucho, reza el dicho "ayudate que yo te ayudare" asi que echale ganas y trata de comprender mi consejo")

1. Crear la interface "principal" para el cuerpo del CFD (esto creo que ya lo tienes) esta es la interface que lleva Emisor, Receptor, Conceptos, Impuesto blah blah

2. Crear la interface COMPLETAMENTE POR SEPARADO de lo que le quieres "pegar" en este caso, quieres el complemento donatarias, igual consejo para CADA UNA de las Addendas, complementos, etc que quieras agregar. Insisto crea la interfase POR SEPARADO, no intentes unirlas en una sola con la principal

3. Procesa, llena, archiva, carga o lo que sea cada interface por separado.

4. Une a nivel XML

EJEMPLO :

INTERFACE 1. CFD PRINCIPAL

<Comprobante>
<Emisor....>
<Receptor....>
<Impuestos....>
</Comprobante>

INTERFACE 2. COMPLEMENTO (o puede ser una addenda)

<Donatarias>
version = ...
NoAutorizacion=.....
fechaAutorizacion=....
</Donatarias>

ULTIMO PASO, UNIRLAS A NIVEL XML

<Comprobante>
<Emisor....>
<Receptor....>
<Impuestos....>
<Complemento>
<Donatarias>
version = ...
NoAutorizacion=.....
fechaAutorizacion=....
</Donatarias>
</Complemento>
</Comprobante>

Como se hace la union? Facil....

cfdv2interface.CFD.Complemento = complementointerface.Complemento.DocElement;
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
Avatar de Usuario
Dado
Mensajes: 15980
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Como crear el complemento Donatarias

Mensaje por Dado »

....continuacion

Es mejor si dejas las interfaces por separado, de esa forma le vas pegando lo necesario a tu CFD, si quieres una Addenda, le pegas la Addenda, si quieres UNO DE LOS 6 complementos pues escoges cual y se lo pegas, pero a nivel de XML y no a nivel de interface

Es decir, de otra forma tendrias un "god object" un mega CFD con 6 complementos y 10 addendas
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
Chuy
Mensajes: 9
Registrado: Sab Dic 04, 2010 8:27 am

Re: Como crear el complemento Donatarias

Mensaje por Chuy »

Dado gracias por tu pronta respuesta, entiendo el consejo,
1 .- Dejare la interface principal como ya existe y trabaja,
2.- Voy a crear la nueva interface para la donataria
<Donatarias>
version = ...
NoAutorizacion=.....
fechaAutorizacion=....
</Donatarias>

3.- Unirlas a nivel xml como me indicas

Creo que tienes mucha razon en esto, cualquier complemento o addenda la diseñas por
separado para asi unir las que requieras

NOTA: solo me queda una duda, segun informacion del SAT en cuanto a donatarias
el tema del namespace, pues segun la informacion del SAT hay que incluirla y combinarla,
pero quisiera primero saltar este paso resolverlo y enseguida consultar y resolver la parte del namespace para donatarias,

Gracias y voy a probarlo, saludos
Chuy
Mensajes: 9
Registrado: Sab Dic 04, 2010 8:27 am

Re: Como crear el complemento Donatarias

Mensaje por Chuy »

Hola dado segui tu consejo y hice la definicion de la donataria por separado

<Comprobante>
<Emisor....>
<Receptor....>
<Impuestos....>
<Complemento>
<Donatarias>
version = ...
NoAutorizacion=.....
fechaAutorizacion=....
</Donatarias>
</Complemento>
</Comprobante>

la cual ya me funciona, las uno con

CFD.Complemento.ChildNodes.Add (CFDDonat); = Donde CFDDonat el la interface con la Donataria

Bueno hasta aqui funciona bien, enseguida genero la cadena original y aqui es donde tengo mi primer problema, a la cadena original debo incluir Version, NoAutorizacion, FechaAutorizacion y la leyenda de donatarias segun vi un certificado de una donataria asi lo hacen, bueno aqui la pregunta es como le agrego a la cadena original esta informacion, ya lo hize de forma manual, es decir, al final de que la construye agrego los datos de la donataria (version, noautor...), y si veo la cadena generada con los datos de la donataria pero pasa algo raro al pasar el xml que se genera por el validador del SAT, ya no muestra los datos que agregue de la donataria. Sabes por que puede pasar eso?

Y segunda pregunta estoy tambien atorado con el tema del NameSpace, donde segun el SAT debe ser
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:donat="http://www.sat.gob.mx/donat">

pero creo no he podido incluira y combinarla correctamente,

al incluira y combinarla con la que ya se tiene en tu codigo que adquiri en ML me marca error y dice que no se ha definido el prefijo dona:donatarias,

Dado estoy ya muy atrasado con esto, necesito ayuda y asesoria, si quieres pago tus honorarios
saludos y gracias
Cerrado