Comisiones directas
Asignación de comisión manual de línea
A nivel de línea de venta, contamos con un campo oculto llamado IDPCOS Manual Commission %. En caso de tener un valor distinto de cero, se aplicará el porcentaje aquí definido y se ignorará cualquier otro criterio definido a nivel de tarifas.
En caso de ser necesario, este campo puede mostrarse en la interfaz de usuario, o rellenarse por código, para aplicar un % de comisión especifico, ignorando las tarifas de comisión existentes.
Añadir nuevos filtros
Si un cliente desea ser capaz de definir tarifas de comisión basadas en campos personalizados de su entorno, iDynamics Commissions permite realizar esta personalización de manera sencilla.
Para añadir filtros personalizados:
- Extienda la tabla "IDPCOS Direct Commission Rate" con los campos de filtro que solicite el cliente.
- Suscríbase al evento OnAfterCheckDirectCommissionRateAppliesToSalesLine de la codeunit "IDPCOS Direct Comm. Entry Mgt.". Este evento le permite indicar si una tarifa de comisión aplica, o no, a una línea de venta.
Como ejemplo, el siguiente método se suscribiría al evento especificado:
[EventSubscriber(ObjectType::Codeunit, Codeunit::"IDPCOS Direct Comm. Entry Mgt.", 'OnAfterCheckDirectCommissionRateAppliesToSalesLine', '', true, true)]
local procedure OnAfterCheckDirectCommissionRateAppliesToSalesLine(
CommissionRate: Record "IDPCOS Direct Commission Rate";
var TempCommissSalesLine: Record "IDPCOS Commiss. Sales Line" temporary;
var TempCommissSalesHeader: Record "IDPCOS Commiss. Sales Header" temporary;
var Applies: Boolean)
begin
if not Applies then
exit;
// Comprobamos si la comisión aplica y actualizamos el valor de la variable Applies.
if Condition then
Applies := false;
end;
Cuando iDynamics Commissions obtiene las tarifas de comisión que aplican a una línea de venta, primero filtra las tarifas según los datos especificados (ej. grupos de comisión), y a continuación recorre cada una de las tarifas que podría aplicar, lanzando este evento por cada una de ellas.
Si Applies ya es falso, no es necesario hacer nada, la aplicación ya ha decidido que la línea no cumple los criterios (ej. de margen) de la línea y no hace falta comprobar nada más. Si sí que aplicaba según estándar, es el momento de comprobar si las condiciones solicitadas por el cliente aplican o no, y cambiar el valor de Applies según corresponda.
Además de la variable Applies, el evento también recibe la tarifa que estamos comprobando si aplica, y dos registros temporales de línea y cabecera de venta (con los valores de la línea y cabecera del documento). En caso de que fuera necesario, estos registros temporales se pueden extender para traer campos personalizados de las tablas de venta de origen, o sencillamente se puede recuperar el documento de origen para consultar los valores que sean necesarios.