Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Migration of unmigrated content due to installation of a new plugin
Este documento es un material de especificación de los requisitos de innovación. Se trata de un contenido sumamente técnico.      

                                                       

Crear el Web Service TSSIntegSUNAT para permitir que TSS reciba documentos fiscales electrónicos para Perú y los envié a la SUNAT  posteriormente.

 

Información General

 

Especificación

Producto

TSS

Módulo

N/A

Segmento ejecutor

Servicios

Projeto1

Proyecto de Desarrollo_MEX

IRM/EPIC1

SERINN001-1143

Requisito/Story/Issue1

SERINN001-1144

Subtarea1

SERINN001-1158

Chamado/Ticket2

 

País

(  ) Brasil  (  ) Argentina  (  ) México  (  ) Chile  (  ) Paraguay  (  ) Ecuador

(  ) EEUU  (  ) Colombia   ( x) Perú

Otros

 

   Leyenda: 1 – Innovación 2 – Mantenimiento (Los demás campos se deben completar en ambos los procesos). 

Objetivo

 

Crear el Web Service TSSIntegSUNAT para permitir que TSS reciba documentos fiscales electrónicos para Perú y los envié a la SUNAT  posteriormente.

Definición de la Regla de Negocio

 

El Web Service deberá tener los siguientes Métodos:

·         SendDoc

·         ConsultaDoc

 

Web Method SendDoc

 

Deberá encargarse de recibir los Documentos XML y guardarlos dentro de TSS para su posterior envío a la SUNAT

 

Parámetros de entrada: 

 

Parámetro

Tipo

Observación
UserTokenStringToken Utilizado para TSS.

IdEnt

String

Id de identificación de la Entidad registrada en TSS

IdDoc

String

Idenficación del Documento en TSS

Modelo

String

Modelo de Documento:

S1- Factura Venta

S4 – Nota Crédito

S5 – Nota Débito

S6 – Guia Remision

S7- Comprobante Retención

SD - Boleta de Venta

SE – Comunicación de Baja

XML

Base64Binary

XML de Documento Fiscal bajo estándar UBL dependiento del tipo de Documento.

 

 

Exemplo:

 

Petición:

 

<body>

     <SendDoc> 

         <userToken>String</userToken> 

         <entidade>String</entidade>

         <idDoc>String</idDoc>

         <modelo>String</modelo> 

         <xml>base64BInary</xml>           

     </ SendDoc > 

</body> 

 

              

   Parámetros de salida:

 

Parámetro

Tipo

Observación

IdDoc

String

Id de Documento Registrado en TSS

HasError

Boolean

True Si  existió algún problema con el documento.

Error

Complejo

Resultado de la recepción del Documento.

Si existieron errores durante el proceso serán reportados en este Elemento.

Codigo

StringCódigo del Error
DescripcionStringDescripción del error producido al procesar el documento.

 

 

 

Exemplo:

 

<body> 

      <SendDocResult>

            <id>String</id>

            <HasError>boolean</ HasError >

            <erro>

                          <codigo>String</codigo>      

                        <descricao>String</descricao> 

            </erro>                        

</body> 

 

Proceso

 

·         Deberá Validar que el USERTOKEN sea Igual a “TOTVS”, si es diferente deberá generar SOAP FAULT indicando “000 – UserToken Inválido”.

·         Deberá validar que la Entidad(idEnt) exista en TSS en la tabla SPED001L. Si no existe, deberá retornar erro código “001”  indicando el siguiente mensaje: “Empresa o Entidad no registrada en TSS”

                   Ejemplo:

                            

                                <body> 

      <SendDocResult>

      <id>F0010000000001</id>

      <HasError>True</ HasError >

                  <erro> 

             <codigo>001</codigo>    

                              <descricao>Empresa o Entidad no registrada en TSS</descricao> 

      </erro>                        

     </SendDocResult>         

</body> 

 

·         Validará que el modelo a recibir se encuentre dentro de los siguientes:

S1- Factura Venta 

S4 – Nota Crédito

S5 – Nota Débito

S6 – Guia Remision

S7- Comprobante Retención

SD - Boleta de Venta

SE- Comunicado de Baja

 

                        Si es diferente a los mencionados, deberá retornar error  indicando “002 – Modelo Inválido”. Ejemplo:

 

<body> 

      <SendDocResult>

      <id>F0010000000001</id>

            <HasError>True</ HasError >

            <erro> 

                       <codigo>002</codigo>           

                                               <descricao>Modelo Inválido</descricao> 

            </erro> 

     </SendDocResult>                          

</body> 

 

 

·         Validar que la propiedad XML no esté vacía, si no se informa XML entonces debe generar error Indicando “003 – XML Vacío”. Ejemplo:

 

<body> 

      <SendDocResult>

            <id>F0010000000001</id>

            <HasError>True</ HasError >

            <erro> 

                       <codigo>003</codigo>           

                                               <descricao>XML Vacio</descricao> 

            </erro> 

     </SendDocResult>                          

</body> 

 

·         Validar que exista el archivo Schema para el modelo indicado, vea la siguiente tabla:

 

 

Modelo

 

Archivo Schema

 

S1- Factura Venta

SD – Boleta de Venta

UBL-Invoice-2.0.xsd

S4 - Nota CréditoUBL-CreditNote-2.0.xsd
S5 – Nota Débito

UBL-DebitNote-2.0.xsd

S6 – Guia Remision

UBL-DespatchAdvice-2.0.xsd

S7- Comprobante Retención

UBLPE-Retention-1.0

SE-Comunicado de Baja

UBL-VoidedDocuments-1.0

 

 

 Este Archivo debe ubicarse dentro de la carpeta “Schemas” de TSS. Si no existe el archivo, deberá retornar error  indicando “004 – Archivo ” + nombre del archivo xsd + “No se encuentra en TSS. Verifique”.

Ejemplo:

 

<body> 

      <SendDocResult>

            <id>F0010000000001</id>

            <HasError>True</ HasError >

            <erro> 

                       <codigo>004</codigo>           

                                               <descricao>Archivo UBL-Invoice-2.0.xsd No se encuentra en TSS. Verifique </descricao>

            </erro> 

     </SendDocResult>                          

</body> 

 

·         Validar que el XML recibido pase la validación contra el esquema correspondiente.  Para ello deberá usar el xsd según el modelo:

 

 

Modelo

 

Archivo Schema

 

S1- Factura Venta

SD – Boleta de Venta

UBL-Invoice-2.0.xsd

S4 - Nota CréditoUBL-CreditNote-2.0.xsd
S5 – Nota Débito

UBL-DebitNote-2.0.xsd

S6 – Guia Remision

UBL-DespatchAdvice-2.0.xsd

S7- Comprobante Retención

UBLPE-Retention-1.0

SE-Comunicado de Baja

UBL-VoidedDocuments-1.0

 


Si el XML no cumple con el esquema establecido deberá retornar error “005 – Error de Esquema”  más el error que arroje la función TSSValidSchema . 

 

 

Ejemplo:

 

<body> 

      <SendDocResult>

            <id>F0010000000001</id>

            <HasError>True</ HasError >

            <erro> 

                       <codigo>005</codigo>           

                                                <descricao>Error de Esquema: Elemento RUC no contiene el tipo correcto </descricao>

            </erro> 

     </SendDocResult>                          

</body> 

 

·         Validar si el registro para el idDoc recibido existe en la tabla SPED050L .

Si el registro existe, revisar que su estatus sea diferente de Autorizado(STATUS = 6).

Si SPED050L->STATUS = 6 Deberá retornar error: “006 – El documento ya ha sido Autorizado y TSS no puede recibirlo nuevamente.”

Ejemplo:

 

<body> 

      <SendDocResult>

            <id>F0010000000001</id>

            <HasError>True</ HasError >

            <erro> 

                       <codigo>006</codigo>           

                                                <descricao>

El documento ya ha sido Autorizado por la SUNAT y TSS no puede recibirlo nuevamente. 

</descricao>

            </erro> 

     </SendDocResult>                          

</body> 

 

Si el documento se encuentra en “Esperando Proceso” (STATUS = 4). Deberá retornar error: 007 – “Espere el procesamiento del documento”

Ejemplo:

<body> 

      <SendDocResult>

            <id>F0010000000001</id>

            <HasError>True</ HasError >

            <erro> 

                       <codigo>007</codigo>           

                                                <descricao> Espere el procesamiento del documento </descricao>

            </erro> 

     </SendDocResult>                          

</body> 

 

Si el documento no se puede grabar en TSS. Debera retornar error: 008 – “Error en la grabacion del registro”

Ejemplo:

<body> 

      <SendDocResult>

            <id>F0010000000001</id>

            <HasError>True</ HasError >

            <erro> 

                       <codigo>008</codigo>           

                                                <descricao> Error en la grabacion del registro </descricao>

            </erro> 

     </SendDocResult>                          

</body> 

 

Para  cualquier otro Estatus, deberá actualizar el registro cómo sigue:

 

SPED050L->ID_ENT        := Propiedad IdEnt

            SPED050L->NFE_ID        := Propiedad IdDoc

            SPED050L->MODELO        := Propiedad Modelo

            SPED050L->DATE_NFE      := Date()

            SPED050L->TIME_NFE      := Time()

            SPED050L->AMBIENTE      := Ambiente configurado MV_AMBIENTE

            SPED050L->MODALIDADE    := vacio

            SPED050L->STATUS        := 1

            SPED050L->XML_ERP       := Propiedad XML                                            

            SPED050L->ERRCODE       := 0

SPED050L->ERRMSG       := ""

 

·         De no pasar alguna de las validaciones mencionadas, no deberá registrar el documento  en TSS.

·         Si pasó todas las validaciones anteriores, deberá generar un nuevo registro en la tabla SPED050L como se indica a continuación:

SPED050L->ID_ENT       := Propiedad IdEnt

SPED050L->NFE_ID       := Propiedad IdDoc

SPED050L->MODELO       := Propiedad Modelo

            SPED050L->DATE_NFE      := Date()

            SPED050L->TIME_NFE      := Time()

            SPED050L->AMBIENTE      := Ambiente configurado MV_AMBIENTE

            SPED050L->MODALIDADE    := vacio

            SPED050L->STATUS        := 1

            SPED050L->XML_ERP       := Propiedad XML                                          

SPED050L->ERRCODE       := 0

SPED050L->ERRMSG       := ""

 

                        Deberá realizar envió de retorno Positivo. Ejemplo:

<body> 

      <SendDocResult>

            <id>F0010000000001</id>

            <HasError>False</ HasError >

            <erro> 

                       <codigo></codigo>    

                                               <descricao> </descricao> 

            </erro> 

     </SendDocResult>                          

</body> 

 

Web Method ConsultaDoc

 

El objetivo de este web Method es permitir realizar monitoreo o consulta de un documento enviado a TSS. El método se define de la siguiente forma:

 

Parámetros de entrada:

Parámetro  

Tipo

Observación

UserToken

String

Token Utilizado para TSS.

IdEnt

String

Id de identificación de la Entidad registrada en TSS

IdDoc

String

Idenficación del Documento en TSS

Modelo

String                  

Modelo de Documento:

S1- Factura Venta

S4 – Nota Crédito

S5 – Nota Débito

S6 – Guia Remision

S7- Comprobante Retención

SD - Boleta de Venta

SE – Comunicado de Baja

 

Todos los parámetros de entrada son obligatorios.

 

Exemplo Petición:

 

<body>

     <ConsultaDoc>

          <userToken>String</userToken> 

          <entidade>String</entidade> 

          <modelo>String</modelo> 

          <idDoc>String</idInicial>          

     </ConsultaDoc>

</body> 

 

              

   Parámetros de salida:

 

Parámetro  

Tipo

Observación

IdDoc

String

Id de Documento Registrado en TSS

Status

Integer

Estatus del documento en TSS :

1=Recibido TSS

4=Aguardando processamento

5=Documento Rechazado SUNAT

6=Documento Autorizado SUNAT

7=Documento Inhabilitado SUNAT

Ambiente

Integer

Ambiente configurado para recepción de documentos.

Código

String

Código de Error En caso de haberlo

Mensaje

String

Mensaje de Retorno

Recomendación

String

Recomendación emitida por la SUNAT

FechaAut

Date

Fecha Autorizacion

HrAut

String

Hora Autorizacion

XML

Base64binary

XML del Documento si fue Autorizado.

Para Comunicado de Baja, Retornar siempre XML

 

 

 

Exemplo de Retorno:

 

<body> 

      < ConsultaDocResult>

            <idDoc>String</idDoc>

            <Status>boolean</Status>

<Ambiente>boolean</Ambiente>

            <codigo>String</codigo>       

            <descripcion>String</descricao> 

             <recomendacion>String</recomendacion>     

            <FechaAut>Date</FechaAut>

            <HrAut>String</HrAut>

            <XML>Base64Binary</XML>   

      </ConsultaDocResult>                    

</body> 

 

Proceso del Web Method

 

 

·         Deberá realizar consulta a la tabla SPED050L para aquellos registros en dónde:

ID_ENT= IdEnt

NFE_ID = idDoc

MODELO=Modelo

AMBIENTE= Parámetro MV_AMBIENTE  table SPED000L para ID_ENT= IdEnt

 

Si no encuentra registro, deberá generar SOAP FAULT indicando “007- Documento” + IdDoc + “No Encontrado.”

Si encuentra registro, deberá retornar :

 

IDDOC = SPED050L->NFE_ID

STATUS = SPED050L ->STATUS

AMBIENTE= SPED050L->AMBIENTE

CODIGO = SPED050L->ERRCODE

DESCRIPCION=SPED050L->ERRMSG

FECHAAUT=SPED050L->DATE_ENFE

HRAUT=SPED050L->TIME_ENFE

XML=SPED050L->XML_SIG

 

Ejemplo de retorno con Rechazo:

               

                <body> 

      < ConsultaDocResult>

            <idDoc>F001000000001</idDoc>

            <Status>5</Status>

            <Ambiente>2</Ambiente>       

            <codigo>21</codigo> 

            <descripcion>El documento afectado por la nota no existe </descricao> 

             <recomendacion>Revisar y re transmitir</recomendacion>      

            <FechaAut> </FechaAut>

            <HrAut></HrAut>

            <XML> </XML>           

      </ConsultaDocResult>                    

</body>

 

Ejemplo de retorno Positivo

 

                <body> 

      < ConsultaDocResult>

            <idDoc>F001000000002</idDoc>

            <Status>6</Status>

            <Ambiente>2</Ambiente> 

            <codigo>21</codigo> 

            <descripcion>SUNAT Aprobado </descricao> 

             <recomendacion>Distribuir Receptor</recomendacion>          

            <FechaAut>2017-05-22</FechaAut>

            <HrAut>14:05:12</HrAut>

            <XML> PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxEZWJpdE5vdGUgeG1sbnM9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkRlYml0Tm90ZS0yIiB4bWxuczpjYWM9InVybjpDQogICAgICAgICAgICAgICA8Y2JjOklkZW50aWZpY2F0aW9uQ29kZT5QRTwvY2JjOklkZW50aWZpY2F0aW9uQ29kZT4NCiAgICAgICAgICAgIDwvY2FjOkNvdW50cnk- XML>       

      </ConsultaDocResult>                    

</body>

 

 

Rutina

Tipo de Operación

Opción de Menú

Reglas de Negocio

TSSIntegSUNAT.prw

Creación

N/A

-

TSSIntegSUNATWS.prw

Creación

N/A

-

 

 

 

Tablas Utilizadas

 

  • SPED050L – Documentos electrónicos
  • SPED000L – Parámetros
  • SPED001L – Entidades


 

 

 

 

 

 

Este documento es un material de especificación de los requisitos de innovación. Se trata de un contenido sumamente técnico.