Especificación de Requisitos

Proyecto/Versión: PDR_SER_MI001-142

Requisito/Módulo: PCREQ-5713/SIGAFAT

Sub-Requisito/Función: PCREQ-5713/ XML de Documentos Fiscales para Transmisión Electrónica

Tarea/Llamado: PDR_SER_MI001-142

País: Perú

Fecha Especificación: 20/07/15

Rotinas Involucradas

Rotina

Tipo de Operação

Opción de Menu

NFAEXmlPER – XML de Documentos Fiscales para Transmisión Electrónica

Creación

N/A

MATA485

Modificacion

Actualizaciones->Facturacion->Transmision Electrónica

LocxNF

Modificación

N/A

Estratégia de Desarrollo y Liberación

 

Producto

SIGAFAT

Release que está sendo desarrollado

11.8

Posee Réplica?

( x)Sim ()Não

Cuál es la versión?

12

 

Objetivo


Crear la función NFAEXmlPer que retornara una string la cual contiene el xml con el documento que será trasmitido al TSS para su envió a través de Signature. Esto aplica para:

  • Factura de venta
  • Nota de débito
  • Nota de crédito
  • Boleta de Venta


La boleta de Venta es un documento con los mismos datos de una factura, sin embargo la diferencia radica en que la serie para este documento debe iniciar con la letra "B" además de que el cliente deberá estar identificado por un documento diferente al RUC, el cual comunmente es por DNI o Documento Nacional de Identidad. Este documento es emitido al consumidor final ya sea por la venta de productos y/o servicios y debe ser timbrado al igual que los demás documentos mencionados en este desarrollo.
Modificar rutina Mata485 Transmisión Electrónica para que permita realizar transferencias electrónicas de los documentos :

  • Factura de venta
  • Nota de Débito
  • Nota de Crédito
  • Boleta de Venta

Definición de la Regla de Negócio


Esta rutina deberá permitir generar una cadena de caracteres que define un XML en el cuál contendrá los datos correspondientes al documento electrónico solicitado según el esquema DTE_v1.
No deberá tener interface gráfica de entrada ya que será llamada por la rutina MATA485.
Los parámetros que deberá recibir la función son los siguientes:

  • Tipo de Documento: 0 si es documento de Entrada o 1 si es documento de Salida.
  • Serie: Número o Serie del Documento
  • Cliente/Proveedor: Según sea el origen del documento deberá recibir el código del cliente o del proveedor.
  • Tienda: Código de la tienda
  • Número de Dócumento
  • Especie: Especie del documento.
  • Ambiente: Ambiente configurado para conexión con el TSS. Solo deberá aceptar valores 1. Homologación y 2. Producción


Nota de Crédito
Si el tipo de documento es 0 Entrada, deberá obtener los registros del Encabezado de Factura de Entrada SF1 en dónde: F1_DOC = Número de Documento, F1_SERIE=Serie, F1_CLIENTE= Código Cliente, F1_LOJA= Tienda Cliente, F1_ESPECIE=Especie (NCC= Nota de Crédito)
Por cada documento obtener su detalle de la tabla SD1 y generar xml como a continuación
<?xml version="1.0" encoding="iso-8859-1"?>
<DTE version="1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="DTE_v1.0.xsd">
<Documento ID="comprobante">
<Encabezado>
<IdDoc>
<Ambiente>Si AMBIENTE = 1 color 2 sino colocar 1 </Ambiente>
<TipoEmision>1</TipoEmision>
<ContenidoTC>Vacío</ContenidoTC>
<Tipo> SI Especie='NCC' colocar 04 sino ""</Tipo>
<Serie>F1_SERIE a 4 caracteres</Serie>
<Numero>F1_DOC a tamaño 8 caracteres</Numero>
<Estado>Valor Fijo: ORIGINAL</Estado>
<FechaEmis>F1_EMISSAO en formato YYYY-MM-ddThh:mm:ssZ</FechaEmis>
</IdDoc>
<Emisor>
<TipoContribuyente>Dejar en blanco sin espacios</TipoContribuyente>
<RegimenContable>Dejar en blanco sin espacios </RegimenContable>
<IDEmisor>SM0->M0_CGC</IDEmisor>
<NmbEmisor>SM0->M0_NOME</NmbEmisor>
<NombreEmisor>
<PrimerNombre>SM0->M0_NOMECOM</PrimerNombre>
</NombreEmisor>
<DomFiscal>
<Calle>SM0->M0_ENDENT</Calle>
<Departamento>>SM0->M0_CIDENT </Departamento>
<Distrito>SM0->M0_CIDENT </Distrito>
<Ciudad>SM0->M0_CIDENT</Ciudad>
<Municipio>SM0->M0_CIDENT</Municipio>
<Pais>PE</Pais> * Conforme tabla ISSO-3166-1  Para perú corresponde código PE*
*<CodigoPostal>SM0->M0_CEPENT</CodigoPostal> HOMOLOGADO AL CATÁLOGO DE UBÍGEOS DEL INEI *
</DomFiscal>
<LugarExped>
<Calle> SM0->M0_ENDENT </Calle>
</ LugarExped >
</Emisor>
<Receptor>
<DocRecep>
<TipoDocRecep> Buscar en SX5 em la Tabla XD com la clave del campo SA1->A1_TIPODOC Y colocar X5_DESCSPA. La Tabla Genérica XD deberá responder al catálogo 06 Tipos de Documentos de Identidad.

</TipoDocRecep> Si el cliente es extranjero, deberá reportar código 0
<NroDocRecep>SA1->A1_CGC</NroDocRecep> Si el cliente es extrangero, deberá reportar ' –'
</DocRecep>
<NmbRecep>SA1->A1_NOME</NmbRecep>
<Contacto>A1->A1_EMAIL</Contacto>
<DomFiscalRcp>
<Calle>SA1->A1_END</Calle>
<Departamento>SA1->A1_EST</Departamento>
<Distrito>SA1->A1_BAIRRO</Distrito>
<Ciudad>SA1->A1_BAIRRO</Ciudad>
<Municipio>SA1->A1_MUN</Municipio>
<Pais>con a1_pais obtendrá el código según IS0 3666-1 a dos caracteres</Pais>
<CodigoPostal>SA1->A1_CEP</CodigoPostal>> CATÁLOGO DE UBÍGEOS DEL INEI 
</DomFiscalRcp>
</Receptor>
<Transporte>
<MedioTransporte>
<MetodoTransp>MetodoTransp</MetodoTransp>
</MedioTransporte>
</Transporte>
<Totales>
<Moneda>Obtener con F1_MOEDA Según el ISSO-4217 monedas internacionales</Moneda> Generar Tabla XF EN SX5 conforme F1_MOEDA y su sigla equivalente del catálogo 02 Códigos de tipos de Monedas

<SubTotal>SF1->F1_VALMERC – SF1->F1_DESCONT</SubTotal>
<MntDcto>SF1->F1_DESCONT</MntDcto>
<VlrPagar>SF1->F1_VALBRUT</VlrPagar>
<MontoPropina>0.00</MontoPropina>
Para el siguiente elemento, deberá obtener los siguientes submontos y generar un nodo por cada uno de ellos en caso de existir:


Según el catálogo No. 14 deberán anexarse a cada submonto los concepto si estos existen en la factura y definiéndose de la manera siguiente:
Submonto 1001 Total Valor venta Operaciones Gravadas
<TotSubMonto>
<Tipo>1001</Tipo>
<MontoConcepto> SF1-F1_VALMERC – Total de Operaciones Exoneradas </MontoConcepto>
</TotSubMonto>
Submonto 1002 Total valor de venta Operaciones Inafectadas
Generar nodo como a continuación:
<TotSubMonto>
<Tipo>1002</Tipo>
<MontoConcepto>0.00</MontoConcepto>
</TotSubMonto>
Submonto 1003 Total valor venta Operaciones exoneradas

Por cada ítem del documento, con SD1->D1_TES recorrer los impuestos variables SFB que pertenezcan a la TES, y obtener el campo SFB->FB_CPOLVRO, mediante este campo buscar en Libros Fiscales SF3 en donde
SF3->F3_FILIAL = XFILIAL("SF3")
SF3->F3_NFISCAL = SF1_F1_DOC
SF3->F3_SERIE = SF1->F1_SERIE
SF3->F3_CLIFOR = SF1->F1_CLIENTE
SF3->F3_LOJA = SF1->F1_LOJA
Y sumar SF3->F3_BASEIMPX para quellos impuestos en donde SFB->FB_ALIQ == 0 Y SFB->FB_CLASSE = Tipo Impuesto
Si el documento no tiene operaciones exoneradas, generar el nodo en 0's de la siguiente manera
<TotSubMonto>
<Tipo>1003</Tipo>
<MontoConcepto>0.00</MontoConcepto>
</TotSubMonto>
Submonto 1004 Total valor de venta Operaciones gratuitas.
Si la TES no tiene asociado ningún impuesto y el cliente no ha sido identificado como EXTRANJERO, deberá informar en este nodo el valor de SF1-F1_VALMERC
<TotSubMonto>
<Tipo>1004</Tipo>
<MontoConcepto>SF1->F1_VALMERC con 2 decimales sin espacios</MontoConcepto>
</TotSubMonto>
</Totales>
De lo contrario, generar el nodo en 0's de la siguiente manera:
<TotSubMonto>
<Tipo>1004</Tipo>
<MontoConcepto>0.00</MontoConcepto>
</TotSubMonto>
Submonto 1005 Sub total de venta
<TotSubMonto>
<Tipo>1005</Tipo>
<MontoConcepto>SF1->F1_VALMERC con 2 decimales sin espacios</MontoConcepto>
</TotSubMonto>
</Totales>
Submonto 2001 Percepciones
Por cada ítem del documento, con SD1->D1_TES recorrer los impuestos variables SFB que pertenezcan a la TES, y obtener el campo SFB->FB_CPOLVRO, mediante este campo buscar en Libros Fiscales SF3 en donde
SF3->F3_FILIAL = XFILIAL("SF3")
SF3->F3_NFISCAL = SF1_F1_DOC
SF3->F3_SERIE = SF1->F1_SERIE
SF3->F3_CLIFOR = SF1->F1_CLIENTE
SF3->F3_LOJA = SF1->F1_LOJA
Y sumar SF3->F3_VALIMPX para quellos impuestos en donde SFB->FB_ALIQ <> 0 Y SFB->FB_CLASSE = Tipo Percepción
<TotSubMonto>
<Tipo>1003</Tipo>
<MontoConcepto>SUMA de SF3->F3_VALIMP</MontoConcepto>
</TotSubMonto>
Si el documento no tiene operaciones percepciones, no deberá generar nodo.
Submonto 2002 Retenciones
Por cada ítem del documento, con SD1->D1_TES recorrer los impuestos variables SFB que pertenezcan a la TES, y obtener el campo SFB->FB_CPOLVRO, mediante este campo buscar en Libros Fiscales SF3 en donde
SF3->F3_FILIAL = XFILIAL("SF3")
SF3->F3_NFISCAL = SF1_F1_DOC
SF3->F3_SERIE = SF1->F1_SERIE
SF3->F3_CLIFOR = SF1->F1_CLIENTE
SF3->F3_LOJA = SF1->F1_LOJA
Y sumar SF3->F3_VALIMPX para quellos impuestos en donde SFB->FB_ALIQ == 0 Y SFB->FB_CLASSE = Tipo Retención. Si la suma es mayor a 0 generar nodo de la siguiente manera:
<TotSubMonto>
<Tipo>1003</Tipo>
<MontoConcepto>SUMA de SF3->F3_VALIMP</MontoConcepto>
</TotSubMonto>
Si el documento no tiene Retenciones, no generar nodo.
Submonto 2003 Detracciones
Si el documento no cuenta con detracciones, no generar nodo.
Submonto 2005 Total Descuentos
<TotSubMonto>
<Tipo>2005</Tipo>
<MontoConcepto>SF1->F1_DESCONT con 2 decimales sin espacios</MontoConcepto>
</TotSubMonto>
</Totales>
Impuestos
Obtener los impuestos de la SFB dónde SFB->FB_POLVRO <> 0 y obtener F1_VALIMPN, F1_BASEIMPN y F1_ALQIMPN . Dónde N= SFB->FB_POLVRO y SFB->FB_CLASSE='I'
Por cada impuesto generar el siguiente nodo:
<Impuestos>
<TipoImp>SFB->FB_CODIMP</TipoImp> Deberá informarse según el impuesto, utilice l código designado en el catálogo 05

<TasaImp>SFB->FB_ALIQ<TasaImp>
<MontoImp>SF1->F1_VALIMPN</MontoImp>
</Impuestos>

Si el documento es de exportación, deberá generar el nodo indicando solamente igv, la tasa de IGV, código 40 y monto en 0's, ejemplo:
<Impuestos>
<TipoImp>1000</TipoImp>
<TasaImp>18<TasaImp>
<MontoImp>0.00</MontoImp>
</Impuestos>
Terminar nodo Encabezado una vez obtenidos todos los impuestos
</Encabezado>

Detalle del documento

Por cada Item encontrado del documento, generar:
<Detalle>
<NroLinDet>SD1->D1_ITEM</NroLinDet>
<CdgItem>
<TpoCodigo> SB1->B1_UM </TpoCodigo>
<VlrCodigo> SB1->B1_COD </VlrCodigo>
</CdgItem>
<DscLang>Valor fijo ES</DscLang>
<DscItem>SB1->B1_DESC</DscItem>
<QtyItem>SD1->D1_QUANT</QtyItem>
<PrcBrutoItem> SD1->D1_VUNIT </PrcBrutoItem><!-- Valor unitario por ítem, Se consignará el importe correspondiente al valor o monto unitario del bien vendido, cedido
o servicio prestado, indicado en una línea o ítem de la factura. Este importe no incluye los
tributos (IGV, ISC y otros Tributos) ni los cargos globales.-->
<PrcNetoItem> SD1->D1_VUNIT + (Suma Impuestos del Item/SD1->D1_QUANT) </PrcNetoItem> <!-- Precio de venta unitario por ítem y código, Obligatorio. Dentro del ámbito tributario, es el monto correspondiente al precio unitario facturado del bien vendido o servicio vendido. Este monto es la suma total que queda obligado a pagar el adquirente o usuario por cada bien o servicio. Esto incluye los tributos (IGV, ISC y otros Tributos) y la deducción de descuentos por ítem. -->
<DescuentoMonto>SD1->D1_VALDESC</DescuentoMonto>
Desgloce De Impuestos por Item x impuesto
Obtener los impuestos de la SFB dónde SFB->FB_POLVRO <> 0 y obtener D1_VALIMPN, D1_BASEIMPN y D1_ALQIMPN . Dónde N= SFB->FB_POLVRO.

<ImpuestosDet>
<TipoImp>SFB->FB_CODIMP</TipoImp> Llenar este campo conforme a catálogo No.05 SUNAT
<CodTasaImp>SFB->FB_CODTAR</CodTasaImp>Si el impuesto es IGV utilizar Catálogo No. 07, si el impuesto es ISC utilizar Catálogo No. 08


<TasaImp>SFB->FB_ALIQ</TasaImp>
<MontoBaseImp>SD1->D1_BASIMPN</MontoBaseImp>
<MontoImp>SD1->D1_VALIMPN</MontoImp>
</ImpuestosDet>
Finalizar nodo detalle
<MontoBrutoItem> SD1->D1_TOTAL</MontoBrutoItem>
<MontoNetoItem> SD1->D1_TOTAL</MontoNetoItem>
<MontoTotalItem> SD1->D1_TOTAL</MontoTotalItem>
</Detalle>
Referencia
Sólamente si el documento es Nota de Crédito
Obtener cada document relacionado a la nota de crédito de la siguiente manera:
Si el campo D1_NFORI es vacío, seleccionar de la SE5 Movimientos Bancarios: E5_PREFIXO,E5_NUMERO,E5_TIPO,E5_CLIFOR,E5_LOJA para aquellos registrso donde E5_FILIAL=XFILIAL("SE5") y E5_DOCUMEN = F1_SERIE+F1_DOC+Space(TamSx3("E5_PARCELA"))+F1_ESPECIE+F2_LOJA
Si el campo D1_NFORI es diferente de vacío, deberá buscar el documento en SF2 y generar el siguiente nodo:
<Referencia>
<NroLinRef>1</NroLinRef>
<TpoDocRef>01</TpoDocRef>
<SerieRef>F2_SERIE2 Sin espacios en blanco</SerieRef>
<NumeroRef> F2_DOC A 8 caracteres </NumeroRef>
<FechaRef> + F2_EMISSAO en formato yyyy-MM-ddThh:mm:ssZ + '</FechaRef>
<CodRef> + SF1->F1_TIPREF + </CodRef>'  Catálogo 09 Tipos de Nota de crédito Electrónica

<RazonRef> + F2_MOTIVO + '</RazonRef>
</Referencia>


Elemento CAE
<CAE>
<Tipo>Fijo String</Tipo>
<NumeroInicial>F1_DOC</NumeroInicial>
<NumeroFinal>F1_DOC</NumeroFinal>
<NroResolucion>F1_DOC</NroResolucion>
<FechaResolucion>F1_EMISSAO</FechaResolucion>
</CAE>
Elemento TimeStamP
Fecha y hora en que se generó el documento con formato yyyy-MM-ddThh:mm:ssZ.
<TimeStamp>SF1->F1_EMISSAO</TimeStamp>
Al finalizar este elemento, deberá cerrar el nodo document
</Document>
Dejar punto de Entrada para agregar campos personalizados con el nombre de M485NCC. (Ver Funcionalidad del fuente NFAXMLECU.PRW para puntos de Entrada)

Finalizar document DTE
</DTE>
Factura de Venta / Nota de Débito /Boleta de Venta
Si el tipo es 1 Salida, deberá obtener los registros del Encabezado de Factura de Venta SF2 en dónde: F2_DOC=Número de Documento, F2_SERIE=Serie, F2_CLIENTE= Codigo Cliente , F2_LOJA= Tienda del cliente y F2_ESPECIE= Especie (NF= Factura Venta, NDC= Nota Débito)
Obtener detalle del documento de la tabla SD2 para el documento en proceso. Y generar el xml como a continuación:
Independientemente del tipo de documento deberá llevar
<Documento ID=" + ALLTRIM(SF2)>F2_SERIE2) + SF2> F2_DOC a tamaño 8 caracteres ">
<Encabezado>
<IdDoc>
<Ambiente> AMBIENTE = 1 colocar 2 sino 1 </Ambiente>
<TipoEmision>NORMAL</TipoEmision>
<ContenidoTC>Vacío</ContenidoTC>
<Tipo> Si ESPECIE = 'NF' y además la serie inicia con FXXX Colocar '01', Si ESPECIE = 'NF' y además la serie inicia con BXXX Colocar '03', Si especie ='NDC' colocar 08</Tipo>
<Serie>F2_SERIE2 a 4 caracteres, Para las Facturas la Serie debe Iniciar con FXXX, si es boleta de venta debe iniciar con BXXX</Serie>
<Numero>F2_DOC a tamaño 8 caracteres</Numero>
<Estado>Valor Fijo: ORIGINAL</Estado>
<NumeroiNTERNO>F2_DOC a tamaño 8 caracteres</NumeroInterno>
<FechaEmis>F2_EMISSAO en formato YYYY-MM-ddThh:mm:ssZ</FechaEmis>
</IdDoc>
<Emisor>
<TipoContribuyente>Dejar en blanco sin espacios</TipoContribuyente>
<RegimenContable>Dejar en blanco sin espacios </RegimenContable>
<IDEmisor>SM0->M0_CGC</IDEmisor>
<NmbEmisor>SM0->M0_NOME</NmbEmisor>
<NombreEmisor>
<PrimerNombre>SM0->M0_NOMECOM</PrimerNombre>
</NombreEmisor>
<FechaInicioActividades>2016-01-01</FechaInicioActividades>
<DomFiscal>
<Calle>SM0->M0_ENDENT</Calle>
<Departamento>>SM0->M0_CIDENT </Departamento>
<Distrito>SM0->M0_CIDENT </Distrito>
<Ciudad>SM0->M0_CIDENT</Ciudad>
<Municipio>SM0->M0_CIDENT</Municipio>
<Pais>PE</Pais> * Conforme tabla ISSO-3166-1 a dos caracteres Para perú corresponde código PE*
*<CodigoPostal>SM0->M0_CEPENT</CodigoPostal> CATÁLOGO DE UBÍGEOS DEL INEI *
</DomFiscal>
<LugarExped>
<Calle> SM0->M0_ENDENT </Calle>
</ LugarExped >
</Emisor>
<Receptor>
<DocRecep>
<TipoDocRecep> Buscar en SX5 em la Tabla XD com la clave del campo SA1->A1_TIPODOC Y colocar X5_DESCSPA </TipoDocRecep> Si el cliente se identifica como extranjero (A1_EST='EX'), deberá colocar el código 0.
<NroDocRecep>SA1->A1_CGC</NroDocRecep> Si el cliente se identifica como extrangero, beberá colocar "-". Si el A1_TIPDOC <> 6, deberá colocar A1_PFISICA
</DocRecep>
<NmbRecep>SA1->A1_NOME</NmbRecep>
<DomFiscalRcp>
<Calle>a1_end</Calle>
<Departamento>com A1_EST obtener de tabla 12 em SX5</Departamento>
<Distrito>SA1->A1_BAIRRO</Distrito>
<Ciudad>SA1->A1_BAIRRO</Ciudad>
<Municipio>SA1->A1_BAIRRO</Municipio>
</DomFiscalRcp>
</Receptor>
<Transporte>
<MedioTransporte>
<MetodoTransp>MetodoTransp</MetodoTransp>
</MedioTransporte>
</Transporte>
<Totales>
<Moneda>Obtener con F2_MOEDA Según el ISSO-4217 monedas internacionales a tabla XG en SX5</Moneda>
<SubTotal>SF2->F2_VALMERC</SubTotal>
<MntDcto>SF2->F2_DESCONT</MntDcto>
<MntRcgo>0.00</MntRcgo>
<VlrPagar>SF2->F2_VALBRUT</VlrPagar>
<MontoPropina>0.00</MontoPropina>
Para el siguiente elemento, deberá obtener los siguientes submontos y generar un nodo por cada uno de ellos en caso de existir:
Según el Catálogo No. 14

Según el catálogo No. 14 deberán anexarse a cada submonto los concepto si estos existen en la factura y definiéndose de la manera siguiente:
Submonto 1001 Total Valor venta Operaciones Gravadas
<TotSubMonto>
<Tipo>1001</Tipo>
<MontoConcepto> SF2-F2_VALMERC – Total de Operaciones Exoneradas </MontoConcepto>
</TotSubMonto>
Submonto 1002 Total valor de venta Operaciones Inafectadas
Generar nodo como a continuación:
<TotSubMonto>
<Tipo>1002</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
Submonto 1003 Total valor venta Operaciones exoneradas

Por cada ítem del documento, con SD2->D2_TES recorrer los impuestos variables SFB que pertenezcan a la TES, y obtener el campo SFB->FB_CPOLVRO, mediante este campo buscar en Libros Fiscales SF3 en donde
SF3->F3_FILIAL = XFILIAL("SF3")
SF3->F3_NFISCAL = SF2_F2_DOC
SF3->F3_SERIE = SF2->F2_SERIE
SF3->F3_CLIFOR = SF->F2_CLIENTE
SF3->F3_LOJA = SF2->F2_LOJA
Y sumar SF3->F3_BASEIMPX para quellos impuestos en donde SFB->FB_ALIQ == 0 Y SFB->FB_CLASSE = Tipo Impuesto
Si el documento no tiene operaciones exoneradas, generar el nodo en 0's de la siguiente manera
<TotSubMonto>
<Tipo>1003</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
Submonto 1004 Total valor de venta Operaciones gratuitas
Generar el nodo en 0's de la siguiente manera
<TotSubMonto>
<Tipo>1004</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
Submonto 1005 Sub total de venta
<TotSubMonto>
<Tipo>1005</Tipo>
<MontoConcepto>SF2->F2_VALMERC con 2 decimales sin espacios</MontoConcepto>
</TotSubMonto>
</Totales>
Submonto 2001 Percepciones
Por cada ítem del documento, con SD2->D2_TES recorrer los impuestos variables SFB que pertenezcan a la TES, y obtener el campo SFB->FB_CPOLVRO, mediante este campo buscar en Libros Fiscales SF3 en donde
SF3->F3_FILIAL = XFILIAL("SF3")
SF3->F3_NFISCAL = SF2->F2_DOC
SF3->F3_SERIE = SF2->F2_SERIE
SF3->F3_CLIFOR = SF2->F2_CLIENTE
SF3->F3_LOJA = SF2->F2_LOJA
Y sumar SF3->F3_VALIMPX para quellos impuestos en donde SFB->FB_ALIQ <> 0 Y SFB->FB_CLASSE = Tipo Percepción
<TotSubMonto>
<Tipo>1003</Tipo>
<MontoConcepto>SUMA de SF3->F3_VALIMP</MontoConcepto>
</TotSubMonto>
Si el documento no tiene operaciones percepciones, no deberá generar nodo.
Submonto 2002 Retenciones
Generar nodo de la siguiente manera:
<TotSubMonto>
<Tipo>1003</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>

Submonto 2003 Detracciones
Por cada ítem del documento, con SD2->D2_TES recorrer los impuestos variables SFB que pertenezcan a la TES, y obtener el campo SFB->FB_CPOLVRO, mediante este campo buscar en Libros Fiscales SF3 en donde
SF3->F3_FILIAL = XFILIAL("SF3")
SF3->F3_NFISCAL = SF2_F2_DOC
SF3->F3_SERIE = SF2->F2_SERIE
SF3->F3_CLIFOR = SF2->F2_CLIENTE
SF3->F3_LOJA = SF2->F2_LOJA
Y sumar SF3->F3_VALIMPX para quellos impuestos en donde SFB->FB_ALIQ <> 0 Y SFB->FB_CLASSE = Tipo Detracción. Si la suma es mayor a 0 generar nodo de la siguiente manera:
<TotSubMonto>
<Tipo>2003</Tipo>
<MontoConcepto>SUMA de SF3->F3_VALIMP</MontoConcepto>
</TotSubMonto>
Si el documento no cuenta con detracciones, no generar nodo.
Submonto 2005 Total Descuentos
<TotSubMonto>
<Tipo>2005</Tipo>
<MontoConcepto>SF2->F2_DESCONT con 2 decimales sin espacios</MontoConcepto>
</TotSubMonto>
</Totales>

Impuestos
Obtener los impuestos de la SFB dónde SFB->FB_POLVRO <> 0 y obtener F2_VALIMPN, F2_BASEIMPN y F2_ALQIMPN y FB_CODRET=' '. Dónde N= SFB->FB_POLVRO.
Por cada impuesto generar el siguiente nodo:
<Impuestos>
<TipoImp>SFB->FB_CODIMP</TipoImp>
<TasaImp>FB_ALIQ<TasaImp>
<MontoImp>SF2->F2_VALIMPN</MontoImp>
</Impuestos>
Terminar nodo Encabezado una vez obtenidos todos los impuestos.
</Encabezado>
Detalle del documento
Por cada Item encontrado del documento, generar:
<Detalle>
<NroLinDet>SD2->D2_ITEM</NroLinDet>
<CdgItem>
<TpoCodigo> SB1->B1_UM </TpoCodigo>
<VlrCodigo> SB1->B1_COD </VlrCodigo>
</CdgItem>
<DscLang>Valor fijo ES</DscLang>
<DscItem>SB1->B1_DESC</DscItem>
<QtyItem>SD2->D2_QUANT</QtyItem>
<PrcBrutoItem>SD2->PRCVEN + (SD2->D2_DESCON/SD2->D2_QUANT)</PrcBrutoItem
<PrcNetoItem> (SD2->D2_TOTAL + (SD2->D2_DESCON/SD2->D2_QUANT) + (Suma Impuestos del item / SD2->D2_QUANT) </PrcNetoItem>
<DescuentoMonto>SD2->D2_DESCON</DescuentoMonto>
Desgloce De Impuestos por Item x impuesto
Obtener los impuestos de la SFB dónde SFB->FB_POLVRO <> 0 y obtener D2_VALIMPN, D2_BASEIMPN y D2_ALQIMPN . Dónde N= SFB->FB_POLVRO.
<ImpuestosDet>
<TipoImp>SFB->FB_CODIMP</TipoImp>
<CodTasaImp>SFB->FB_CODTAR</CodTasaImp>
<TasaImp>SFB->FB_ALIQ</TasaImp>
<MontoBaseImp>SD2->D2_BASIMPN</MontoBaseImp>
<MontoImp>SD2->D2_VALIMPN</MontoImp>
</ImpuestosDet>
Finalizar nodo detalle
<MontoBrutoItem> SD2->D2_TOTAL </MontoBrutoItem>
<MontoNetoItem> SD2->D2_TOTAL </MontoNetoItem>
<MontoTotalItem> SD2->D2_TOTAL </MontoTotalItem>
</Detalle>

Sólamente si el documento es Nota de Débito
Realizar la búsqueda del documento de referencia a SF2 mediante los campos SF2->F2_NFREF y SF2->SERREF
<Referencia>
<NroLinRef>1</NroLinRef>
<TpoDocRef>01</TpoDocRef>
<NumeroRef> F2_DOC a 8 CARACTERES + </NumeroRef>
<FechaRef> F2_EMISSAO '</FechaRef>
<FechaRef> F2_TIPREF de LA NOTA DE DÉBITO '</FechaRef>  Catálogo 10 Tipos de Nota de Débito Electrónica
<RazonRef> F2_MOTIVO '</RazonRef>
</Referencia>

Elemento CAE .-
<CAE>
<Tipo>Fijo String</Tipo>
<NumeroInicial>F2_DOC</NumeroInicial>
<NumeroFinal>F2_DOC</NumeroFinal>
<NroResolucion>F2_DOC</NroResolucion>
<FechaResolucion>F2_EMISSAO</FechaResolucion>
</CAE>

Elemento TimeStamP
Fecha y hora en que se generó el documento con formato yyyy-MM-ddTHH:MI:SSZ.
<TimeStamp>SF2->F2_EMISSAO</TimeStamp>
Al finalizar este element, deberá cerrar el nodo document
</Document>
Si el documento es Factura o Boleta de Venta, dejar punto de Entrada para agregar campos personalizados con el nombre de M485NF
Si el documento es Nota de Débito, dejar punto de Entrada para agregar campos personalizados con el nombre de M485NDC
(Ver Funcionalidad del fuente NFAXMLECU.PRW para puntos de Entrada)
Finalizar document DTE
</DTE>

Ejemplo de string generada y que deberá ser retornada por la rutina creada.
<?xml version="1.0" encoding="iso-8859-1"?>
<DTE version="1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="DTE_v1.0.xsd">
<Documento ID="FA0100000008">
<Encabezado>
<IdDoc>
<Ambiente>1</Ambiente>
<TipoEmision>NORMAL</TipoEmision>
<ContenidoTC></ContenidoTC>
<Tipo>01</Tipo>
<Serie>FA01</Serie>
<Numero>00000008</Numero>
<Estado>ORIGINAL</Estado>
<NumeroInterno>0000000000008</NumeroInterno>
<FechaEmis>2016-06-06T13:29:00Z</FechaEmis>
</IdDoc>
<Emisor>
<TipoContribuyente></TipoContribuyente>
<RegimenContable></RegimenContable>
<IDEmisor>20451558383</IDEmisor>
<NmbEmisor>Grupo TOTVS 1</NmbEmisor>
<NombreEmisor>
<PrimerNombre>FITESA</PrimerNombre>
</NombreEmisor>
<FechaInicioActividades>2016-01-01</FechaInicioActividades>
<DomFiscal>
<Calle>AV. BRAZ LEME, 1631</Calle>
<Departamento>CU</Departamento>
<Distrito>CU</Distrito>
<Ciudad>CU</Ciudad>
<Municipio>CU</Municipio>
<Pais>PE</Pais>
<CodigoPostal>76116</CodigoPostal>
</DomFiscal>
<LugarExped>
<Calle>AV. BRAZ LEME, 1631</Calle>
</LugarExped>
</Emisor>
<Receptor>
<DocRecep>
<TipoDocRecep>6</TipoDocRecep>
<NroDocRecep>20100134455</NroDocRecep>
</DocRecep>
<NmbRecep>SERVICIOS DE LIMPIEZA EMPRESARIAL</NmbRecep>
<DomFiscalRcp>
<Calle>AV. CAMELINAS #1092 </Calle>
<Departamento>LIMA </Departamento>
<Distrito>BRENA</Distrito>
<Ciudad>BRENA</Ciudad>
<Municipio>LIMA</Municipio>
<Pais>PE</Pais>
<CodigoPostal>12972942</CodigoPostal>
</DomFiscalRcp>
</Receptor>
<Transporte>
<MedioTransporte>
<MetodoTransp>MetodoTransp</MetodoTransp>
</MedioTransporte>
</Transporte>
<Totales>
<Moneda>PEN</Moneda>
<SubTotal>1000.00</SubTotal>
<MntDcto>0</MntDcto>
<MntRcgo>0.00</MntRcgo>
<VlrPagar>1180.00</VlrPagar>
<VlrPalabras> UN MIL CIENTO OCHENTA PESOS</VlrPalabras>
<MontoPropina>0.00</MontoPropina>
<TotSubMonto>
<Tipo>1001</Tipo>
<MontoConcepto>1000.00</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1002</Tipo>
<MontoConcepto>0.00</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1003</Tipo>
<MontoConcepto>0.00</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1004</Tipo>
<MontoConcepto>0.00</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1005</Tipo>
<MontoConcepto>1000.00</MontoConcepto>
</TotSubMonto>
</Totales>
<Impuestos>
<TipoImp>1000</TipoImp>
<TasaImp>18.00</TasaImp>
<MontoImp>180.00</MontoImp>
</Impuestos>
</Encabezado>
<Detalle>
<NroLinDet>01</NroLinDet>
<CdgItem>
<TpoCodigo>PC</TpoCodigo>
<VlrCodigo>000002 </VlrCodigo>
</CdgItem>
<DscLang>ES</DscLang>
<DscItem>SOLVENTE LIMPIADOR 100ML</DscItem>
<QtyItem>10.00</QtyItem>
<PrcBrutoItem>100.00</PrcBrutoItem>
<PrcNetoItem>118.00</PrcNetoItem>
<DescuentoMonto>0.00</DescuentoMonto>
<ImpuestosDet>
<TipoImp>1000</TipoImp>
<CodTasaImp>10</CodTasaImp>
<TasaImp>18.00</TasaImp>
<MontoBaseImp>1000.00</MontoBaseImp>
<MontoImp>180.00</MontoImp>
</ImpuestosDet>
<MontoBrutoItem>1000.00</MontoBrutoItem>
<MontoNetoItem>1000.00</MontoNetoItem>
<MontoTotalItem>1000.00</MontoTotalItem>
</Detalle>
<CAE>
<Tipo>String</Tipo>
<NumeroInicial>0000000000008</NumeroInicial>
<NumeroFinal>0000000000008</NumeroFinal>
<NroResolucion>0000000000008</NroResolucion>
<FechaResolucion>2016-06-06</FechaResolucion>
</CAE>
<TimeStamp>2016-06-06T13:29:00Z</TimeStamp>
</Documento>
</DTE>
MATA485 Transmisión Electrónica
Modificar rutina Mata485 Transmisión Electrónica para que permita realizar transferencias electrónicas de los documentos :

  • Factura de venta
  • Nota de Débito
  • Nota de Crédito
  • Boleta de Venta


La transmisión será apoyada por el PAC de SIGNATURE, y a través de TSS.

Al ingresar a la opción Transmisión Electrónica (MATA485) se desplegará la pantalla de preguntas MATA485 (ver Prototipo 1):

  • Tipo de documento: Podrá seleccionar entre las opciones

 

        • Factura,
        • Nota de Débito
        • Nota de Crédito
        • Boleta de Venta

 

  • Serie: Serie del documento.


Una vez configurados los parámetros. Se deberá llenar el browser de acuerdo a (ver Prototipo 2):
Si Tipo de documento es igual a 1 Factura deberá filtrar los documentos de la SF2 dónde F2_ESPECIE = 'NF' y SF2->F2_SERIE2 comience con 'F'
Si Tipo de documento es igual a 2 Nota de Débito deberá filtrar los documentos de la SF2 dónde F2_ESPECIE ='NDC'
Si Tipo de documento es igual a 3 Nota de Crédito deberá filtrar los documentos de la SF1 dónde F1_ESPECIE='NCC'
Si Tipo de documento es igual a 4 Boleta de Venta deberá filtrar los documentos de la SF1 dónde F1_ESPECIE='NF' y SF2->F2_SERIE comience con 'B'
En la opción de Acciones Relacionadas deberá contar con las opciones:

  • Buscar
  • Walkthru
  • Entorno
  • Monitor
  • Act. De Cert. Manual
  • Visualizar


Y a lado de la opción de Acciones Relacionadas, las sub-opciones de:

  • Configuración
  • Ambiente
  • Transmitir


Se deberá generar cliente para los siguientes Web Services TSSSIGNATURE Y NFECFGLOC para poder ser consumidos por la rutina en las siguientes opciones:
Opción, Configuración
Esta opción permite ejecutar un wizard de configuración con el que se realicen las siguientes operaciones:
En la primer ventana del Wizard, informará al usuario el propósito del mismo (ver Prototipo 3)
En la segunda ventana del wizard (Prototipo 4), pedirá los siguientes datos:

  • Informe la URL del Servidor Totvs Services: Web services TSS. Campo tipo carácter de 100 caracteres, obligatorio.
  • Informe URL de conexión con Signature: Web Services para que TSS realice el envío de los documentos. Conexión a xDoc.
  • Informe Area: Área a la que será enviado el documento.
  • Informe Contraseña: Contraseña de conexión de la cuenta del cliente en el sistema signature.


Si alguno de los datos anteriores no es válido o no fue introducido, deberá enviar mensaje al usuario indicando qué dato está faltando y no continuar con el proceso.
Al seleccionar el botón Siguiente deberá realizar:

  1. En el parámetro MV_SIGNAWS deberá registrar el URL de los Web Services del TSS (ver Prototipo 3)
  2. Se deberá consumir el Web Method ADMEMPLOC del Web Service NFECFGLOC, con el fin de registrar la empresa que enviará los documentos fiscales al TSS.

Usertoken : "TOTVS"
Empresa:

  • BAIRRO = SM0->M0_BAIRENT
  • CIDADE = SM0->M0_CIDCOB
  • COD_PAIS=604
  • CODFIL = FWGETCODFILIAL
  • CODPROVINC = SM0->M0_ESTENT
  • COMPL= FisGetEnd(SM0->M0_ENDENT)[4]
  • CP=vacio
  • CUIT = vacio
  • DDN= vacio
  • DESCPROVINC= SM0->CIDENT


Al seleccionar el botón Siguiente deberá realizar:

  1. En el parámetro MV_SIGNAWS deberá registrar el URL de los Web Services del TSS (ver Prototipo 3).
  2. En el parámetro MV_SIGNUSR deberá guardar el URL para conexión con el sistema signature.
  3. Se deberá consumir el Web Method ADMEMPLOC del Web Service NFECFGLOC, con el fin de registrar la empresa que enviará los documentos fiscales al TSS.

Usertoken : "TOTVS"
Empresa:

  • BAIRRO = SM0->M0_BAIRENT
  • CIDADE = SM0->M0_CIDCOB
  • COD_PAIS=152
  • CODFIL = FWGETCODFILIAL
  • CODPROVINC = SM0->M0_ESTENT
  • COMPL= FisGetEnd(SM0->M0_ENDENT)[4]
  • CP=vacio
  • CUIT = vacio
  • DDN= vacio
  • DESCPROVINC= SM0->CIDENT
  • EMAIL=vacio
  • ENDERECO= FisGetEnd(SM0->M0_ENDENT)[1]
  • FANTASIA= SM0->M0_NOME
  • FAX= FisGetTel(SM0->M0_FAX)[3]
  • FONE = FisGetTel(SM0->M0_TEL)[3]
  • INSCRPROVI = SM0->M0_INSC
  • NOME= SM0->M0_NOMECOM
  • NUM= FisGetEnd(SM0->M0_ENDENT)[3]
  • REGMUN= Vacío
  • RUC= SM0->M0_CGC


Guardar el Retorno del web method para su uso posterior.

  1. Una vez obtenida la Entidad en el paso anterior, se deberá registrar la Empresa en el sistema Signature mediante el consumo del Web Method CFGEMPRESA del Web Service TSSWSSIGNATURE enviando los siguientes datos:


USERTOKEN: "TOTVS"
ENTIDADE: = Obtener Id de la Entidad del TSS llamando al método ADMEMPLOC del Web Service NFECFGLOC.
CONFIGEMPRESA:
ADMINEMAIL:. MV_SIGNADM
ADMINPASS: Campo Contraseña, dato proporcionado por el usuario en el wizard.
ADMINUSER: Campo Área informada en el wizard.
CERTIFICADO: obtener del parámetro MV_SIGNUSR
DELIVERY: False.
IMGLOGO: Obtener del parámetro MV_SIGNPAS
PRINT: True
ROLE: software
SENHA: Campo Contraseña.
STORAGE: false
Mostrar el retorno del web method en un mensaje para el usuario, dependiendo del contenido del mismo, es decir; si el retorno es .F. deberá mostrar al usuario el contenido del mensaje retornado, mismo caso si el resultado es .T. , este mensaje indicará el éxito o fracaso de la operación.

Opción, Ambiente
Esta opción debe permitir configurar el ambiente utilizando en el TSS mediante el consumo del método CFGAMBLOC do Web Service NFECFGLOC. Esto permitirá indicar al TSS el ambiente que se estará utilizando. Al ingresar a la opción preguntara (ver prototipo 6):

¿Ambiente? – Podrá seleccionar entra las opciones:
1. Producción
2. Homologación
Se deberá llamar al método con los siguientes parámetros:
USERTOKEN= "TOTVS"
ID_ENT= Obtener Id de la Entidad del TSS llamando al método ADMEMPLOC del Web Service NFECFGLOC.
AMBIENTE= 1 o 2 según la elección del usuario en el combo.
MODELO=VACIO
El retorno del método indicará el ambiente que ha sido configurado. Al finalizar la incialización del ambiente, se deberá informar al usuario el entorno configurado en un mensaje en pantalla. Prototipo 11
Opción, Transmisión
Una vez configurada la conexión hacia el TSS y configurado el ambiente a utilizar, se podrá realizar la transmisión de un documento fiscal.
Entonces al seleccionar esta opción, aparecerá un dialogo informativo de la funcionalidad de la opción además del grupo de preguntas en el cuál se configurará el intervalo con el número de documento para la transmisión.
En la primer pantalla se informará el propósito del asistente, así como el ambiente configurado en el TSS. Prototipo 7
En el botón parámetros se informarán los rangos de documentos que se enviarán al TSS. Esta pantalla deberá tener textos dinámicos que indiquen lo siguiente:
Si el tipo de documento configurado al entrar en la rutina es 1 Factura, deberá mostrarse (Prototipo 8):
¿Serie de la Factura?
¿Factura Inicial?
¿Factura Final?
Si el tipo de Documento configurado es 2 Nota de Débido, deberá mostrarse:
¿Serie de la Nota de Débito?
¿Nota de Débito Inicial?
¿Nota de Débito Final?
Si el tipo de Documento es 3 Nota de Crédito, deberá mostrarse
¿Serie de la Nota de Crédito?
¿Nota de Crédito Inicial?
¿Nota de Crédito Final?
Si el documento es 4 Boleta de Venta, deberá mostrarse
¿Serie de la Boleta?
¿De boleta de Venta?
¿A boleta de Venta?
Al seleccionar el botón Ok deberá realizar(Prototipo 9):

  • Obtener todos los registros de SF2 donde F2_ESPECIE sea igual según las siguientes condiciones:


Si Tipo de documento es igual a 1 Factura deberá filtrar los documentos de la SF2 dónde F2_ESPECIE = 'NF' y SF2->F2_SERIE2 inicie con 'F'
Si Tipo de documento es igual a 2 Nota de Debito deberá filtrar los documentos de la SF2 dónde F2_ESPECIE ='NDC'
Si Tipo de documento es igual a 3 Nota de Crédito deberá filtrar los documentos de la SF1 dónde F1_ESPECIE='NCC'.
Si Tipo de documento es igual a 4 Boleta de Venta deberá filtrar los documentos de la SF2 dónde F2_ESPECIE=''NF' y SF2->F2_SERIE2 inicie con 'B'

  • Generar el xml correspondiente por cada documento haciendo uso de la función NFAEXmlPER que se explica al inicio del documento.
  • Una vez generados los xml correspondientes por documento, invocar al método RemessaDoc del Web Service TSSSignature enviando los siguientes datos:


USERTOKEN: "TOTVS"
ENTIDADE: Obtener Id de la Entidad del TSS llamando al método ADMEMPLOC del Web Service NFECFGLOC.
REMESSA
ID = F2_DOC/F1_DOC según sea el caso
MODELO:
Si el Tipo de Documento es 1 Factura entonces S1,
Si el Tipo de Documento es 2 Nota Crédito entonces S4,
Si el Tipo de documento es 3 Nota Débito entonces S5
Si el tipo de Documento es 4 Boleta de venta entonces SD
XML = Generado por la función mencionada en la espec del paso anterior codificado en Base 64
Almacenar el retorno del web Method y al terminar el proceso mostrar al usuario en un log en pantalla según los errores o aceptaciones por documento. Prototipo 12
Actualizar el estatus del documento enviado al TSS F1_FLFTEX/F2_FLFTEX=1. Este deberá reflejarse al retornar al browse el estatus debe cambiar de color.


Opción Monitor

Permitirá visualizar los documentos que han sido transmitidos al TSS. Al entrar en la opción desplegará un cuadro de preguntas en dónde se indicará lo siguiente:

  • Serie
  • Documento inicial
  • Documento final


Estas preguntas deberán variar dependiento del tipo de documento configurado al entrar en la rutina principal, es decir
Si el tipo de documento configurado al entrar en la rutina es 1 Factura, deberá mostrarse (Prototipo 13):
¿Serie de la Factura?
¿Factura Inicial?
¿Factura Final?
Si el tipo de Documento configurado es 2 Nota de Débido, deberá mostrarse:
¿Serie de la Nota de Débito?
¿Nota de Débito Inicial?
¿Nota de Débito Final?
Si el tipo de Documento es 3 Nota de Crédito, deberá mostrarse
¿Serie de la Nota de Crédito?
¿Nota de Crédito Inicial?
¿Nota de Crédito Final?
Si el tipo de Documento es 4 Boleta de Venta, deberá mostrarse
¿Serie de la Boleta de Venta?
¿Boleta de Venta Inicial?
¿Boleta de Venta Final?
Al confirmar los parámetros, deberá comsumir el web Method MonitorDoc del web Service TSSSIGNATURE del a siguiente manera:
USERTOKEN= "TOTVS"
ENTIDADE= Obtener Id de la Entidad del TSS llamando al método ADMEMPLOC del Web Service NFECFGLOC.
MODELO = Si el Tipo de Documento es 1 Factura entonces S1,
Si el Tipo de Documento es 2 Nota Crédito entonces S4,
Si el Tipo de documento es 3 Nota Débito entonces S5
Si el Tipo de Documento es 4 Boleta de Venta entonces SD
MONITORSIG
IDINICIAL = Documento Inicial
IDFINAL = Documento Final

El resultado deberá ser expuesto en pantalla en un listbox(Prototipo 14) con los siguientes datos:
Status :
Si el campo Satus del retorno del web method corresponde con los siguientes códigos, deberá pintar según el color
Si Status es 1 Recibido por TSS Color Azúl
Si Status es 4 Aguardando procesamiento Color Amarillo
Si Status es 5 Documento Rechazado Color Rojo
Si Status es 6 Documento Autorizado Color Verde
Documento
Si el Tipo de Documento es 1 Factura entonces mostrar en el título "Número de Factura",
Si el Tipo de Documento es 2 Nota Débito entonces mostrar en el título "Número de Nota de Débito",
Si el Tipo de documento es 3 Nota Crédito entonces mostrar en el título "Número de Nota de Crédito"
Si el Tipo de documento es 4 Boleta de Venta entonces mostrar en el título "Número de Boleta de Venta"

Ambiente: Si el retorno del campo Ambiente es 1 colocar "Producción", si es 2 colocar "Homologación".
Fch. Aut. : Fecha de Autorización del Documento
Hr. Aut.: Hora de Autorización del documento
Mensaje: Mensaje retornado
Recomendación: si el envío para el sistema signature tuvo algún problema, en esta columna será informado según el retorno del web method.
En la parte inferior derecha se encontrará un conjunto de botones cuya funcionalidad es la siguiente:

  • Ok: Al dar clic en esta opción, deberá permitir detonar la funcionalidad de la Act. De Cert. Manual (Actualización Manual de Certificados)
  • Schema: Abrirá una ventana nueva en la que mostrará el xml enviado a signature, este podrá obtenerse consultando el documento usando el web method MonitorDoc, utilizando la propiedad DOCSIGRET:LOTE:XML. Prototipo 17
  • Leyenda: Desplegará una ventana mostrando los colores y su respectivo significado según el estatus del documento. Prototipo 16
  • Refresh: Permitirá realizar una nueva llamada al web Method MonitorDoc del web Service TSSSIGNATURE y rellenar el listbox con los resultados arrojados por la nueva consulta.


Act. De Cert. Manual (Actualización Manual de Certificados)
Este procedimiento deberá permitir comsumir el Web Method ConsultaDoc (el cual es descrito en la próxima sección) que devolverá los documentos que han sido retornados por signature al TSS y que fueron correctamente certificados.
Al detonar la funcionalidad,se visualizará una pantalla de proceso que indique al usuario que se esta realizando obtención de los documentos para la actualización. Prototipo 18
Se deberá enviar los siguientes parámetros de entrada al web method ConsultaDoc
USERTOKEN= "TOTVS"
ENTIDADE= Obtener Id de la Entidad del TSS llamando al método ADMEMPLOC del Web Service NFECFGLOC.
MODELO = Si el Tipo de Documento es 1 Factura entonces ó 4 Boleta de Venta SD,
Si el Tipo de Documento es 2 Nota Crédito entonces S4,
Si el Tipo de documento es 3 Nota Débito entonces SD
Si se envía vacío deberá traer todos los documentos.
DOCINI=Documento Inicial para consulta
DOCFIN=Documento Final para consulta

Una vez recebido el retorno del web service, se deberá actualizar los campos en SF1 y SF2 como se describe a continuación:
Buscar el documento según sU Modelo
S1= Factura se buscará en SF1
S5= Nota de débito buscar en SF2
Dónde F2_DOCUMENT= ID del documento retornado y especie = Si Modelo=S1 entonces "NF", si modelo=S5 entonces "NDC"
Si modelo S4= Nota de crédito buscar en SF1 Dónde F1_DOCUMENT= ID del documento retornado y especie = Si Modelo=S4 entonces "NCC"
Y actualizar:

  • Se debera procesar el xml timbrado para obtener el número de autorización del elemento TextData->XMLFile->Extensions->Extension->Numero_Autorización y asignar al campo SF1->F1_NUMAUT/SF2->F2_NUMAUT , de la misma manera obtener fecha de autorización TextData->XMLFile->Extensions->Extension->Fecha_autorizacion y asignar al campo SF1->F1_FECAUT/SF2->F2_FECAUT, así mismo se deberá actualizar el campo F1_FLFTEX/F2_FLFTEX con el estatus retornado.

Si el estatus es igual a Autorizado por la SRI (estatus = 6), adeberá generarse el archivo xml timbrado en la carpeta indicada en el parámetro MV_CDFDOCS con el nombre formado por : serie + documento + especie + pefijo "-ok" + extensión xml. El prefijo "-ok" indicará que el documento fue aceptado y timbrado por el SUNAT.
Ejemplo: A 000123456NF-OK.XML
Al finalizar el proceso, deberá informar al usuario sobre el término del proceso mediante mensaje al usuario además se deberá refrescar browse principal con los nuevos estatus de los documentos. Prototipo 19
Web Method ConsultaDoc
LocxNF
Modificar esta rutina para agregar los campos F2_SERREF,F2_NFREF,F2_MOTIVO, F2_TIPREF, F2_SERIE2 para país Perú y el tipo de documento sea Nota de Débito . Agregar al encabezado de la Nota de Crédito los campos F1_MOTIVO, F1_TIPREF,F1_SERIE2.
Si el tipo de documento es Factura de Venta, deberá mostrar el campo F2_SERIE2.

Se deberá modificar el diccionario de datos para que el campo F1_SERIE2/F2_SERIE2 no sea editable y este dato se rellene con el contenido FP_SERIE2 al informar el campo F1_SERIE/F2_SERIE.
Prototipo 21

MATA992
Deberá agregarse un nuevo campo para la serie 2 (FP_SERIE2) y podrá ser alterado mediante la operación Modificar.
Prototipo 22
MATA468N
Al generar la nota fiscal a partir de un pedido de Venta o Remisión, obtendrá el campo FP_SERIE2 mediante la serie informada y deberá grabarlo en el campo F2_SERIE2.
Función LxExSer2 ()
Deberá desarrollar la función LxExSer2 dentro del archivo fuente LOCXnf2.PRW. Esta función permitirá validar el uso de la serie 2 y deberá asignarse al campo F1_SERIE/F2_SERIE. Si estos campos son llamados de la rutina Factura de Venta,Remision de Venta,Nota de Debito/Credito (MATA467N/MATA462N/MATA465N respectivamente), la validación deberá realizar una búsqueda en la tabla SFP para la especie en proceso y llenar el campo F1_SERIE2/F2_SERIE2 según sea el caso.
Tablas Utilizadas

  • SF1– Factura de venta
  • SD1– Items de facturas de ventas
  • SF2– Factura de Salida
  • SD2– Items de facturas de Salida
  • SFB– Impuestos Variables
  • SF3 – Libros Fiscales
  • SB1– Productos
  • SM0– Sucursales
  • SA1– Clientes
  • SX5– Tabla XD Tipos de Documentos se deberá habilitar para Perú.


Tablas Genéricas SX5:
Deberá crear las siguientes tablas conforme el catálogo correspondiente.

    • XD – Tipos de Documentos (Catálogo 06 )
    • XE – Tipos de Nota de Crédito Electrónicas (Catálogo 09)
    • XF – Tipos de Monedas ISO 4217 (Catálogo 02)
    • XG – Tipos de Nota de Crédito Electrónicas (Catálogo 10)

 

Protótipo de Pantalla


Prototipo 1



Prototipo 2



Prototipo 3





Prototipo 4


Prototipo 5




Prototipo 6


Prototipo 7

Prototipo 8



Prototipo 9




Prototipo 11




Prototipo 12




Prototipo 13




Prototipo 14



Prototipo 15





Prototipo 16

Prototipo 17


Prototipo 18

Prototipo 19


Prototipo 20


Prototipo 21





Prototipo 22

Reglas de Integridad


Explicada en la sección de regla de negocio.

Release Notes

 

Módulo

SIGAFAT

Función

MATA485

Situación/Requisito

PCREQ-5713

Solución/Implementación

Modificación de la rutina MATA485 para localización de Perú con integración a TSS.




Diccionario de Datos

  • Diccionario de Datos


SFB- Impuestos Variables

Campo

FB_CLASSE

Tipo

C

Tamaño

1

Decimal

0

Picture

 

Contexto

Real

Propiedad

Modificar

Título

Clase Imp.

Descripción

Clase de impuesto

Help de Campo

 

Lista

I=Impuesto;P=Percepcion;R=Retencion

Inicializa Estd

 

Validación

PERTENCE("IPR")

Uso

Usado

Campo

FB_CODTAR

Tipo

C

Tamaño

4

Decimal

0

Picture

 

Contexto

Real

Propiedad

Modificar

Título

Cod. Tasa

Descripción

Codigo de Tasa

Help de Campo

Código de la tasa del impuesto según SRI.

Lista

 

Inicializa Estd

 

Validación

 

Uso

Usado

Campo

FB_CODIMP

Tipo

C

Tamaño

1

Decimal

0

Picture

 

Contexto

Real

Propiedad

Modificar

Título

Cod. Impuesto

Descripción

Codigo de Impuesto

Help de Campo

Código del del impuesto según SRI.

Lista

 

Inicializa Estd

 

Validación

 

Uso

Usado


Nuevos campos en SF1- Encabezado de Factura Entrada

Campo

F1_FECAUT

Tipo

D

Tamaño

8

Decimal

0

Picture

 

Contexto

Real

Propiedad

Modificar

Título

Fch Aut

Descripción

Fecha de autorización

Help de Campo

Fecha de Autorización Digital

Lista

 

Inicializa Estd

 

Validación

 

Uso

Usado

Campo

F1_FLFTEX

Tipo

C

Tamaño

1

Decimal

0

Picture

 

Contexto

Real

Propiedad

Modificar

Título

Status Trans

Descripción

Estatus transmission Electrónica

Help de Campo

Indica el estatus del documento una vez que ha sido enviado al TSS

Lista

0=No Enviado,1=Enviado a TSS,4=Esperando procesamiento,5=Rechazado,6=Autorizado.

Inicializa Estd

0

Validación

 

Uso

Usado

 

 

Campo

F1_MOTIVO

Tipo

Carácter

Tamaño

30

Decimal

0

Formato

@!

Título

Motivo

Descripción

Motivo

Usado

Si

Obligatorio

Si

Browse

No

Contexto

Real

Propiedades

Modificar

Orden

F3

Help De Campo

Motivo por el cuál se emite el documento.

 



Campo

F1_TIPREF

Tipo

C

Tamaño

1

Decimal

0

Picture

@!

Contexto

Real

Propiedad

Modificar

Título

Tipo Nota de C

Descripción

Tipo de Nota de Crédito

Help de Campo

Tipo de Nota de Crédito Electrónica conforme a catálogo 10 de la SUNAT

F3

XE

Inicializa Estd

 

Validación

ExistCpo("SX5","XE"+M->F1_TIPREF)

Uso

Usado

Obligatorio

Si




SF2 .- Encabezado Factura de Venta

Campo

F2_NFREF

Tipo

C

Tamaño

13

Decimal

0

Picture

@!

Contexto

Real

Propiedad

Modificar

Título

Factura Ref

Descripción

Factura Refencia

Help de Campo

Factura ligada a la Nota de Débito.

Lista

 

Inicializa Estd

 

Validación

 

F3

SF2

Uso

Usado /Obligatorio

Campo

F2_SERREF

Tipo

C

Tamaño

13

Decimal

0

Picture

 

Contexto

Real

Propiedad

Modificar

Título

Serie Ref

Descripción

Serie Referencia

Help de Campo

Serie del Documento de Referencia

Lista

 

Inicializa Estd

 

Validación

MT485VLDNF(M->F2_NFREF,M->F2_SERREF,M->F2_CLIENTE,M->F2_LOJA)

Uso

Usado /Obligatorio

 

 

 

Campo

F2_FLFTEX

Tipo

Caracter

Tamaño

1

Decimal

0

Título

Status Trans

Descripción

Estatus transmisión Elec

Usado

Si

Obligatorio

No

Browse

No

Opciones

0=No Enviado; 1=Enviado a TSS; 4=Esperando procesamiento; 5=Rechazado; 6=Autorizado

Inic. Esta.

0

Contexto

Real

Propiedades

Modificar

Inic. Browse

0

Orden

E9

 

 

 

 

 

Campo

F2_FECAUT

Tipo

Data

Tamaño

8

Decimal

0

Título

Fch Aut

Descripción

Fecha de autorización

Usado

Si

Obligatorio

No

Browse

No

Contexto

Real

Propiedades

Modificar

Orden

F0

 

 

 

Campo

F2_MOTIVO

Tipo

Caracter

Tamaño

30

Decimal

0

Formato

@!

Título

Motivo

Descripción

Motivo

Usado

Si

Obligatorio

Si

Browse

No

Contexto

Real

Propiedades

Modificar

Orden

F3

Campo

F2_TIPREF

Tipo

Caracter

Tamaño

1

Decimal

0

Picture

@!

Título

Tipo Nota D.

Descripción

Tipo Nota de Débito

Help de Campo

Tipo de Nota de Debito Electrónica conforme a catálogo 10 de la SUNAT

Uso

Si

Obligatorio

Si

Browse

No

F3

XG

Contexto

Real

Propriedade

Modificar

Inicial Estándar

 

Validación

ExistCpo("SX5","XG"+M->F2_TIPREF)

Campo

F2_SERIE

Tipo

C

Tamaño

3

Decimal

0

Picture

 

Contexto

Real

Propiedad

Modificar

Título

Serie Docto

Descripción

Serie Del Documento

Help de Campo

Serie de la factura

Lista

 

Inicializa Estd

 

Validación

LxExSer2()

Uso

Usado /Obligatorio

Campo

F2_SERIE2

Tipo

C

Tamaño

4

Decimal

0

Picture

@!

Contexto

Real

Propiedad

Modificar

Título

Serie-2 Doc.

Descripción

Serie-2 Doc.

Help de Campo

Serie de la factura

Lista

 

Inicializa Estd

 

Validación

LxExSer2()

Uso

Usado /Obligatorio

Modo Edición

!(funname() $ 'MATA467N/MATA462N/MATA465N')



SA1.- Clientes

Campo

A1_TIPDOC

Tipo

C

Tamaño

2

Decimal

0

Picture

 

Contexto

Real

Propiedad

Modificar

Título

Tipo Doc.

Descripción

Tipo Documento Identidad

Help de Campo

 

Lista

 

Inicializa Estd

 

Validación

ExistCpo("SX5","TB"+M->A1_TIPDOC)

F3

TB

Uso

Usado /Obligatorio


SFP – Control de formularios

Campo

FP_SERIE2

Tipo

C

Tamaño

4

Decimal

0

Picture

@!

Contexto

Real

Propiedad

Modificar

Título

Serie 2

Descripción

Serie 2

Help de Campo

Serie a 4 digitos que será informada al SUNAT.

Lista

 

Inicializa Estd

 

Validación

NaoVazio()

Uso

Usado /Obligatorio



Parámetros
Habilitar para Perú los siguientes parámetros:
MV_SIGNAWS
Tipo: Carácter
Descripción: URL de los WebServices del TSS
MV_SIGNADM.-
Tipo: Carácter
Descripción: Email del administrador del sistema Signature
MV_SIGNPAS
Tipo: Carácter
Descripción: Password del administrador del sistema Signature
MV_SIGNUSR
Tipo: Carácter
Descripción: Usuario del sistema signature
MV_SIGNTCO
Tipo: Carácter
Descripción: Si el Contribuyente es contribuyente especial, indique su número de identificación.
MV_CFDDOCS
Tipo: Carácter
Descripción: Directorio donde se grabaran las facturas electronicas.

Grupo de Preguntas


Modificar los siguientes grupos de preguntas:
Nombre: MATA485

X1_ORDEM

01

X1_PERGUNT

Tipo Documento

X1_TIPO

C

X1_TAMAÑO

1

X1_GSC

 

X1_VAR01

MV_PAR01

X1_F3

N/A

X1_HELP

Informe el tipo de documento con el que se estará trabajando durante la transmisión electrónica:

  1. Factura
  2. Nota de Débito
  3. Nota de Crédito
  4. Boleta de Venta

X1_DEFSPA1

Factura

X1_DEFSPA2

Nota Débito

X1_DEFSPA3

Nota Crédito

X1_DEFSPA4

Boleta de Venta

X1_ORDEM

02

X1_PERGUNT

Serie

X1_TIPO

C

X1_TAMAÑO

3

X1_GSC

 

X1_VAR01

MV_PAR02

X1_F3

SERNF

X1_HELP

Informe la serie del documento





MATA485A

X1_ORDEM

01

X1_PERGUNT

¿Serie de la Factura?

X1_TIPO

C

X1_TAMAÑO

3

X1_GSC

 

X1_VAR01

MV_PAR01

X1_F3

SERNF

X1_HELP

Informe el número de Serie de la Factura

X1_DEFSPA1

 

X1_DEFSPA2

 

X1_DEFSPA3

 

X1_ORDEM

02

X1_PERGUNT

¿Factura Inicial?

X1_TIPO

C

X1_TAMAÑO

13

X1_GSC

 

X1_VAR01

MV_PAR02

X1_F3

 

X1_HELP

Informe el número Factura Inicial

X1_ORDEM

03

X1_PERGUNT

¿Factura Final?

X1_TIPO

C

X1_TAMAÑO

1

X1_GSC

 

X1_VAR01

MV_PAR03

X1_F3

 

X1_HELP

Informe el número Factura Final

X1_VALID

!Empty(MV_PAR03)



MATA485B

X1_ORDEM

01

X1_PERGUNT

¿Serie de Nota de Debito?

X1_TIPO

C

X1_TAMAÑO

3

X1_GSC

 

X1_VAR01

MV_PAR01

X1_F3

SERNF

X1_HELP

Informe el número de Serie

X1_ORDEM

02

X1_PERGUNT

¿Nota de Debito Inicial?

X1_TIPO

C

X1_TAMAÑO

13

X1_GSC

 

X1_VAR01

MV_PAR03

X1_F3

 

X1_HELP

Informe el número de Nota de Débito Inicial

X1_VALID

!Empty(MV_PAR03)

X1_ORDEM

03

X1_PERGUNT

¿Nota de Debito Final?

X1_TIPO

C

X1_TAMAÑO

13

X1_GSC

 

X1_VAR01

MV_PAR03

X1_F3

 

X1_HELP

Informe el número de nota de Débito final

X1_VALID

!Empty(MV_PAR03)


MATA485C

X1_ORDEM

01

X1_PERGUNT

¿Serie de Nota de Crédito?

X1_TIPO

C

X1_TAMAÑO

3

X1_GSC

 

X1_VAR01

MV_PAR01

X1_F3

SERNF

X1_HELP

Informe el número de Serie

X1_ORDEM

02

X1_PERGUNT

¿Nota de Crédito Inicial?

X1_TIPO

C

X1_TAMAÑO

13

X1_GSC

 

X1_VAR01

MV_PAR03

X1_F3

 

X1_HELP

Informe el número de Nota de crédito Inicial

X1_VALID

!Empty(MV_PAR03)

X1_ORDEM

03

X1_PERGUNT

¿Nota de Debito Final?

X1_TIPO

C

X1_TAMAÑO

13

X1_GSC

 

X1_VAR01

MV_PAR03

X1_F3

 

X1_HELP

Informe el número de nota de Crédito final

X1_VALID

!Empty(MV_PAR03)


MATA485D

X1_ORDEM

01

X1_PERGUNT

¿Serie de Boleta de Venta?

X1_TIPO

C

X1_TAMAÑO

3

X1_GSC

 

X1_VAR01

MV_PAR01

X1_F3

SERNF

X1_HELP

Informe el número de Serie

X1_ORDEM

02

X1_PERGUNT

¿Boleta de Venta Inicial?

X1_TIPO

C

X1_TAMAÑO

13

X1_GSC

 

X1_VAR01

MV_PAR02

X1_F3

 

X1_HELP

Informe el número de Boleta de Venta Inicial

X1_VALID

!Empty(MV_PAR03)

X1_ORDEM

03

X1_PERGUNT

¿Boleta de Venta Final?

X1_TIPO

C

X1_TAMAÑO

13

X1_GSC

 

X1_VAR01

MV_PAR03

X1_F3

 

X1_HELP

Informe el número de Boleta de Venta final

X1_VALID

!Empty(MV_PAR03)



Consulta Estándar
No aplica


Estructura de Menú


SIGAFAT->Actualizaciones->Facturación->Transmisión Electrónica

Procedimientos


No aplica

Casos de uso


Caso de Testes

Generación XML Factura de Salida

 

 

Finalidad Testes

Comprobar que la rutina genere correctamente la cadena XML que contendrá el documento fiscal.

Estimativas

 

Teste do Programador

(X ) Sim ( ) Não

Recomendaciones

 

Pré-condiciones

Registro de Cliente 000001
Registro de Factura de Venta para el cliente 000001 tienda 01
Registro de Impuestos Variables
Registro de facturas.

Pós-condiciones

Se genera cadena con xml que contendrá el documento solicitado.

Como verificar os resultados

Si la generación del xml resultó correcta, la transmisión de la factura electrónica no deberá reportar problemas relacionados a la validación del xml vs esquema DTE_v1_0.

Procedimentos

Resultados Esperados

Elaborar un programa que ejecute la función NFAEXmlPER(
1,'A','000001','01',0011234566','NF',1
)

 

Ejecutar esta nueva rutina

No debe generar ningun error ni mensaje.

Verificar que el retorno sea el xml generado.

<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2013 sp1 (

http://www.altova.com

) by Eric (Signature) -->
<DTE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0">
<Documento ID="ID0000005">
<Encabezado>
<IdDoc>
<Ambiente>01</Ambiente>
<TipoEmision>NORMAL</TipoEmision>
<ContenidoTC>0</ContenidoTC>
<Tipo>01</Tipo>
<Serie>F001</Serie>
<Numero>7</Numero>
<Estado>ORIGINAL</Estado>
<NumeroInterno>1246982</NumeroInterno>
<FechaEmis>2015-02-02T00:00:00</FechaEmis>
</IdDoc>
<Emisor>
<IDEmisor>20556695548</IDEmisor>
<NmbEmisor>SOUTH CONSULTING SIGNATURE PERU S.A.C</NmbEmisor>
<DomFiscal>
<Calle>AV.REPUBLICA DE PANAMA 3570</Calle>
<Ciudad>San Isidro, LIMA</Ciudad>
<Pais>PE</Pais>
<CodigoPostal>150131</CodigoPostal>
</DomFiscal>
</Emisor>
<Receptor>
<DocRecep>
<TipoDocRecep>06</TipoDocRecep>
<NroDocRecep>12345678901</NroDocRecep>
</DocRecep>
<NmbRecep>CUSTOMER</NmbRecep>
<NombreRecep>
<PrimerNombre>CUSTOMER</PrimerNombre>
</NombreRecep>
<DomFiscalRcp>
<Calle>Av Alfredo Salazar 247 - Mirafllores</Calle>
<Ciudad>LIMA</Ciudad>
<Pais>PE</Pais>
</DomFiscalRcp>
</Receptor>
<Totales>
<Moneda>USD</Moneda>
<VlrPagar>5900</VlrPagar>
<VlrPalabras>CINCO MIL NOVECIENTOS CON 00/100</VlrPalabras>
<TotSubMonto>
<Tipo>1001</Tipo>
<MontoConcepto>5000</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1002</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1003</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1004</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
</Totales>
<Impuestos>
<TipoImp>1000</TipoImp>
<TasaImp>18</TasaImp>
<MontoImp>900</MontoImp>
</Impuestos>
</Encabezado>
<Detalle>
<NroLinDet>1</NroLinDet>
<CdgItem>
<TpoCodigo>INT</TpoCodigo>
<VlrCodigo>BRK/COMM</VlrCodigo>
</CdgItem>
<DscItem>COMISIONES POR VENTA DE PRODUCTO</DscItem>
<QtyItem>5000</QtyItem>
<UnmdItem>MT</UnmdItem>
<PrcBrutoItem>1.18</PrcBrutoItem>
<PrcNetoItem>1</PrcNetoItem>
<OtrMnda>
<PrcOtrMon>2.70</PrcOtrMon>
<Moneda>PEN</Moneda>
<FctConv>2.70</FctConv>
</OtrMnda>
<ImpuestosDet>
<TipoImp>1000</TipoImp>
<CodTasaImp>10</CodTasaImp>
<TasaImp>18</TasaImp>
<MontoImp>900</MontoImp>
</ImpuestosDet>
<MontoBrutoItem>5900</MontoBrutoItem>
<MontoNetoItem>5000</MontoNetoItem>
<MontoTotalItem>5900</MontoTotalItem>
</Detalle>
</Documento>
<Personalizados>
<DocPersonalizado dteID="ID0000005">
<campoString name="999">AGENTE DE RETENCION SEGUN RES. SUPERINTENDENCIA</campoString>
<campoString name="Mail1">[email protected]</campoString>
<ImpresionDetalle>
<PersonNroLinDet>1</PersonNroLinDet>
<DetPersonAFN_02>COMISIONES POR VENTA SEGUN CTS AMG
POR UN TOTAL DE 5,00 TM DE SOYA
RAZON DE USD 1.00
M/N BARCELO</DetPersonAFN_02>
<DetPersonAFN_03>NA</DetPersonAFN_03>
</ImpresionDetalle>
</DocPersonalizado>
</Personalizados>
</DTE>

Caso de Testes

Generación xml Nota de Débito

 

 

Finalidade Testes

Comprobar que la rutina genere correctamente la cadena xml que contendrá el documento fiscal.

Estimativas

 

Teste do Programador

(X ) Sim ( ) Não

Recomendaciones

 

Pré-condiciones

Registro de Cliente
Registro de Nota de Débito
Registro de Impuestos Variables
Registro de facturas.

Pós-condiciones

Se genera cadena con xml que contendrá el documento solicitado.

Como verificar os resultados

Si la generación del xml resultó correcta, la transmisión de la factura electrónica no deberá reportar problemas relacionados a la validación del xml vs esquema DTE_v1_0.

Procedimentos

Resultados Esperados

Elaborar un programa que ejecute la función función NFAEXmlEcu(
1,'C','000001','01',0011234568','NDC',1
)

 

Ejecutar esta nueva rutina

No debe gerenrar ningun error ni mensaje.

Verificar que el retorno sea el xml generado.

<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2013 sp1 (

http://www.altova.com

) by Eric (Signature) -->
<DTE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0">
<Documento ID="ID0000005">
<Encabezado>
<IdDoc>
<Ambiente>01</Ambiente>
<TipoEmision>NORMAL</TipoEmision>
<ContenidoTC>0</ContenidoTC>
<Tipo>08</Tipo>
<Serie>F001</Serie>
<Numero>9</Numero>
<Estado>ORIGINAL</Estado>
<NumeroInterno>1247404</NumeroInterno>
<FechaEmis>2015-02-06T00:00:00</FechaEmis>
<FormaPago>FACTURA A 30 DIAS</FormaPago>
<FechaVenc>2015-02-27</FechaVenc>
</IdDoc>
<Emisor>
<IDEmisor>20556695548</IDEmisor>
<NmbEmisor>SOUTH CONSULTING SIGNATURE PERU S.A.C</NmbEmisor>
<DomFiscal>
<Calle>AV.REPUBLICA DE PANAMA 3570</Calle>
<Ciudad>San Isidro, LIMA</Ciudad>
<Pais>608</Pais>
<CodigoPostal>150131</CodigoPostal>
</DomFiscal>
</Emisor>
<Receptor>
<DocRecep>
<TipoDocRecep>6</TipoDocRecep>
<NroDocRecep>12345678901</NroDocRecep>
</DocRecep>
<NmbRecep>CUSTOMER</NmbRecep>
<NombreRecep>
<PrimerNombre>CUSTOMER</PrimerNombre>
</NombreRecep>
<DomFiscalRcp>
<Calle>Av Alfredo Salazar 247 - Mirafllores</Calle>
<Ciudad>LIMA</Ciudad>
<Pais>PE</Pais>
</DomFiscalRcp>
</Receptor>
<Totales>
<Moneda>USD</Moneda>
<VlrPagar>17.70</VlrPagar>
<VlrPalabras>DIECISIETE CON 70/100</VlrPalabras>
<TotSubMonto>
<Tipo>1001</Tipo>
<MontoConcepto>15</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1002</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1003</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1004</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
</Totales>
<Impuestos>
<TipoImp>1000</TipoImp>
<TasaImp>18</TasaImp>
<MontoImp>2.70</MontoImp>
</Impuestos>
</Encabezado>
<Detalle>
<NroLinDet>1</NroLinDet>
<CdgItem>
<TpoCodigo>INT</TpoCodigo>
<VlrCodigo>PXDIFF</VlrCodigo>
</CdgItem>
<DscItem>DIFERENCIA DE PRECIO</DscItem>
<QtyItem>3</QtyItem>
<UnmdItem>MT</UnmdItem>
<PrcBrutoItem>5.90</PrcBrutoItem>
<PrcNetoItem>5</PrcNetoItem>
<OtrMnda>
<PrcOtrMon>15.14</PrcOtrMon>
<Moneda>PEN</Moneda>
<FctConv>3.0280</FctConv>
</OtrMnda>
<ImpuestosDet>
<TipoImp>1000</TipoImp>
<CodTasaImp>10</CodTasaImp>
<TasaImp>18</TasaImp>
<MontoImp>2.70</MontoImp>
</ImpuestosDet>
<MontoBrutoItem>17.70</MontoBrutoItem>
<MontoNetoItem>15</MontoNetoItem>
<MontoTotalItem>17.70</MontoTotalItem>
</Detalle>
<Referencia>
<NroLinRef>1</NroLinRef>
<TpoDocRef>01</TpoDocRef>
<SerieRef>F001</SerieRef>
<NumeroRef>00000013</NumeroRef>
<FechaRef>2015-02-03T00:00:00</FechaRef>
<CodRef>02</CodRef>
<RazonRef>DIFERENCIA DE PRECIO</RazonRef>
</Referencia>
</Documento>
</DTE>

Caso de Testes

Generación xml Nota de Crédito

 

 

Finalidade Testes

Comprobar que la rutina genere correctamente la cadena xml que contendrá el documento fiscal.

Estimativas

 

Teste do Programador

(X ) Sim ( ) Não

Recomendaciones

 

Pré-condiciones

Registro de Cliente
Registro de Nota de Crédito
Registro de Impuestos Variables
Registro de facturas.

Pós-condiciones

Se genera cadena con xml que contendrá el documento solicitado.

Como verificar os resultados

Si la generación del xml resultó correcta, la transmisión de la factura electrónica no deberá reportar problemas relacionados a la validación del xml vs esquema DTE_v1_0.

Procedimentos

Resultados Esperados

Elaborar un programa que ejecute la función función NFAEXmlEcu(
1,'D','000001','01',0011234570','NCC',1
)

 

Ejecutar esta nueva rutina

No debe gerenrar ningun error ni mensaje.

Verificar que el retorno sea el xml generado.

<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2013 sp1 (

http://www.altova.com

) by Eric (Signature) -->
<DTE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0">
<Documento ID="ID0000005">
<Encabezado>
<IdDoc>
<Ambiente>01</Ambiente>
<TipoEmision>NORMAL</TipoEmision>
<ContenidoTC>0</ContenidoTC>
<Tipo>07</Tipo>
<Serie>F001</Serie>
<Numero>8</Numero>
<Estado>ORIGINAL</Estado>
<NumeroInterno>1247402</NumeroInterno>
<FechaEmis>2015-02-06T00:00:00</FechaEmis>
<FormaPago>FACTURA A 30 DIAS</FormaPago>
<FechaVenc>2015-02-20</FechaVenc>
</IdDoc>
<Emisor>
<IDEmisor>20556695548</IDEmisor>
<NmbEmisor>SOUTH CONSULTING SIGNATURE PERU S.A.C</NmbEmisor>
<DomFiscal>
<Calle>AV.REPUBLICA DE PANAMA 3570</Calle>
<Ciudad>San Isidro, LIMA</Ciudad>
<Pais>PE</Pais>
<CodigoPostal>150131</CodigoPostal>
</DomFiscal>
</Emisor>
<Receptor>
<DocRecep>
<TipoDocRecep>6</TipoDocRecep>
<NroDocRecep>12345678901</NroDocRecep>
</DocRecep>
<NmbRecep>CUSTOMER</NmbRecep>
<NombreRecep>
<PrimerNombre>CUSTOMER</PrimerNombre>
</NombreRecep>
<DomFiscalRcp>
<Calle>Av Alfredo Salazar 247 - Mirafllores</Calle>
<Ciudad>LIMA</Ciudad>
<Pais>PE</Pais>
</DomFiscalRcp>
</Receptor>
<Totales>
<Moneda>USD</Moneda>
<VlrPagar>192.93</VlrPagar>
<VlrPalabras>CIENTO NOVENTA Y DOS CON 93/100</VlrPalabras>
<TotSubMonto>
<Tipo>1001</Tipo>
<MontoConcepto>164</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1002</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1003</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1004</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
</Totales>
<Impuestos>
<TipoImp>1000</TipoImp>
<TasaImp>18</TasaImp>
<MontoImp>29.43</MontoImp>
</Impuestos>
</Encabezado>
<Detalle>
<NroLinDet>1</NroLinDet>
<CdgItem>
<TpoCodigo>INT</TpoCodigo>
<VlrCodigo>WEIGDIFF</VlrCodigo>
</CdgItem>
<DscItem>DIFERENCIA DE PESO</DscItem>
<QtyItem>0.50</QtyItem>
<UnmdItem>MT</UnmdItem>
<PrcBrutoItem>385.86</PrcBrutoItem>
<PrcNetoItem>327</PrcNetoItem>
<OtrMnda>
<PrcOtrMon>882.90</PrcOtrMon>
<Moneda>PEN</Moneda>
<FctConv>2.70</FctConv>
</OtrMnda>
<ImpuestosDet>
<TipoImp>1000</TipoImp>
<CodTasaImp>10</CodTasaImp>
<TasaImp>18</TasaImp>
<MontoImp>29.43</MontoImp>
</ImpuestosDet>
<MontoBrutoItem>192.93</MontoBrutoItem>
<MontoNetoItem>163.50</MontoNetoItem>
<MontoTotalItem>192.93</MontoTotalItem>
</Detalle>
<Referencia>
<NroLinRef>1</NroLinRef>
<TpoDocRef>01</TpoDocRef>
<SerieRef>F001</SerieRef>
<NumeroRef>00000011</NumeroRef>
<FechaRef>2015-02-02T00:00:00</FechaRef>
<CodRef>07</CodRef>
<RazonRef>DIFERENCIA DE PESO</RazonRef>
</Referencia>
</Documento>
<Personalizados>
<DocPersonalizado dteID="ID0000005">
<campoString name="Mail1">[email protected]</campoString>
<ImpresionDetalle>
<PersonNroLinDet>1</PersonNroLinDet>
<DetPersonAFN_02>POR DIFERENCIA DE PESO DE 0.94TM COBRADAS DE MENOS EN EL DESPACHO, DE 40.000TM DE ASBO-ACEITE CRUDO</DetPersonAFN_02>
<DetPersonAFN_03> DESGOMADO DE SOYA,TMFACTURADO 40.000TM x $758.00,TM DESPACHADO 40.940TM x $758.00,IFERENCIA: usd$ </DetPersonAFN_03>
<DetPersonAFN_04>712.52 + igv,CONTRATOVENTA:PES3646,
NUMERO FACTURA: 003-00252,47,FECHA FACTURA: 22-01-2007,MOTONAVE</DetPersonAFN_04>
<DetPersonAFN_05>: OCAPEMAR,DESPACHADOR: ALIFAUCETT ,POR DIFERENCIA DE PESO DE 0.94TM COBRADAS DE MENOS EN EL DESPACH</DetPersonAFN_05>
<DetPersonAFN_06>O DE 40.000TM DE ASBO-ACEITE CRUDO DESGOMADO DE SOYATM ACTURADO 40.000TM x $758.00TM DESPACHADO 40</DetPersonAFN_06>
</ImpresionDetalle>
</DocPersonalizado>
</Personalizados>
</DTE>

Caso de Testes

Generación xml Boleta de Venta

 

 

Finalidade Testes

Comprobar que la rutina genere correctamente la cadena xml que contendrá el documento fiscal.

Estimativas

 

Teste do Programador

(X ) Sim ( ) Não

Recomendaciones

 

Pré-condiciones

Registro de Cliente
Registro de Boletas de Venta
Registro de Impuestos Variables
Registro de facturas.

Pós-condiciones

Se genera cadena con xml que contendrá el documento solicitado.

Como verificar os resultados

Si la generación del xml resultó correcta, la transmisión de la factura electrónica no deberá reportar problemas relacionados a la validación del xml vs esquema DTE_v1_0.

Procedimentos

Resultados Esperados

Elaborar un programa que ejecute la función función NFAEXmlEcu(
1,'D','000001','01',0011234570','NF',1
)

 

Ejecutar esta nueva rutina

No debe gerenrar ningun error ni mensaje.

Verificar que el retorno sea el xml generado.

<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2013 sp1 (

http://www.altova.com

) by Eric (Signature) -->
<DTE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0">
<Documento ID="ID0000005">
<Encabezado>
<IdDoc>
<Ambiente>01</Ambiente>
<TipoEmision>NORMAL</TipoEmision>
<ContenidoTC>0</ContenidoTC>
<Tipo>03</Tipo>
<Serie>B001</Serie>
<Numero>1</Numero>
<Estado>ORIGINAL</Estado>
<NumeroInterno>1246982</NumeroInterno>
<FechaEmis>2015-02-02T00:00:00</FechaEmis>
</IdDoc>
<Emisor>
<IDEmisor>20556695548</IDEmisor>
<NmbEmisor>SOUTH CONSULTING SIGNATURE PERU S.A.C</NmbEmisor>
<DomFiscal>
<Calle>AV.REPUBLICA DE PANAMA 3570</Calle>
<Ciudad>San Isidro, LIMA</Ciudad>
<Pais>PE</Pais>
<CodigoPostal>150131</CodigoPostal>
</DomFiscal>
</Emisor>
<Receptor>
<DocRecep>
<TipoDocRecep>1</TipoDocRecep>
<NroDocRecep>12345678901</NroDocRecep>
</DocRecep>
<NmbRecep>CUSTOMER</NmbRecep>
<NombreRecep>
<PrimerNombre>CUSTOMER</PrimerNombre>
</NombreRecep>
<DomFiscalRcp>
<Calle>Av Alfredo Salazar 247 - Mirafllores</Calle>
<Ciudad>LIMA</Ciudad>
<Pais>PE</Pais>
</DomFiscalRcp>
</Receptor>
<Totales>
<Moneda>USD</Moneda>
<VlrPagar>5900</VlrPagar>
<VlrPalabras>CINCO MIL NOVECIENTOS CON 00/100</VlrPalabras>
<TotSubMonto>
<Tipo>1001</Tipo>
<MontoConcepto>5000</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1002</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1003</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
<TotSubMonto>
<Tipo>1004</Tipo>
<MontoConcepto>0</MontoConcepto>
</TotSubMonto>
</Totales>
<Impuestos>
<TipoImp>1000</TipoImp>
<TasaImp>18</TasaImp>
<MontoImp>900</MontoImp>
</Impuestos>
</Encabezado>
<Detalle>
<NroLinDet>1</NroLinDet>
<CdgItem>
<TpoCodigo>INT</TpoCodigo>
<VlrCodigo>BRK/COMM</VlrCodigo>
</CdgItem>
<DscItem>COMISIONES POR VENTA DE PRODUCTO</DscItem>
<QtyItem>5000</QtyItem>
<UnmdItem>MT</UnmdItem>
<PrcBrutoItem>1.18</PrcBrutoItem>
<PrcNetoItem>1</PrcNetoItem>
<OtrMnda>
<PrcOtrMon>2.70</PrcOtrMon>
<Moneda>PEN</Moneda>
<FctConv>2.70</FctConv>
</OtrMnda>
<ImpuestosDet>
<TipoImp>1000</TipoImp>
<CodTasaImp>10</CodTasaImp>
<TasaImp>18</TasaImp>
<MontoImp>900</MontoImp>
</ImpuestosDet>
<MontoBrutoItem>5900</MontoBrutoItem>
<MontoNetoItem>5000</MontoNetoItem>
<MontoTotalItem>5900</MontoTotalItem>
</Detalle>
</Documento>
<Personalizados>
<DocPersonalizado dteID="ID0000005">
<campoString name="Mail1">[email protected]</campoString>
<ImpresionDetalle>
<PersonNroLinDet></PersonNroLinDet>
<DetPersonAFN_02></DetPersonAFN_02>
<DetPersonAFN_03></DetPersonAFN_03>
</ImpresionDetalle>
</DocPersonalizado>
</Personalizados>
</DTE>