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 04-10-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 863
Poder: 3
bmfranky Va por buen camino
Cita:
Empezado por rci Ver Mensaje
bmfranky estás seguro?

Alguien piensa que NO se puede modificar una factura una vez salvada? Creia que era la base de la ley anti fraude pero a lo mejor me confundo.

Por aquí venia mi duda en un post anterior que quedó sin respuesta:




MUCHAS GRACIAS !
Cita:
ALTA POR RECHAZO
· Al ta por recha zo del regi s tro de fa ctura ci ón de a lta
i ni cia l (y que, por tanto, no exis te a ún en l a AEAT).


· Es l a s ubs a na ción de da tos de un regi s tro de
fa ctura ci ón de a l ta i ni ci a l, cua ndo no s e exi ge l a
emis i ón de una fa ctura rectifica tiva (u otro
meca ni s mo contempl a do en el Regl a mento de
Fa ctura ci ón).


· <Subs a na ci on>=S
· <Recha zoPrevi o>=X · VERI*FACTU


· La cla ve úni ca del regis tro de fa ctura ci ón no
debe exi s tir previa mente en la AEAT.


· El a lta previ a del regis tro de fa ctura ción fue
recha za da .


Alta del regis tro de fa ctura ci ón con los
nuevos da to
Interpreto que seria este caso.
  #2  
Antiguo 04-10-2024
Delphier Delphier is offline
Miembro
 
Registrado: feb 2024
Posts: 42
Poder: 0
Delphier Va por buen camino
Componente derivado de HTTRIO para facilitar los envíos a verifactu.

Os lo pongo , Por si le sirve a alguien como Idea o como ayuda.


El componente Requiere Delphi 12 , me baso en enviar XML preparados previamente almacenados con un certificado también almacenado en el software.

Bàsicamente le cargamos el certificado , el password un XML y lo enviamos.



Código:
unit VerifactuHTTPRIO;

interface

uses
  System.SysUtils,
  System.Classes,
  Soap.Rio,
  Dialogs,
  Xml.XMLDoc,
  Xml.XMLIntf,
  Soap.SOAPHTTPClient,
  Soap.SOAPHTTPTrans;



type

  TBeforeExecuteEvent = procedure(const MethodName: string; SOAPRequest: TStream) of object;
  TAfterExecuteEvent  = procedure(const MethodName: string; SOAPResponse: TStream) of object;

  TVerifactuHTTPRIO = class(THTTPRIO)


  private
    { Private declarations }
    FCertificate    : TMemoryStream;
    FCertPassword   : String;
    FXMLRequest     : TStringList;
    FXMLResponse    : TStringList;
    FOnAfterExecute : TAfterExecuteEvent;
    FOnBeforeExecute: TBeforeExecuteEvent;
    function StreamToString(aStream: TStream): string;
  protected
    { Protected declarations }
    procedure DoAfterExecute(const MethodName: string; Response: TStream); override;
    procedure DoBeforeExecute(const MethodName: string; Request: TStream); override;
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
    property OnAfterExecute: TAfterExecuteEvent read FOnAfterExecute write FOnAfterExecute;
    property OnBeforeExecute: TBeforeExecuteEvent read FOnBeforeExecute write FOnBeforeExecute;
    property Certificate   : TMemoryStream  read FCertificate write FCertificate;
    property CertPassword  : String  read FCertPassword write FCertPassword;
    property XMLRequest    : TStringList  read FXMLRequest write FXMLRequest;
    property XMLResponse   : TStringList  read FXMLResponse write FXMLResponse;

  end;

procedure Register;

implementation


constructor TVerifactuHTTPRIO.Create(AOwner: TComponent);
Begin
  Inherited Create(Aowner);

  FCertificate := TMemoryStream.Create;
  FXMLRequest  := TStringList.Create;
  FXMLResponse := TStringList.Create;

End;

destructor TVerifactuHTTPRIO.Destroy;
begin

  FCertificate.Free;
  FXMLRequest.Free;
  FXMLResponse.Free;

  inherited;
end;


procedure TVerifactuHTTPRIO.DoBeforeExecute(const MethodName: string; Request: TStream);
begin

  // Si hay XMLRequest la enviamos
  if FXMLRequest.Count > 0 then
  Begin
     Request.Position := 0; // Importante
     FXMLRequest.SaveToStream(Request);
  End;


  // Cetificado
  HTTPWebNode.ClientCertificate.Stream   := Certificate;
  HTTPWebNode.ClientCertificate.Password := CertPassword;


  if Assigned(FOnBeforeExecute) then
  begin
    FOnBeforeExecute(MethodName, Request);
    Request.Position := 0;
  end;

end;

procedure TVerifactuHTTPRIO.DoAfterExecute(const MethodName: string; Response: TStream);
var RespuestaXML : String;
begin

  // Asignamos la respuesta y Maquillamos XML
  RespuestaXML := StreamToString(Response);

  RespuestaXML := Xml.XMLDoc.FormatXMLData(RespuestaXML);

  FXMLResponse.Text := RespuestaXML;


  if Assigned(FOnAfterExecute) then
  begin
    FOnAfterExecute(MethodName, Response);
    Response.Position := 0;
  end;

end;


function TVerifactuHTTPRIO.StreamToString(aStream: TStream): string;
var
  SS: TStringStream;
begin
  if aStream <> nil then
  begin
    SS := TStringStream.Create('');
    try
      SS.CopyFrom(aStream, 0);
      Result := SS.DataString;
    finally
      SS.Free;
    end;
  end else
  begin
    Result := '';
  end;
end;


procedure Register;
begin
  RegisterComponents('Componentes Verifactu', [TVerifactuHTTPRIO]);
end;

end.

Como Usar:


Código:
procedure TFormSoap.Button2Click(Sender: TObject);
var direccion_envio : String;
begin


direccion_envio := 'https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP';

// Cargar el certificado
VerifactuRIO.Certificate.LoadFromFile('MiCertificado.pfx');
VerifactuRIO.CertPassword := '1234';


// Cargar el XMl  enviar , de fichero o de texto
VerifactuRIO.XMLRequest.LoadFromFile('XML_Envio_Verifactu.xml');

// Llamada
GetsfPortTypeVerifactu(False, direccion_envio, VerifactuRIO).RegFactuSistemaFacturacion(nil);

// Aquí tenemnos la respues
VerifactuRIO.XMLResponse.Text;

end;

Un Saludo
  #3  
Antiguo 04-10-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: 19.449
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
Os lo pongo , Por si le sirve a alguien como Idea o como ayuda.
El componente Requiere Delphi 12 , me baso en enviar XML preparados previamente almacenados con un certificado también almacenado en el software.
Bàsicamente le cargamos el certificado , el password un XML y lo enviamos.

Gracias por compartirlo.
Lo subo al FTP y actualizo el mensaje#2 con códigos y demás....
__________________
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.
  #4  
Antiguo 04-10-2024
edari edari is offline
Miembro
 
Registrado: jun 2021
Posts: 334
Poder: 6
edari Va por buen camino
Buenas a todos,

Tengo una duda muy básica...


Voy a intentar la semana que viene hacer mi primera subida a pruebas y no tengo claro si en el xml la parte inicial que hace referencia al sopaenv es indiferente de si el fichero va al servidor de pruebas o al real. Esta parte concretamente:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 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">
<soapenv:Header/>
<soapenv:Body>


Tengo que sustituir ahí los www2.agenciatributaria.gob.es por prewww2.aeat.es dentro del xml según vaya a un lado u otro o el xml siempre es igual


Gracias




  #5  
Antiguo 04-10-2024
antoine0 antoine0 is offline
Miembro
 
Registrado: oct 2021
Posts: 260
Poder: 5
antoine0 Va por buen camino
Cita:
Empezado por edari Ver Mensaje
Tengo una duda muy básica... Voy a intentar la semana que viene hacer mi primera subida a pruebas y no tengo claro si en el xml la parte inicial que hace referencia al sopaenv es indiferente de si el fichero va al servidor de pruebas o al real. Esta parte concretamente:
Código:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
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">
Tengo que sustituir ahí los www2.agenciatributaria.gob.es por prewww2.aeat.es dentro del xml según vaya a un lado u otro o el xml siempre es igual
No, debes usar las URLs de producción aunque estas enviando al servidor de pruebas.
Y la verdad es un alivio que siga así.

La contrapartida vendrá más tarde: dado que no hay control de versión en las URL actuales, cuando Hacienda querrá hacer una nueva versión, deberán crear nuevas URL (posiblemente con un indicador de versión) y habilitarlas primero en entorno de test y más tarde en producción. Pero no estamos todavía allá.

Última edición por antoine0 fecha: 04-10-2024 a las 18:43:32. Razón: Inserción de CR para lectura
  #6  
Antiguo 04-10-2024
edari edari is offline
Miembro
 
Registrado: jun 2021
Posts: 334
Poder: 6
edari Va por buen camino
Cita:
Empezado por antoine0 Ver Mensaje
No, debes usar las URLs de producción aunque estas enviando al servidor de pruebas.
Y la verdad es un alivio que siga así.

La contrapartida vendrá más tarde: dado que no hay control de versión en las URL actuales, cuando Hacienda querrá hacer una nueva versión, deberán crear nuevas URL (posiblemente con un indicador de versión) y habilitarlas primero en entorno de test y más tarde en producción. Pero no estamos todavía allá.


Aclarado lo del fichero.


Y en el comando que use para subir el xml ahí sí tengo que poner, hoy por hoy, las https://prewww...no?



Gracias antoine0,
  #7  
Antiguo 05-10-2024
Avatar de Matorral
Matorral Matorral is offline
Miembro
 
Registrado: oct 2006
Ubicación: Ferrol-Galicia
Posts: 92
Poder: 20
Matorral Va por buen camino
Unhappy

Buenos días¡¡

Primero agradeceros a todos el gran esfuerzo.

a alguien más le esta pasando esto ?

Código:
Error al realizar el envío; (ESOAPHTTPException)-Service Unavailable (503) - 'https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP'
se ha caído el servidor de pruebas o solo funciona en horario laboral ?

__________________
Inieeeesssstademiviiiiidaaaaa.
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 13:47:15.


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