Hoy toca uno corto. Hace un tiempo ya expliqué como añadir un lookup multiselección a un diálogo de SysOperation, y en este post voy a contar como añadir un Menu Item a un diálogo de SysOperation como un Function Button.

Antes de que se introdujera el SysOperation Framework en AX2012, usábamos el RunBase Framework, y quizá hacer estas cosas parecía más fácil/rápido con el RunBase porque teníamos toda la lógica en una única clase. Pero al final lo que tenemos que hacer es prácticamente lo mismo pero en la clase UIBuilder.

Dejad que os muestre y explique el código. Sólo voy a enseñar el DataContract y la UIBuilder porque son las únicas que nos interesan en este caso.

Clase DataContract

[
	DataContract,
    SysOperationContractProcessing(classStr(AASMenuItemDemoUIBuilder)),
	SysOperationGroup('VendGrp', 'Vendor', '1')
]
class AASMenuItemDemoDataContract
{
    VendAccount	vendAccount;
	[
		DataMember,
        SysOperationGroupMember('VendGrp')
	]
	public VendAccount parmVendAccount(VendAccount _vendAccount = VendAccount)
    {
        vendAccount = _vendAccount;
        return vendAccount;
	}
}

Por favor, ignorad todo el hardcodeo 😛

En la clase Data Contract he definido un miembro de tipo VendAccount. También he creado un grupo usando el atributo SysOperationGroup y puesto el campo VendAccount dentro de este usando el atributo SysOperationGroupMember en el método parm.

También he definido la clase UIBuilder usando el atributo SysOperationContractProcessing.

Clase UIBuilder

class AASMenuItemDemoUIBuilder extends SysOperationAutomaticUIBuilder
{
    FormBuildFunctionButtonControl	menuItemBtn;
    FormBuildGroupControl			vendorGrp;
    public void build()
    {
        super();
        vendorGrp		= this.dialog().formBuildDesign().control('VendGrp');
        menuItemBtn		= vendorGrp.addControl(FormControlType::MenuFunctionButton, 'AASVendTableBtn');
        menuItemBtn.menuItemType(MenuItemType::Display);
        menuItemBtn.menuItemName(menuItemDisplayStr(VendTable));        
    }
}

Todo lo que necesitemos modificar en el diálogo que genera el SysOperation Framework tiene que hacerse en la clase UIBuilder. Lo que tenemos que hacer es exactamente lo mismo que hubieramos hecho con una RunBase. Obtener los controles del diálogo y modificarlos o añadir elementos.

Obtenemos el grupo VendGrp que hemos creado en la clase Data Contract y le añadimos un control. Este control será del tipo MenuFunctionButton y una vez creado definimos sus propiedades y listo!

¡Un botón Menu Item en un diálogo SysOperation!

¡Suscríbete!

Recibe un correo cuando se publique un nuevo post
Author

Microsoft Dynamics 365 Finance & Operations technical architect and developer. Business Applications MVP since 2020.

Write A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

ariste.info