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
