¡Hola lectores de NaviWorld! 👋 Una semana más, estamos de vuelta con la última entrega de nuestra serie sobre programación en Business Central. Si has seguido cada entrada, felicidades, ¡te has convertido en un maestro de la integración API en BC!
Resumen Rápido
Para ponernos al día, en las últimas semanas, hemos cubierto (la creación de URL)[/blog/crear-nueva-api], (tipos de peticiones)[/blog/tipos-peticion-api], (funcionalidades para las peticiones entre Business Central)[/blog/codeunit-url-api] y cómo (trabajar con variables HTTP en Business Central)[/blog/codeunit-peticiones-api].
Hoy, para cerrar este emocionante recorrido, vamos a poner a prueba toda esta funcionalidad y la integraremos en la página de clientes con acciones.
¡Menos explicaciones, más acción! ¡Manos a la obra! 💪
Estructura Base de la Página extendida de Clientes
Comencemos estableciendo la base de la páginaextension y las variables necesarias:
pageextension 51100 "Customer" extends "Customer List"
{
actions
{
addfirst(navigation)
{
}
}
var
MyCreateUrl: Codeunit "MyCreateUrl";
MyConection: Codeunit "MyConection";
URL: Text;
NewCustNo: Text;
Result: Text;
jsontext: Text;
}
En este código, he definido las herramientas esenciales para nuestro viaje: MyCreateUrl
y MyConection
para la creación de URL y la conexión a la API, respectivamente.
Creando un Nuevo Registro (POST)
Vamos a adentrarnos en el emocionante proceso de crear un nuevo cliente mediante una solicitud POST. Para comenzar, he desarrollado una función que genera el JSON necesario, que actuará como el cuerpo de nuestra solicitud. Este ejemplo ilustra cómo sería la creación de un nuevo cliente. Echemos un vistazo al código:
local procedure ReturnTestJsonPageAPI(NewName: Text) JsonText: Text
var
JObject: JsonObject;
begin
JObject.Add('name', 'CustomerName: ' + NewName);
JObject.WriteTo(JsonText);
end;
¡Estupendo! Ahora, pasemos a una función esencial para nuestras operaciones: procesar el JSON devuelto y extraer el número de cliente. Aquí está cómo funciona:
local procedure ReturnCustomerNo(JsonText: Text) CustomerNo: Text
var
Jtoken: JsonToken;
JObject: JsonObject;
begin
Jtoken.ReadFrom(JsonText);
JObject := Jtoken.AsObject();
JObject.Get('custNo', Jtoken);
CustomerNo := Jtoken.AsValue().AsText();
end;
Ahora, sumérgete en la acción de creación de un nuevo cliente. He incorporado un botón llamado PostPageAPI
, diseñado para enviar una solicitud POST a nuestra API. Esta acción resultará en la creación de un cliente ficticio, y además, te mostrará el número de cliente generado por Business Central.
action(PostPageAPI)
{
ApplicationArea = All;
Promoted = true;
PromotedCategory = Process;
Caption = 'Post Page API', Locked = true;
ToolTip = 'Post Page API', Locked = true;
Image = SendApprovalRequest;
trigger OnAction()
begin
Clear(MyConection);
Clear(MyCreateUrl);
MyCreateUrl.InitBaseURLPageAPI('mycustomers');
URL := MyCreateUrl.GetURL();
MyConection.CreateAuthorization('admin', '123456');
jsontext := MyConection.CallWebService(URL, 'Post', ReturnTestJsonPageAPI('CREATE'));
NewCustNo := ReturnCustomerNo(JsonText);
Message(JsonText);
end;
}
Visualizando el Cliente (GET)
Ahora, pasemos a visualizar el cliente que acabamos de crear. He implementado una acción GetPageAPI
que realiza una solicitud GET a la API, recuperando y mostrando la información del cliente recién creado.
action(GetPageAPI)
{
ApplicationArea = All;
Promoted = true;
PromotedCategory = Process;
Caption = 'GET Page API', Locked = true;
ToolTip = 'GET Page API', Locked = true;
Image = SendApprovalRequest;
trigger OnAction()
begin
Clear(MyConection);
Clear(MyCreateUrl);
MyCreateUrl.InitBaseURLPageAPI('mycustomers');
MyCreateUrl.SetUrlFilterKeyPageAPI(NewCustNo);
URL := MyCreateUrl.GetURL();
MyConection.CreateAuthorization('admin', '123456');
Result := MyConection.CallWebService(URL, 'Get', '');
Message(Result);
end;
}
Modificando el Cliente (PUT)
Vamos al siguiente nivel y actualicemos la información del cliente. Con la acción PutPageAPI
, hacemos una solicitud PUT con un JSON modificado, demostrando cómo actualizar datos de cliente.
action(PutPageAPI)
{
ApplicationArea = All;
Promoted = true;
PromotedCategory = Process;
Caption = 'Put Page API', Locked = true;
ToolTip = 'Put Page API', Locked = true;
Image = SendApprovalRequest;
trigger OnAction()
begin
Clear(MyConection);
Clear(MyCreateUrl);
MyCreateUrl.InitBaseURLPageAPI('mycustomers');
MyCreateUrl.SetUrlFilterKeyPageAPI(NewCustNo);
URL := MyCreateUrl.GetURL();
MyConection.CreateAuthorization('admin', '123456');
Result := MyConection.CallWebService(URL, 'Put', ReturnTestJsonPageAPI('MOD'));
Message(Result);
end;
}
Eliminando lo Creado (DELETE)
En este paso, eliminamos el cliente creado anteriormente. La acción DeletePageAPI
realiza una solicitud DELETE, eliminando el registro de cliente correspondiente.
action(DeletePageAPI)
{
ApplicationArea = All;
Promoted = true;
PromotedCategory = Process;
Caption = 'Delete Page API', Locked = true;
ToolTip = 'Delete Page API', Locked = true;
Image = SendApprovalRequest;
trigger OnAction()
begin
Clear(MyConection);
Clear(MyCreateUrl);
MyCreateUrl.InitBaseURLPageAPI('mycustomers');
MyCreateUrl.SetUrlFilterKeyPageAPI(NewCustNo);
URL := MyCreateUrl.GetURL();
MyConection.CreateAuthorization('admin', '123456');
Result := MyConection.CallWebService(URL, 'Delete', '');
Message(Result);
end;
}
Ejecución de Funciones desde la Página API
Finalmente, he añadido una acción llamada Functions
que demuestra cómo ejecutar funciones específicas directamente desde la página API.
action(Functions)
{
ApplicationArea = All;
Promoted = true;
PromotedCategory = Process;
Caption = 'Functions Page API', Locked = true;
ToolTip = 'Functions Page API', Locked = true;
Image = SendApprovalRequest;
trigger OnAction()
begin
Clear(MyConection);
Clear(MyCreateUrl);
MyCreateUrl.InitBaseURLPageAPI('mycustomers');
MyCreateUrl.SetUrlFilterKeyPageAPI(NewCustNo);
MyCreateUrl.SetUrlFuntionPageAPI('editName');
URL := MyCreateUrl.GetURL();
MyConection.CreateAuthorization('admin', '123456');
Result := MyConection.CallWebService(URL, 'Function', '');
Message(Result);
end;
}
Con estas adiciones, nuestra página de clientes se convierte en una herramienta completa para gestionar clientes a través de la API. Ahora, puedes crear, visualizar, modificar y eliminar clientes de manera eficiente. Esto son solo ejemplo de como podemos hacer peticiones en nuestros Business central.
Como es habitual, el ejemplo completo se encuentra disponible en GitHub.
Recuerda, aquí está la lógica de programación. Así que, amigos, sigamos construyendo soluciones increíbles en Business Central. ¡Nos vemos en el próximo artículo de NaviWorld! 🚀