Personalizar Importes
La aplicación cuenta con eventos para personalizar la manera en la que se obtienen los distintos importes de las líneas de venta.
Importe de la línea
Para iDynamics Commissions, el importe de la línea es el importe sin IVA y sin descuento pronto pago, en moneda local. Este importe se usará en estadísticas, cuando se muestren los importes vendidos por cada comercial, y como base para comisiones, cuando trabajemos sobre importe de venta y no sobre margen.
Si se desea personalizar este valor, el evento IDPCOS_OnBeforeGetSalesAmountLCY, lanzado por las tablas Sales Line, Sales Invoice Line y Sales Cr.Memo Line, permite modificar su cálculo.
local procedure IDPCOS_OnBeforeGetSalesAmountLCY(var SalesInvoiceLine: Record "Sales Invoice Line"; var SalesAmountLCY: Decimal; var Handled: Boolean)
El evento recibe como parámetro la línea (de venta, factura o abono) de la que se quiere conocer el importe de venta, una variable SalesAmountLCY en la que especificar el valor personalizado, y una variable Handled que, en caso de asignarse a verdadero, indica a la aplicación que el importe ha sido ya calculado de manera personalizada.
Para comisiones directas, este método se llama cada vez que se registra un a factura o abono. Para comisiones por objetivos de venta/periodo, no obstante, este método se llama cuando se registra el periodo de comisiones.
También existe el evento IDPCOS_OnAfterGetSalesAmountLCY event, en las mismas tablas, si lo que se desea es modificar el importe calculado por la aplicación.
Coste de la línea
El coste será utilizado para calcular el margen de la línea. Por omisión, iDynamics Commissions utiliza el coste calculado por Business Central (incluyendo el coste ajustado, si este ha cambiado desde que se registró la factura), pero esto puede personalizarse usando el evento IDPCOS_OnBeforeGetTotalCostLCY, lanzado por las tablas Sales Line, Sales Invoice Line y Sales Cr.Memo Line (si añade una referencia a iDynamics Commissions en su aplicación):
local procedure IDPCOS_OnBeforeGetTotalCostLCY(var SalesCrMemoLine: Record "Sales Invoice Line"; var TotalCostLCY: Decimal; var Handled: Boolean)
El evento recibe la línea (de venta, factura o abono) para la que se van a calcular las comisiones, una variable TotalCostLCY donde se puede indicar un coste personalizado (en moneda local) y una variable Handled, que en caso de asignarse a verdadero le hace saber a iDynamics Commissions que se ha calculado un coste personalizado.
Margen de la línea
Este es el importe resultante de restar el coste total de la línea (coste unitario x cantidad) al importe total de la misma, devuelto por el método anterior. Si se desea personalizar la manera en la que se obtiene el margen, el evento IDPCOS_OnBeforeGetProfitMarginAmountLCY, también disponible en las tablas Sales Line,Sales Invoice Line y Sales Cr.Memo Line, permite modificar su cálculo.
local procedure IDPCOS_OnBeforeGetProfitMarginAmountLCY(var SalesInvoiceLine: Record "Sales Invoice Line"; var ProfitMarginAmountLCY: Decimal; var Handled: Boolean)
El evento recibe como parámetro la línea (de venta, factura o abono) de la que se quiere conocer el margen, una variable ProfitMarginAmountLCY en la que especificar el valor personalizado, y una variable Handled que, en caso de asignarse a verdadero, indica a la aplicación que el importe ha sido ya calculado de manera personalizada.
Para comisiones directas, este método se llama cada vez que se registra un a factura o abono. Para comisiones por objetivos de venta/periodo, no obstante, este método se llama cuando se registra el periodo de comisiones.
Importe base
Dado que tanto comisiones directas como objetivos de venta pueden configurarse sobre el importe de ventas o sobre margen, la aplicación llama internamente a un método GetBaseAmountLCY que devuelve uno u otro valor, en función de lo que se haya configurado. Este método también puede personalizarse mediante el evento OnBeforeGetBaseAmountLCY de la tabla IDPCOS Commiss. Sales Line:
local procedure OnBeforeGetBaseAmountLCY(var TempCommissSalesLine: Record "IDPCOS Commiss. Sales Line"; BaseAmountCalcType: Enum "IDPCOS Base Amount Calc. Type"; var BaseAmountLCY: Decimal; var Handled: Boolean)
Este método recibe como parámetro el tipo de cálculo que se desea utilizar (importe de la línea o margen) y según el valor elegido llama a uno de los dos métodos anteriores.
Descuento aplicado a la línea
En caso de querer realizar personalizaciones sobre el descuento, o entender como ha sido calculado por iDynamics Commissions:
- Primero se calcula el precio real aplicado a la línea, que es el importe obtenido tras aplicar el % Dto. explícito de la línea al (precio de venta * la cantidad) y, al resultado, aplicarle el % descuento factura. El resultado se divide por la cantidad. No se tiene en cuenta el descuento por pronto pago. Es decir, es el campo "VAT Base Amount" de la línea dividido por la cantidad + "Importe Dto P.P." dividido por la cantidad.
- Se compara este precio con el que hubiera aplicado por omisión Business Central al cliente (su tarifa vigente).
- El descuento efectivo aplicado a la línea, corresponde a la diferencia entre ambos importes.
Resumiendo la fórmula, el % de descuento efectivo será: (Tarifa vigente - Precio real aplicado) / Tarifa vigente.
Eso significa que iDynamics Commissions considerará como descuento:
- La modificación del precio unitario.
- Cualquier descuento aplicado a nivel de línea.
- Cualquier descuento aplicado a nivel de cabecera (salvo pronto pago).
Finalmente, si desea personalizar este cálculo puede suscribirse al evento OnAfterCalculateProfitabilityAndRealLineDiscount de la tabla temporal IDPCOS Commiss. Sales Line. Cuando se generan comisiones, la aplicación crea una copia de la línea de venta en esta tabla y lanza este evento tras calcularse el margen y descuento de la línea. Modificando el campo Real Line Discount % de esta tabla temporal, cambiará el % de descuento que se tendrá en cuenta al calcular comisiones.