Codeunit de acción de ejemplo
La codeunit 5138156 "SIM_DPS Sample CU" muestra cómo una codeunit de Business Central puede proporcionar lógica de acción personalizada a Business Portals. El ejemplo utiliza SIM_DPS OL como tabla de origen y cubre el descubrimiento de funciones, la ejecución de acciones, los eventos del frontend y la navegación a registros de origen o recién creados.
Esta codeunit es una implementación de referencia. Copie los patrones necesarios en una codeunit específica del cliente y sustituya la lógica de ventas, los mensajes, los códigos de campos de entrada y los cálculos por los requisitos de la solución.
Funciones disponibles
Cuando Business Portals ejecuta la codeunit sin contexto de acción, OnRun utiliza GETFUNCTIONS y devuelve en Rec."Function List" los siguientes valores separados por comas:
| Función | Finalidad |
|---|---|
MakeOrderFromQuote |
Actualiza las líneas de la oferta con la entrada del portal y convierte la oferta de venta en un pedido. |
MakeOrderFromItem |
Crea un pedido de venta con una línea para el producto seleccionado. |
MakeQuoteFromItem |
Crea una oferta de venta con una línea para el producto seleccionado. |
Estos valores pueden seleccionarse como parámetros cuando la codeunit se asigna a una acción o a un estado de proceso.
Flujo de ejecución
El trigger OnRun distribuye todas las llamadas a la codeunit.
- Para una llamada de acción normal, lee la acción de la tabla del conjunto de datos y su configuración. Una acción de proceso obtiene el parámetro del estado siguiente; los demás tipos lo obtienen de la acción.
- Para una subfunción, lee la acción asignada a la tabla de cabecera y añade un sufijo derivado de
Rec."Sub Function Execute". - El valor resultante se procesa en la instrucción
casefinal.
Sub Function Execute |
Sufijo | Uso previsto |
|---|---|---|
SAVE |
Save |
Lógica personalizada de guardado. |
CHECK |
Check |
Validación previa a la ejecución. |
EVENT |
Event |
Procesar un evento del frontend y devolver datos. |
HASEVENT |
HasEvent |
Indicar al frontend si el evento está implementado. |
OPENDOCPAGE |
OpenDocPage |
Abrir el registro representado por la fila. |
OPENNEWPAGE |
OpenNewPage |
Abrir el registro creado por la acción. |
BASKETCHECK |
BasketCheck |
Validar una operación de cesta. |
Por ejemplo, MakeOrderFromQuote y EVENT producen MakeOrderFromQuoteEvent.
Solo contienen lógica estos controladores:
MakeOrderFromQuoteEventMakeOrderFromQuoteHasEventMakeOrderFromQuoteOpenDocPageMakeOrderFromQuoteOpenNewPageMakeOrderFromItemOpenDocPageMakeOrderFromItemOpenNewPageMakeQuoteFromItemOpenDocPageMakeQuoteFromItemOpenNewPage
Las ramas Save, Check y BasketCheck, junto con los eventos de las funciones basadas en productos, son marcadores de posición.
Ejemplos de documentos de venta
Convertir una oferta en pedido
MakeOrderFromQuote recibe el registro actual mediante un RecordRef. Busca las líneas asociadas en SIM_DPS OL, lee QUANTITY y actualiza las líneas de venta. Una cantidad vacía utiliza 1.
Después:
- Ejecuta la comprobación estándar de aprobación.
- Solicita confirmación si existe interfaz de usuario.
- Ejecuta la codeunit estándar
Sales-Quote to Order. - Copia el número de pedido de Business Portals en
Your Reference. - Guarda el identificador del nuevo registro y el identificador de página del pedido.
Crear un pedido o una oferta desde un producto
MakeOrderFromItem y MakeQuoteFromItem utilizan el producto seleccionado y el número de negocio asignado al pedido del portal. Cada procedimiento crea una cabecera y una línea, lee QUANTITY y utiliza 1 si está vacío.
Para acciones de proceso, el vínculo al documento se guarda en SIM_DPS OL Status; para otros tipos, directamente en SIM_DPS OL.
Eventos del frontend
| Evento | Comportamiento del ejemplo |
|---|---|
SELECTLINE |
Devuelve los identificadores de las líneas del mismo documento con la misma cantidad. |
UNSELECTLINE |
Devuelve el mismo grupo para que el frontend elimine la selección. |
INPUTLINE |
Lee QUANTITY, BRUTTO, NETTO y PRICE y devuelve valores calculados. |
MakeOrderFromQuoteHasEvent establece Sub Function Has Event en true para los tres eventos.
El controlador lee XML del BLOB Sub Function Event Data, toma EVENTVALUE de ROOT/EVENT y escribe la respuesta UTF-8 en Sub Function Event Return.
El cálculo de INPUTLINE es ilustrativo:
PRICEes la cantidad multiplicada por el precio unitario.BRUTTOes la cantidad multiplicada por10.NETTOes la cantidad multiplicada por5.- Las entradas numéricas vacías se tratan como cero.
Consulte Evento de selección de línea, Evento de anulación de selección y Evento de entrada de línea.
Abrir páginas de Business Central
OpenDocPage abre el registro indicado por Dataset Table Record utilizando la página configurada. OpenNewPage abre el registro creado: las acciones de proceso leen los identificadores de SIM_DPS OL Status y las demás de SIM_DPS OL.
Esto requiere una interfaz de Business Central y no es adecuado para sesiones en segundo plano ni servicios web.
Consideraciones de implementación
- Mantenga
TableNo = "SIM_DPS OL"; Business Portals pasa el contexto medianteRec. - Añada cada función seleccionable a
GETFUNCTIONSy al distribuidor. - Respete exactamente la convención de parámetro base más sufijo.
- Valide todos los registros requeridos; varios lookups omiten deliberadamente el control de errores.
- Sustituya mensajes, códigos y multiplicadores
BRUTTO/NETTOcodificados. - Utilice etiquetas localizadas para textos visibles.
- Revise el límite de transacción introducido por
Commit. - Devuelva solo los registros necesarios cuando puedan coincidir muchas líneas.
Resumen de configuración
- Cree o seleccione las tablas del conjunto de datos.
- Cree una acción o estado de proceso y asigne la codeunit.
- Seleccione un parámetro devuelto por
GETFUNCTIONS. - Asigne la acción a la tabla necesaria.
- Configure códigos de entrada, identificadores de página y eventos.
- Pruebe la ejecución normal, subfunciones, estados, acceso entre empresas y ejecución sin interfaz.