ÍNDICE

  1. Visión general
  2. Ejemplo de utilización
  3. Puntos de Entrada
  4. Tablas

01. VISIÓN GENERAL

Generar la información para DIOT (Declaración Informativa de Operaciones con Terceros), esto es informar todos los pagos realizados en un periodo de tiempo y separarlos por tipo de impuesto.  La información debe considerar los datos registrados en financiero. La información de DIOT generada, queda registrada en la tabla CE8 de la base de datos.

Configuraciones previas:

Configurar los parámetros  para la clasificación del tipo de IMPUESTO, de acuerdo a la configuración de Libros Fiscales:

NOMBRE

DESCRIPCIÓN

TIPO

Cpo del L.F.*

MV_LISIVAS

Lista de Numero de Libro Fiscal que son de IVA

Caracter

1,2


MV_IVARET

Lista de Numero de Libro Fiscal que son de IVA de Retencion

Caracter

3,4


* Dígito que relacionará la clasificación de los IVAs con el campo Cpo del L.F. de la tabla de Impuesto Variable (SFB).

IMPORTANTE: Los códigos  de libros fiscal  usados en un parámetro no deben estar en el otro, ya que esto puede generar inconsistencias en la información generada.

Es necesario que el Campo del Libro Fiscal (FB_CPOLVRO), en el código de impuesto IVA Incluido (IVC), utilice un número diferente a los de IVAs en sus diferentes porcentajes.


Los Documentos  a Considerar cuando se den los siguientes Supuestos:

Órdenes de Pago

Pago por Transferencias Bancaria.

Pagos en Efectivo

Pagos con Cheque: Se considerara solo al ser Debitado el Cheque en Sistema.

Compensación De Títulos

Al compensar - Títulos (NF, NDP) vs NCP o PA

Descripción del proceso

1) Elimina todos los movimientos de la tabla de Movimientos de DIOT (CE8), de acuerdo a los rangos establecidos en las preguntas (mes/año y sucursales).

2)  Seleccionar todos los pagos realizados, (SE5) que estén dentro de los rangos  seleccionados (E5_DATA este dentro de  Mes Año, E5_FILIAL  este dentro de las Sucursales seleccionadas y que no esté cancelados E5_SITUACA<>’C’)  que sean pagos efectivados (E5_RECPAG = 'P' AND E5_SITUACA <> 'C' AND E5_TIPODOC <> 'ES' AND E5_TIPODOC <> 'BA') o que sean reversiones de pagos (E5_MOTBX='CMP' AND E5_RECPAG = 'R' AND E5_SITUACA <> 'C' AND E5_TIPODOC = 'ES') o que sean orden de pago debitadas en el periodo (E5_MOTBX='NOR' AND E5_RECPAG IN ('P','R') AND E5_SITUACA <> 'C' AND E5_TIPODOC = 'VL').

Por cada registro  obtener los títulos  que se están pagando y la parte proporcional que se paga a cada documento, en moneda nacional. Si se trata de una reversión deberá decrementar el importe obtenido al total de pago del título. Para obtener el tipo de cambio, se debe analizar el origen del pago, entonces por cada registro, verificar:

Si el tipo de cambio del movimiento (E5_TXMOEDA) no está vacío y la tasa  (E5_TXMOEDA) es diferente de       1, entonces el tipo de cambio es el del movimiento (E5_TXMOEDA).

Si la moneda (E5_MOEDA)  del movimiento está vacía obtener el tipo de cambio de acuerdo a la fecha del movimiento (E5_DATA).

Obtener   los  títulos que fueron pagados y los importes de los mismos (si el movimiento tiene vacía la moneda y la tasa, también debe verificar estos datos en la compensación)

 Si es compensación (E5_MOTBX=”CMP”): 

Extraer  la información de acuerdo a cuentas por pagar (SE2).

Si  no es reversa (e5_tipodoc=’ES’)

1 . Si el tipo de movimiento (e5_tipo) es factura (NF), buscar en cuentas por pagar (SE2)  la factura (E5_PREFIXO+E5_NUMERO+E5_PARCELA+E5_TIPO+E5_CLIFOR+E5_LOJA) .

a) Si la moneda (E5_MOEDA) del movimiento está vacía  o,  el valor de la moneda 1 (E5_VALOR) y dos (E5_VLMOED2)  son diferentes y el valor de la moneda 2 (E5_VLMOED2)es diferente de cero,  obtener el tipo de cambio, de acuerdo a E2_MOEDA, E5_DATA, E5_VLMOED2 y el tipo de cambio obtenido de la operación Round(E5_VALOR / E5_VLMOED2 , MsDecimais(1) ).

b) Si no se cumple esa condición obtener  el tipo de cambio de acuerdo E5_VLMOED2, E2_MOEDA, E5_DATA, E2_TXMOEDA.

2. Si el tipo de movimiento (e5_tipo) NO es factura (NF) , buscar la factura en cuentas por pagar (SE2) por medio del campo de documento (Substr(E5_DOCUMEN ,1 , 3 + nLenDoc + 1 + 3)), contenido en el movimiento, para obtener el tipo de cambio, de acuerdo a E2_MOEDA, E2_TXMOEDA, E5_DATA y E5_VLMOED2.

Si es reversa (e5_tipodoc<>’ES’)

Deberá obtener el importe para réstalo de la Base del IETU.

Si el tipo de movimiento (e5_tipo), es factura (NF),  hacer lo mismo que el punto 1 inciso A.

Si el tipo de movimiento (e5_tipo),  NO es factura (NF),  hacer lo mismo que el punto 2.

Si  NO es una compensación (E5_MOTBX<>”CMP”):

Extraer  la información de acuerdo a la orden de pago:

Si  el tipo de movimiento fue cheque (E5_TIPO = "CH "), buscar en cuentas por pagar (SE2)  por el número  de documento del movimiento (e5_numero),  el número de orden de pago (E2_ORDPAGO) y la fecha de debitación  (E2_BAIXA).

Si  el tipo de movimiento NO  fue cheque (E5_TIPO = "CH "),  obtener el número de orden de pago del movimiento (E5_ORDREC).

De la orden de pago, obtener  los títulos que fueron pagados y los importes de los mismos (si el movimiento de se5, tiene vacía la moneda y la tasa, también debe verificar estos datos en la OP). Localizar todo los registros de la orden de pago (sek) contenida en el movimiento:

Si  el tipo de movimiento de la OP  (ek_tipo  ) es  factura o nota de cargo (NF, NDP), seleccionar el importe (ek_vlmoed1),  la moneda y tipo de cambio (si ek_moeda=1 => tc=1, si ek_moeda<>1 => ek_txmoe+ek_moeda) para obtener el valor en moneda nacional.

Si  el tipo de movimiento es cheque  (ek_tipo  = CH ), verificar si el tipo de cambio lo tomara de la OP o del día en que el cheque fue debitado, esto es  identificar si fue debitado en la misma orden de pago o después,  esto es si  la fecha de débito (E2_BAIXA) es mayor a la fecha de movimiento de pago (e5_data) o si la moneda del movimiento de la orden de pago en SE5 no está  vacía (función ObtMovVL)). Si  fue debitado después, los títulos que haya pagado el cheque serán ignorados para la base.

Se debe llevar un control de que documentos fueron pagados con qué tipo de movimiento, para identificar cuales títulos si participan de la base , por ejemplo:

En este caso, debe verificar si el cheque esta debitado en el periodo, si lo está, verificar que títulos están pagados con el mismo y serán los títulos que formaran la base, además identificar el tipo de cambio. Si no está debitado en el periodo, los títulos identificados no deben participar de la base. Si es una nota de crédito, verificar que títulos fueron compensados con esa nota y con qué tipo de cambio.

3)  Obtener la parte proporcional del pago sobre el valor del título, por cada base diferente que tenga este. Una vez obtenidos todos los pagos, buscar el títulos origen en cuentas por pagar (se2), por medio del número, serie, numero de pago, proveedor y tienda (E2_NUM,E2_PREFIXO,E2_PARCELA,E2_FORNECE,E2_LOJA), para ubicar la base de IVA y el IVA retenido. Obtener la parte proporcional de pago sobre el total del documento (e2_valor).

Por ejemplo: pondremos como valor total del título 2,875, y como importes pagados 500:

Pago/Valor del título * (Si SE2->E2_TXMOEDA <> 1, SE2->E2_TX_MOEDA,1) =Parte proporcional             500/(2875*1)=.1739

Revisar todas las bases de IVA que tenga el documento  (E2_BASIMPN) que sean diferentes de cero, por cada campo encontrado con valor, debemos extraer la parte proporcional del pago, que va a Base del impuesto y cuanto a IVA retenido:

Base a reportar:            2500*.1739*1=434.75
Iva Retenido** :             375*.1739*1=65.10 Aplica solo si N se encuentra en el parámetro MV_IVARET.
La suma de los dos da el total del pago.

4 ) Almacenar la información con los movimientos a detalle.

 CDX .- Movimientos Detalle  DIOT.


Campo

Descripción

Llenar con

CDX_FILIAL

Sucursal

Xfilial(“CDX”)

CDX_MESANO

Mes y año de generación

MV_PAR01

CDX_NUMDOC

Numero de documento o factura

E5_NUMERO

CDX_SERIE

Serie de documento o factura

E5_PREFIXO

CDX_PARCEL

Numero de parcialidad

E5_PARCELA

CDX_PROV

Codigo del proveedor

E5_FORNECE

CDX_TIENDA

Tienda del proveedor

E5_LOJA

CDX_FECEMI

Fecha del documento

E2_EMISSAO

CDX_DOCPGO

Numero de Documento de pago

E5_DOCUMEN

CDX_TIPPGO

Tipo de documento de pago

Si Compensación o NCR entonces E5_TIPO

Si Orden de pago entonces EK_TIPO

CDX_FECDOC

Fecha de Pago

Si Compensación E5_DATA

Si Orden de pago con cheque E2_BAIXA

Si Orden de pago sin cheque EK_VENCTO

CDX_IMPPGO

Importe de pago en moneda nacional

E5_VALOR *E5_TXMOEDA

Ó EK_VLMOED1

CDX_IVADEV

IVA bonificado o descontado

Si Nota de crédito (E5_TIPO=’NCP’) entonces  E5_VALOR *E5_TXMOEDA

 

Almacenar  la Base a reportar (E2_BASIMPN). Para ubicar a que campo va cada base que se calculó, se hace el proceso:

Donde  N sea menor igual a 10 obtener E2_BASIMPN, E2_VALIMPN y E2_ALIQIMPN y calcular:

Base a Reportar:= E2_BASEIMPN * (Si SE2->E2_TXMOEDA <> 1, SE2->E2_TX_MOEDA, 1)* Proporción del pago

Valor a Reportar:= E2_VALIMPN * (Si SE2->E2_TXMOEDA <> 1, SE2->E2_TX_MOEDA, 1)* Proporción del pago

Valor % Impuesto:= E2_ALIQIMPN

Base Exenta:= (E2_VALOR – (E2_BASEIMPN+E2_VALIMPN)) * * (Si SE2->E2_TXMOEDA <> 1, SE2->E2_TX_MOEDA, 1) * Proporción del Pago

IVA Pagado***:= Valor a Reportar Si N se encuentra en el parámetr o MV_LISIVAS


Condición

Impuesto

Grabar en el campo

Si base Excenta > 0

IVA EX

CE8_BASEex

Valor % Impuesto=0

IVA 0

CE8_BASE0

Valor % Impuesto=10

IVA 10 Si el pago fue aplicado antes de 2010. (YEAR(E5_DATA) < 2010)

CE8_BASE10

Valor % Impuesto=10 o 11

IVA 11 Después del 2010 Proveedor Nacional

CE8_BA1011

Valor % Impuesto=15

IVA 15 Si el pago fue aplicado antes de 2010.

YEAR(E5_EMISSAO) < 2010 Proveedor Nacional

CE8_BASE15

Valor % Impuesto =15 O 16

IVA 16 Después del 2010 Proveedor Nacional


CE8_BA1516

Valor % Impuesto=10 o 11

IVA 11 Proveedor Extranjero

CE8_BI1011

Valor % impuesto=15 o16

IVA 16 Proveedor Extranjero

CE8_BI1516

 

Almacenar el total de las bases e impuestos por cada documento:

CE8 .- Movimientos Impuestos  DIOT 

Campo

Descripción

Tipo

Llenar con

Validación

CE8_FILIAL

Sucursal

C(2)

Xfilial(“CE8”)

Obligatorio

CE8_MESANO

Mes y año de generación

C(6)

MV_PAR01

Obligatorio

CE8_NUMDOC

Número de documento o factura

C(6)

SE2->E2_NUM

Obligatorio

CE8_SERIE

Serie de documento o factura

C(3)

SE2->E2_PREFIXO

Obligatorio

CE8_PARCEL

Numero de parcialidad

C(1)

SE2->E2_PARCELA


CE8_PROV

Codigo del proveedor

C(6)

SE2->E2_FORNECE

Obligatorio

CE8_TIENDA

Tienda del proveedor

C(2)

SE2->E2_LOJA

Obligatorio

CE8_FECDOC

Fecha del documento

D(8)

SE2->E2_EMISSAO

Obligatorio

CE8_RFC

R.F.C.

C(13)

SA2->A2_CGC

Obligatorio cuando el tipo de  tercero sea igual a: 04


CE8_IDFISC

ID fiscal  para proveedores extranjeros

C(40)

SA2->A2_IDFISCA


CE8_TIPTER

Tipo de proveedor

C(2)

SA2->A2_TIPOTER

Obligatorio

CE8_TIPOPE

Tipo de operación

C(2)

SA2->A2_TPOPER

Obligatorio

CE8_PAIS

Código de país

C(2)

SA2->A2_PAIS

Obligatorio cuando el tipo de tercero sea igual a: 05


CE8_VALTOT

Valor total del título, en moneda nacional

N(12,2)

E1_VALOR


CE8_BA1516

Valor de los actos o actividades pagados a la tasa del 15% ó 16% de IVA

N(12,2)

Guardar el valor que explica la sección anterior.


CE8_BASE15

Valor de los actos o actividades pagados a la tasa del 15%  de IVA

N(12,2)

Guardar el valor que explica la sección anterior.

Aplica únicamente para periodo Enero 2010

ESTE CAMPO SE UTILIZARÁ ÚNICAMENTE PARA EFECTOS DE DECLARAR ENAJENACIÓN DE BIENES, PRESTACIÓN DE SERVICIOS O EL OTORGAMIENTO DEL USO O GOCE TEMPORAL DE BIENES CELEBRADAS CON ANTERIORIDAD AL EJERCICIO 2010, ASÍ COMO DE CONFORMIDAD CON LO ESTABLECIDO EN LAS DISPOSICIONES TRANSITORIAS DE LA LEY DEL IMPUESTO AL VALOR AGREGADO.


CE8_BA1011

Valor de loas actos o actividades pagados a la tasa del 10% u 11% de IVA

N(12,2)

Guardar el valor que explica la sección anterior.


CE8_BASE10

Valor de los actos o actividades pagados a la tasa del 10% de IVA

N(12,2)

Guardar el valor que explica la sección anterior.

Aplica únicamente para periodo Enero 2010

ESTE CAMPO SE UTILIZARÁ ÚNICAMENTE PARA EFECTOS DE DECLARAR ENAJENACIÓN DE BIENES, PRESTACIÓN DE SERVICIOS O EL OTORGAMIENTO DEL USO O GOCE TEMPORAL DE BIENES CELEBRADAS CON ANTERIORIDAD AL EJERCICIO 2010, ASÍ COMO DE CONFORMIDAD CON LO ESTABLECIDO EN LAS DISPOSICIONES TRANSITORIAS DE LA LEY DEL IMPUESTO AL VALOR AGREGADO.


CE8_BI1516

Valor de los actos o actividades pagados en la importación de bienes a la tasa del 15% o 16% de IVA

N(12,2)

Guardar el valor de acuerdo a la espec DIOT_Importaciones.


CE8_BI1011

Valor de los actos o actividad es pagados en la importación de bienes y servicios a la tasa del 10% u 11% de IVA.

N(12,2)

Guardar el valor de acuerdo a la espec DIOT_Importaciones.


CE8_BASIEX

Valor de los actos o actividades pagados en la importación de bienes y servicios por los que no se pagará el IVA (Exentos)

N(12,2)

Guardar el valor de acuerdo a la espec DIOT_Importaciones.


CE8_BASE0

Valor de los demás actos o actividades pagados a la tasa del 0% de IVA

N(12,2)

Guardar el valor que explica la sección anterior.


CE8_BASEEX

Valor de los actos o actividades pagados por los que no se pagará el IVA (Exentos)

N(12,2)

Guardar el valor que explica la sección anterior.


CE8_IVARET

Total IVA retenido.

IVA Retenido por el contribuyente.

en moneda nacional.

N(12,2)

Suma de los **Ivas Retenido.


CE8_IVADEV

Total del IVA devuelto.

IVA correspondiente a las devoluciones, descuentos y bonificaciones sobre compras.

en moneda nacional.

N(12,2)

Se debe declarar la sumatoria total del valor del Impuesto correspondiente a los títulos de Tipo NCP (Notas de Crédito Proveedor) (Cuentas por pagar) cualquiera que fuese la tasa de impuestos. Por  Cada uno de los Proveedores Relacionados


CE8_FECGER

Fecha de generación

D(8)

dDataBase


CE8_IVAPAG

Total IVA pagado excepto importaciones

N(12,2)

Suma de los ***Ivas Pagados.


CE8_IVPAGI

Total IVA pagado solo importaciones

N(12,2)

Suma de los ***Ivas Pagados.


CE8_TIPO

Tipo

C(4)

‘NCP’ Para Notas de Crédito del Proveedor sino SE2->E2_TIPO


Generar un informe de LOG de errores informando los errores encontrados, explicando las causas. Las validaciones serán de acuerdo a lo mencionado en la columna Validación, de la tabla de movimientos de DIOT (CE8). Y después de reportar los errores, avisar cuantos registros fueron grabados y cuantos tienen errores, en el mismo informe. Prototipo 04/Prototipo 05/ Prototipo 06.


Actualización 04/10/2024

Creación de campo en la tabla de Movimientos de Impuestos DIOT (CE8). Pacote 014659.

Campo

CE8_MESCAL

Tipo

C - Carácter

Tamaño

6

Decimal

0

Formato

@!

Contexto

Real

Propiedad

Modificar

Tit. Español

Mes Cálculo

Desc. Español

Mes de cálculo

Validación


F3


Obligatorio


Usado

Si

Exhibe en Browse


Help

Mes en que se realizó el cálculo.


Si un movimiento es referente al pago de un título con IVA y Retención IVA, se graban dos registros en la tabla de Movimientos de Impuestos DIOT (CE8):


02. EJEMPLO DE UTILIZACIÓN

A ingresar a la rutina, en la opción de parámetros se muestra la pantalla de la rutina incluyendo descripción de la función de la misma:

En el botón de Param. es donde se solicitara los siguientes datos:

 

Al dar  OK, se realizaran las siguientes validaciones antes de ejecutar el proceso, si no pasa por estas validaciones no procederá a ejecutar el resto del proceso:

Una vez validado,   ejecutar el proceso. Si encontró errores solicitara al usuario si requiere revisarlo, si no encontró errores, solo enviara una mensaje de finalizacion del proceso.


03. PUNTOS DE ENTRADA

3.1 FS088FINCP 

El Punto de Entrada FS088FINCP recibe un parámetro, que es el filtro utilizado en la consulta de las Notas de Crédito de Proveedor para generar DIOT, debe retornar una cadena que contenga el nuevo filtro con las características para los documentos (NCP) definidas por el usuario. La consulta es realizada sobre la tabla SE5 - Movimientos Bancarios:

User Function FS088FINCP()
	Local cQuery   := PARAMIXB[1] // Filtro para documentos NCP
	/* Valor actual del filtro 
	cQuery :="(E5_DATA BETWEEN '" + Dtos(dFecIni) + "' AND  '" + Dtos(dFecFin) + "'" AND E5_TIPO = 'NCP') AND E5_SITUACA <> 'C' ) " */

    cQuery += "AND E5_ORIGEM <> 'FINA415'"

Return cQuery

3.2 IETUFILP

Dentro de la rutina, se encuentra activado el Punto de Entrada IETUFILP, que recibe un parámetro, que es el filtro utilizado en la consulta para la Generación de Deducciones para generar DIOT, debe retornar una cadena que contenga el nuevo filtro con las características para los documentos definidas por el usuario. La consulta es realizada sobre la tabla SE5 - Movimientos Bancarios:

User Function IETUFILP()
	Local cQuery   := PARAMIXB[1] // Filtro para los movimientos
	/* Valor actual del filtro 
	cQuery := "AND (E5_MOTBX = 'CMP' OR E5_MOTBX = 'NOR') AND  ((E5_TIPODOC IN ('VL','BA','CP') AND E5_RECPAG='P') OR (E5_TIPODOC='ES' and E5_RECPAG='R')) 	ORDER BY E5_ORDREC" */

    cQuery += "AND E5_ORIGEM <> 'FINA415'"

Return cQuery

Para la utilización de los Puntos de Entrada FS088FINCPIETUFILP es importante asignar el valor del parámetro PARAMIXB[1] a la variable a retornar y adicionar las condiciones de los documentos a excluir, ya que el no hacer esta asignación podría mostrar inconsistencias en los registros a mostrar en el DIOT para Notas de Crédito de Proveedor y Deducciones.

04. TABLAS UTILIZADAS