Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Colaboración Paypal con ClubDelphi

Tema Cerrado
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-12-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
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 nincillo Ver Mensaje
Y el otro problema que tengo es con el elemento CABECERA, que como ya comenté anteriormente en éste hilo, no consigo acceder a él para meter los datos correspondientes. Sólo puedo meter el array con las facturas a enviar, pero seguro que al hacer el envío me lo darán para atrás por no tener la cabecera.
¿Será que se les ha olvidado definirlo?

Me respondo a mi mismo.
He descargado el XSD desde aquí.
Lo he subido al FTP junto al resto de la documentación.

Importándolo en un proyecto de Delphi (XML Data Binding) y con un poco de código:

Código Delphi [-]
procedure TForm3.Button2Click(Sender: TObject);
var
  fAlta:IXMLSistemaFacturacionAltaFact;
begin

  fAlta := NewFacturaAlta;
  fAlta.Cabecera.IDVersion := '1.0';
  fAlta.Cabecera.ObligadoEmision.NombreRazon := 'EMPRESA PRUEBAS';
  fAlta.Cabecera.ObligadoEmision.NIF := '11111111H';
  fAlta.Cabecera.TipoRegistroAEAT := 'S0';

  ...

  var sXML:string;
  fAlta.OwnerDocument.SaveToXML(sXML);
  Memo1.Lines.Text := sXML;

end;

Se genera la parte de la cabecera sin problemas...

Código PHP:
<?xml version="1.0"?>
<FacturaAlta xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
    <Cabecera>
        <IDVersion>1.0</IDVersion>
        <ObligadoEmision>
            <NombreRazon>EMPRESA PRUEBAS</NombreRazon>
            <NIF>11111111H</NIF>
        </ObligadoEmision>
        <TipoRegistroAEAT>S0</TipoRegistroAEAT>
    </Cabecera>
</FacturaAlta>
Os adjunto el fichero generado.
Archivos Adjuntos
Tipo de Archivo: zip SuministroInformacionV1_0.zip (22,2 KB, 36 visitas)
__________________
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.
  #2  
Antiguo 28-12-2023
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 190
Poder: 10
nincillo Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Me respondo a mi mismo.
He descargado el XSD desde aquí.
Lo he subido al FTP junto al resto de la documentación.

Importándolo en un proyecto de Delphi (XML Data Binding) y con un poco de código:

Código Delphi [-]
procedure TForm3.Button2Click(Sender: TObject);
var
  fAlta:IXMLSistemaFacturacionAltaFact;
begin

  fAlta := NewFacturaAlta;
  fAlta.Cabecera.IDVersion := '1.0';
  fAlta.Cabecera.ObligadoEmision.NombreRazon := 'EMPRESA PRUEBAS';
  fAlta.Cabecera.ObligadoEmision.NIF := '11111111H';
  fAlta.Cabecera.TipoRegistroAEAT := 'S0';

  ...

  var sXML:string;
  fAlta.OwnerDocument.SaveToXML(sXML);
  Memo1.Lines.Text := sXML;

end;

Se genera la parte de la cabecera sin problemas...

Código PHP:
<?xml version="1.0"?>
<FacturaAlta xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
    <Cabecera>
        <IDVersion>1.0</IDVersion>
        <ObligadoEmision>
            <NombreRazon>EMPRESA PRUEBAS</NombreRazon>
            <NIF>11111111H</NIF>
        </ObligadoEmision>
        <TipoRegistroAEAT>S0</TipoRegistroAEAT>
    </Cabecera>
</FacturaAlta>
Os adjunto el fichero generado.
Ante todo, muchas gracias por tu paciencia.
Esto a base de pegarme cabezazos todo el fin de semana, ya lo había conseguido encontrar, pero entonces me atascaba en el momento de querer hacer el envío, ya que en el método GetsfSOAP requiere que sea un objeto de tipo Array_Of_RespuestaExpedidaType y no se como "calzarle" el cabecera.

Código:
try
    SetLength(arrayFacturas, 1);
    arrayFacturas[0] := regFactura;
    result := GetsfSOAP(true, '', HTTPRIO1).AltaFactuSistemaFacturacion(ArrayFacturas);
  #3  
Antiguo 28-12-2023
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.214
Poder: 24
newtron Va camino a la fama
Germán.


Sigo tus instrucciones del XML Data Binding pero solo me genera dos archivos, uno .pas y otro .xdb. ¿El fichero .xsd cómo se genera?


Gracias y un saludo.
__________________
Be water my friend.
  #4  
Antiguo 28-12-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
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 newtron Ver Mensaje
Sigo tus instrucciones del XML Data Binding pero solo me genera dos archivos, uno .pas y otro .xdb. ¿El fichero .xsd cómo se genera?
El XSD es el fichero de esquema. Te lo deben dar.
Se descarga desde aquí y lo he copiado aquí en el FTP.
Archivos Adjuntos
Tipo de Archivo: zip SuministroInformacion.XSD.zip (6,3 KB, 14 visitas)
__________________
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.

Última edición por Neftali [Germán.Estévez] fecha: 28-12-2023 a las 17:56:26.
  #5  
Antiguo 28-12-2023
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 190
Poder: 10
nincillo Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
Germán.


Sigo tus instrucciones del XML Data Binding pero solo me genera dos archivos, uno .pas y otro .xdb. ¿El fichero .xsd cómo se genera?


Gracias y un saludo.
El .xsd, que yo sepa, como mucho lo tendrás que guardar una vez abierto en el navegador. ¿Te refieres a eso?
  #6  
Antiguo 28-12-2023
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.214
Poder: 24
newtron Va camino a la fama
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
El XSD es el fichero de esquema. Te lo deben dar.
Se descarga desde aquí y lo he copiado aquí en el FTP.

Gracias Germán.



Cita:
Empezado por nincillo Ver Mensaje
El .xsd, que yo sepa, como mucho lo tendrás que guardar una vez abierto en el navegador. ¿Te refieres a eso?

Efectivamente. Entiendo que el fichero .xsd solo se usa para generar el .pas


Seguimos probando.


Gracias a los dos.
__________________
Be water my friend.
  #7  
Antiguo 28-12-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
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
El problema con el que me he topado yo es que falta la URL del servicio.
Cuando se importa el WSDL, en la función principal hay estos datos:
Código Delphi [-]

function GetsfSOAP(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): sfSOAP;
const
  defWSDL = 'https://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl';

  defURL  = 'xxxxxxxxxx';    <==================================

  defSvc  = 'sfService';
  defPrt  = 'SistemaFacturacion';
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = '') then
  begin

¿Se me escapa algo o nos quedamos aquí parados?
__________________
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.

Última edición por Neftali [Germán.Estévez] fecha: 28-12-2023 a las 18:51:19.
  #8  
Antiguo 28-12-2023
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 190
Poder: 10
nincillo Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
El problema con el que me he topado yo es que falta la URL del servicio.
Cuando se importa el WSDL, en la función principal hay estos datos:
Código Delphi [-]

function GetsfSOAP(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): sfSOAP;
const
  defWSDL = 'https://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl';

  defURL  = 'xxxxxxxxxx';    <==================================

  defSvc  = 'sfService';
  defPrt  = 'SistemaFacturacion';
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = '') then
  begin

¿Se me escapa algo o nos quedamos aquí parados?
En lo que a pruebas "reales" de envío se trata, me temo que sí.

Yo lo que estoy es generando el xml en el evento HTTPRIO1BeforeExecute para ver lo que estoy enviando y ahi es donde me temo que falta el famoso <cabecera>
Código:
procedure TForm2.HTTPRIO1BeforeExecute(const MethodName: string;
  SOAPRequest: TStream);
var
  sTmp                                  : TStringList;
  nFile : string;
begin

  sTmp:=TStringList.Create;
  SOAPRequest.Position := 0;
  sTmp.LoadFromStream(SOAPRequest);
  nFile := ExtractFilePath(Application.ExeName) + 'VeriFactu_PeticionEnviada.xml';
  sTmp.SaveToFile(nFile);
  WebBrowser1.Navigate(nFile);
  //sTmp.SaveToStream(SOAPRequest);
  // blaa blaa...
end;
Código:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<AltaFactuSistemaFacturacion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd">
<RegistroAltaFacturas>
<RegistroFacturacion>
...
</RegistroFacturacion>
<DatosControl>
<Huella xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">HUella</Huella>
<TipoHash xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">01</TipoHash>
<Incidencia xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">N</Incidencia>
</DatosControl>
</RegistroAltaFacturas>
</AltaFactuSistemaFacturacion>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
  #9  
Antiguo 16-01-2024
_Io _Io is offline
Miembro
 
Registrado: ene 2024
Posts: 114
Poder: 3
_Io Va por buen camino
Buenos días.

Perdonarme, soy bastante nuevo en esto de programación utilizando xsd,wsdl...
Estoy un poco o un mucho perdido.
He llegado hasta aquí, para generar el xml de una factura, pero no sé de dónde sale o cómo hacer la función NewFacturaAlta
Código Delphi [-]
procedure TForm3.Button2Click(Sender: TObject);
var
  fAlta:IXMLSistemaFacturacionAltaFact;
begin

  fAlta := NewFacturaAlta;
  fAlta.Cabecera.IDVersion := '1.0';
  fAlta.Cabecera.ObligadoEmision.NombreRazon := 'EMPRESA PRUEBAS';
  fAlta.Cabecera.ObligadoEmision.NIF := '11111111H';
  fAlta.Cabecera.TipoRegistroAEAT := 'S0';

  ...

  var sXML:string;
  fAlta.OwnerDocument.SaveToXML(sXML);
  Memo1.Lines.Text := sXML;

end;

Muchas Gracias.
  #10  
Antiguo 16-01-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
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 _Io Ver Mensaje
Perdonarme, soy bastante nuevo en esto de programación utilizando xsd,wsdl...
Estoy un poco o un mucho perdido.
He llegado hasta aquí, para generar el xml de una factura, pero no sé de dónde sale o cómo hacer la función NewFacturaAlta

Aquí hemos puesto algo de código.
Una vez importado el WSDL. A ver si te sirve...
__________________
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.
  #11  
Antiguo 16-01-2024
_Io _Io is offline
Miembro
 
Registrado: ene 2024
Posts: 114
Poder: 3
_Io Va por buen camino
Hola Neftali, buenos días.
Muchas gracias por tu rápida respuesta.

Cita:
Aquí hemos puesto algo de código.
Una vez importado el WSDL. A ver si te sirve...
Ya he visto este código y en mi poco conocimiento en el tema, creo que es para enviar la factura a hacienda, he conseguido generarlo, gracias a vosotros, claro.

Cita:
procedure TForm3.Button2Click(Sender: TObject);
var
fAlta:IXMLSistemaFacturacionAltaFact;
begin

fAlta := NewFacturaAlta;
fAlta.Cabecera.IDVersion := '1.0';
fAlta.Cabecera.ObligadoEmision.NombreRazon := 'EMPRESA PRUEBAS';
fAlta.Cabecera.ObligadoEmision.NIF := '11111111H';
fAlta.Cabecera.TipoRegistroAEAT := 'S0';

...

var sXML:string;
fAlta.OwnerDocument.SaveToXML(sXML);
Memo1.Lines.Text := sXML;

end;
Entiendo que este código que pusistes es para generar el xml de la factura y es lo que intentaba hacer, pero no sé exactamente de dónde sale NewFacturaAlta, es por eso el post.

Salu2.
  #12  
Antiguo 16-01-2024
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 190
Poder: 10
nincillo Va por buen camino
Cita:
Empezado por _Io Ver Mensaje
Hola Neftali, buenos días.
Muchas gracias por tu rápida respuesta.



Ya he visto este código y en mi poco conocimiento en el tema, creo que es para enviar la factura a hacienda, he conseguido generarlo, gracias a vosotros, claro.



Entiendo que este código que pusistes es para generar el xml de la factura y es lo que intentaba hacer, pero no sé exactamente de dónde sale NewFacturaAlta, es por eso el post.

Salu2.
Si no me confundo, el trozo de código que estás poniendo no se corresponde a como trabajar con el wsdl, sino a como trabajar si lo que hiciste fue importar el wsd.

Si estoy en lo cierto, el "problema" que yo tuve en su momento, no es el de dónde sale el NewFacturaAlta, sino que luego no super como crear/añadir el nodo correspondiente a los datos de la factura propiamente dichos, ya que no encontré como hacer el "NewRegistroFactura" por así decirlo para poder añadirle el resto de datos que no son de la cabecera.
  #13  
Antiguo 16-01-2024
_Io _Io is offline
Miembro
 
Registrado: ene 2024
Posts: 114
Poder: 3
_Io Va por buen camino
Ok.

Entonces, ¿cómo estáis generando el XML de la Factura?
Con código independiente al wsdl ?

con el XML Data Binding , he pasado un xsd y me ha generado diferentes nodos

Cita:
type

{ Forward Decls }

IXMLSistemaFacturacionAltaFact = interface;
IXMLCabecera = interface;
IXMLPersonaFisicaJuridicaESType = interface;
IXMLSistemaFacturacionBajaFact = interface;
IXMLDatosPresentacionType = interface;
IXMLDatosPresentacion2Type = interface;
IXMLRegistroSf = interface;
IXMLRegistroSf_PeriodoImputacion = interface;
IXMLIDFacturaExpedidaBCType = interface;
IXMLIDFacturaExpedidaBCType_IDEmisorFactura = interface;
IXMLIDFacturaExpedidaBajaType = interface;
IXMLIDFacturaExpedidaBajaType_IDEmisorFacturaAnulada = interface;
IXMLRegistroFacturacionType = interface;
IXMLIDFacturaExpedidaType = interface;
IXMLIDFacturaExpedidaType_IDEmisorFactura = interface;
IXMLRegistroFacturacionType_FacturasRectificadas = interface;
IXMLIDFacturaARType = interface;
IXMLRegistroFacturacionType_FacturasSustituidas = interface;
IXMLDesgloseRectificacionType = interface;
IXMLPersonaFisicaJuridicaType = interface;
IXMLIDOtroType = interface;
IXMLRegistroFacturacionType_Destinatarios = interface;
IXMLDesgloseType = interface;
IXMLDetalleType = interface;
IXMLEncadenamientoFacturaAnteriorType = interface;
IXMLEncadenamientoFacturaAnteriorType_IDEmisorFacturaRegistroAnterior = interface;
IXMLSistemaInformaticoType = interface;
IXMLRegistroFacturacionBajaType = interface;
IXMLObligadoGeneracionType = interface;
IXMLDatosControlType = interface;
IXMLIDFacturaConsulta2Type = interface;
IXMLPersonaFisicaJuridicaUnicaESType = interface;
IXMLRangoFechaPresentacionType = interface;
IXMLRegistroDuplicadoType = interface;
IXMLContraparteConsultaType = interface;
IXMLConsultaInformacion = interface;
IXMLCabeceraConsultaSf = interface;
IXMLObligadoEmisionConsultaType = interface;
IXMLControFlujoEnviosType = interface;

{ IXMLSistemaFacturacionAltaFact }

IXMLSistemaFacturacionAltaFact = interface(IXMLNode)
['{71D1ADBE-E067-4563-982B-E703A1790DA9}']
{ Property Accessors }
function Get_Cabecera: IXMLCabecera;
{ Methods & Properties }
property Cabecera: IXMLCabecera read Get_Cabecera;
end;

{ IXMLCabecera }

IXMLCabecera = interface(IXMLNode)
['{B83FF7BE-8748-4880-9D0D-09A3B2E296FB}']
{ Property Accessors }
function Get_IDVersion: UnicodeString;
function Get_ObligadoEmision: IXMLPersonaFisicaJuridicaESType;
function Get_TipoRegistroAEAT: UnicodeString;
function Get_FechaFinVeriFactu: UnicodeString;
procedure Set_IDVersion(const Value: UnicodeString);
procedure Set_TipoRegistroAEAT(const Value: UnicodeString);
procedure Set_FechaFinVeriFactu(const Value: UnicodeString);
{ Methods & Properties }
property IDVersion: UnicodeString read Get_IDVersion write Set_IDVersion;
property ObligadoEmision: IXMLPersonaFisicaJuridicaESType read Get_ObligadoEmision;
property TipoRegistroAEAT: UnicodeString read Get_TipoRegistroAEAT write Set_TipoRegistroAEAT;
property FechaFinVeriFactu: UnicodeString read Get_FechaFinVeriFactu write Set_FechaFinVeriFactu;
end;
Yo entiendo que con esta clase, se podría generar el XML de la factura.
Vamos a estudiar a ver hasta dónde llego.

Saludos.
Tema Cerrado


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
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:43:10.


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