Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Guia Electronica PERU (https://www.clubdelphi.com/foros/showthread.php?t=96841)

javicho_villa 13-09-2024 01:15:01

Guia Electronica PERU
 
Hola a todos,
Muchas gracias por leer estas líneas, le escribo desde Perú, La administración tributaria de Perú (SUNAT) ya exige las guías de remisión electrónicas, para ello tenemos un sistema de almacén que emite las guías y a traves de un servicio (OSCE) de proveedor externo este se comunica con la SUNAT y envia la información.

Lo que se quiere es que nuestro sistema envíe la información directamente a los servidores de SUNAT.

mi programa emite un archivo de texto, que le doy forma de una archivo .json y esto le enviaba al servidor OSCE ahora quiereo convertirlo al formato XML y enviarlo al servidor de la SUNAT.

Es aquí donde estoy un poco perdido, por que solo tengo el archivo .json

Si pudieran darme algunas luces para resolver este problema se los voy agradecer bastante, muchas gracias por su atención.

Código:

{
"guiaRemision":{
  "IDE":{
      "numeracion" : "T001-00000813",
      "fechaEmision" : "2024-09-12",
      "horaEmision" : "03:18:23 ",
      "notasCaso" : "",
      "codTipoDocumento" : "09"
  },
  "EMI":{
      "tipoDocId": "6",
      "numeroDocId": "20351060736",
      "nombreComercial": "FAMICOTTOM S.A.",
      "razonSocial": "FAMICOTTOM S.A.",
      "ubigeo": "150115",
      "direccion": "AV. LOS CANARIOS MZ.E2 LOTE 3 SANTA MARIA DE HUACHIPA",
      "provincia": "LIMA",
      "departamento": "LIMA",
      "distrito": "LURIGANCGHO",
      "codigoPais": "PE",
      "telefono": "371-0562",
      "correoElectronico": ""
  },
  "DDE":{
      "tipoDocId": "6",
      "numeroDocId": "2051833995",
      "nombreComercial": "LLUVISOL TEXTIL",
      "razonSocial": "LLUVISOL TEXTIL SAC",
      "ubigeo": "",
      "direccion": " AV. LOS CANARIOS MZ 3 2LOTE 3",
      "departamento": "LIMA",
      "provincia": "LIMA",
      "distrito": "HUACHIPA",
      "codigoPais": "",
      "correoElectronico": ""
  },
  "GRC":{
      "idTraslado": "SUNAT_Envio",
      "motivoTraslado": "08",
      "descripcionMotivoTraslado": " RECOJO DE BIENES TRANSFORMADOS",
      "pesoBrutoBienes": "2755.350",
      "unidadMedidaPesoBruto": "KGM",
      "modalidadTraslado": "01",
      "fechaInicioTraslado": "2024-09-12",
      "tipoDocIdeConductor": "6",
      "numeroDocIdeConductor": "12345679801",
      "denominacionTransportador": "JUAN PERES TUDELA",
      "numeroPlacaVehiculo": "ATJ-418",
      "ubigeoPuntoLlegada": "",
      "direccionPuntoLlegada": " AV. LOS CANARIOS MZ 3 2LOTE 3 URB. EL CLUB II ETAPA SANTA MARIA LIMA LIMA HUACHIPA",
      "ubigeoPuntoPartida": "150115",
      "direccionPuntoPartida": "AV. LOS CANARIOS MZ.E2 LOTE 3 SANTA MARIA DE HUACHIPA"
  },
  "GCA":{
      "tipoConductor": "Principal",
      "nomConductor": "JUAN",
      "apeConductor": "PERES TUDELA",
      "numLicCondConductor": "Q09785215"
  },
  "GRD":[
      {
        "numeroOrdenItem": "1",
        "codigoItem": "230",
        "descripcionItem": "JERSEY 24/1 ALG UPLAND DESG",
        "nombreItem": "JERSEY 24/1 ALG UPLAND DESG",
        "cantidadItem": "1006.450",
        "unidadMedidaItem": "KGM",
        "codProductoSunat": "11161704"
      },
      {
        "numeroOrdenItem": "2",
        "codigoItem": "230",
        "descripcionItem": "JERSEY 24/1 ALG UPLAND DESG",
        "nombreItem": "JERSEY 24/1 ALG UPLAND DESG",
        "cantidadItem": "662.5000",
        "unidadMedidaItem": "KGM",
        "codProductoSunat": "11161704"
      },
      {
        "numeroOrdenItem": "3",
        "codigoItem": "230",
        "descripcionItem": "JERSEY 24/1 ALG UPLAND DESG",
        "nombreItem": "JERSEY 24/1 ALG UPLAND DESG",
        "cantidadItem": "990.7500",
        "unidadMedidaItem": "KGM",
        "codProductoSunat": "11161704"
      },
      {
        "numeroOrdenItem": "4",
        "codigoItem": "231",
        "descripcionItem": "RIB 24/1 ALG UPLAND TUB",
        "nombreItem": "RIB 24/1 ALG UPLAND TUB",
        "cantidadItem": "35.95000",
        "unidadMedidaItem": "KGM",
        "codProductoSunat": "11161704"
      },
      {
        "numeroOrdenItem": "5",
        "codigoItem": "231",
        "descripcionItem": "RIB 24/1 ALG UPLAND TUB",
        "nombreItem": "RIB 24/1 ALG UPLAND TUB",
        "cantidadItem": "23.85000",
        "unidadMedidaItem": "KGM",
        "codProductoSunat": "11161704"
      },
      {
        "numeroOrdenItem": "6",
        "codigoItem": "231",
        "descripcionItem": "RIB 24/1 ALG UPLAND TUB",
        "nombreItem": "RIB 24/1 ALG UPLAND TUB",
        "cantidadItem": "35.85000",
        "unidadMedidaItem": "KGM",
        "codProductoSunat": "11161704"
      }
  ]
}
}


Neftali [Germán.Estévez] 13-09-2024 09:42:41

Cita:

Empezado por javicho_villa (Mensaje 557197)
mi programa emite un archivo de texto, que le doy forma de una archivo .json y esto le enviaba al servidor OSCE ahora quiereo convertirlo al formato XML y enviarlo al servidor de la SUNAT.

Es aquí donde estoy un poco perdido, por que solo tengo el archivo .json

Hola.

Veo 2 partes en esto que planteas:

1) Generación del archivo XML.
2) Envío del fichero.

Sobre ambas das poca información, así que es difícil concretar.

En la generación de un fichero XML (1), hablas de convertir un JSON, pero yo creo que es más sencillo y más práctico que generes el fichero directamente (de forma similar a como generas el JSON). Seguramente debes tener un formato para enviar ese fichero (pero no hablas sobre él). Deberías seguir la documentación para generarlo con la estructura que te pidan.

En cuanto al envío pasa lo mismo. Hay desde Delphi varias formas de realizar el envío dependiendo de dónde tengas que enviarlo. Tampoco comentas nada de lo que te piden. Deberías revisar la documentación. Deben enviarlo vía REST, SOAP, FTP,...

javicho_villa 13-09-2024 22:08:34

Muchas gracias por la respuestas:
Esto es lo que explica la administración tributaria de Perú:
*********
Los servicios web utilizan la autenticación basada en tokens. Para hacer uso de los servicios, el usuario debe seguir los siguientes pasos:
a) Generación de credenciales
En el menú SOL, debe inscribir la aplicación que usará los servicios REST y generar sus credenciales (client_id y client_secret). Este paso se realizará por única vez.
La ubicación de la opción en el menú sol es la siguiente: Credenciales de API SUNAT/ Credenciales de API SUNAT/ Credenciales de API SUNAT/ Credenciales de API SUNAT.

b) Generación del token
Con las credenciales generadas en el punto anterior, generará un token a través de un servicio que pondrá disponible SUNAT para tal fin. Este token tendrá una vigencia la cual se indica en el retorno del servicio (actualmente es de 1 hora) y dentro de este periodo, podrá utilizarse las veces que requiera invocar los servicios.
Se deberá acceder a la siguiente URL, como “POST”:
https://api-seguridad.sunat.gob.pe/v1/clientessol/<client_id>/oauth2/token/
Donde:
- <client_id>: Es el client_id generado en menú SOL - La URI colocada es referencial
En la cabecera (Header) se debe enviar el siguiente parámetro: Content-Type
Application/json
El cuerpo (Body) de la consulta deberá ser de tipo “x-www-form-urlencoded” y se debe enviar los siguientes parámetros: grant_type
password
5
PLATAFORMA DE CONFIRMACIÓN NUEVA GRE
scope
https://api-cpe.sunat.gob.pe client_id
<client_id> generado en menú SOL
client_secret
<client_secret> generado en menú SOL
username
<Número de RUC> + <Usuario SOL>
password
<Contraseña SOL>
Donde:
- El parámetro grant_type tiene valor fijo
Y como datos de respuesta se tendrá: access_token
(token generado)
token_type
(tipo de token)
expires_in
(tiempo de expiración del token - El tiempo de expiración es en segundos. Concluido el tiempo podrá generar un nuevo token)
A continuación, se muestra un ejemplo del JSON para la generación de token usando la herramienta REST “POSTMAN”1 :
6
PLATAFORMA DE CONFIRMACIÓN NUEVA GRE
(*) Los datos de la imagen son referenciales
1 Disponible para los sistemas operativos: Windows, Mac y Linux.
Respuesta de la consulta:
7
PLATAFORMA DE CONFIRMACIÓN NUEVA GRE
c) Uso del token
Para el uso de los servicios, se deberá haber generado previamente el token en la sección anterior. El token se usará de la siguiente forma en la invocación del servicio:
En las Cabeceras (Headers) se deberá enviar lo siguiente: Authorization
Bearer + token
Se debe enviar la palabra “Bearer” concatenado con un espacio y luego el token generado.
**********************

esta parte es para conectarse con los servicios rest y post.

Yo ya tengo el archivo json, mi pregunta es si puedo convertir ese .json en xml para enviarlo? no sería mas facil ya que el archivo ya esta hecho?

muchas gracias.

Neftali [Germán.Estévez] 16-09-2024 09:08:32

Revisa este manual a ver si es lo que necesitas:
https://cpe.sunat.gob.pe/sites/defau...vicios_GRE.pdf

Has puesto toda la información, pero no concretas lo que necesitas.

Si realmente quieres convertir un JSON a XML, se puede hacer, pero por experiencia no va a funcionar. Si realmente necesitas un XML, es mejor que lo crees desde cero.

javicho_villa 16-09-2024 19:48:13

Gracias por responder Neftali,
Como podría generar el XML, que componentes tendría que usar, yo estoy programando en XE8?

javicho_villa 16-09-2024 19:55:05

Gracias nuevamente Neftalí, te comento tambien que es una aplicación de escritorio la que usamos, he revisado los que piden en el manual, y sale de ejemplo un dominio, por ejemplo: www.miguia.com, en mi caso que es una aplicación de escritorio, como podríamos hacer?.

Neftali [Germán.Estévez] 17-09-2024 09:43:01

Para generar el XML, puedes usar los componentes que trae delphi para ello. XMLDocument o importar el XSD y que e genere estructura para generarlo.
Si buscas en los foros sobre generar XML verás que hay muchos ejemplos. Por ejemplo esta:
https://www.clubdelphi.com/foros/showthread.php?t=81137
Aquí también tienes varias entradas sobre cómo trabajar con XML:
https://delphiallimite.blogspot.com/...os-xml-ii.html

Para el tema del envío, lo más fácil en versiones nuevas como la tuya es que uses componentes REST que también vienen con Delphi.
TRESTRequest, TRESTClient, TRESTResponse
En la docWiki de Embarcadero tienes toda la información sobre estos tres componentes (aunque ahora mismo parece que está caída):
https://docwiki.embarcadero.com/RADS...Client_Library

Si buscas en los foros sobre cómo usar estos tres componentes también encontrarás muchos hilos con código de ejemplo.
En esta entrada de mi blog también tienes una explicación de cómo usar esos tres componentes para hacer peticiones a una web:
https://neftali.clubdelphi.com/35-ge...ice-en-delphi/

javicho_villa 17-09-2024 18:55:22

Muchísimas gracias Neftalí,
Me pongo a trabajar con esta información.


La franja horaria es GMT +2. Ahora son las 18:29:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi