Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-01-2015
lithium76 lithium76 is offline
Miembro
 
Registrado: ene 2015
Posts: 33
Poder: 0
lithium76 Va por buen camino
Gracias por la respuesta tan rápida! La verdad es que he el enlace está muy bien.. lo de la web de facturae ya lo tenía visto, por eso.. El contenido del xml lo tengo generado perfectamente. . El problema es básicamente con el elemento Facturae que he posteado antes .. Con la interface que ha generado el Data Binding al generar este nodo no lo hace como es debido y no entiendo exactamente el motivo.. Quizá sea un fallo del Data Binding y entonces optaré por algun "truco" para evitarlo pero me gustaría saber si alguien sabe como conseguirlo sin optar por "apaños"

Muchas gracias una vez más
Responder Con Cita
  #2  
Antiguo 25-01-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 147
Poder: 16
iMia Va por buen camino
Hola LITHIUM76,
con el Databinding, si has conseguido generarlo correctamente (ya que el propio de el interprete de xsd delphi no los convierte si tienen referencias externas), lo único que debes haces hacer (o almenos es lo que yo he hecho) ha sido que el nombre del elemento lo he puesto directamente 'fe:Facturae' y el validador del ministerio ha dicho que OK... :-)
Yo serialicé el xsd con XSDTool 3.0... pero luego reescribí todos los tipos que necesité manualmente, ya que hacia mas cosas que lo que quería, y la forma que lo hacía no me gustaba...
Código:
  XMLNode_eFact_32_Facturae                                     = 'fe:Facturae';
    XMLNode_eFact_32_FileHeader                                   = 'FileHeader';
    XMLNode_eFact_32_SchemaVersion                                  = 'SchemaVersion';
    XMLNode_eFact_32_Modality                                     = 'Modality';
    XMLNode_eFact_32_InvoiceIssuerType                            = 'InvoiceIssuerType';

type
  TFacturae = class
  private
    fFileHeader:  TFileHeader;
    fParties:     TParties;
    fInvoices:    TInvoices;
//    fExtensions:  TExtensions;
  public
    constructor Create;
    ///
    function ToXml: IXMLDOMElement;
    ///
    property FileHeader: TFileHeader  read fFileHeader  write fFileHeader;
    property Parties:    TParties     read fParties     write fParties;
    property Invoices:   TInvoices    read fInvoices    write fInvoices;
//    property fExtensions: TExtensions  read fExtensions  write fExtensions;
  end;
Responder Con Cita
  #3  
Antiguo 25-01-2015
lithium76 lithium76 is offline
Miembro
 
Registrado: ene 2015
Posts: 33
Poder: 0
lithium76 Va por buen camino
Muchas gracias iMia
yo también tuve problemas inicialmente con el Data Binding por el import y probé con esa herramienta que mencionas pero no quedé muy contento con el resultado.. Total, que investigando y probando, di con que si descargaba el xsd externo al que hace referencia el del Facturae y lo ponía en el mismo directorio, el Data Binding funcionaba perfectamente. El problema es que todo el XML es perfecto menos el elemento Facturae que sale sin el fe: de las narices . Probé como bien dices poniendo fe:Facturae pero entonces pone el prefijo fe: en todos los elementos del XML y, en consecuencia, el XML no valida. He encontrado algún "apaño" pero me gustaría saber si existe alguna manera elegante de conseguir el prefijo fe solo en elemento y no en sus hijos. No sé si es culpa del DataBinding que no acaba de hacerlo bien del todo o yo que ando algo confundido con mis pocos conocimientos de xml.. se te ocurre alguna cosa? yo ya no sé qué más probar
Responder Con Cita
  #4  
Antiguo 25-01-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 147
Poder: 16
iMia Va por buen camino
Lo debe hacer por que propaga el namespace en los nodos hijos. Eso era algo que no me cuadraba y poor eso reescribí los tiposwsin heredar el namespace.
Mira de modificar el tipo tfacturae para que en el create no lo traslade a los tipos contenidos.
(Perdon por la redaccion, estoy desde la tablet)
Responder Con Cita
  #5  
Antiguo 25-01-2015
lithium76 lithium76 is offline
Miembro
 
Registrado: ene 2015
Posts: 33
Poder: 0
lithium76 Va por buen camino
No pasa nada por la redacción, se entiende.. Gracias por ser tan rápido/a.. Eso he estado intentando pero no lo consigo de ninguna manera.. Tienes algún ejemplo de código si no te importa de como hacer para no trasladar el namespace, si no te importa? Muy agradecido
Responder Con Cita
  #6  
Antiguo 25-01-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 147
Poder: 16
iMia Va por buen camino
Como te he comentado, he reescrito todos los tipos de nuevo, sin nada de los namespaces.
A ver si manana te poongo el codigo completo del tipo facturae, para que veas lo simple (y mal para otros casos) que lo he dejado.
Responder Con Cita
  #7  
Antiguo 25-01-2015
lithium76 lithium76 is offline
Miembro
 
Registrado: ene 2015
Posts: 33
Poder: 0
lithium76 Va por buen camino
Sería de gran utilidad, muchas gracias.. aquí está una parte del mío (la de los nodos principales, todo no me deja por excesivamente largo) tal como salen del Data Binding por si queda más claro lo que quería decir

Código Delphi [-]
const
  TargetNamespace = 'http:....Facturae';

implementation

{ Global Functions }

function GetFacturae(Doc: IXMLDocument): IXMLFacturae;
begin
  Result := Doc.GetDocBinding('Facturae', TXMLFacturae, TargetNamespace) as IXMLFacturae;
end;

function LoadFacturae(const FileName: string): IXMLFacturae;
begin
  Result:= LoadXMLDocument(FileName).GetDocBinding('Facturae', TXMLFacturae, TargetNamespace) as IXMLFacturae;
end;

function NewFacturae: IXMLFacturae;
begin
  Result := NewXMLDocument.GetDocBinding('Facturae', TXMLFacturae, TargetNamespace) as IXMLFacturae;
end;

{ TXMLFacturae }

procedure TXMLFacturae.AfterConstruction;
begin
  RegisterChildNode('FileHeader', TXMLFileHeaderType);
  RegisterChildNode('Parties', TXMLPartiesType);
  RegisterChildNode('Invoices', TXMLInvoicesType);
  RegisterChildNode('Extensions', TXMLExtensionsType);
  RegisterChildNode('Signature', TXMLSignatureType_ds);
  inherited;
end;
Responder Con Cita
  #8  
Antiguo 19-02-2015
MasDelphi MasDelphi is offline
Miembro
 
Registrado: abr 2007
Posts: 10
Poder: 0
MasDelphi Va por buen camino
Hola a tod@s.
Finalmente he logrado generar la firma electrónica con el formato XAdES_EPES que es el utilizado para la FACTURAe, inicialmente comencé con Java, pero a medio camino probé las librerías de SecureBlackBox VCL de la empresa eldos.com/sbb/. Son fantásticas y muy completas, abandoné el Java y opté por desarrollarlo en Delphi XE5, en el enlace se puede descargar (incluye ejemplos muy interesantes), son librerías de pago, si deseas tener los fuentes, pero en mi caso fue suficiente con los archivos .dcu y los manuales (además de estudiar la información que ofrece el Ministerio de Industria), puede crear un pequeño programa que firmara el archivo .xml incrustando la firma electrónica, lo valido en la sede electrónica del Ministerio de Industria y todo OK.
Comparto la opinión de iMia, lo importante es entender el problema y los requerimientos, pensar la solución y no simplemente copiar el código.
Saludos.
Responder Con Cita
  #9  
Antiguo 19-02-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 147
Poder: 16
iMia Va por buen camino
Thumbs up

Has optado por una opción muuuuuy interesante... que ya pensé en su momento pero descarté por el coste del SBB... ya que no sabía que no hacía falta comprar los componentes si no quieres los fuentes, y que con los dcu's habia suficiente...

Aunque sea en 2 programas diferentes, así lo tienes todo en Delphi...

Cuando tenga más tiempo miraré esa opción...

EDITO: Acabo de mirar la web, y la licencia de pruebas tiene limitación de tiempo... creo que tendrás que pasar por caja...

Última edición por iMia fecha: 19-02-2015 a las 17:51:32.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mexico - Como crear sellos en FACTURA ELECTRONICA.. pcicom API de Windows 12 10-11-2012 18:46:55
Factura Electrónica aig Varios 13 10-12-2010 17:12:44
factura electronica spia Varios 2 22-02-2009 21:30:06
Factura electronica AUNA Aprendiz Varios 5 01-09-2005 10:44:15
programa para validar formato de archivo de texto n3mohack Varios 4 21-04-2005 00:27:00


La franja horaria es GMT +2. Ahora son las 00:15:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi