Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-01-2024
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
nincillo Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
este primer intento es siguiendo un poco el ejemplo del pdf, pero sin meter el soap, a ver si encontrais los fallos please.
Código PHP:
<?xml version="1.0" encoding="UTF-8"?>
<sum:AltaFactuSistemaFacturacion xmlns:sum="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" xmlns:sum1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
<sum1:Cabecera>
<sum1:IDVersion>1.0</sum1:IDVersion>
<sum1:ObligadoEmision>
<sum1:NombreRazon>EMPRESA</sum1:NombreRazon>
<sum1:NIF>00000006Y</sum1:NIF>
</sum1:ObligadoEmision>
<sum1:TipoRegistroAEAT>T0</sum1:TipoRegistroAEAT>
</sum1:Cabecera>
<sum:RegistroAltaFacturas><sum:RegistroFacturacion><sum1:IDFactura><sum1:IDEmisorFactura><sum1:NIF>00000006Y</sum1:NIF></sum1:IDEmisorFactura><sum1:NumSerieFacturaEmisor>84.1.1.3</sum1:NumSerieFacturaEmisor><sum1:FechaExpedicionFacturaEmisor>27-12-2023</sum1:FechaExpedicionFacturaEmisor></sum1:IDFactura><sum1:TipoFactura>F2</sum1:TipoFactura><sum1:FechaOperacion>27-12-2023</sum1:FechaOperacion><sum1:DescripcionOperacion>Factura Simplificada</sum1:DescripcionOperacion><sum1:NombreRazon>EMPRESA</sum1:NombreRazon>
<sum1:NIF>00000006Y</sum1:NIF>
<sum1:NombreRazonEmisor>EMPRESA</sum1:NombreRazonEmisor><sum1:TipoRegistroSIF>S0</sum1:TipoRegistroSIF><sum1:TipoFactura>F2</sum1:TipoFactura><sum1:DescripcionOperacion>Factura Simplificada</sum1:DescripcionOperacion><sum1:Desglose><sum1:DetalleDesglose><sum1:ClaveRegimen>01</sum1:ClaveRegimen><sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion><sum1:TipoImpositivo>10.00</sum1:TipoImpositivo><sum1:BaseImponibleOimporteNoSujeto>0.91</sum1:BaseImponibleOimporteNoSujeto><sum1:CuotaRepercutida>0.09</sum1:CuotaRepercutida></sum1:DetalleDesglose></sum1:Desglose><sum1:ImporteTotal>1.00</sum1:ImporteTotal><sum1:EncadenamientoRegistroAnterior><sum1:IDEmisorFacturaRegistroAnterior><sum1:NIF>00000006Y</sum1:NIF></sum1:IDEmisorFacturaRegistroAnterior><sum1:NumSerieFacturaRegistroAnterior>84.1.1.2</sum1:NumSerieFacturaRegistroAnterior><sum1:FechaExpedicionFacturaRegistroAnterior>27-12-2023</sum1:FechaExpedicionFacturaRegistroAnterior><sum1:HuellaRegistroAnterior>1d0613dddebed13da7a9ec956015556381cfa8663534e4876942ecb305b23fc8</sum1:HuellaRegistroAnterior></sum1:EncadenamientoRegistroAnterior><sum1:SistemaInformatico><sum1:NombreRazon>SOFTWARE GARANTIZADO VERI*FACTU PRUEBA</sum1:NombreRazon><sum1:NIF>B00000000</sum1:NIF><sum1:IdSistemaInformatico>VERIFACTU0000PRUEBA</sum1:IdSistemaInformatico><sum1:Version>1.0.03</sum1:Version><sum1:NumeroInstalacion>00000006Y NCentro:84 NTPV:1</sum1:NumeroInstalacion><sum1:TipoUsoPosibleSoloVerifactu>S</sum1:TipoUsoPosibleSoloVerifactu><sum1:TipoUsoPosibleOtros>N</sum1:TipoUsoPosibleOtros><sum1:TipoUsoPosibleMultiOT>N</sum1:TipoUsoPosibleMultiOT></sum1:SistemaInformatico><sum1:FechaGenRegistro>27/12/2023</sum1:FechaGenRegistro><sum1:HoraGenRegistro>09:49:16</sum1:HoraGenRegistro><sum1:HusoHorarioGenRegistro>02</sum1:HusoHorarioGenRegistro></sum:RegistroFacturacion><sum:DatosControl>
<sum1:Huella>87babbc7e13de14375fe826fb794b0cee52fb2c816734e55943d9d3d3f04897b</sum1:Huella>
<sum1:TipoHash>01</sum1:TipoHash>
</sum:DatosControl>
</sum:RegistroAltaFacturas>
</sum:AltaFactuSistemaFacturacion>
¿Qué fallos tenemos que encontrar?.
Yo a simple vista, lo he copiado/pegado en un visor de xlm para ver un poco más "pretty" y aparentemente está ok, con su cabecera y todo que es lo que al menos a mi me trae loco.
Responder Con Cita
  #2  
Antiguo 03-01-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 872
Poder: 3
ermendalenda Va por buen camino
Cita:
Empezado por nincillo Ver Mensaje
¿Qué fallos tenemos que encontrar?.
Yo a simple vista, lo he copiado/pegado en un visor de xlm para ver un poco más "pretty" y aparentemente está ok, con su cabecera y todo que es lo que al menos a mi me trae loco.
A mi me despista esto del xsd:
Código PHP:
 -->     - <element name="AltaFactuSistemaFacturacion">   - <complexType>   - <complexContent>   - <extension base="sf:SistemaFacturacionAltaFact">   - <sequence>     <element name="RegistroAltaFacturas"  type="sfLR:FacturasEmitidasType" maxOccurs="1000" />     </sequence>   </extension>   </complexContent>   </complexType>   </element>
 <
element  name="BajaFactuSistemaFacturacion">   - <complexType>   - <complexContent>   - <extension base="sf:SistemaFacturacionBajaFact">   - <sequence>     <element name="RegistroAnulacionFacturas" type="sfLR:BajaExpedidasType" maxOccurs="1000" />     </sequence>   </extension>   </complexContent>   </complexType>   </element

Edito.
ok ok nada. eso son nodos a insertar cuando esten empaquetados en el soap
Responder Con Cita
  #3  
Antiguo 03-01-2024
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 51
Poder: 11
ramherfer Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
este primer intento es siguiendo un poco el ejemplo del pdf, pero sin meter el soap, a ver si encontrais los fallos please.
Código PHP:
<?xml version="1.0" encoding="UTF-8"?>
<sum:AltaFactuSistemaFacturacion xmlns:sum="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" xmlns:sum1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
<sum1:Cabecera>
<sum1:IDVersion>1.0</sum1:IDVersion>
<sum1:ObligadoEmision>
<sum1:NombreRazon>EMPRESA</sum1:NombreRazon>
<sum1:NIF>00000006Y</sum1:NIF>
</sum1:ObligadoEmision>
<sum1:TipoRegistroAEAT>T0</sum1:TipoRegistroAEAT>
</sum1:Cabecera>
<sum:RegistroAltaFacturas><sum:RegistroFacturacion><sum1:IDFactura><sum1:IDEmisorFactura><sum1:NIF>00000006Y</sum1:NIF></sum1:IDEmisorFactura><sum1:NumSerieFacturaEmisor>84.1.1.3</sum1:NumSerieFacturaEmisor><sum1:FechaExpedicionFacturaEmisor>27-12-2023</sum1:FechaExpedicionFacturaEmisor></sum1:IDFactura><sum1:TipoFactura>F2</sum1:TipoFactura><sum1:FechaOperacion>27-12-2023</sum1:FechaOperacion><sum1:DescripcionOperacion>Factura Simplificada</sum1:DescripcionOperacion><sum1:NombreRazon>EMPRESA</sum1:NombreRazon>
<sum1:NIF>00000006Y</sum1:NIF>
<sum1:NombreRazonEmisor>EMPRESA</sum1:NombreRazonEmisor><sum1:TipoRegistroSIF>S0</sum1:TipoRegistroSIF><sum1:TipoFactura>F2</sum1:TipoFactura><sum1:DescripcionOperacion>Factura Simplificada</sum1:DescripcionOperacion><sum1:Desglose><sum1:DetalleDesglose><sum1:ClaveRegimen>01</sum1:ClaveRegimen><sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion><sum1:TipoImpositivo>10.00</sum1:TipoImpositivo><sum1:BaseImponibleOimporteNoSujeto>0.91</sum1:BaseImponibleOimporteNoSujeto><sum1:CuotaRepercutida>0.09</sum1:CuotaRepercutida></sum1:DetalleDesglose></sum1:Desglose><sum1:ImporteTotal>1.00</sum1:ImporteTotal><sum1:EncadenamientoRegistroAnterior><sum1:IDEmisorFacturaRegistroAnterior><sum1:NIF>00000006Y</sum1:NIF></sum1:IDEmisorFacturaRegistroAnterior><sum1:NumSerieFacturaRegistroAnterior>84.1.1.2</sum1:NumSerieFacturaRegistroAnterior><sum1:FechaExpedicionFacturaRegistroAnterior>27-12-2023</sum1:FechaExpedicionFacturaRegistroAnterior><sum1:HuellaRegistroAnterior>1d0613dddebed13da7a9ec956015556381cfa8663534e4876942ecb305b23fc8</sum1:HuellaRegistroAnterior></sum1:EncadenamientoRegistroAnterior><sum1:SistemaInformatico><sum1:NombreRazon>SOFTWARE GARANTIZADO VERI*FACTU PRUEBA</sum1:NombreRazon><sum1:NIF>B00000000</sum1:NIF><sum1:IdSistemaInformatico>VERIFACTU0000PRUEBA</sum1:IdSistemaInformatico><sum1:Version>1.0.03</sum1:Version><sum1:NumeroInstalacion>00000006Y NCentro:84 NTPV:1</sum1:NumeroInstalacion><sum1:TipoUsoPosibleSoloVerifactu>S</sum1:TipoUsoPosibleSoloVerifactu><sum1:TipoUsoPosibleOtros>N</sum1:TipoUsoPosibleOtros><sum1:TipoUsoPosibleMultiOT>N</sum1:TipoUsoPosibleMultiOT></sum1:SistemaInformatico><sum1:FechaGenRegistro>27/12/2023</sum1:FechaGenRegistro><sum1:HoraGenRegistro>09:49:16</sum1:HoraGenRegistro><sum1:HusoHorarioGenRegistro>02</sum1:HusoHorarioGenRegistro></sum:RegistroFacturacion><sum:DatosControl>
<sum1:Huella>87babbc7e13de14375fe826fb794b0cee52fb2c816734e55943d9d3d3f04897b</sum1:Huella>
<sum1:TipoHash>01</sum1:TipoHash>
</sum:DatosControl>
</sum:RegistroAltaFacturas>
</sum:AltaFactuSistemaFacturacion>
Pues a mi por ejemplo la Huella no me cuadra con la obtenida con varias herramientas online.
Tampoco entiendo (no estoy muy puesto en el tema) motivo por el cual añades las etiquetas sum1 y esto que comentas de meter el soap
Si que rogaría y teniendo en cuenta que puede haber gente muy puesta y otra menos puesta como puede ser mi caso hacer los textos mas entendibles a los que no estamos tan puestos y tenemos el problemón encima. Espero que nadie se ofenda por lo que digo, lo hago con la mejor intención del mundo.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.
Responder Con Cita
  #4  
Antiguo 03-01-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 872
Poder: 3
ermendalenda Va por buen camino
Cita:
Empezado por ramherfer Ver Mensaje
Pues a mi por ejemplo la Huella no me cuadra con la obtenida con varias herramientas online.
Tampoco entiendo (no estoy muy puesto en el tema) motivo por el cual añades las etiquetas sum1 y esto que comentas de meter el soap
Si que rogaría y teniendo en cuenta que puede haber gente muy puesta y otra menos puesta como puede ser mi caso hacer los textos mas entendibles a los que no estamos tan puestos y tenemos el problemón encima. Espero que nadie se ofenda por lo que digo, lo hago con la mejor intención del mundo.

Si, si, la huella no es esa, es que he cambiado el contenido pero no la huella, por no dejar datos reales.

las etiquetas sum y sum1 son prefijos que se refieren a un enlace, esos prefijos puedes decidir tú como se llaman pero tienen que estar igual en los sitios a los que hacen la mis ma referencia.

El soap:
cada fichero verifcatu se refiere a un alta o anulacion, pero para el envio, tienes que meter (*n) archivos en un solo fichero con los nodos del soap.

*n=numero de archivos verifactu, este numero está condicionado por las respuestas que te de la aeat en cada envio, te pueden decir cuantos (n) tienes que mandar o cuanto tiempo tienes que esperar para el siguiente envio (Maximo 1000 registros o archivos verifactu).
Espero que te aclare un poco, sé que es un poco lioso.
Responder Con Cita
  #5  
Antiguo 03-01-2024
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Yo me voy algo antes. ¿Alguien me puede aclarar de qué va el rollo de la huella y cómo se genera?


Gracias y un saludo.
__________________
Be water my friend.
Responder Con Cita
  #6  
Antiguo 03-01-2024
antoine0 antoine0 is offline
Miembro
 
Registrado: oct 2021
Posts: 144
Poder: 3
antoine0 Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
este primer intento es siguiendo un poco el ejemplo del pdf, pero sin meter el soap, a ver si encontrais los fallos please.
Código:
...Factura Simplificada</sum1:DescripcionOperacion><sum1:NombreRazon>EMPRESA</sum1:NombreRazon>
<sum1:NIF>00000006Y</sum1:NIF>
<sum1:NombreRazonEmisor>EMPRESA</sum1:NombreRazonEmisor><sum1:TipoRegistroSIF>S0</sum1:TipoRegistroSIF>
<sum1:TipoFactura>F2</sum1:TipoFactura><sum1:DescripcionOperacion>Factura Simplificada</sum1:DescripcionOperacion><sum1:Desglose> ...
Toda la parte que está en rojo (NombreRazon hasta NIF) está repetida del principio y no está bien formado.
Luego la parte en azul, etiquetas NombreRazonEmisor y TipoRegistroSIF deben venir antes de TipoFactura, y las etiquetas TipoFactura y DescripcionOperacion repetidas después deben quitarse.

Cita:
Código:
... </sum1:EncadenamientoRegistroAnterior><sum1:SistemaInformatico>
<sum1:NombreRazon>SOFTWARE GARANTIZADO VERI*FACTU PRUEBA</sum1:NombreRazon>
<sum1:NIF>B00000000</sum1:NIF>
<sum1:IdSistemaInformatico>VERIFACTU0000PRUEBA</sum1:IdSistemaInformatico>
<sum1:Version>1.0.03</sum1:Version>
<sum1:NumeroInstalacion>00000006Y NCentro:84 NTPV:1</sum1:NumeroInstalacion>
<sum1:TipoUsoPosibleSoloVerifactu>S</sum1:TipoUsoPosibleSoloVerifactu>
<sum1:TipoUsoPosibleOtros>N</sum1:TipoUsoPosibleOtros>
<sum1:TipoUsoPosibleMultiOT>N</sum1:TipoUsoPosibleMultiOT></sum1:SistemaInformatico> ...
(He añadido CR para leerlo mejor en pantalla)
IdSistemaInformatico está limitado a dos caracteres, tu ejemplo tiene 19...
Además, falta justo antes un elemento NombreSistemaInformatico que no es opcional.
Si se reemplaza por
Código:
    <sum1:NombreSistemaInformatico>VERIFACTU0000PRUEBA</sum1:NombreSistemaInformatico>
    <sum1:IdSistemaInformatico></sum1:IdSistemaInformatico>
me da OK

Cita:
Código:
... <sum1:FechaGenRegistro>27/12/2023</sum1:FechaGenRegistro><sum1:HoraGenRegistro>09:49:16</sum1:HoraGenRegistro><sum1:HusoHorarioGenRegistro>02</sum1:HusoHorarioGenRegistro></sum:RegistroFacturacion> ...
La fecha debe ir con guiones, las barras no validan el XSD
Responder Con Cita
  #7  
Antiguo 03-01-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 872
Poder: 3
ermendalenda Va por buen camino
Cita:
Empezado por antoine0 Ver Mensaje
Toda la parte que está en rojo (NombreRazon hasta NIF) está repetida del principio y no está bien formado.
Luego la parte en azul, etiquetas NombreRazonEmisor y TipoRegistroSIF deben venir antes de TipoFactura, y las etiquetas TipoFactura y DescripcionOperacion repetidas después deben quitarse.


(He añadido CR para leerlo mejor en pantalla)
IdSistemaInformatico está limitado a dos caracteres, tu ejemplo tiene 19...
Además, falta justo antes un elemento NombreSistemaInformatico que no es opcional.
Si se reemplaza por
Código:
    <sum1:NombreSistemaInformatico>VERIFACTU0000PRUEBA</sum1:NombreSistemaInformatico>
    <sum1:IdSistemaInformatico></sum1:IdSistemaInformatico>
me da OK


La fecha debe ir con guiones, las barras no validan el XSD
Gracias
Repaso todo
Al cambiarlo de la 0.1 a la 1.0 l he liado
Responder Con Cita
  #8  
Antiguo 03-01-2024
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
nincillo Va por buen camino
Cita:
Empezado por ramherfer Ver Mensaje
Hola buenas noches.
Alguno a probado a construir el xml desde el xsd con el XML Data Binding de Delphi
Yo no consigo pasar de rellenar la cabecera, el resto de datos como si no existieran.
Código:
 IFact:IXMLSistemaFacturacionAltaFact;
begin
  IFact := NewSistemaFacturacion;
  IFact.Cabecera.IDVersion := '1.0';
  IFact.Cabecera.ObligadoEmision.NombreRazon := 'Nombre o razón social';
  IFact.Cabecera.ObligadoEmision.NIF := '12345678N';
  IFact.Cabecera.TipoRegistroAEAT := 'T0';
//  iFact.RegistroAltaFacturas.PeriodoEjercicio := '4T';
  {...}
//  memo1.Lines.Text:=alta.XML;
  IFact.OwnerDocument.SaveToFile('fact1.xml');
No se si estoy haciendo algo mal o es una cagada integra e integral en el xsd de la AEAT.
Si alguien me puede decir algo al respecto, se lo agradecería.
A mi pasó en su momento. Si lo intento hacer utilizado el xsd me pasa lo que a tí, y si lo intento hacer utilizando el xsdl, entonces tengo acceso a los registros de facturación, pero no a la cabecera.

Puedes retroceder un poco para atrás y verás lo que fui posteando.

Yo creo que si que han debido de meter la pata en algo, pero como soy muy novato en estos temas, tampoco me atrevo ni se donde poder hacer consultas más técnicas.
Responder Con Cita
  #9  
Antiguo 06-02-2024
pararegistrarme pararegistrarme is offline
Registrado
 
Registrado: ago 2014
Posts: 1
Poder: 0
pararegistrarme Va por buen camino
Códigos QR en impresoras ESC/POS

Hola a todos.


Me llamo Jose y voy a participar en este foro a partir de ahora aportando lo que buenamente pueda.
He estado leyendo todos los mensajes que lleváis escritos durante estos meses y algunos de ellos son bastante esclarecedores.
Parece que estamos un poco parados a la espera de la famosa Orden Ministerial para dar el pistoletazo de salida.
Respecto a la forma de sacar el XML para poder calcular el HASH esperemos que la OM lo aclare ya que, como bien habéis dicho, el XML ha de ser exacto al que coja la aeat.


He visto que tenéis preparadas las facturas con los códigos QR. Mi pregunta es si alguien ha desarrollado en Delphi la impresión de códigos QR para impresoras con lenguaje ESC/POS. Me sería de gran ayuda.


Gracias por vuestra ayuda, vuestros aportes e ideas.


Lo importante es que, entre todos, podamos ahorrarnos tiempo y resolvernos dudas/problemas que de otra forma sería caótico.


Un saludo
Responder Con Cita
  #10  
Antiguo 01-03-2024
Delphier Delphier is offline
Miembro
 
Registrado: feb 2024
Posts: 14
Poder: 0
Delphier Va por buen camino
Presentación y Planteamiento

Antes de nada , saludar al foro y dar las gracias a todos los que han escrito, me han ayudado mucho a decidir como empezar , con la pereza que me daba.

Como soy novato en el foro , es mi primer post y os cuento como lo voy a plantear Inicialmente, modo básico y esquemático , por si le sirve a alguien o por si alguien más experto me recomienda que abandone las cervecitas urgentemente

Es verdad que cuando me ponga seguro pueden cambiar cosas , es solo un planteamiento incial para empezar a trabajar, no entro en los requisitos de huella,firma etc....

En principio la idea es no tocar las tablas actuales de facturas ,etc. que ya existen en mi sistema.

1.- Voy a crear una tabla nueva para guardar los registros verifactu de cada factura

básicamente tendrá:

campo que identifica la factura en el fichero de facturas
campo para guardar el xml "RegistroFacturacion"
campo para guardar el número de envío , si 0 = Pendiente de enviar.

seguro que al final tenga que añadir alguno más....


2.- Voy a crear una tabla nueva para guardar los registros de los envíos verifactu

campo con un código interno de envío
campo para guardar el xml AltaFactuSistemaFacturacion enviado.
campo para guardar la respuesta de la aeat.

seguro que al final tenga que añadir alguno más....


Cada factura que se genere usare Fact.RegistroFacturacion.ObjectToSOAP para obtener el xml y guardarlo en la tabla de los registros verifactu.

Partiendo del código de Neftali , aqui va un ejemplo de como obtener el xml con ObjectToSOAP , solo hay que meter en el Form un XMLDocument1, TOPToSoapDomConvert

Código Delphi [-]
procedure TForm4.Button7Click(Sender: TObject);
var
  ARootNode, ElemNode, NewNode: IXMLNode;
  RefId,Swdsl : String;
begin
  XMLDocument1.Active := True;

  XMLDocument1.Version:='1.0';
  XMLDocument1.Encoding:='utf-8';

  with XMLDOcument1 do
  begin
    ARootNode := CreateNode('RegistroFacturacion');
  end;


  // Factura ejemplo
  var fact:FacturasEmitidasType;
  fact := FacturasEmitidasType.Create;
  fact.RegistroFacturacion := RegistroFacturacionType.Create;
  fact.RegistroFacturacion.IDFactura := IDFacturaExpedidaType.Create;
  fact.RegistroFacturacion.IDFactura.NumSerieFacturaEmisor := '23/123456';
  fact.RegistroFacturacion.IDFactura.FechaExpedicionFacturaEmisor := '31/12/23';
  fact.RegistroFacturacion.IDFactura.IDEmisorFactura := IDEmisorFactura.Create;
  fact.RegistroFacturacion.IDFactura.IDEmisorFactura.NIF := '3333333';
  fact.RegistroFacturacion.DescripcionOperacion := 'venta de mercaderías';

    // Resto de datos de la factura....

  Swdsl := "no puedo poner enlaces   xxxxxenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SistemaFacturacion.wsdl";


  newNode := Fact.RegistroFacturacion.ObjectToSOAP( ARootNode, ARootNode, OPToSoapDomConvert1, 'RegistroFacturacionType', Swdsl, 'T',[], RefId  ); 

  XMLDocument1.DocumentElement := ARootNode;
  Memo1.Lines.Clear;
  Memo1.Lines.Add(XMLDocument1.XML.Text);
  XMLDocument1.Active := False;


  fact.DisposeOf;
  fact.RegistroFacturacion.DisposeOf;

end;


Luego al generar los envíos , aprovechar el ejemplo de Neftali para ir recogiendo los RegistroFacturacion guardados con SOAPToObject

Código Delphi [-]
procedure TForm4.Button5Click(Sender: TObject);
var
  arrayDetalles : array of DetalleType;
  RegistroAltaFacturas: Array_Of_FacturasEmitidasType;
  x : Integer;
begin
  var alta:AltaFactuSistemaFacturacion := AltaFactuSistemaFacturacion.Create;

  // Cabecera
  var cab := Cabecera.Create;
  cab.IDVersion := VersionType._1_0;

  cab.ObligadoEmision := PersonaFisicaJuridicaESType.Create;
  cab.ObligadoEmision.NombreRazon := 'Empresa pruebas';
  cab.ObligadoEmision.NIF := '11111111H';
  cab.TipoRegistroAEAT := TipoRegistroAEATType.T0;
  cab.FechaFinVeriFactu := '01/01/2026';
  alta.Cabecera := cab;


  for x := 0 to 1 do
  Begin


    // Factura
    var fact:FacturasEmitidasType;
    fact := FacturasEmitidasType.Create;


    fact.RegistroFacturacion := RegistroFacturacionType.Create;
    fact.RegistroFacturacion.SOAPToObject()  // Codigo pendiente de poner y probar , solo es para mostrar el planteamiento , pero es el contrario de ObjectToSOAP

 
   // Lista de facturas del envío
   SetLength(RegistroAltaFacturas, x+1);

    RegistroAltaFacturas[x] := fact;

  end;


  // Factura 1
  alta.RegistroAltaFacturas := RegistroAltaFacturas;




  // envío
  try
    var res:RespuestaAltaFactuSistemaFacturacion := RespuestaAltaFactuSistemaFacturacion.Create;
    res := GetsfSOAP(False, '', HTTPRIO1).AltaFactuSistemaFacturacion(alta);

    ShowMessage('Se ha realizado el envío; ' + sLineBreak +
                '   CSV: ' + res.CSV  + sLineBreak +
                '   TimeStamp: ' + res.DatosPresentacion.TimestampPresentacion
                );
  except
    on E:Exception do begin
      ShowMessage(Format('Error al realizar el envío; (%s)-%s',[E.ClassName, E.Message]));
    end;
  end;
end;

Un Saludo a todos y no me metáis mucha caña

Última edición por Neftali [Germán.Estévez] fecha: 04-03-2024 a las 08:31:18.
Responder Con Cita
  #11  
Antiguo 04-03-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Delphier Ver Mensaje
Antes de nada , saludar al foro y dar las gracias a todos los que han escrito, me han ayudado mucho a decidir como empezar , con la pereza que me daba.

Como soy novato en el foro , es mi primer post y os cuento como lo voy a plantear Inicialmente, modo básico y esquemático , por si le sirve a alguien o por si alguien más experto me recomienda que abandone las cervecitas urgentemente

Hola Delphier, gracias por participar en el foro.
Ya que eres nuevo, te doy la bienvenida. Recordarte que revises La guía de estilo de los foros.
He modificado tu mensaje para añadir TAGs a los códigos dentro del mensaje.

Gracias de nuevo por los códigos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #12  
Antiguo 04-03-2024
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 51
Poder: 11
ramherfer Va por buen camino
Cita:
Empezado por Delphier Ver Mensaje
Antes de nada , saludar al foro y dar las gracias a todos los que han escrito, me han ayudado mucho a decidir como empezar , con la pereza que me daba.

Como soy novato en el foro , es mi primer post y os cuento como lo voy a plantear Inicialmente, modo básico y esquemático , por si le sirve a alguien o por si alguien más experto me recomienda que abandone las cervecitas urgentemente

Es verdad que cuando me ponga seguro pueden cambiar cosas , es solo un planteamiento incial para empezar a trabajar, no entro en los requisitos de huella,firma etc....

En principio la idea es no tocar las tablas actuales de facturas ,etc. que ya existen en mi sistema.

1.- Voy a crear una tabla nueva para guardar los registros verifactu de cada factura

básicamente tendrá:

campo que identifica la factura en el fichero de facturas
campo para guardar el xml "RegistroFacturacion"
campo para guardar el número de envío , si 0 = Pendiente de enviar.

seguro que al final tenga que añadir alguno más....


2.- Voy a crear una tabla nueva para guardar los registros de los envíos verifactu

campo con un código interno de envío
campo para guardar el xml AltaFactuSistemaFacturacion enviado.
campo para guardar la respuesta de la aeat.

seguro que al final tenga que añadir alguno más....


Cada factura que se genere usare Fact.RegistroFacturacion.ObjectToSOAP para obtener el xml y guardarlo en la tabla de los registros verifactu.

Partiendo del código de Neftali , aqui va un ejemplo de como obtener el xml con ObjectToSOAP , solo hay que meter en el Form un XMLDocument1, TOPToSoapDomConvert

Código Delphi [-]
procedure TForm4.Button7Click(Sender: TObject);
var
  ARootNode, ElemNode, NewNode: IXMLNode;
  RefId,Swdsl : String;
begin
  XMLDocument1.Active := True;

  XMLDocument1.Version:='1.0';
  XMLDocument1.Encoding:='utf-8';

  with XMLDOcument1 do
  begin
    ARootNode := CreateNode('RegistroFacturacion');
  end;


  // Factura ejemplo
  var fact:FacturasEmitidasType;
  fact := FacturasEmitidasType.Create;
  fact.RegistroFacturacion := RegistroFacturacionType.Create;
  fact.RegistroFacturacion.IDFactura := IDFacturaExpedidaType.Create;
  fact.RegistroFacturacion.IDFactura.NumSerieFacturaEmisor := '23/123456';
  fact.RegistroFacturacion.IDFactura.FechaExpedicionFacturaEmisor := '31/12/23';
  fact.RegistroFacturacion.IDFactura.IDEmisorFactura := IDEmisorFactura.Create;
  fact.RegistroFacturacion.IDFactura.IDEmisorFactura.NIF := '3333333';
  fact.RegistroFacturacion.DescripcionOperacion := 'venta de mercaderías';

    // Resto de datos de la factura....

  Swdsl := "no puedo poner enlaces   xxxxxenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SistemaFacturacion.wsdl";


  newNode := Fact.RegistroFacturacion.ObjectToSOAP( ARootNode, ARootNode, OPToSoapDomConvert1, 'RegistroFacturacionType', Swdsl, 'T',[], RefId  ); 

  XMLDocument1.DocumentElement := ARootNode;
  Memo1.Lines.Clear;
  Memo1.Lines.Add(XMLDocument1.XML.Text);
  XMLDocument1.Active := False;


  fact.DisposeOf;
  fact.RegistroFacturacion.DisposeOf;

end;


Luego al generar los envíos , aprovechar el ejemplo de Neftali para ir recogiendo los RegistroFacturacion guardados con SOAPToObject

Código Delphi [-]
procedure TForm4.Button5Click(Sender: TObject);
var
  arrayDetalles : array of DetalleType;
  RegistroAltaFacturas: Array_Of_FacturasEmitidasType;
  x : Integer;
begin
  var alta:AltaFactuSistemaFacturacion := AltaFactuSistemaFacturacion.Create;

  // Cabecera
  var cab := Cabecera.Create;
  cab.IDVersion := VersionType._1_0;

  cab.ObligadoEmision := PersonaFisicaJuridicaESType.Create;
  cab.ObligadoEmision.NombreRazon := 'Empresa pruebas';
  cab.ObligadoEmision.NIF := '11111111H';
  cab.TipoRegistroAEAT := TipoRegistroAEATType.T0;
  cab.FechaFinVeriFactu := '01/01/2026';
  alta.Cabecera := cab;


  for x := 0 to 1 do
  Begin


    // Factura
    var fact:FacturasEmitidasType;
    fact := FacturasEmitidasType.Create;


    fact.RegistroFacturacion := RegistroFacturacionType.Create;
    fact.RegistroFacturacion.SOAPToObject()  // Codigo pendiente de poner y probar , solo es para mostrar el planteamiento , pero es el contrario de ObjectToSOAP

 
   // Lista de facturas del envío
   SetLength(RegistroAltaFacturas, x+1);

    RegistroAltaFacturas[x] := fact;

  end;


  // Factura 1
  alta.RegistroAltaFacturas := RegistroAltaFacturas;




  // envío
  try
    var res:RespuestaAltaFactuSistemaFacturacion := RespuestaAltaFactuSistemaFacturacion.Create;
    res := GetsfSOAP(False, '', HTTPRIO1).AltaFactuSistemaFacturacion(alta);

    ShowMessage('Se ha realizado el envío; ' + sLineBreak +
                '   CSV: ' + res.CSV  + sLineBreak +
                '   TimeStamp: ' + res.DatosPresentacion.TimestampPresentacion
                );
  except
    on E:Exception do begin
      ShowMessage(Format('Error al realizar el envío; (%s)-%s',[E.ClassName, E.Message]));
    end;
  end;
end;

Un Saludo a todos y no me metáis mucha caña
Pues he probado la primera parte y me genera el fichero xml, pero con unos NS1, NS2, NSn y type que no se si será correcto guardar cada registro de facturación con esta codificación:
Código:
<RegistroFacturacion xmlns:NS1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SistemaFacturacion.wsdl" xmlns:NS2="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd" xmlns:NS3="http://www.w3.org/2001/XMLSchema" xmlns:NS4="http://schemas.xmlsoap.org/soap/encoding/" xmlns:NS5="http://www.w3.org/2001/XMLSchema-instance">
<NS1:RegistroFacturacionType id="1" type="NS2:RegistroFacturacionType">
<IDFactura href="#2"/>
<NombreRazonEmisor type="NS3:string"/>
<TipoRegistroSIF type="NS2:TipoRegistroSIFType">S0</TipoRegistroSIF>
<TipoFactura type="NS2:ClaveTipoFacturaType">F1</TipoFactura>
<DescripcionOperacion type="NS3:string">venta de mercaderías</DescripcionOperacion>
<Desglose type="NS4:Array" NS4:arrayType="NS2:DetalleType[0]"/>
<ImporteTotal type="NS3:string"/>
<EncadenamientoRegistroAnterior NS5:nil="true"/>
<SistemaInformatico NS5:nil="true"/>
<FechaGenRegistro NS5:type="NS3:string"/>
<HoraGenRegistro NS5:type="NS3:string"/>
<HusoHorarioGenRegistro NS5:type="NS2:HusoHorarioGenRegistroType">01</HusoHorarioGenRegistro>
</NS1:RegistroFacturacionType>
<NS2:IDFactura id="2" type="NS2:IDFacturaExpedidaType">
<IDEmisorFactura href="#3"/>
<NumSerieFacturaEmisor type="NS3:string">23/123456</NumSerieFacturaEmisor>
<FechaExpedicionFacturaEmisor type="NS3:string">31/12/23</FechaExpedicionFacturaEmisor>
</NS2:IDFactura>
<NS2:IDEmisorFactura id="3" type="NS2:IDEmisorFactura">
<NIF type="NS3:string">3333333</NIF>
</NS2:IDEmisorFactura>
</RegistroFacturacion>
En principio me parece bueno y funciona, correcto ya no se si decir si sería correcto. Hay mucha gente más capacitada que yo para calificarlo si sería correcto o no.

Sería muy interesante probar la segunda parte (envío) y que intentaré probar durante la semana. El planteamiento en mi humilde opinión parece bueno de narices.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.
Responder Con Cita
Respuesta



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
Hijo de Informáticos gluglu Humor 3 13-03-2007 11:05:35
Adictos informaticos ... Trigger Humor 2 11-10-2004 12:18:32
Nosotros los Informáticos Trigger Humor 1 10-10-2004 14:58:09
Patrón de los Informáticos. obiwuan Varios 20 10-09-2003 14:44:54
Chistes Informaticos jhonny Humor 2 11-08-2003 21:59:09


La franja horaria es GMT +2. Ahora son las 21:14:10.


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