Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Colaboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #10  
Antiguo 01-03-2024
Delphier Delphier is offline
Miembro
 
Registrado: feb 2024
Posts: 42
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.
 



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 13:04:46.


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