IniAsientoVtaExp

Resumen

 

A partir de los parámetros de entrada del servicio infiere un asiento tipo y retorna las "patas" de
este asiento.

 

INFORMACIÓN GENERAL

Nombre del servicio: IniAsientoVtaExp

JNDI: nodum/servicios/contable/ini/IniAsientoVtaExp

Tipo: Inicialización

Módulo: Contable

Detalle

PARAMETROS GENERALES 

 

Indicev      Nombe      Tipo     Descripcion    
0 Empresa String Codigo de empresa
1 Decimales int Cantidad de decimales para Redondeo
2 Documento String Tipo de documento contable
3 Moneda String Codigo de moneda
4 Forma de Pago String Codigo de forma de pago
5 Fecha valor

Date (dd/mm/yyyy)

Fecha de emision del asiento
6 Fecha de vencimiento Manual Date Monto del descuento financiero
7 Importe descuento financiero Double Monto del 
8 Articulo String Codigo del articulo
9-12 Centro de costo, negocio,  actividad, recurso String Referencias analiticas
13 Importe base Double Monto base de la operacion
14-28 Impuestos (hasta 5 tipos) varios Tipo, tasa e importe por impuesto
29 Importe redondeo Double Valor de redondeo adicional
30 Signo redondeo int 1 o -1 segun corresponda
31 Ejecuta double Si el servicio debe ejecutarse 

Parametros Opcionales 

Indice Nombre Tipo Descripcion
32 Grupo contable venta String Codigo contable del articulo
33 Grilla de importes aplanados String(CSV) Asientos adicionales
34 Titular String Codigo auxiliar
35 Subcuenta String Subcuenta auxiliar 
36 - 38 Importes descuentos (comision, articulo, adicional) Double Solo si aplica
39 Grilla de redondeo de impuestos String(CSV) Ajustes por redondeo  a nivel de impuestos

Formato de salida

El servicio retorna una matriz Object  I I  salida, donde cada fila representa una "pata" del asiento contable. 

Cada fila incluye los siguientes:

Campo Descripcion
Cuenta contable Codigo contable imputado
Centro de costo Codigo de centro de costo
Negocio Codigo de negocio
Actividad Codigo de actividad
Recurso Codigo de recurso
Fecha vencimiento Fecha aplicable
Importe Monto imputado
Signo 1 o -1
Titular Cuenta auxiliar (si aplica)
Subcuenta Subcuenta (si aplica)

 

Logica Principal del servicio 

1 - Inicializa los datos de entrada

2 - Consulta la configuracion contable desde ct_asientovtas (ventas, deudores, impuestos, redondeo)

3 - Genera asientos para:

  • Importe base
  • Descuentos finacieros y adiocionales
  • Impuestos
  • Redondeos

4 -  Si laa forma de pago aplica vencimientos, utiliza el servicio IniCalcVtoFac para obtener

5 - Retorna los asientos ordenados y redondeaos

 

CASOS ESPECIALES

  • Importes en cero: impuestos con importe 0 no generan asiento.
  • Redondeo: se ajusta el ultimo asiento por cuenta para compensar.
  • Forma de pago con vencimientos: usa el servicio IniCalcVtoFac

 

EJEMPLO COMPLETO DE ENTRADA (imagen 1)

01|2|crédito|1|contado|26/02/2025|26/02/2025|0|SER11|0|002|0|0|2943.1|IVA|1|647.48|NA|O|
0|NA|0|ONA00NA000421S|000001|0|I

Detalle Técnico

CONSULTA SQL CLAVE

1 - Obtener configuracion contable (ct_asientovtas)

Si no se proporciona grupo contable (cod_grcontvta), entonces este se obtiene del artpiculo:

SELECT r.cod_grcontvta

FROM ct_articulos r

WHERE r.cod_articulo = 'SER11';

Luego:

SELECT cod_cta_vtas, cod_cta_deud, cod_ctad_impu1, cod_cta_redo,signo

FROM ct_asientovtas a

WHERE a.cod_docum = 'crédito'

AND a.cod_moneda ='1'

AND a.cod_grcontvta = 'servta'; -- Grupo del artículo


2. Ver análisis de cuenta (ct_cuentas+ct_auxiliar):

SELECT ccosto_cta, negocio_cta, actividad_cta, recurso_cta,

a.analisis_tit, a.analisis_scta, a.analisis_vto

FROM ct_cuentas c

JOIN ct_auxiliar a ON c.cod_aux= a.cod_aux

WHERE c.cod_cta ='41110201; -- 0 '11310101', etc.

3. Buscar cuenta contable para impuesto:

SELECT cod_cta_impu_d

FROM ct_impuestos

WHERE cod_tipo_impu = 'IVA' AND cod_tasa_impu = 1;

CÁLCULO MANUAL DE ASIENTOS

La tabla ct_asientovtas nos retorna el signo, el signo para deudores será exactamente el mismo,
mientras que para impuestos, redondeos y ventas será el signo contrario.

Asiento 1: Deudores (Debe)


Cuenta: 11310101
. Monto: 2943.10 + 647.48 + 0.42 = 3590.996
Signo: 1


Asiento 2: Ventas (Haber)

. Cuenta: 41110201

· Monto: 2943.10

· Signo: -1

Asiento 3: IVA (Haber)
· Cuenta: 21310201 (desde ct_impuestos)
. Monto:647.48

· Signo: -1

Asiento 4: Redondeo (Haber)
. Cuenta: 61110203

· Monto: 0.42

· Signo: -1

Esto es un ejemplo con medio de pago contado por ende no se calcula la fecha de vencimiento.
Cuando la forma de pago es distinta a la contado se usa el servicio IniCalcVtoFac, para generar
los importes y las fechas de vencimiento.

El servicio básicamente hace:

Consulta ct_formaspag para conocer:

· cod_condvta > si es 'CONTADO' o 'ANTICIPO', no divide el importe > genera 1 solo
vencimiento.

· cant_cuotas> si es mayor a 1, el importe sí se divide.

· porc_prim_cuota> porcentaje de la primera cuota.

· plazo_cuotas> número de días o meses entre cuotas.

Consulta si hay cuotas específicas definidas en ct_fpcuotas:

· Si existen, las usa para dividir los importes según porcentaje por cuota.

· Si no existen, usa cálculo estándar:

montoPrimerCuota = importe * porcentajePrimerCuota / 100;

montoCuota = (importe - montoPrimerCuota) / (cantCuotas - 1);

Genera una lista de vencimientos con:

· Fecha de cada cuota (calculada según calendario)

· Monto correspondiente a esa cuota