CalcVtoFac - Calculo de Vencimiento de Factura Vtas.

INTRODUCCIÓN

 

Este servicio calcula los vencimientos de una factura a partir de la fecha del documento, la forma de pago y las condiciones de venta asociadas. Soporta esquemas complejos de pago como
cuotas, fechas fijas, días hábiles, días de la semana configurados, feriados, y separación del monto de impuestos.

INFORMACIÓN GENERAL

Nombre del servicia CalcVtoFac

Clase: CalcVtoFacBean

JNDI: nodum/servicios/contable/ini/IniCalcVtoFac

Tipo: Inicialización

Módulo: Básicos

Modo de ejecución: Directo

Repetitivo: No

PARAMETRO DE ENTRADAS

 

Parametro Literal Valor Obligario
Importe Neto Importe Neto   V
Importe Total Importe Total   V
Fecha de Calculo Fecha de Calculo   V
Forma de Pafo Cod. Forma de Pago   V
Fecha Vto. Manua Fecha Vencimiento Manual   V

FORMATO DE SALIDA

La salida es una lista de vencimientos con sus fechas y montos correspondientes.

Posicion Descripcion Tipo Ejemplo
[i][0] Fecha de Vencimiento Date 29/07/2025
[i][0] Monto asociado double 84.46

LÓGICA INTERNA

VALIDACIÓN Y CONVERSIÓN DE ENTRADA

  • Se validan y convierten los parámetros de entrada (fechas, importes, códigos).
  • Se verifica la existencia de columnas opcionales en la tabla ct_formaspag que habilitan cálculos avanzados:
    • tipo_plazolibre: indica si el plazo libre se expresa en días o meses.
    • tipo_plazocuotas: define la unidad (DÍA o MES) del espaciado entre cuotas.
    • tipo_plazoimpu: define la unidad del plazo impositivo.
    • tipo_dia: tipo de día a considerar (HÁBIL o CORRIDO).
    • cod_diaspago: referencia para el uso del servicio externo IniFecTes para ajustar días válidos de pago.
    • dia_de_semana: día de la semana preferido para vencimiento.
    • ajusta_dia: indica si debe ajustarse la fecha al final de mes si corresponde.
  • Si hay configuración de días hábiles, se cargan feriados desde la tabla gl_feriados.

OBTENCIÓN DE PARÁMETROS DE FORMA DE PAGO

  •  Se recuperan desde la tabla ct_formaspag los parámetros que afectan el cálculo:

    • cod_tipo_finic: Tipo de fecha inicial (ver sección siguiente).

    • cod_condvta: Condición de venta (ej. CONTADO, CREDITO, ANTICIPO).

    • plazo_libre: Tiempo de espera antes de generar el primer vencimiento.

    • cant_cuotas: Número total de cuotas a generar.

    • plazo_cuotas: Intervalo entre cuotas.

    • porc_prim_cuota: Porcentaje de la primera cuota.

    • ind_impu: Si los impuestos se calculan de forma separada.

    • fec_inic_impu y plazo_impu: base y duración para vencimientos impositivos.

    • fec_fija_fp: Fecha fija de pago si aplica.

    • ajusta_dia: Ajuste del día si cae en fin de mes.

    • tipo_día, tipo_plazoXXX, cod_diaspago, dia_de_semana: usados para ajustar la lógica
      de cálculo.

  • Además, si existe la tabla ct_fpcuotas, se consultan los porcentajes personalizados por número de cuota.

DETERMINACIÓN DE LA FECHA INICIAL DE CÁLCULO

Según cod_tipo_finic, se determina la fecha base para calcular los vencimientos:

 

Codigo  Descripion
1 Fecha del documento
2 Primer día de la quincena de la compra
3 Primer día del mes de la compra
5 Fecha de vencimiento ingresada manualmente
7 Fecha fija establecida en la forma de pago
8 Último día del mes de la compra
9 Primer día de la semana de la compra
10 Día específico del mes según la configuración

LÓGICA DE GENERACIÓN DE VENCIMIENTOS

A. Si la condición de venta es CONTADO o ANTICIPO:

  • Se genera un solo vencimiento con el monto total y la fecha inicial.

B. Si existen cuotas:

1. Se determina el monto de la primera cuota:

  • Según el valor de porc_prim_cuota, o
  • Según la tabla ct_fpcuotas si está definida.

2. Las siguientes cuotas se distribuyen proporcionalmente.

3. La fecha de cada cuota se calcula aplicando el plazo_cuotas desde la anterior.

4. Si está configurado como día hábil (tipo_dia = HABIL), se excluyen fines de semana y
feriados.

5. Si se define cod_diaspago, se invoca el servicio IniFecTes para ajustar la fecha al día hábil
más próximo.

6. Si se define dia_de_semana, la fecha se ajusta hacia atrás hasta ese día en la misma
semana.

7. Si ajusta_dia = S, y la cuota cae al fin de mes, se mueve al último día hábil del mes.

VENCIMIENTO DEL COMPONENTE DE IMPUESTOS (SI IND_IMPU = S)

  • Se calcula una fecha separada para el importe del IVA.
  • Usa fec_inic_impu como base y plazo_impu como duración.
  • También respeta configuraciones como:
    • tipo_plazoimpu: días o meses.
    • tipo_dia: hábil o corrido.

ajusta_dia y cod_diaspago (si aplica).

EJEMPLO

Supongamos una factura emitida el jueves 10 de julio de 2025, con:

  • Importe Neto: 3000
  • Importe Total: 3660 (IVA incluido)
  • Forma de Pago: BL3

Fecha de Vencimiento Manual: vacía (no se usa)

Configuración de la forma de pago BL3 en ct_formaspag:

  • cod_tipo_finic: 1> Fecha del documento

  • plazo_libre: 0

  • cant_cuotas: 3

  • plazo_cuotas: 30

  • porc_prim_cuota: 40

  • tipo_plazocuotas: DIA

tipo_dia: HABIL

Feriados confirmados en Uruguay (2025):

  • 18 de julio.
  • 25 de agosto.

Lógica del servicio aplicada

Fecha inicial de cálculo:

 

cod_tipo_finic = 1> se usa 10/07/2025.

Se valida si se deben usar días hábiles:

 

tipo_dia = HABIL -> se excluyen fines de semana y feriados (18/07/2025).

Distribución de cuotas:

Cuota 1: 40% de 3660 = 1464.00

Cuotas 2 y 3: 30% de 3660 = 1098.00 cada una

Cálculo de fechas de vencimiento usando días hábiles:

Cuota 1 (0 días):

10/07/2025 -> jueves -> hábil -> se mantiene.

Cuota 2 (30 días hábiles):

Avanzando desde 10/07/2025, saltando fines de semana y el feriado del 18/07, la fecha cae en:
-> 22/08/2025 (viernes)

MANUAL TÉCNICO

Cuota 3 (30 días hábiles desde la anterior):

FUNCIONALIDAD

Desde 22/08/2025, saltando fines de semana y 25/08 (feriado):

-> 03/10/2025 (viernes)

Salida:

Fecha Vencimiento Importe
10/07/2025 1464.00
22/08/2025 1098.00
03/10/2025 1098.00

EJEMPLO DÍAS CORRIDOS Y FECHA MANUAL

Este ejemplo sirve para mostrar cómo se calcula el vencimiento cuando el tipo de día es CORRIDO
(es decir, sin excluir feriados ni fines de semana), y se usa una fecha de vencimiento manual
(cod_tipo_finic = 5).

Supuestos

  • Importe Neto: 2000
  • Importe Total: 2440
  • Fecha de Documento: 01/07/2025
  • Fecha de Vencimiento Manual: 15/07/2025
  • Forma de Pago: VC1

Configuración de VC1 en ct_formaspag:

  • cod_tipo_finic = 5> usar la fecha manual
  • plazo_libre = 0
  • cant_cuotas = 2
  • plazo_cuotas = 15
  • tipo_plazocuotas = DIA
  • tipo_dia = CORRIDO
  • porc_prim_cuota = 60

Cálculo

1. Fecha inicial = 15/07/2025 (fecha vencimiento manual)

2. No se consideran feriados ni fines de semana.

3. Distribución de cuotas:

  • Cuota 1: 60% de 2440 = 1464.00
  • Cuota 2: 40% de 2440 = 976.00

4. Fechas de vencimiento:

  • Cuota 1: 15/07/2025
  • Cuota 2: 15/07 + 15 días corridos ->30/07/2025
Fecha Vencimiento Importe
20/07/2025 1830.00

 

PALABRAS CLAVES


Descargar o Imprimir


¿TE SIRVIÓ ESTE ARTÍCULO?