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 |
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:
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 :
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:
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 :
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):
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:
Y a lado de la opción de Acciones Relacionadas, las sub-opciones de:
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:
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:
Usertoken : "TOTVS"
Empresa:
Al seleccionar el botón Siguiente deberá realizar:
Usertoken : "TOTVS"
Empresa:
Guardar el Retorno del web method para su uso posterior.
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):
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'
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:
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:
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:
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
Tablas Genéricas SX5:
Deberá crear las siguientes tablas conforme el catálogo correspondiente.
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
Explicada en la sección de regla de negocio.
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
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:
|
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
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 |
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( |
|
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"?> ) by Eric (Signature) --> |
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 |
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( |
|
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"?> ) by Eric (Signature) --> |
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 |
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( |
|
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"?> ) by Eric (Signature) --> |
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 |
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( |
|
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"?> ) by Eric (Signature) --> |