En este manual, aprenderemos a crear una «Pila de Trabajo» y añadir un menú en Dynamics 365 Business Central. Una «Pila de Trabajo» es un conjunto de elementos que se deben gestionar, típicamente se usa para mostrar información relevante o tareas pendientes en el entorno de un usuario. Un menú en Business Central es una forma organizada de presentar diferentes páginas y acciones a los usuarios para que puedan acceder a las funcionalidades necesarias de manera rápida y eficiente.
1. Crear Tabla y Página para Facturas de Venta Sin Registrar
Primero, definiremos una tabla y una página que representarán las facturas de venta sin registrar.
Definir la Tabla
Crea un nuevo archivo .al
y define la tabla PruebaPilayMenu_Cue
con el siguiente código:
table 50103 "PruebaPilayMenu_Cue"
{
Caption = 'PruebaPilayMenu_Cue';
DataClassification = ToBeClassified;
fields
{
field(1; "PrimaryKey"; Code[20])
{
Caption = 'PrimaryKey';
}
field(2; "PendingSalesInvoices"; Integer)
{
Caption = 'PendingSalesInvoices';
FieldClass = FlowField;
CalcFormula = Count("Sales Header" where("Document Type" = Filter(Order), "Posting Date" = Filter('')));
}
}
keys
{
key(PK; "PrimaryKey")
{
Clustered = true;
}
}
procedure InsertIfNotExists()
begin
Rec.Reset();
if not Rec.Get() then begin
Rec.Init();
Rec.Insert();
end;
end;
}
Definir la Página
Crea otro archivo .al
para la página PruebaPilayMenu_Cue
con el siguiente código:
page 50109 "PruebaPilayMenu_Cue"
{
ApplicationArea = All;
CaptionML = ENU = 'Pending Sales Invoices', ESP = 'Facturas de Venta Pendientes';
PageType = CardPart;
SourceTable = "PruebaPilayMenu_Cue";
RefreshOnActivate = TRUE;
layout
{
area(content)
{
cuegroup(General)
{
CaptionML = ENU = 'Pending Sales Invoices Inbox', ESP = 'Buzón de Facturas de Venta Pendientes';
field(PendingSalesInvoices; Rec.PendingSalesInvoices)
{
CaptionML = ESP = 'Facturas de Venta Pendientes', ENU = 'Pending Sales Invoices';
StyleExpr = Style;
Image = Checklist;
trigger OnDrillDown()
var
"Sales Header": Record "Sales Header";
"Page SalesOrderListPending": Page "Sales Order List";
begin
"Sales Header".SetRange("Document Type", "Sales Header"."Document Type"::Order);
"Page SalesOrderListPending".SetTableView("Sales Header");
"Page SalesOrderListPending".Run();
end;
}
}
}
}
actions
{
area(Processing)
{
action("Set Up Cues")
{
ApplicationArea = All;
Image = Setup;
trigger OnAction()
var
CuesAndKpis: Codeunit "Cues And KPIs";
CueRecordRef: RecordRef;
begin
CueRecordRef.GetTable(Rec);
CuesAndKpis.OpenCustomizePageForCurrentUser(CueRecordRef.Number);
end;
}
}
}
trigger OnOpenPage()
begin
Rec.InsertIfNotExists();
end;
trigger OnAfterGetCurrRecord()
var
PendingSalesInvoicesInbox: Record "Sales Header";
begin
PendingSalesInvoicesInbox.SetRange("Document Type", PendingSalesInvoicesInbox."Document Type"::Order);
BlockedCustomersVar := PendingSalesInvoicesInbox.Count();
if BlockedCustomersVar > 0 then
Style := 'Unfavorable';
else
Style := 'Unfavorable';
BlockedCustomersVar := 0;
end;
var
BlockedCustomersVar: Integer;
Style: Text;
}
2. Añadir la Página a la Pila de Trabajo en el Centro de Roles
Ahora, extendemos la página del centro de roles para incluir nuestra nueva página PruebaPilayMenu_Cue
.
Extender la Página del Centro de Roles
Crea un archivo .al
para la extensión de la página del centro de roles con el siguiente código:
pageextension 50101 "Prueba Pila y Menu" extends "Account Receivables" // "Business Manager Role Center"
{
layout
{
addfirst(rolecenter)
{
part(PruebaPilayMenuCue; "PruebaPilayMenu_Cue")
{
ApplicationArea = Basic, Suite;
}
}
}
actions
{
addlast(Sections)
{
group("Ventas")
{
action("Pedidos de Venta")
{
RunObject = page "Sales Order List";
ApplicationArea = All;
}
action("Facturas de Venta")
{
RunObject = page "Posted Sales Invoices";
ApplicationArea = All;
}
action("Clientes")
{
RunObject = page "Customer List";
ApplicationArea = All;
}
group("Configuración")
{
action("Métodos de Pago")
{
RunObject = page "Payment Methods";
ApplicationArea = All;
}
action("Condiciones de Pago")
{
RunObject = page "Payment Terms";
ApplicationArea = All;
}
}
}
}
}
}