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.
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. |
Ó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
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):
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.
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 |
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 FS088FINCP y IETUFILP 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. |
<!-- esconder o menu --> <style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |