Test Libraries

febrero 8, 2023
Categoría: Técnico

En el post anterior “La estructura de un test” hablábamos de la importancia de que nuestros tests creen absolutamente todos los datos que necesitan para su ejecución, siendo así completamente independientes del entorno.

Para ello, en el ejemplo contemplado en el post anterior, hicimos uso de un par de funciones de una codeunit llamada “Library – Sales”, que se encuentra en la extensión Tests-TestLibraries. La extensión Tests-TestLibraries tiene a día de hoy 171 codeunits con centenares de funciones auxiliares que podemos utilizar.

En este artículo quiero hacer una pequeña recopilación y explicación de las funciones que he encontrado más útiles de la librería de ventas. El mismo tipo de funciones encontraréis en la librería de compras, en la de productos o en la de recursos. Adicionalmente, al final del post os hemos recopilado una lista de todas las codeunits librería que existen en la extensión Tests-TestsLibraries.

 

🔵 Library – Sales

Esta codeunit contiene un centenar de funciones que nos permiten realizar tareas varias dentro del módulo de ventas, como crear clientes, crear documentos de venta, y registrarlos.

 

▶ Creación de datos maestros

Para la creación de datos maestros en las ventas tenemos funciones como:

  • CreateCustomer(var Customer: Record Customer)
    Crea un nuevo cliente con la información mínima necesaria para poder ser utilizado en un documento de venta:
    • No.
    • Cód. forma pago
    • Cód. términos pago
    • Grupo contable neg. gen.
    • Grupo contable IVA negocio
    • Grupo registro cliente

Para todos estos datos, busca primero en la base de datos si existe un dato con la configuración mínima y más simple necesaria, y si no lo encuentra, lo crea.
Por ejemplo, en el caso de la forma de pago, busca una que no tenga contrapartida. Si no existe, la crea.

  • CreateCustomerWithAddress(var Customer: Record Customer)
    Primero crea un nuevo cliente y después asigna valores aleatorios a los campos Dirección, Dirección 2, Cód. país/región, Población y Código postal.
  • CreateCustomerBankAccount(var CustomerBankAccount: Record “Customer Bank Account”; CustomerNo: Code[20])
    Crea un nuevo Banco cliente con un código aleatorio para el cliente especificado.
  • CreateCustomerWithVATRegNo(var Customer: Record Customer): Code[20]
    Primero crea un nuevo cliente y después le asigna un país y un nuevo CIF/NIF generado aleatoriamente cumpliendo con el formato de CIF/NIF del país en cuestión.
  • CreateShipToAddress(var ShipToAddress: Record “Ship-to Address”; CustomerNo: Code[20])
    Crea una nueva dirección de envío con un código aleatorio para el cliente especificado.

 

 

▶ Creación de documentos

Para la creación de documentos de venta tenemos funciones como:

  • CreateSalesDocumentWithItem(var SalesHeader: Record “Sales Header”; var SalesLine: Record “Sales Line”; DocumentType: Enum “Sales Document Type”; CustomerNo: Code[20]; ItemNo: Code[20]; Quantity: Decimal; LocationCode: Code[10]; ShipmentDate: Date)
    Crea un nuevo documento de venta del tipo especificado (oferta, pedido, pedido abierto, factura, pedido de devolución o abono).
    La venta se realizará al cliente especificado, o en caso que no se especifique ningún cliente, se creará uno nuevo y se asignará al documento.
    El documento de venta tendrá una única línea y será de tipo producto, con el producto, la cantidad y almacén especificados. En caso que no se especifique ningún producto, se creará uno nuevo con la configuración mínima necesaria para poder ser utilizado en un documento de venta (No., Unidad medida base, grupos contables de producto, inventario e IVA).
  • CreateSalesHeader(var SalesHeader: Record “Sales Header”; DocumentType: Enum “Sales Document Type”; SellToCustomerNo: Code[20])
    Crea un nuevo documento de venta del tipo especificado (oferta, pedido, pedido abierto, factura, pedido de devolución o abono).
    La venta se realizará al cliente especificado, o en caso que no se especifique ningún cliente, se creará uno nuevo y se asignará al documento.
  • CreateSalesLine(var SalesLine: Record “Sales Line”; SalesHeader: Record “Sales Header”; Type: Enum “Sales Line Type”; No: Code[20]; Quantity: Decimal)
    Crea una nueva línea del tipo especificado (comentario, cuenta, producto, recurso, activo fijo o cargo de producto) para el documento de venta especificado.
    En caso que no se especifique No. de cuenta, producto, recurso o cargo de producto, se creará uno nuevo con la información mínima necesaria para ser utilizado en un documento de venta.
  • CreateSalesLineSimple(var SalesLine: Record “Sales Line”; SalesHeader: Record “Sales Header”)
    Crea una nueva línea para el documento de venta especificado. La línea no tiene ninguna información más allá de la clave primaria.
  • CreateSalesInvoice(var SalesHeader: Record “Sales Header”)
    Crea una nueva factura de venta para un nuevo cliente. La factura tiene una línea de producto para un nuevo producto con coste y precios aleatorios.
  • CreateSalesOrder(var SalesHeader: Record “Sales Header”)
    Crea un nuevo pedido de venta para un nuevo cliente. El pedido tiene una línea de producto para un nuevo producto con coste y precios aleatorios.
  • CreateSalesCreditMemo(var SalesHeader: Record “Sales Header”)
    Crea un nuevo abono de venta para un nuevo cliente. El abono tiene una línea de producto para un nuevo producto con coste y precios aleatorios.

 

 

▶ Ejecución de las acciones más habituales en las ventas

Para la ejecución de acciones varias del módulo de ventas tenemos funciones como:

  • PostSalesDocument(var SalesHeader: Record “Sales Header”; NewShipReceive: Boolean; NewInvoice: Boolean): Code[20]
    Registra el documento de venta que le pasamos. Puede registrar el envío, la factura o ambas cosas, dependiendo de los parámetros que le pasemos. Esta función nos devolverá el Nº Documento registrado (el Nº factura o el Nº albarán)
  • PostSalesPrepaymentInvoice(var SalesHeader: Record “Sales Header”) DocumentNo: Code[20]
    Registra la factura de prepago para el documento que le pasamos, y nos devuelve el Nº factura
  • PostSalesPrepaymentCreditMemo(var SalesHeader: Record “Sales Header”) DocumentNo: Code[20]
    Registra el abono de prepago para el documento que le pasamos, y nos devuelve el Nº factura
  • CopySalesDocument(SalesHeader: Record “Sales Header”; FromDocType: Enum “Sales Document Type From”; FromDocNo: Code[20]; IncludeHeader: Boolean; RecalcLines: Boolean)
    Copia en el documento actual la información del documento que le pasamos a través de los parámetros FromDocType y FromDocNo
  • ReleaseSalesDocument(var SalesHeader: Record “Sales Header”)
    Lanza el documento de venta
  • UndoSalesShipmentLine(var SalesShipmentLine: Record “Sales Shipment Line”)
    Deshace una línea de albarán

 

🔵 Codeunits Librería

A continuación una lista de las codeunits librería que existen en la extensión Test-TestLibraries.

  • “Library – Payment Export”
  • “Library – Payment Format”
  • “Library – Demo Data”
  • “Library – Random”
  • “Library – Email Feature”
  • “Library – Item Tracking”
  • “Library – Sales”
  • “Library – Price Calculation”
  • “Library – Resource”
  • “Library – Purchase”
  • “Library – Mock CRM Connection”
  • “Library – Graph Mgt”
  • “Library – Graph Document Tools”
  • “Library – Graph Sync”
  • “Library – Graph Journal Lines”
  • “Library – Graph Webhook”
  • “Library – Headlines”
  • “Library – Graph Mock”
  • “Library – Utility”
  • “Library – Dimension”
  • “Library – Report Validation”
  • “Library – Text File Validation”
  • “Library – Dialog Handler”
  • “Library – Report Dataset”
  • “Library UT Utility”
  • “Library – Setup Storage”
  • “Library – Office Host Provider”
  • “Library – Post. Prev. Handler”
  • “Library – O365 Sync”
  • “Library – Booking Manager”
  • “Library – Azure AD Auth Flow”
  • “Library – Power BI Service Mgt”
  • “Library – Azure AD User Mgmt.”
  • “Library – Azure KV Mock Mgmt.”
  • “Library – Incoming Documents”
  • “Library – Workflow”
  • “Library – Application Area”
  • “Library – Report Selection”
  • “Library – TempNVBufferHandler”
  • “Library – SMTP Mail Handler”
  • “Library – File Mgt Handler”
  • “Library – ERM”
  • “Library – ERM Unapply”
  • “Library – Fiscal Year”
  • “Library – Pmt Disc Setup”
  • “Library – Account Schedule”
  • “Library – ERM Country Data”
  • “Library – Journals”
  • “Library – ERM Customer Watch”
  • “Library – ERM Vendor Watch”
  • “Library – Fixed Asset”
  • “Library – Cash Flow”
  • “Library – Cash Flow Helper”
  • “Library – XBRL”
  • “Library – XML Read”
  • “Library – XPath XML Reader”
  • “Library – Verify XML Schema”
  • “Library – Cost Accounting”
  • “Library – XML Read OnServer”
  • “Library – Plain Text File”
  • “Library – VAT Report”
  • “Library – Finance Charge Memo”
  • “Library – Document Approvals”
  • “Library – Marketing”
  • “Library – Human Resource”
  • “Library – Service”
  • “Library – Rapid Start”
  • “Library – Time Sheet”
  • “Library – Job”
  • “Library – CAMT File Mgt.”
  • “Library – O365”
  • “Library – Tables UT”
  • “Library – Costing”
  • “Library – Inventory”
  • “Library – Manufacturing”
  • “Library – Planning”
  • “Library – Warehouse”
  • “Library – Kitting”
  • “Library – Assembly”
  • “Library – Trees”
  • “Library – Templates”
  • “Library – Patterns”
  • “Library – Small Business”
  • “Library – Permissions”
  • “Library – Error Message”
  • “Library – Permissions Verify”
  • “Library – Lower Permissions”
  • “Library – Invoicing App”
  • “Library – Notification Mgt.”
  • “Library – Item Reference”
  • “Library – E2E Plan Permissions”
  • “Library – Test Initialize”
  • “Library – Job Queue”
  • “Library – CRM Integration”

 

🔵 ¿Quieres saber más sobre Testing? 👇

Aquí tienes algunos recursos para aprender TDD con ClipPlatform:

  1. La Masterclass gratuita “Testing con TDD”, que tendrá lugar el próximo miércoles 15 de febrero a las 15.30h. Apúntate aquí.
  2. El “Curso Testing con TDD” , disponible en nuestra plataforma
  3. Los posts “Testing automatizado en proyectos de Business Central”“La experiencia de ClipPlatform aplicando Testing” y “La estructura de un test”

 

¡Hasta el próximo post! 😉

Comentarios