Módulo: depuración de anulaciones¶
Resumen ejecutivo¶
En la mayoría de los sistemas ERP, las transacciones de venta y los demás movimientos se almacenan de forma que los datos nuevos solo se agregan a la base de datos y nunca se borran. Si hay un movimiento de venta de 10 piezas y más tarde se anula, en los datos del sistema ERP queda una información de movimiento de -10 uds. y después otra información de movimiento de +10 uds., es decir, la anulación y la devolución de la mercancía. Para proyectar mejor las ventas futuras, STOCK necesita ventas “depuradas”, o sea, ventas limpias de anulaciones. Solo necesitamos la cantidad de piezas realmente vendida que no se anuló ni se devolvió.
Descripción funcional¶
La siguiente descripción es válida para la versión 2 del módulo de depuración de anulaciones. Hay 2 maneras de depurar las anulaciones:
- Cleaning based on relations between movement ID and cancellation ID, that is needed for import into SIDI from data in ERP systems. Warning: this functionality is in progress and unfinished.
- Automatic cleaning, when STOCK searches and finds which cancellation is cleaning which movement, based on SIDI settings. This way it is not necessary to have the exact relation between a movement and cancellation. The following description is only dealing with the second cleaning type (automatic cleaning). The automatic cleaning is done in several phases:
- Para que la depuración funcione correctamente, el valor de la anulación y el del movimiento deben ser exactamente iguales, en unidades de medida, y al mismo tiempo debe figurar el mismo cliente tanto en el movimiento como en la anulación.
- En la siguiente fase basta con que los valores del movimiento y de la anulación coincidan. Esto significa que una venta al cliente X se puede depurar con una anulación del cliente Y. O que una venta al cliente X se puede depurar con una anulación de un cliente no definido.
- Solo debe coincidir el cliente. En este caso es posible que, por ejemplo, una venta de 10 piezas se depure con una anulación de 2 piezas y que así el valor final de la venta sea de 8 piezas.
- No coinciden ni el valor ni el nombre del cliente.
Nota: la funcionalidad de preferencia por la coincidencia de valores o de precios está en curso, pero sin terminar.
Siempre es necesario que el producto sea el mismo y que la bodega o tienda sea la misma. No es posible depurar el movimiento de un producto con la anulación de otro producto. En cada una de las fases mencionadas, la depuración funciona según este algoritmo:
El algoritmo
Se revisan todos los movimientos, de los más antiguos a los más recientes, y para cada movimiento buscamos una anulación posterior a él. El movimiento se reduce entonces en esa anulación. Una anulación más reciente tiene prioridad. El tamaño de la anulación en unidades de medida no tiene por qué ser igual al del movimiento, algo válido solo para las fases de depuración 3 y 4, véase arriba. Si la anulación es menor, solo se depura una parte del movimiento. Si la anulación es mayor, se depura todo el movimiento y el resto de la anulación queda disponible para depurar eventualmente otro movimiento. Ejemplo: si la anulación es de -20 piezas y el movimiento es de 15 uds., depuramos todo el movimiento de 15 uds., la anulación se reduce a -5 uds. y se puede usar para depurar otro movimiento.
Configuración:
La depuración de anulaciones se puede configurar en SIDI. Se puede desactivar, ya que la configuración predeterminada es “activada”, y también se pueden definir los tipos de movimiento que se deben depurar; de forma predeterminada solo se depuran las ventas y las entradas de la proyección. Además se puede definir la diferencia temporal máxima entre un movimiento y una anulación, cuyo valor predeterminado es de 365 días. Si una anulación se produce más de 365 días después de creado el movimiento, no se depurará. Ejemplos de anulaciones que, según las reglas anteriores, no servirán para depurar ningún movimiento: en desarrollo.