Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2024
mandilium mandilium is offline
Miembro
 
Registrado: may 2023
Posts: 12
Poder: 0
mandilium Va por buen camino
Empaquetar XMLs en un GZIP

Buen día,
tengo problemas con el envió de facturas masivas para la facturación electrónica, según lo que indican se debe seguir con un código en java, pero estoy usando delphi, aparte de ello es solo para un archivo, el código que uso para la compresión y envió individual:
Código:
procedure compressGzip(factura, agzip : string);
var LInput, LOutput: TFileStream;
    LZip: TZCompressionStream;
begin
  LInput := TFileStream.Create(factura, fmOpenRead);
  LOutput := TFileStream.Create(agzip, fmCreate);
  LZip := TZCompressionStream.Create(LOutput, zcDefault, 15 + 16);
  LZip.CopyFrom(LInput, LInput.Size);
  LZip.Free;
  LInput.Free;
  LOutput.Free;
end;
no tengo ningún problema al usarlo y hacer el envió, mi pregunta va como puedo generarlo para que sean varios archivos xml no solo uno.
Agradezco sus comentarios
Responder Con Cita
  #2  
Antiguo 28-01-2024
Delphi01 Delphi01 is offline
Miembro
 
Registrado: nov 2015
Ubicación: Barcelona,España
Posts: 68
Poder: 9
Delphi01 Va por buen camino
Cita:
Empezado por mandilium Ver Mensaje
Buen día,
tengo problemas con el envió de facturas masivas para la facturación electrónica, según lo que indican se debe seguir con un código en java, pero estoy usando delphi, aparte de ello es solo para un archivo, el código que uso para la compresión y envió individual:
Código:
procedure compressGzip(factura, agzip : string);
var LInput, LOutput: TFileStream;
    LZip: TZCompressionStream;
begin
  LInput := TFileStream.Create(factura, fmOpenRead);
  LOutput := TFileStream.Create(agzip, fmCreate);
  LZip := TZCompressionStream.Create(LOutput, zcDefault, 15 + 16);
  LZip.CopyFrom(LInput, LInput.Size);
  LZip.Free;
  LInput.Free;
  LOutput.Free;
end;
no tengo ningún problema al usarlo y hacer el envió, mi pregunta va como puedo generarlo para que sean varios archivos xml no solo uno.
Agradezco sus comentarios
Para poder enviar múltiples archivos XML en lugar de solo uno, puedes modificar la función 'compressGzip' en tu código Delphi para recibir una lista de nombres de archivo en lugar de solo uno. Luego, puedes recorrer esa lista y comprimir cada archivo XML por separado. Aquí tienes un ejemplo de cómo podrías hacerlo:
Código:
uses
  System.IOUtils, System.Classes, System.Zip;

procedure CompressGzip(facturas: TArray<string>);
var
  i: Integer;
  LZip: TZipFile;
  LInput, LOutput: TFileStream;
begin
  LZip := TZipFile.Create;
  try
    LOutput := TFileStream.Create('facturas.zip', fmCreate);
    try
      LZip.Open(LOutput, zmWrite);
      
      for i := 0 to Length(facturas) - 1 do
      begin
        LInput := TFileStream.Create(facturas[i], fmOpenRead);
        try
          LZip.Add(LInput, ExtractFileName(facturas[i]));
        finally
          LInput.Free;
        end;
      end;
      
      LZip.Close;
    finally
      LOutput.Free;
    end;
  finally
    LZip.Free;
  end;
end;

//Aquí está cómo puedes llamar a esta función con tus archivos XML:

var
  facturas: TArray<string>;
begin
  SetLength(facturas, 3); // Establece la longitud del array según la cantidad de archivos XML que tengas
  
  facturas[0] := 'ruta_factura1.xml';
  facturas[1] := 'ruta_factura2.xml';
  facturas[2] := 'ruta_factura3.xml';
  
  CompressGzip(facturas);
end;
Responder Con Cita
  #3  
Antiguo 29-01-2024
mandilium mandilium is offline
Miembro
 
Registrado: may 2023
Posts: 12
Poder: 0
mandilium Va por buen camino
Muchísimas gracias, realizare las pruebas para el envió.
Responder Con Cita
  #4  
Antiguo 29-01-2024
mandilium mandilium is offline
Miembro
 
Registrado: may 2023
Posts: 12
Poder: 0
mandilium Va por buen camino
Favorablemente el código me ayudo bastante, pero al realizar el envió mediante el servicio soap al servicio de impuestos nacionales me genera el siguiente error:
Código:
<mensajesList>
<codigo>920</codigo>
<descripcion>EL PARAMETRO ARCHIVO ES INVALIDO No se desempaqueto XMLs</descripcion>
</mensajesList>
pero los archivos se comprimen de forma correcta, si alguien tuviera la información para realizar el correcto empaquetado y compresión le agradecería mucho
Responder Con Cita
  #5  
Antiguo 29-01-2024
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 264
Poder: 2
pgranados Va por buen camino
Que versión de Delphi estas usando? Porque no usas System.Zip ?
Responder Con Cita
  #6  
Antiguo 29-01-2024
Delphi01 Delphi01 is offline
Miembro
 
Registrado: nov 2015
Ubicación: Barcelona,España
Posts: 68
Poder: 9
Delphi01 Va por buen camino
Cita:
Empezado por mandilium Ver Mensaje
Favorablemente el código me ayudo bastante, pero al realizar el envió mediante el servicio soap al servicio de impuestos nacionales me genera el siguiente error:
Código:
<mensajesList>
<codigo>920</codigo>
<descripcion>EL PARAMETRO ARCHIVO ES INVALIDO No se desempaqueto XMLs</descripcion>
</mensajesList>
pero los archivos se comprimen de forma correcta, si alguien tuviera la información para realizar el correcto empaquetado y compresión le agradecería mucho
Es importante verificar que el paquete y los parámetros enviados cumplan con las especificaciones proporcionadas por el Servicio de Impuestos Nacionales para la recepción masiva de facturas electrónicas. suena algo así ...

Última edición por Delphi01 fecha: 29-01-2024 a las 19:07:11.
Responder Con Cita
  #7  
Antiguo 09-02-2024
mandilium mandilium is offline
Miembro
 
Registrado: may 2023
Posts: 12
Poder: 0
mandilium Va por buen camino
Talking

Ya resolví el problema con el empaquetado, el detalle era que lo primero que se debía realizar es el empaquetado tipo tar y después en un gzip.
Muchas gracias por las respuestas proporcionadas por todos
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
Cómo extraer contenido de un archivo gzip Casimiro Notevi Varios 7 06-07-2023 20:21:28
Descomprimir un archivo gzip con Delphi jplj Varios 7 09-05-2013 22:52:40
Empaquetar Delphi nasedo Varios 2 19-11-2010 11:24:11
Empaquetar gráficos |NoName| Varios 0 29-01-2007 19:34:55
libreria gzip.dll locotenentul Varios 3 14-09-2005 18:23:02


La franja horaria es GMT +2. Ahora son las 21:04:51.


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