Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-09-2022
JCz JCz is offline
Miembro
 
Registrado: oct 2021
Posts: 29
Poder: 0
JCz Va por buen camino
Factura Electronica Paraguay - SIFEN

Buenas;

Adjunto las clases generadas por el asistente del Delphi para la generación de los XML de la factura electronica.
Archivos Adjuntos
Tipo de Archivo: zip SIFEN.zip (33,3 KB, 86 visitas)
Responder Con Cita
  #2  
Antiguo 11-09-2022
JCz JCz is offline
Miembro
 
Registrado: oct 2021
Posts: 29
Poder: 0
JCz Va por buen camino
por si sirva a alguien como guia, paso formato de los xml de, cambiando los datos sensibles por XXXXXX
Factura
AutoFactura
Nota de Credito
Nota de debito
Nota de Remision
Archivos Adjuntos
Tipo de Archivo: zip xml DE.zip (20,9 KB, 68 visitas)
Responder Con Cita
  #3  
Antiguo 11-09-2022
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Muchas gracias, también en nombre de quienes han descargado tus archivos, por tu aportación.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 11-09-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Responder Con Cita
  #5  
Antiguo 20-09-2022
JCz JCz is offline
Miembro
 
Registrado: oct 2021
Posts: 29
Poder: 0
JCz Va por buen camino
Adjunto la función que utilizo para generar la url del QR

Código Delphi [-]
function TdmSIGCZFE.generarQR(
                              _QRVersion : AnsiString;                      // Version del Manual Técnico = 150
                              _QRId : AnsiString;                             // código CDC string de 44 caracteres 
                              _QRdFeEmiDE : AnsiString;                 // Fecha emision del D.E.
                              _QRdRucRec : AnsiString;                   // RUC del contribuyente
                              _QRdTotGralOpe : AnsiString;             // importe total de la operación
                              _QRdTotIVA : AnsiString;                   // importe del IVA de la operación
                              _QRcItems : AnsiString;                    // cantidad de items facturado
                              _QRDigestValue : AnsiString;            // Digest de la firma
                              _QRIdCSC : AnsiString;                    // id del Codigo CSC facilitado por la SET para la generación de la url (puede haber 2)
                              _QRCSC : AnsiString): AnsiString;    // Código CSC facilitado por la SET para la generación de la url  (puede haber 2)
var
      _cHashQR : AnsiString;
      _QR,_QRCalcHash : AnsiString;
begin

      _QR := 'nVersion='+_QRVersion +'&' +
              'Id='+_QRId+'&' +
              'dFeEmiDE='+ lowercase((String2Hex(_QRdFeEmiDE))) +'&' +   //convertimos la fecha en su valor hexadecimal
              ''+_QRdRucRec +'&' +
              'dTotGralOpe='+_QRdTotGralOpe + '&' +
              'dTotIVA='+ _QRdTotIVA + '&' +
              'cItems='+ _QRcItems + '&' +
              'DigestValue=' + lowercase((String2Hex(_QRDigestValue))) + '&' +  //convertimos el digest de la firma en su valor hexadecimal
              'IdCSC=' + _QRIdCSC;


      _QRCalcHash := _QR + _QRCSC;                              // al valor calculado en paso anterior se adiciona el codigo CSC
      _cHashQR    :=  GetStrHashSHA256(_QRCalcHash);  // el resultado del paso anterior lo Generaramos el Hash

      _QR := _QR + '&cHashQR=' + _cHashQR;

      if idAmbienteActual = 1 then // ambiente de prueba
            _QR := urlQRPrueba + _QR
      else  if idAmbienteActual = 2 then  // ambiente de producción
            _QR := urlQRProduccion + _QR;

      result := StringReplace(_QR,'&','&',[rfReplaceAll, rfIgnoreCase]);  // escapamos el & por '&'
end;

abajo las otras funciones utilizadas


Código Delphi [-]
function String2Hex(const Buffer: AnsiString): string;
begin
  SetLength(Result, Length(Buffer) * 2);
  BinToHex(PAnsiChar(Buffer), PChar(Result), Length(Buffer));
end;

Código Delphi [-]
function GetStrHashSHA256(Str: String): String;
var
  HashSHA: THashSHA2;
begin
    HashSHA := THashSHA2.Create;
    HashSHA.GetHashString(Str);
    result := HashSHA.GetHashString(Str,SHA256);
end;
Responder Con Cita
  #6  
Antiguo 20-09-2022
JCz JCz is offline
Miembro
 
Registrado: oct 2021
Posts: 29
Poder: 0
JCz Va por buen camino
el resultado de la función se debe agregar al xml en el tag

Código:
<gCamFuFD>
<dCarQR>h_t_t_p_s://ekuatia.set.gov.py/consultas-test/qr?nVersion=150&amp;Id=010XXXXXX001001000006212022091914019076583&amp;dFeEmiDE=323032322d30392d31395431393a33313a3331&amp;dRucRec=XXXXXX&amp;dTotGralOpe=1036424.00&amp;dTotIVA=94220.35&amp;cItems=3&amp;DigestValue=70757447585833595a5a66555263354d2f724658716135504c776c64716f7a46635449384b44323843666f3d&amp;IdCSC=0001&amp;cHashQR=d4691e96002fdc2ed6518055f2ba983a59cd940a24f7ed43a3f82454d5fbc719
</dCarQR>
</gCamFuFD>

Última edición por dec fecha: 20-09-2022 a las 10:00:49. Razón: Poner etiqueta CODE
Responder Con Cita
  #7  
Antiguo 21-10-2022
JCz JCz is offline
Miembro
 
Registrado: oct 2021
Posts: 29
Poder: 0
JCz Va por buen camino
Firma Xml

Para la firma del XML utilizo la librería de Chilkat; paso en adjunto como lo hago.

Saludos!!
Archivos Adjuntos
Tipo de Archivo: zip firmarXML.zip (1,9 KB, 59 visitas)
Responder Con Cita
  #8  
Antiguo 13-01-2023
JEBOJEDA JEBOJEDA is offline
Registrado
 
Registrado: mar 2009
Posts: 1
Poder: 0
JEBOJEDA Va por buen camino
hola buen dia

en el archivo recibe.pas, llama una funciona que el compilador no lo encuentra y no veo una unidad en el USES tampoco,

--- > function rEnviDe(const rEnviDe: rEnviDe): rRetEnviDe; stdcall;

Gracias. y Saludos...
Responder Con Cita
  #9  
Antiguo 15-01-2023
JCz JCz is offline
Miembro
 
Registrado: oct 2021
Posts: 29
Poder: 0
JCz Va por buen camino
Recibe.pas es para consumir el servicio que recibe el xml dela factura electrónica, con que versión de Delphi lo estás probando? Como tratas de consumir el web service?
Responder Con Cita
  #10  
Antiguo 15-01-2023
JCz JCz is offline
Miembro
 
Registrado: oct 2021
Posts: 29
Poder: 0
JCz Va por buen camino
Cita:
Empezado por JEBOJEDA Ver Mensaje
hola buen dia

en el archivo recibe.pas, llama una funciona que el compilador no lo encuentra y no veo una unidad en el USES tampoco,

--- > function rEnviDe(const rEnviDe: rEnviDe): rRetEnviDe; stdcall;

Gracias. y Saludos...
Ahora me percaté, debes cambiar esa función por esta
Código Delphi [-]
  function  rEnviDe(const rEnviDe: UnicodeString): UnicodeString; stdcall;
Responder Con Cita
  #11  
Antiguo 02-08-2023
hoyosfelix hoyosfelix is offline
Miembro
 
Registrado: ago 2010
Ubicación: San Antonio, Paraguay
Posts: 38
Poder: 0
hoyosfelix Va por buen camino
Sifen en Lazarus.

Hola.


Gracias por compartir tu código aquí.


Te hago una pregunta:

¿Vos decís que va a ser posible implementar todo esto en Lazarus?


Saludos.
Responder Con Cita
  #12  
Antiguo 02-08-2023
JCz JCz is offline
Miembro
 
Registrado: oct 2021
Posts: 29
Poder: 0
JCz Va por buen camino
Cita:
Empezado por hoyosfelix Ver Mensaje
Hola.


Gracias por compartir tu código aquí.


Te hago una pregunta:

¿Vos decís que va a ser posible implementar todo esto en Lazarus?


Saludos.
Hola, no veo porque no se podría ya que ambos tienen Pascal como lenguaje base, desconozco si Lazarus tiene el equivalente al componente Httprio que es en gran parte el utilizado para el consumo del webservice del SIFEN.

Saludos y suerte con el proyecto.
Responder Con Cita
  #13  
Antiguo 02-08-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Seguramente este: https://wiki.lazarus.freepascal.org/...ervice_Toolkit
Responder Con Cita
  #14  
Antiguo 05-08-2023
Avatar de marioerp
marioerp marioerp is offline
Miembro
 
Registrado: may 2007
Ubicación: Paraguay
Posts: 20
Poder: 0
marioerp Va por buen camino
Ejemplo

Cita:
Empezado por JCz Ver Mensaje
Ahora me percaté, debes cambiar esa función por esta
Código Delphi [-]
  function  rEnviDe(const rEnviDe: UnicodeString): UnicodeString; stdcall;

Podrian publicar un ejemplo llamando al servicio de consultar ruc..

Gracias.
__________________
El querer es poder!!!!
Responder Con Cita
  #15  
Antiguo 05-08-2023
JCz JCz is offline
Miembro
 
Registrado: oct 2021
Posts: 29
Poder: 0
JCz Va por buen camino
Consulta Ruc - Sifen

Cita:
Empezado por marioerp Ver Mensaje
Podrian publicar un ejemplo llamando al servicio de consultar ruc..

Gracias.
Buenas


Paso como lo tengo yo.


Saludos
Archivos Adjuntos
Tipo de Archivo: zip ConsultaRUC.zip (2,0 KB, 37 visitas)
Tipo de Archivo: zip unit.zip (923 Bytes, 29 visitas)

Última edición por JCz fecha: 05-08-2023 a las 19:33:33. Razón: Adjuntar unit Consulta-RUC
Responder Con Cita
  #16  
Antiguo 06-08-2023
Avatar de marioerp
marioerp marioerp is offline
Miembro
 
Registrado: may 2007
Ubicación: Paraguay
Posts: 20
Poder: 0
marioerp Va por buen camino
Gracias JCZ, estoy tratando de consumir con delphi 10.2, al parecer el HTTPRIO en esta version no tiene la propiedad HTTPWebNode.SecureProtocols.

Podrias pasarme tu contacto (email o whatsapp) para ver si podemos conversar un poco mas?
__________________
El querer es poder!!!!
Responder Con Cita
  #17  
Antiguo 08-08-2023
JCz JCz is offline
Miembro
 
Registrado: oct 2021
Posts: 29
Poder: 0
JCz Va por buen camino
Cita:
Empezado por marioerp Ver Mensaje
Gracias JCZ, estoy tratando de consumir con delphi 10.2, al parecer el HTTPRIO en esta version no tiene la propiedad HTTPWebNode.SecureProtocols.

Podrias pasarme tu contacto (email o whatsapp) para ver si podemos conversar un poco mas?
Buenas, para procesar no es necesario configurar en tiempo de ejecución el TLS, yo lo hago porque uno de los (PSC) Code100 emite mal el certificado, según manual 150 debe ser TLS2 pero CODE100 emite mal y hay que forzar el envío en TLS1.

Si tienes el Certificado de otro PSC puede obviar esa sección. Yo uso D11, no tengo como probar en D10.

Saludos
Responder Con Cita
  #18  
Antiguo 08-08-2023
Avatar de marioerp
marioerp marioerp is offline
Miembro
 
Registrado: may 2007
Ubicación: Paraguay
Posts: 20
Poder: 0
marioerp Va por buen camino
Cita:
Empezado por JCz Ver Mensaje
Buenas, para procesar no es necesario configurar en tiempo de ejecución el TLS, yo lo hago porque uno de los (PSC) Code100 emite mal el certificado, según manual 150 debe ser TLS2 pero CODE100 emite mal y hay que forzar el envío en TLS1.

Si tienes el Certificado de otro PSC puede obviar esa sección. Yo uso D11, no tengo como probar en D10.

Saludos

Del mismo emisor es mi certificado, code 100.
__________________
El querer es poder!!!!
Responder Con Cita
  #19  
Antiguo 09-08-2023
Avatar de marioerp
marioerp marioerp is offline
Miembro
 
Registrado: may 2007
Ubicación: Paraguay
Posts: 20
Poder: 0
marioerp Va por buen camino
Consultar ruc de la set

Buenas.

Adjunto proyecto de consultar ruc de la set... Tengo problemas para anhadirle el certificado, si pueden corregir donde estoy errando seria de gran ayuda.
Archivos Adjuntos
Tipo de Archivo: rar Consultar RUC.rar (136,5 KB, 20 visitas)
__________________
El querer es poder!!!!
Responder Con Cita
  #20  
Antiguo 09-08-2023
JCz JCz is offline
Miembro
 
Registrado: oct 2021
Posts: 29
Poder: 0
JCz Va por buen camino
Cita:
Empezado por marioerp Ver Mensaje
Buenas.

Adjunto proyecto de consultar ruc de la set... Tengo problemas para anhadirle el certificado, si pueden corregir donde estoy errando seria de gran ayuda.
Buenas

1- El certificado debe estar instalado en la PC

2- No haz incluido el procedure findclientcertificate

Código Delphi [-]
procedure TdmRIO.findClientCertificate(
  const Sender: TObject; const ARequest: TURLRequest;
  const ACertificateList: TCertificateList; var AnIndex: Integer);
var
    i : integer;
begin
      for I := 0 to ACertificateList.Count-1 do begin
          if SameText(ACertificateList[i].SerialNum,'74926b31c944fe9648575fa99162761a') then begin
            AnIndex := I;
            break;
          end;
      end;
end;

3- "Descomenta" esta parte

Código Delphi [-]
 HTTPRIOConsultaRUC.HTTPWebNode.ClientCertificate.SerialNum := '74926b31c944fe9648575fa99162761a';
 HTTPRIOConsultaRUC.HTTPWebNode.OnNeedClientCertificate := findClientCertificate;
 HTTPRIOConsultaRUC.OnBeforeExecute := BeforeExecute;
 HTTPRIOConsultaRUC.OnAfterExecute  := AfterExecute;

4- Utiliza el protocolo TLS1.1

Código Delphi [-]
HTTPRIOConsultaRUC.HTTPWebNode.SecureProtocols := [THTTPSecureProtocol.TLS11];

Saludos
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
xml+xsl a pdf(Factura Electronica) jgutti Varios 4 21-02-2012 16:08:23
Factura electronica richy08 Varios 4 17-12-2010 00:40:34
Factura Electrónica aig Varios 13 10-12-2010 17:12:44
factura electronica cmm07 Varios 4 02-04-2009 17:46:03
factura electronica spia Varios 2 22-02-2009 21:30:06


La franja horaria es GMT +2. Ahora son las 19:47:05.


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