Convenio interno para la programación en NAV
Ejemplo de convenio en la codificación del C/AL para poder tener un seguimiento de las actualizaciones/modificaciones del código origen.
Lista de versiones
Texto Original + “;” + Funcionalidad o GAP + Numero de intervención
Descripción de campos
Funcionalidad o GAP + Numero de intervención + Entidad que interviene + Fecha + Iniciales de la Persona que ha realizado la acción.
V017 706 Proveedor 24.12.09 AOLCINA
V017 706 Proveedor 24.12.09 AOLCINA
Nomenclatura C/AL Global y Local
- Nombre de variables: txVar_NombreDeLaVariable.
- Nombre de Funciones: txFn_NombreDeLaFunción.
- Nombre de Contante: TX_NombreDeLaConstante.
Comentario en C/AL Code
//-100 Proveedor 30.07.09 AOLCINA: Traer nuevos campos de cabecera.
Sentencia 1;
Sentencia 2;
//+100
Convenio en C/AL Code
· Inicializar las variables que se van a usar (a no ser que ha ciencia cierta que necesite el valor previo). Para ello se usará la sentencia CLEAR, raramente CLEARALL.
· La variables de tipo “option” se usa el valor, no la numeración (recordar que empieza con 0)
Ejm. :
PERMITIDO -> IF txVar_Option = txVar_Option::”Opcion 1” THEN …
NO PERMITIDO -> IF txVar_Option = 0 THEN …
· En la sentencia WITH, los valores de la variable referenciada con WITH, se tendrá que poner el punto.
Ejm. :
PERMITIDO -> WITH txVar_Record DO BEGIN .RESET END
NO PERMITIDO -> WITH txVar_Record DO BEGIN RESET END
· Uso de FINDFIST, FINCDLAST (no admitidos para bucles), FINSET (los 3 optimizados para SQLServer; recordar que si no se indica nada es de solo lectura), no usar FIND.
· No se permite los comentarios de línea múltiple (a no ser que sea por uso temporal).
Ejm. :
PERMITIDO -> // Esto es
// mi comentario
NO PERMITIDO -> {Esto es
mi comentario}
· Tanto en SETRANGE, como en SETFILTER, no poner nuevamente el identificador del Record, se poner directamente el nombre del campo como primer parámetro.
PERMITIDO -> txVar_Record.SETFILTER(“No.”,’%1..%2’,txVar_1,txVar_1);
equivalente a la línea -> txVar_Record.SETFILTER(“No.”,’>=%1&<=%2’,txVar_1,txVar_1);
NO PERMITIDO -> txVar_Record.SETFILTER(txVar_Record.“No.”,’%1..%2’,txVar_1,txVar_1);
· No se permite la asignación de valores a los campos de un Record, se tendrá que usar la función valídate (en caso de usar la validación, se tendrá que justificar la razón de no querer que se lance el evento OnValidate.
Ejm.:
PERMITIDO -> txVar_Record.VALIDATE(”G/L AccountNo”, ‘100′);
NO PERMITIDO -> BEGIN
txVar_Record.”G/L AccountNo” := ‘100′; //No lanza el evento OnValidate
txVar_Record.VALIDATE(”G/L AccountNo”); //Lanza el evento OnValidate del Campo
END
· No se permite los campos directos, se tendrá que poner el símbolo.
Ejm.:
PERMITIDO -> rec.INIT;
NO PERMITIDO -> INIT;
Convenio en el Trigger de Documentation
Descripción de la utilidad del objeto.
Lista de versiones
Más Acciones realizadas (nuevos campos con la explicación)
Ejm.
V037. Bolsas de investigación.
100 AITEX 28.07.09 jjuan:
Nuevos campos:
7081173 "Nº acuerdo"
7081174 "Nº agrupación"
7081175 "Nº bolsa investigación"
7081176 "Nº línea relacionada"
7081177 "Línea prepago"
7081178 "Línea reparto"
7081179 "Línea dividida"
7081180 "Nº línea origen reparto"
Nuevas funciones:
txFn_RecuperaAcuerdo
txFn_GetGLAccount
txFn_PreasignarBolsaNuevaLinea
txFn_ActualizarMovsReserva
Comprobación de cuentas prepago.
Traer nuevos campos de cabecera.
Pre-asignación de bolsas de investigación en líneas.
Actualización de movs. consumo al cambiar la bolsa de
investigación.
Al traer líneas de prepago, ha de traerse el albarán
completo.
101 AITEX 01.12.09 aolcina: Nuevos campos:
7081219 "Facturación Posterior"
Gestión de nuevos campos.
102 PROVEEDOR 01.12.09 AOLCINA: Se cambia la etiqueta del campo "Prepago"
a 'Prepago IVA'.
V004. Familias de producto y variante
200 PROVEEDOR 21.08.09 DSOLAR: Añadimos la obligatoriedad de configurar "Cód.
Familia Genérica" en producto al
crear una línea de tipo producto.
201 PROVEEDOR 11.11.09 AOLCINA: Deshabilitamos uso de campo "Cód.
Familia Genérica" desde Producto.
Usar "cód. familia genérica" desde Variante.
202 PROVEEDOR 20.11.09 AOLCINA: Dejamos de usar la tabla "Rel. familia producto",
y enlazamos directamente con "Familia".