Por favor me podrán dar una mano con ésto?
Tengo que validar que las cuentas que empiezan con 4 y/o 5 validen el campo de norma de reparto en la carga manual de asientos.
Hice lo siguiente pero no me está validando
-- Valida que el campo CeCo/Norma de Reparto no esté vacío en Carga de Asiento para cuentas grupo 4 y 5
IF (object_type = '30')
THEN
SELECT COUNT(*)INTO FOUND
FROM OJDT T0
INNER JOIN JDT1 T1 ON T1."TransId" = T0."TransId"
INNER JOIN OACT T2 ON T1."Account" = T2."AcctCode"
WHERE T0."TransId" =list_of_cols_val_tab_del AND (T2."GroupMask" = '4') OR (T2."GroupMask" = '5')
AND(T1."ProfitCode" IS NULL);
IF FOUND > 0
THEN
error= 18024;
error_message='No puede estar vacío el campo CeCo/Norma de Reparto';
END IF;
END IF;
Cargo un asiento con lineas que contienen las siguientes cuentas:
1.00…
4.00…
5.00…
no le pongo la norma de reparto y valida OK no me deja seguir.
pero si le agrego la norma de reparto a las cuentas 4 y 5 pero no a la cuenta 1 tampoco me deja seguir.
dónde estoy teniendo el error?
Muchas gracias y perdón la molestia.
Hola @Juan_Pablo_Ti
Utiliza la opción nativa que se define en el maestro de cuentas contables, te en cuenta que los SP disminuyen el rendimiento del sistema.
Andrés como siempre gracias por tu respuesta, pero en ésta me mataste, qué opción nativa me da para poner obligatorio la norma de reparto en todo el cajón 4 y 5?
Es ahí, al hacerlo de esa manera estarás casando la cuenta contable con el centro de costo, en los asientos de diario te aparecerá de manera automática, no tendrás necesidad de capturarla, sin embargo amarras una cuenta con un CeCo, es así como lo necesitas ?? o quieres que sea variable el centro de costo ??
CUENTA 4.00… $1000 DEBE CECO 0001
CUENTA 5.00… $1000 DEBE CECO 0004
CUENTA 1.00… $2000 HABER SIN CECO
Las cuentas comenzadas en 4 y en 5 deben tener SI o SI un CECO, pero es variable.
Perdón si no me expliqué bien.
Muchas gracias por tu respuesta Carrasco
Hola @Juan_Pablo_Ti, si te entiendo, al hacerlo como comenta @andresramirez siempre siempre te aparecerá el CecO al colocar la cuenta en el asiento de di, tu necesitas el CoCo variable.
a ver si entendí bien, me quedó así con los cambio pero no me valida nada ahora, no le pongo CECO a ninguna cuenta y se graba el asiento.
IF (object_type = ‘30’)
THEN
SELECT COUNT(T1.“ProfitCode”) INTO FOUND
FROM OJDT T0
INNER JOIN JDT1 T1 ON T1.“TransId” = T0.“TransId”
INNER JOIN OACT T2 ON T1.“Account” = T2.“AcctCode”
WHERE T0.“TransId” =list_of_cols_val_tab_del AND T2.“GroupMask” IN (‘4’,‘5’)
AND(T1.“ProfitCode” IS NULL);
IF FOUND > 0
THEN
error= 18024;
error_message=‘No puede estar vacío el campo CeCo/Norma de Reparto’;
END IF;
END IF;
el tema es que ahí no podría seleccionar qué CECO corresponde, o si?
hice la prueba con una cuenta, le puse tilde en DIMENSION sin poner el ceco y no me trae nada, si le pongo un solo ceco no podría seleccionar al que debe ir.
Hola @Juan_Pablo_Ti
Si marcas el check y dejas el campo de centro de costos en blanco, el sistema no permite crear ningún documento que afecte esa cuenta contable y no este diligenciado el centro de costos, por lo cual siempre se debe gestionar esa informacion desde el documento base o en el asiento en caso de ser un registro en el diario.
Si marcas el check y seleccionas un centro de costos, el sistema lo que hace es siempre asignar el centro de costos marcado en la linea del asiento. es decir es un valor por defecto en el asiento y no es necesario ingresarlo en el documento base.
IF (object_type = '30')
THEN
SELECT COUNT(*)INTO FOUND FROM JDT1 T1
WHERE T1."TransId" =:list_of_cols_val_tab_del AND (T1."Account" LIKE '4%' OR T1."Account" LIKE '5%')
AND(T1."ProfitCode" IS NULL OR T1."ProfitCode" = '') AND T1."TransType" = '30';
IF FOUND > 0
THEN
error= 18024;
error_message='No puede estar vacío el campo CeCo/Norma de Reparto';
END IF;
END IF;
Eso te servirá para bloquear contabilizaciones manuales.
Si necesitas bloquear cualquier tipo de contabilización, es mejor configurar las cuentas activando el Check en el plan de cuentas y además configurando el bloqueo en parametrizaciones generales: