Especificación de Requisitos


Proyecto/Versión: MEX12.0/TOTVS Microsiga Protheus V12.0

Requisito/Módulo: 001511/SIGACTB

Sub-Requisito/Función: 151104/Mantenimiento de Formulas

Tarea/Llamado: 00000B.05.01

País: Todos

Fecha Especificación: 04/12/13

Rutinas Involucradas



Rutina

Tipo de Operación

Opción de Menú

CTBA093 – Manto. Formulas

Creación

Actualizaciones->Archivos->Entes-> Manto. formulas

Estrategia de Desarrollo y liberación


Producto

Microsiga Protheus – Contabilidad

Reléase que está siendo desarrollado

11.90

Posee Réplica?

( )Si ( X)No

Cual versión?

No aplica

Objetivo 

Crear una rutina que permita el registro de fórmulas para ser utilizadas en la opción de Asientos Estándar.

Definición da Regla de Negocio 

Esta opción permitirá el registro de una configuración sencilla o de una configuración más compleja de instrucciones que serán utilizadas en la configuración en la opción de los Asientos Estándar. A la primera la llamaremos Configuración Rápida y a la segunda Formulación.
Al ingresar a esta opción presentara el browse de los datos de fórmulas existentes (tabla CWK, pantalla PROTOTIPO01). Con las opciones Incluir, Modificar, Visualizar, Borrar, Consulta y las estándares.
Opción Incluir
Al ingresar a esta opción visualizara una pantalla con dos pestañas ( PROTOTIPO02), una que permita hacer registro de fórmulas sencillas y otra en la que se permitirá registrar fórmulas más complejas.
Pestaña de Configuración Rápida
Los datos que solicitara son:
Código (cwk_codfor) Código asignado por el usuario para identificar la formula. Obligatorio.
Descripción (CWK_desc) Nombre corto que describa la funcionalidad de la formula.
Grupo (cwk_grupo) Código de grupo al que pertenecerá la formula, podrá seleccionar de la consulta estándar de la tabla genérica CZ (tabla de la sx5). Obligatorio.
Desc. Grupo (x5_descri) – Descripción del grupo. Virtual.
Tipo (cwk_tipo) - Podrá seleccionar entre, Cuenta/C. Costo/Ítem contable/Cl. Valor/Valor fijo o Formula (esto indica limpieza de los demás campos que se describen a continuación).
Al salir de este campo limpiara los datos de los campos siguientes, excepto el que sea del Tipo seleccionado. Enviara un mensaje de advertencia al usuario cuando detecte que hay información en algún otro campo que no fue el seleccionado, antes de continuar con el borrado. Si la respuesta del usuario es afirmativa, procederá a realizar la limpieza, de otra forma dejara el Tipo seleccionado, y no limpiara ningún campo.
Tipo de dato (CWK tipdat) .- Podrá seleccionar entre _Numérico, Carácter o Fecha. Se refiere al tipo de resultado que arrojara la formula cuando se haga uso de ella en el opción de Asiento Estándar o en la de Mnemónicos.

Config. Rápida (formula valor)


Valor (CWK_valor) – Se activara solo si el campo Tipo fue Valor. Permitirá el registro de cualquier tipo de dato o formula advpl (validar que la sintaxis advpl sea correcta, verificar la función de asientos estándar para ver como hace esa validación).
Cond. Asiento (CWK_conasi) – Se activara solo si el campo Tipo fue Valor.
Aquí el usuario se registrara una fórmula que retorne true o false, ya que si en su ejecución da true, el contenido del campo valor es el que dejara como resultado de la ejecución de la formula.
Deberá validarse que el código ADVPL aquí registrado sea válido (verificar la rutina de Asientos estándar para ver como hace esa validación).

Config. Rápida (constantes)


Cuenta Cont. (CWK_cuenta) – Se activara solo si el campo Tipo fue Cuenta. Podrá seleccionar los valores de la consulta específica CWKTIP.
Si el usuario digita directamente valores en el campo, este valor se validara que exista en el catálogo de cuenta contables (ct2), pero si el inicio del campo es M{_}, entonces validara que exista el mnemónico (tabla cwj).

C. de Costos (CWK_cc) – Se activara solo si el campo Tipo fue C. Costo y el llenado de este campo se volverá obligatorio. Podrá seleccionar los valores de la consulta específica CWKTIP.
Si el usuario digita directamente valores en el campo, este valor se validara que exista en el catálogo de centro de costos (ctt), pero si el inicio del campo es M_, entonces validara que exista el mnemónico (tabla cwj).

Ítem contable (CWK_itectb) – Se activara solo si el campo Tipo fue Ítem Contable, y el llenado de este campo se volverá obligatorio. Podrá seleccionar los valores de la consulta específica CWKTIP.
Si el usuario digita directamente valores en el campo, este valor se validara que exista en el catálogo de ítems contables (ctd), pero si el inicio del campo es M_, entonces validara que exista el mnemónico (tabla cwj).
Cl. Valor (CWK_clvalo) – Se activara solo si el campo Cl. Valor, y el llenado de este campo se volverá obligatorio. Podrá seleccionar los valores de la consulta específica CWKTIP.
Si el usuario digita directamente valores en el campo, este valor se validara que exista en el catálogo de clase valor (cth), pero si el inicio del campo es M_, entonces validara que exista el mnemónico (tabla cwj).
Ayuda (CWK_help) Permitirá registrar una breve explicación de lo que hace la formula.
Al seleccionar Confirmar, realizara la traducción de la formula a ADVPL considerando lo siguiente:

  1. Si el tipo de dato ingresado (cwk_tipo) fue Cuenta/C. Costo/Ítem contable/Cl. Valor verificara si hubo entre los datos seleccionados, mnemónicos, de ser así deberá traducirlos al campo o tabla correspondiente o a lenguaje ADVPL según sea el caso. Es decir:
  • Si es un mnemónico de tipo campo (cwj_tipdat='1'), entonces el valor cwj_campo será guardado en cwk_advpl.
  • Si es un mnemónico de tipo tabla (cwj_tipdat='2'), entonces el valor de cwj_tabla será guardado en cwk_advpl.
  • Si mnemónico de tipo Formula (cwj_tipdat='3'), buscara el valor de cwj_datvin en el catálogo de fórmulas (cwk, cwk_codfor) el valor contenido en cwk_advpl será guardado en cwk_advpl.
  • Si mnemónico de tipo Función (cwj_tipdat='4'), buscara el valor de cwj_datvin en el catálogo de funciones (cwn, cwn_codfun) el valor contenido en cwn_advpl será guardado en cwk_advpl.
  • Si mnemónico de tipo Función de usuario (cwj_tipdat='5'), el valor contenido en el campo cwj_funrpo será guardado en cwk_advpl.
  • Si mnemónico de tipo valor (cwj_tipdat='6'), el valor contenido en el campo cwj_valor será guardado en cwk_advpl.

Si no hubo mnemónicos, guardara el editado valor directamente en el campo cwk_advpl.

  1. Si el tipo de dato ingresado (cwk_tipo) fue Valor fijo, concatenara el contenido de la Cond. Asiento (campo wck_conasi) al Valor (campo cwk_valor) pero con la sintaxis de un IF. Dejando como sigue:

"IF ("Cond. Asiento", "Valor")"
El resultado se guardara en el campo cwk_advpl.

Estas mismas acción se ejecutaran cuando se haga uso del botón Generar Formula y el resultado de la traducción se podrá visualizar en el primer campo de la pestaña de Código Formula.
Una vez realizada la traducción guardara la información correspondiente en la tabla de fórmulas (CWK).
Pestaña de Formulación
Los datos que visualizara son ( prototipo03):
Formula (CWK_advpl) Este dato será actualizado al guardar la formula o al seleccionar el botón Generar Formula, siempre y cuando exista información en al getdados inferior o datos en los campos Cuenta/C. Costo/Ítem contable/Cl. Valor/Valor de la pestaña de Catalogo. Solo se visualizara.
Los datos en el getdados:
La edición del getdados solo será válida si el dato tipo de la pestaña de Catalogo es de tipo Formula.
Sec. (cwl_sec) – Numero de secuencia, y será asignado por el usuario. Indicara la secuencia en la que se ejecutara la formula. Dato obligatorio y no puede repetirse.
Operador (cwl_oper).- Mostrara un listbox fijo con los códigos de operadores (dependiendo del idioma mostrara diferentes descripciones de operador), de acuerdo al arreglo siguiente (operadores válidos):

COD

CODIGO DE OPERADOR

Tipo

OPERANDO 1

TIPO DE OPERANDO 1

OPERANDO 2

TIPO DE OPERADO 2


Sintaxis 1

Sintaxis 2

01

SUMA

A

O

N

O

N

OP1 + OP2


02

RESTA

A

O

N

O

N

OP1 - OP2


03

MULTIPLICA

A

O

N

O

N

OP1 * OP2


04

DIVIDE

A

O

N

O

N

OP1 / OP2


05

PORCENTAJE

A

O

N

O

N

(OP1/100) * OP2


06

TIPOCAMBIO

A

O

D

O

N

RECMOEDA(CTOD(OP1),OP2)


07

SI-MAYOR

Condición

O

C,D,N

O

TIPO 1

OP1>OP2

IF (OP1>OP2

08

SI-MENOR

Condición

O

C,D,N

O

TIPO 1

OP1<OP2

IF (OP1<OP2

09

SI-DIFERENTE

Condición

O

C,D,N

O

TIPO 1

OP1<>OP2

IF ( OP1<>OP2

10

SI-CONTENIDO

Condición

O

C

O

C

OP1 $ OP2

IF (OP1 $ OP2

11

SI-INICIAEN

Condición

O

C

O

C

AT(OP2,OP1)==1

IF (AT(OP2,OP1)==1

12

SI-VACIO

Condición

O

C,D

V


EMPTY(OP1)

IF (EMPTY(OP1)

13

SI-ENCONTRO

Condición

O

TABLA

O

CAMPO

OP1->(DBSEEK(XFILIAL('OP1')+OP2)

IF (OP1->(DBSEEK(XFILIAL('OP1')+OP2)

14

SI-FUNCION

Condición

O

C

V


FUNNAME()=OP1

IF (FUNNAME()=OP1

15

SI-IGUAL

Condición

O

C,D,N

O

TIPO1

OP1==OP2

IF ( OP1==OP2

16

CONVIERTE-TEXTO

S

O

N

V


STR(OP1)


17

CONVIERTE-VALOR

S

O

C

V


VAL(OP2)


18

ELIMINA-ESPACIOS

S

O

C

V


ALLTRIM(OP2)


19

FILIAL

D

O

TABLA

V


XFILIAL(OP1)


20

CONTENIDO-PARAMETRO

D

O

C

V


GETMV("OP1")


21

REDONDEA

N

O

N

O

N

ROUND(OP1,OP2)


22

RESIDUO

N

O

N

O

N

MOD(OP1 , OP2)


23

TRUNCA

N

O

N

O

N

ROUND(OP1,OP2)


24

LEE-SB1

T

O

C

O

C

POSICIONE("SB1",1,OP1,OP2)


25

LEE-SED

T

O

C

O

C

POSICIONE("SED",1,OP1,OP2)


26

LEE-SF4

T

O

C

O

C

POSICIONE("SF4",1,OP1,OP2)


27

LEE-SA2

T

O

C

O

C

POSICIONE("SA2",1,OP1,OP2)


28

LEE-SA1

T

O

C

O

C

POSICIONE("SA1",1,OP1,OP2)


29

LEE-SBM

T

O

C

O

C

POSICIONE("SBM",1,OP1,OP2)


30

RETORNO

R

O

C,D,N

V


OP1


31

CONCATENA

S

0

C

0

C

OP1+OP2



Arreglo de operadores

Operando 1 (cwl_oper1) .- Solo se podrá editar si el Operador no está vacío. Esta campo puede aceptar mnemónicos (reconocidos por que inician en M{_}, mnemónicos concatenados por signo +), valores numéricos o caracteres (los cuales debe ir entre comillas para ser identificados.
Podrá seleccionar los mnemónicos de la consulta específica CWJFOR.
Después de registrar el valor pre-validara que se trate de cualquiera de los tres tipos mencionados:

  1. Si inicia con comillas validara que estas cierren y ya sería válido.
  2. Verificar si existe en el archivo de mnemónicos (CWJ), de lo contrario validar que sea numérico.
  3. Si no es numérico y no existe como mnemónico no es una operando válido.


Si el tipo de dato del operando es una Formula (cwj_tipdat='3'), validar que la formula asociada al mnemónico (cwj_datvin) no sea la misma que la que se está registrando (cwj_datvin<>m->cwk_codfor).
Después validara el tipo de dato que puede aceptar en este campo, de acuerdo al operador seleccionado (ver arreglo arriba columna 4).
Operando 2 (cwl_oper2).- Pero solo será editable si Operador no está vacío y l a columna 5 del arreglo de acuerdo al operador tiene una O.
Tendrá las mismas pre validaciones que tiene el operador 1, y la validación del tipo de dato que puede aceptar, será de acuerdo al operador seleccionado (ver arreglo arriba, columna 6).
Conjunción (cwl_conjun).- Solo se activara si el Operador es de tipo condición, y solo permitirá seleccionar entre O e Y.
Salta a Sec (cwl_selsec).- solo se activara si el Operador es de Condición y el campo de Conjunción está vacío. Solo permitirá colocar numéricos. Es el camino que tomara la condición si es verdadera.
Expresión (cwl_expres).- Permitirá generar una expresión aritmética haciendo uso de operadores y mnemónicos, al seleccionar la consulta especifica CTB931, abrirá una pantalla que permite construir la expresión (al salir de este campo validara que la expresión tenga sintaxis ADVPL correcta) verifique el prototipo05. Solo permitirá edición si todos los campos anteriores están vacíos.

Por cada renglón deberá validar que la sintaxis sea correcta de acuerdo al Operador (la sintaxis estará ubicadas en un arreglo en rutinas del Protheus en código duro), verificando información como, si el tipo de dato que acepta el operador es válido o si este es un dato obligatorio, etc.
Al bajar de línea deberá mostrar en los campos Descripción Operando 1/Descripción Operando 2, la descripción del mnemónico elegido en cada e pero solamente si el operando es un mnemónico de lo contrario la descripción debe quedar el blanco.
Los campos descripción operando1/Descripción Operando 2 deberán crearse en tiempo de ejecución y no se guarda su contenido en la BD.
Nota técnica: Crear una rutina de validación de sintaxis por cada operador, misma que será utilizada para la validación por renglón.

Si no es correcto, enviara al usuario el mensaje correspondiente y no permitirá avanzar ni guardar con el error.
Cuando se Confirme, realizar las siguientes acciones:

  • Ordenara por consecutivo (cwl_sec).
  • Traducirá la formulación a código ADVPL (crear la rutina CTB93GEN() que hará esta acción), pues el resultado de esa traducción se guardara en el campo cwk_advpl.
  • Una vez obtenida la información del código ADVPL, deberá validar la sintaxis, basarse en la de la función Ctb080Form(), que es la misma que actualmente utiliza la rutina de Asientos Estándar.
  • Extraer todas las tablas que fueron utilizadas en la construcción de la formula


Si la fórmula es validada correctamente, guardara los campos correspondientes en las tablas cwk y cwl, en el campo cwk_advpl guardara en el código advpl resultante del punto anterior en el campo cwk_foreje guardara la instrucción EjeFor y el código de la formula por ejemplo: EjeFor("FOR001").
Guardará las tablas que fueron utilizadas en la formulación (sin repetir la tabla) en la tabla de relación de fórmulas vs tablas (CWQ). No debe tomar en cuenta aquellas que fueron utilizadas en el alias de las instrucciones Posicione.
Opción Modificar
Al ingresar a esta opción visualizara una pantalla con dos pestañas (prototipo02) y solo se podrá hacer uso de esta si el usuario está posicionado en una formula. De lo contrario deberá enviar el mensaje "No hay datos a modificar".
Todos los datos se pueden modificar con excepción del código de la formula (cwk_codofor), y los demás datos tendrán la misma funcionalidad que se describe para la opción de Incluir.
Al guardar la información, verificar si algún Asiento Estándar utiliza la formula en cuestión, esto es: Seleccionar todos los registros de la relación de Asientos Estándar vs Formula (tabla cwm), que contengan el código de la formula (cwk_codfor=cwm_codfor). Si encuentra registros, preguntar al usuario "Existen Asientos utilizando esta fórmula, si guarda la información actualizara los Asientos involucrados ¿Continuar?".
De ser afirmativa la respuesta, guardar, de lo contrario cancelar la operación.
Opción Borrar
Al ingresar a esta opción visualizara una pantalla con dos pestañas (prototipo02) y solo se podrá hacer uso de esta si el usuario está posicionado en una formula. De lo contrario deberá enviar el mensaje "No hay datos a borrar".
Cuando el usuario de clic en Confirmar, verificar si algún Asiento Estándar utiliza la formula en cuestión, esto es Seleccionar todos los registros de la relación de Asientos Estándar vs Formula (tabla cwm), que contengan el código de la formula (cwk_codfor=cwm_codfor) . Si encuentra registros, enviara al usuario el aviso "Existen Asientos utilizando esta fórmula, y no puede ser eliminada". Si no encuentra registros, preguntara al usuario "¿Eliminar la formula?", de ser afirmativa procederá al borrado, de lo contrario regresara al browse.
Opción Consultar
Al ingresar a esta opción se visualizara el encabezado de la formula y una getdados con los asientos estándar que están haciendo uso de la formula ( prototipo 04).
Seleccionar todos los registros de la relación de Asientos Estándar vs Formula (tabla cwm), que contengan el código de la formula (cwk_codfor=cwm_codfor) y relacionar las coincidencias con la tabla de Asientos (tabla ct5, ct5_lanpad=cwm_lanpad y ct5_sequen=cwm_sequen).
Encabezado visualizara los datos:
Código (CWK_codofor) Código asignado por el usuario para identificar la formula.
Descripción (CWK_desc) Nombre corto que describa la funcionalidad de la formula.
Grupo (CWK_grupo) Código de grupo al que pertenecerá la formula.
Desc. Grupo (x5_descri) – Descripción del grupo.
Formula (CWK_advpl) – Formula en ADVPL.
En el detalle visualizara los datos:
Cod Asto Est. (ct5_lanpad) Código del asiento estándar, Secuencial (ct5_sequen), Estatus (ct5_status), Descripción (ct5_desc), Tipo Asiento (ct5_dc) , todos los campo Cta. Cargo (ct5_debito) , Cta. Abono (ct5_credit) , C. Costos CRG (ct5_ccd), C. Costo Abn (ct5_ccc), Item Cargo (ct5_itemd), Item Abono (ct5_itemc), Cl. Vlr. Crg. (ct5_clvldb), Cl. Vlr. Abn. (ct5_clvlcr), Otr. Inf. Crg (ct5_ativde), Otr. Inf. Abn (ct5_ativcr) y los campos de valores(ct5_vlr01.. ct5_vlr05), Asto. Monedas (ct5_moedas) .

Consulta CWJFOR.- Mnemónicos
Se creara la consulta estándar CWJFOR, donde se visualizaran las columnas:

  • Mnemónico (cwj_codmne)
  • Descripción (cwj_descri)
  • Tipo Dato (cwj_tipdat)
  • Grupo (cwj_grupo)
  • Tabla (cwj_tabla)
  • Campo (cwj_campo)
  • Dato vinculado (cwj_datvin)
  • Función RPO (vwj_funrpo)
  • Valor fijo (cwj_valor)


Filtrar la información para que solo muestre las registros que son del tipo que necesita el operador (de acuerdo al arreglo de operadores).
Por ejemplo: si el operador es SUMA el operando debe ser de tipo Numérico, entonces los mnemónicos que presente serán de tipo Numérico (mostrara los mnemónicos de tipo Campo, Formula, Función o Valor cuyo retorno sea numérico, para el primero validar cwj_campo en la sx3 y obtener x3_tipo=N, para la formula buscar en el archivo de fórmulas y que el tipo de esta sea numérico (cwk_tipdat=Numérico), para la función cwj_tipdat=1. Crear la función CTB093FIL, la cual tendrá los diferentes filtros del acuerdo al tipo de datos requerido.

CODIGO DE OPERADOR

TIPO DE OPERANDO 1

TIPO DE OPERADO 2

SUMA

N

N

RESTA

N

N

MULTIPLICA

N

N

DIVIDE

N

N

PORCENTAJE

N

N

TIPOCAMBIO

D

N

SI-MAYOR

C,D,N

Igual al tipo Operando 1

SI-MENOR

C,D,N

Igual al tipo Operando 1

SI-DIFERENTE

C,D,N

Igual al tipo Operando 1

SI-CONTENIDO

C

C

SI-INICIAEN

C

C

SI-VACIO

C,D


SI-ENCONTRO

TABLA

CAMPO

SI-FUNCION

C


SI-IGUAL

C,D,N

Igual al tipo Operando 1

CONVIERTE-TEXTO

N


CONVIERTE-VALOR

C


ELIMINA-ESPACIOS

C


FILIAL

TABLA


CONTENIDO-PARAMETRO

C


REDONDEA

N

N

RESIDUO

N

N

TRUNCA

N

N

LEE-SB1

C

C

LEE-SED

C

C

LEE-SF4

C

C

LEE-SA2

C

C

LEE-SA1

C

C

LEE-SBM

C

C

RETORNO

C,D,N


CONCATENA

C

C


Retornara el valor del código del mnemónico seleccionado (cwj_codmne).
Consulta CWKTIP.- Selección de dato
Se creara la consulta específica CWKTIP, si el campo CWK_CUENTA es de donde se está ejecutando, entonces presentara la pantalla:

Solo uno de los campos debe ser llenado.
El campo Cuenta, tendrá asociada la consulta estándar CT2, y al salir del campo validara que el dato digitado exista en el catálogo de cuentas. Solo será editable este campo si el otro está vacío.
El campo de Mnemónico, tendrá asociada la consulta estándar CWJ, y al salir del campo validara que el dato digitado exista en el catálogo de mnemónicos. Solo será editable este campo si el otro está vacío.
Si el campo CWK_CC es de donde se está ejecutando, entonces presentara la pantalla:

Solo uno de los campos debe ser llenado.
El campo Centro de Costo, tendrá asociada la consulta estándar CTT, y al salir del campo validara que el dato digitado exista en el catálogo de centros de costo. Solo será editable este campo si el otro está vacío.
El campo de Mnemónico, tendrá asociada la consulta estándar CWJ, y al salir del campo validara que el dato digitado exista en el catálogo de mnemónicos. Solo será editable este campo si el otro está vacío.
Si el campo CWK_ITECTB es de donde se está ejecutando, entonces presentara la pantalla:

Solo uno de los campos debe ser llenado.
El campo Ítem contable, tendrá asociada la consulta estándar CTD, y al salir del campo validara que el dato digitado exista en el catálogo de Ítem contable. Solo será editable este campo si el otro está vacío.
El campo de Mnemónico, tendrá asociada la consulta estándar CWJ, y al salir del campo validara que el dato digitado exista en el catálogo de mnemónicos. Solo será editable este campo si el otro está vacío.
Si el campo CWK_CLVALO es de donde se está ejecutando, entonces presentara la pantalla:


Solo uno de los campos debe ser llenado.
El campo Clase valor, tendrá asociada la consulta estándar CTH, y al salir del campo validara que el dato digitado exista en el catálogo de Clase valor. Solo será editable este campo si el otro está vacío.
El campo de Mnemónico, tendrá asociada la consulta estándar CWJ, y al salir del campo validara que el dato digitado exista en el catálogo de mnemónicos. Solo será editable este campo si el otro está vacío.
Retornara el valor digitado.

Operadores Validos
[Regreso

#regreso6]

Operador



Uso


Español

Portugués

Ingles



SUMA

SUM

ADD


Suma operando 1 y operando 2.

Operador



Uso


Español

Portugués

Ingles



RESTA


SUBTRACT


Resta operando 1 y operando 2.

Operador



Uso

Español

Portugués

Ingles


MULTIPLICA


MULTIPLY

Multiplica operando 1 y operando 2.

Operador



Uso

Español

Portugués

Ingles


DIVIDE


DIVIDE

Divide operando 1 y operando 2. Donde operando 1 es el dividendo y el Operando 2 es el divisor.

Operador



Uso

Español

Portugués

Ingles


PORCENTAJE


MODULUS

Obtiene el porcentaje del Operando 1 sobre el Operando 2.

Operador



Uso

Español

Portugués

Ingles


TIPOCAMBIO


EXCHANGE

Obtiene el valor de la moneda (operador2) en una fecha determinada (operador1).

Operador



Uso

Español

Portugués

Ingles


SI-IGUAL


IF-EQUAL

Compara el valor de un mnemónico con otro, si se cumple la condición de que son IGUALES, debe indicar con una secuencia HACIA DÓNDE SIGUE ESTE PROCEDIMIENTO, AL NO CUMPLIRSE LA CONDICIÓN DE IGUALDAD, la secuencia de instrucciones continúa.

Operador



Uso

Español

Portugués

Ingles


SI-MAYOR


IF-GREATERTHAN

Compara el valor de un mnemónico con otro, si se cumple la
condición de que el valor del mnemónico que se encuentra en EL
OPERANDO 1 ES MAYOR al valor del mnemónico del OPERANDO 2, debe indicar con una secuencia HACIA
DÓNDE SIGUE ESTE PROCEDIMIENTO, AL NO CUMPLIRSE LA CONDICIÓN, la secuencia de instrucciones continúa.

Operador



Uso

Español

Portugués

Ingles


SI-MENOR


IF-LESSTHAN

Compara el valor de un mnemónico con otro, si se cumple la condición de que el valor del mnemónico que se encuentra en EL OPERANDO1 ES MENOR al valor del mnemónico del OPERANDO 2, debe indicar con una secuencia HACIA DÓNDE SIGUE ESTE PROCEDIMIENTO, AL NO CUMPLIRSE LA CONDICIÓN, la secuencia de instrucciones continúa.

Operador



Uso

Español

Portugués

Ingles


SI-DIFERENTE


IF-NOTEQUAL

Compara el valor de un mnemónico con otro, si se cumple la
condición de que son DIFERENTES, debe indicar con una secuencia HACIA DÓNDE SIGUE
ESTE PROCEDIMIENTO, AL NO CUMPLIRSE LA CONDICIÓN, la secuencia de instrucciones continúa.

Operador



Uso


Español

Portugués

Ingles



SI-CONTENIDO


IF-CONTENT


Si el mnemónico contenido en el Operando 1 CONTIENE parte del valor contenido en el operando 2, si se cumple la condición, debe indicar con secuencia HACIA DÓNDE SIGUE ESTE PROCEDIMIENTO, AL NO CUMPLIRSE LA CONDICIÓN, la secuencia de instrucciones continúa.

Operador



Uso

Español

Portugués

Ingles


SI-INICIAEN


IF-BEGIN

Si el mnemónico contenido en el Operador 1 INICIA con el valor contenido en el Operando2, si se cumple la condición, debe indicar con una secuencia HACIA DÓNDE SIGUE ESTE PROCEDIMIENTO, AL NO CUMPLIRSE LA CONDICIÓN, la secuencia de instrucciones continúa.

Operador



Uso

Español

Portugués

Ingles


SI-VACIO


IF-EMPTY

Indica si el operando 1 esta vació.

Español

Portugués

Ingles


SI-ENCOTRO


IF-FOUND

Si encuentra en la tabla contenida en el Operador 1 , el valor contenido en el operador2

Operador



Uso

Español

Portugués

Ingles


CONVIERTE-VALOR


VALUE

Convierte en VALOR NUMERICO el contenido del Operando 1

Operador



Uso


Español

Portugués

Ingles




ELIMINA-ESPACIOS


DELETE-SPACES


Elimina los espacios a la izquierda y derecha del mnemónico contenido en el Operando 2 (ALLTRIM)


Operador



Uso

Español

Portugués

Ingles


FILIAL



Devuelve al Resultado la filial del mnemónico contenido en el Operando 2

Operador



Uso

Español

Portugués

Ingles


CONTENIDO-PARAMETRO


FIND-PARAMETER

Este operador lee la tabla de Parámetros.
Busca en la tabla de Parámetros el dato que especifica en el operando 2.

Operador



Uso

Español

Portugués

Ingles


REDONDEA


ROUND

Redondea el valor de Operando1 en
función al número de decimales que indique en el Operando 2

Operador



Uso

Español

Portugués

Ingles


RESIDUO



Este operador tiene la misma función que el "MOD" de una calculadora. Divide dos mnemónicos donde operando 1 es el dividendo y el Operando 2 es el divisor.

Operador



Uso

Español

Portugués

Ingles


TRUNCA


TRUNC

Quita la parte decimal del valor de un mnemónico que se encuentra en el Operando 2 y deja la parte entera en otro mnemónico.

Operador



Uso

Español

Portugués

Ingles


LEE-SBM


READ-SBM

Obtiene información de la tabla de Grupo de Productos (SBM).
Obtiene el valor del mnemónico contenido en el Operando1, buscando el mnemónico contenido en el Operador 2 en la tabla de Grupos de Productos

Operador



Uso

Español

Portugués

Ingles


LEE-SB1


READ-SB1

Obtiene información de la tabla de Productos (SB1).
Obtiene el valor del mnemónico contenido en el Operando1, buscando el mnemónico contenido en el Operando 2 en la tabla de Productos

Operador



Uso

Español

Portugués

Ingles


LEE-SED


READ-SED

Obtiene información de la tabla de Modalidades (SED).
Obtiene el valor del mnemónico contenido en el Operando1, buscando el mnemónico contenido en el Operando 2 en la tabla de Modalidades.

Operador



Uso

Español

Portugués

Ingles


LEE-SF4


READ-SF4

Obtiene información de la tabla de TES (SF4).
Obtiene el valor del mnemónico contenido en el Operando1, buscando el mnemónico contenido en el Operando 2 en la tabla de TES.

Operador



Uso

Español

Portugués

Ingles


LEE-SA2


READ-SA2

Obtiene información de la tabla de Proveedores (SA2).
Obtiene el valor del mnemónico contenido en el Operando1, buscando el mnemónico contenido en el Operando 2 en la tabla de Proveedores.

Operador



Uso

Español

Portugués

Ingles


LEE-SA1


READ-SA1

Obtiene información de la tabla de Clientes (SA1).
Obtiene el valor del mnemónico contenido en el Operando1, buscando el mnemónico contenido en el Operando 2 en la tabla de Clientes.

Español

Portugués

Ingles

Uso

SI-FUNCION



Valida si el nombre de una función de ADVPL existe en el RPO


Tablas Utilizadas

  • CT2.-Cuentas contables
  • CTT.-Centro de costos
  • CTD.- ítem contable
  • CTH.-Clase valor
  • CT5.- Asientos estándar
  • CWJ.-Mnemónicos
  • CWK.-Formulas encabezado
  • CWL.-Detalle de formula
  • CWM.-Formulas por Asiento Estándar
  • CWP.- Tablas vs formula
  • SX5.-Tablas genéricas

Prototipo de Pantallas 


Prototipo 01 Regresar

Prototipo 02 Regresar

Prototipo 03 Regresar


Prototipo 04 Regresar


Protótipo 05 Regresar

Consulta CTB931 (Rutina CTB93EXPR)

Expresión a retornar.- Es un campo tipo memo que podrá editar el usuario, o ir formando la expresión con la herramientas mostradas abajo. Al selecciona OK, será la expresión retornada al getdados de la formula.
Operadores.- Podrá seleccionar entre:

Operador

+


  • /
    )
    (


Al salir de ese campo, el operador seleccionado se enviara al campo memo donde se está formando la expresión.
Grupo.- El usuario podrá teclear el código del grupo o seleccionarlo de la tabla cz de las tablas genéricas (sx5). Se validara que sea un código válido. Al salir de este campo filtrara la información de los mnemónicos (CWJ), de solo las tablas (CWJ_tabla) que son del grupo seleccionado (CWJ_grupo). También limpiar el campo de Ayuda y Mnemónico.
Descripción.- Nombre del grupo, solo se visualiza (x5_descri).
Tabla.- Se mostraran el código de tabla y descripción (CWJ_tabla, CWH_descri) de acuerdo al código de Grupo seleccionado en el campo anterior. Al salir de este campo filtrara la información de los mnemónicos (CWJ), visualizando solo los campos que son de la tabla seleccionada. También limpiar el campo de Ayuda.
Mnemónico.- Código y descripción (CWJ_codmne, CWJ_desc) del mnemónico de acuerdo a la tabla seleccionada. Al salir de este campo llenara los datos correspondientes en el campo de Ayuda.
Ayuda.- Mostrar la ayuda del campo seleccionado (CWJ_help). Como título nombre del campo (CWJ_campo) y de la tabla (CWJ_tabla), después la ayuda (CWJ_help), después como subtítulo de Validación el tipo y tamaño de acuerdo a la información del campo contenido en la tabla sx3.
Botón Agregar.- Agregara el mnemónico seleccionado.
Botón Limpiar.- Limpiara todo el contenido del campo memo.
Botón OK.- Enviara la expresión del campo memos al getdados de la formula.
Botón Anular.- No enviara la expresión respetando lo ya contenido en la expresión del getdados de la formula.

Reglas de Integridad 

Indicado en la regla de negocio.

Release Notes 


Módulo

SIGACTB / PROTHEUS

Función

Mantenimiento a catálogo de fórmulas para Asientos Estándar

Descripción de Función

Permite crear la formulación (que será utilizada para los Asientos Estándar), de forma más amigable para el usuario.


Flujo de Proceso 


Diagrama de Entidad y Relación



Diccionario de Datos


Diccionario de Datos.

 

  • CWK –Formulación

Campo

Tipo

Tam.

Dec.

Título

Descripción

CWK_FILIAL

C



Sucursal


CWK_CODFOR

C

15


Código

Descripción

Código de la fórmula    

Formato

@!

Nivel

1

Usado

Si

Obligatorio

Si

Browse

Si

Propiedad

Real/Alterar

Val. Sistema

When

ExistChav(“CWK”)

iif(!INCLUI,.F.,.T.)                                       

Help

Código de la fórmula.

CWK_GRUPO

C

6


Grupo

Descripción

 Código del grupo   

Formato

@!

Nivel

1

Usado

Si

Obligatorio

Si

Browse

Si

F3

CZ

Propiedad

Real/Alterar

Inicializador


Opciones


When


Val. Sistema

ExistCpo("SX5","CZ"+M->CWK_GRUPO)                                                                                              

Help

Modulo o grupo al que pertenece la formula.

CWK_TIPO

C

1


Tipo

Descripción

Tipo de Formula    

Formato

@!

Nivel

1

Usado

Si

Obligatorio

No

Browse

Si

F3


Propiedad

Real/Alterar

Inicializador


Opciones

1= Cuenta;2=C. Costo;3=Ítem contable;4=Cl. Valor;5=Valor fijo;6=formula

When


Val. Sistema


Help

Si el tipo es vacío, se refiere a una fórmula compleja, si selecciona cualquier otra, es para referir a una configuración sencilla.

CWK_TIPDAT

C

1


Tipo de Dato

Descripción

Tipo de dato del resultado

Formato

@!

Nivel

1

Usado

Si

Obligatorio

Si

Browse

Si

F3


Propiedad

Real/Alterar

Inicializador


Opciones

1=Numérico;2=Carácter;3=Fecha

When


Val. Sistema


Help

Es el tipo de dato que resultara de la ejecución de la formula.

CWK_VALOR

C

50


Valor

Descripción

Valor a aplicar

Formato

@!

Nivel

1

Usado

Si

Obligatorio


Browse

Si

F3


Propiedad

Real/Alterar

Inicializador


Opciones


When

M->CWK_TIPO=='5'                                           

Val. Sistema

iif(M->CWK_TIPO=='5', !Empty(M->CWK_VALOR),.T.)  .AND. CTB93FORM(,,.T.)                                                        

Help

Es el valor que colocara en el Asiento Estándar si la condición del campo Cond. Asiento se cumple.

CWK_CONASI

C

40


Cond. Asiento

Descripción

Condición para el Asiento 

Formato

@!

Nivel

1

Usado

Si

Obligatorio


Browse

No

F3


Propiedad

Real/Alterar

Inicializador


Opciones


When

M->CWK_TIPO=='5'                                           

Val. Sistema

iif(M->CWK_TIPO=='5', !Empty(M->CWK_VALOR),.T.)  .AND. CTB93FORM(,,.T.)                                                        

Help

Condición en ADVPL, que deberá retornar verdadero

CWK_CUENTA

C

20


Cuenta Cont

Descripción

Cuenta contable 

Formato

@!

Nivel

1

Usado

Si

Obligatorio


Browse

No

F3

CWKTIP

Propiedad

Real/Alterar

Inicializador


Opciones


When

M->CWK_TIPO=='1'                                           

Val. Sistema

iif(M->CWK_TIPO=='1', !Empty(M->CWK_CUENTA) .and. CTB93VALID(M->CWK_CUENTA,1),.T.)                                             

Help

Mnemónico que tenga una cuenta contable asociada o digite directamente el número de cuenta contable.

CWK_CC

C

16


C. de Costo

Descripción

Centro de costo 

Formato

@!

Nivel

1

Usado

Si

Obligatorio


Browse

No

F3

CWKTIP

Propiedad

Real/Alterar

Inicializador


Opciones


When

M->CWK_TIPO=='2'                                           

Val. Sistema

iif(M->CWK_TIPO=='2', !Empty(M->CWK_CC) .and. CTB93VALID(M->CWK_CC,2),.T.)                                                     

Help

Mnemónico que tenga una centro de costo asociado o digite directamente el número de Centro de Costo.

CWK_ITECTB

C

16


Ítem contable

Descripción

Ítem contable 

Formato

@!

Nivel

1

Usado

Si

Obligatorio


Browse

No

F3

CWKTIP

Propiedad

Real/Alterar

Inicializador


Opciones


When

M->CWK_TIPO=='3'                                           

Val. Sistema

iif(M->CWK_TIPO=='3', !Empty(M->CWK_ITECTB) .and. CTB93VALID(M->CWK_ITECTB,3),.T.)                                             

Help

Mnemónico que tenga un Ítem contable asociado o digite directamente el número de Ítem contable.

CWK_CLVALO

C

16


Cl. Valor

Descripción

Clase Valor

Formato

@!

Nivel

1

Usado

Si

Obligatorio


Browse

No

F3

CWKTIP

Propiedad

Real/Alterar

Inicializador


Opciones


When

M->CWK_TIPO=='4'                                           

Val. Sistema

iif(M->CWK_TIPO=='4', !Empty(M->CWK_CLVALO) .and. CTB93VALID(M->CWK_CLVALO,4),.T.)                                             

Help

Mnemónico que tenga un código de Clase Valor asociado o digite directamente el código de Clase Valor.

CWK_HELP

MEMO



Ayuda

Descripción

Ayuda 

Formato

@!

Nivel

1

Usado

Si

Obligatorio


Browse

No

F3


Propiedad

Real/Alterar

Inicializador


Opciones


When


Val. Sistema


Help

Describa el uso de esta fórmula.

CWK_ADVPL

MEMO



ADVPL

Descripción

Formula en ADVPL 

Formato

@!

Nivel

1

Usado

Si

Obligatorio


Browse

No

F3


Propiedad

Real/visualizar

Inicializador


Opciones


When


Val. Sistema


Help

Traducción de la formula a código ADVPL

CWK_FOREJE

C

30


Ejecutable

Descripción

Formula ejecutable 

Formato

@!

Nivel

1

Usado

No

Obligatorio


Browse

Si

F3


Propiedad

Real/Alterar

Inicializador


Opciones


When


Val. Sistema


Help


CWK_DESGPO

C

20


Desc. Grupo

Descripción

Descripción de Grupo   

Formato

@!

Usado

si

Obligatorio

No

Browse

No

F3


Propiedad

Virtual/Visualizar

Inicializador

IF(!INCLUI,POSICIONE("SX5",1,XFILIAL("SX5")+ "CZ"+M->CWK_GRUPO,"X5DESCRI()"),"")  

Val. Sistema


Help

Módulo  o grupo al que pertenece la fórmula





Índices: CWK_FILIAL+CWK_CODFOR

 

  • CWL –Ítems de Formulación

Campo

Tipo

Tam.

Dec.

Título

Descripción

CWL_FILIAL

C



Sucursal


CWL_CODFOR

C

15


Código

Descripción

Código de la fórmula    

Formato

@!

Nivel

1

Usado

Si

Obligatorio

Si

Browse

No

Propiedad

Real/Alterar

Val. Sistema


Inicializador

IIF(!inclui,CWK->CWK_CODFOR,"0")                                                                                               

Help

Código de la fórmula    

CWL_SEC

C

6


Sec.

Descripción

Numero de secuencia 

Formato

@!

Nivel

1

Usado

Si

Obligatorio

Si

Browse

No

F3

No

Propiedad

Real/Alterar

Inicializador


Opciones


When


Val. Sistema

Validar que no se repita en número de secuencia en todo el getdados.

Help

Secuencia en la que se ejecutará la formula.

CWL_OPER

C

02


Operador

Descripción

Operador de formulación 

Formato

@!

Nivel

1

Usado

Si

Obligatorio

No

Browse

No

F3


Propiedad

Real/Alterar

Inicializador


Opciones

#CTB93LBOX()                                                                                                                   

When


Val. Sistema


Help

Operador para formular.

CWL_OPER1

C

37


Operador 1

Descripción

Operador 1

Formato

@!

Nivel

1

Usado

Si

Obligatorio

No

Browse

Si

F3

CWKFOR

Propiedad

Real/Alterar

Inicializador


Opciones


When

CTB93CWLEX()                                               

Val. Sistema

CTB93VOP()                                                                                                                     

Help

Es el primer operando utilizado por el operador seleccionado.

CWL_OPER2

C

37


Operador 2

Descripción

Operador 2 

Formato

@!

Nivel

1

Usado

Si

Obligatorio

No

Browse

Si

F3

CWKFOR

Propiedad

Real/Alterar

Inicializador


Opciones


When

CTB93WOP2()

Val. Sistema

CTB93CWLEX()                                               

Help

Es el segundo operando utilizado por el operador seleccionado, puede ser que no sea requerido.

CWL_CONJUN

C

1


Conjunción

Descripción

Conjunción 

Formato

@!

Nivel

1

Usado

Si

Obligatorio

No

Browse

Si

F3


Propiedad

Real/Alterar

Inicializador


Opciones

1=Y;2=O                                                                                                                        

When

CTB93CWLEX()                                               

Val. Sistema


Help

Permite continuar la secuencia actual con la siguiente ya sea por un AND o por un OR.

CWL_SELSEC

C

6


Salta a Sec.

Descripción

Salta a la secuencia 

Formato

@!

Nivel

1

Usado

Si

Obligatorio

No

Browse

No

F3


Propiedad

Real/Alterar

Inicializador


Opciones


When

CTB93CWLEX()                                               

Val. Sistema


Help

Numero de secuencia en donde continuara, en caso de que la condición no se cumpla. Debe existir en el getdados.

CWL_EXPRES

C

200


Expresión ADVPL

Descripción

Expresión ADVPL 

Formato

@!

Nivel

1

Usado

Si

Obligatorio

No

Browse

No

F3

CTB932

Propiedad

Real/Alterar

Inicializador


Opciones


When

CTB93CWLEX()                                               

Val. Sistema

CTB93FORM()                                                                                                                    

Help

Puede registrar operaciones aritméticas en ADVPL.

Indices: 1. CWL_FILIAL+CWL_CODFOR+CWL_SEC

                2. CWL_FILIAL +CWL_OPER1

                3. CWL_FILIAL+CWL_OPER2

  • CWQ – Tablas vs. formulas

Campo

Tipo

Tam.

Dec.

Título

Descripción

CWQ_FILIAL

C



Sucursal


CWQ_CODFOR

C

15


Código

Descripción

Código de la fórmula    

Formato

@!

Nivel

1

Usado

No

Obligatorio

Si

Browse

No

Propiedad

Real/Alterar

Val. Sistema


Help

Código de la fórmula    

CWQ_TABLA

C

3


Alias de tabla

Descripción

Alias de la tabla    

Formato

@!

Nivel

1

Usado

No

Obligatorio

Si

Browse

No

Propiedad

Real/Alterar

Val. Sistema


Help

Alias de la tabla asociada a la formula.    

Índices: CWQ_FILIAL+CWQ_CODFOR+CWQ_TABLA

CWQ_FILIAL+CWQ_TABLA+ CWQ_CODFOR

 

  • CWM –  Asientos Estandar vs. formulas

Campo

Tipo

Tam.

Dec.

Título

Descripción

CWM_FILIAL

C



Sucursal


CWM_CODFOR

C

15


Código

Descripción

Código de la fórmula    

Formato

@!

Nivel

1

Usado

No

Obligatorio

Si

Browse

No

Propiedad

Real/Alterar

Val. Sistema


Help

Código de la fórmula    

CWM_LANPAD

C

3


Asiento Estándar

Descripción

Código de Asiento Estándar    

Formato

@!

Nivel

1

Usado

No

Obligatorio

Si

Browse

No

Propiedad

Real/Alterar

Val. Sistema


Help

Código de Asiento Estándar    

CWM_SEQUEN

C

3


Ítem del Asiento Estándar

Descripción

Ítem del Asiento Estándar

Formato

@!

Nivel

1

Usado

No

Obligatorio

Si

Browse

No

Propiedad

Real/Alterar

Val. Sistema


Help

Ítem del Asiento Estándar    

Índices: CWM_FILIAL+CWM_CODFOR+CWM_LANPAD+CWM_SEQUEN

CWM_FILIAL+ CWM_LANPAD+ CWM_CODFOR

Grupo de Preguntas

No  aplica

Tablas genéricas (sx5)

 

CZ.- Grupos o Módulos

X5_CHAVE

X5_DESCSPA

000001

SIGACTB

000002

SIGAFAT

000003

SIGACOM

000004

SIGAPCP

000005

SIGAGPE

 

Consulta estándar

CWJ.-Mnemónicos

CWJFOR.- Consulta especifica de mnemónicos

CWJTIP.- Consulta especifica de tipo de dato

CZ.- Consulta estándar de Grupos Tabla SX5

CTB931.- Consulta específica para formar expresiones.

CWJ001.-Consulta estándar Mnemónicos

Parámetros

No  aplica

Estructura de Menú

En el módulo Configurador (SIGACFG) ingrese a la ruta Ambiente/Archivos/Menu (CFGX013). Informe la nueva opción del menú de SIGACTB (Contabilidad de Gestión) conforme las siguientes instrucciones:

Menú

Contabilidad de Gestión

Submenú

Actualizaciones>Archivos>Entes> Manto. Formulas     

Nombre de Rutina

Manto. Formulas     

Programa

CTBA093

Módulo

SIGACTB  

Tipo

Función Protheus

  • Sem rótulos