Divergence Testers
Divergence Tester are used to detect one (or more) divergence between movements and Packing Lists.
Divergence Tester are added inside one Rule (in portal_rules). You can have different kinds of Divergence Testers.
Example:
DateDivergenceTester - Detect Date Divergences. You configure the acceptable range for each date.
PropertyDivergenceTester - Detect divergence at one property or category. (Equal)
QuantityDivergenceTester - Detect Quantity Divergence. You can the acceptable range and/or configurable parameters.
CategoryDivergenceTester - Detect divergence at category.
With Divergence Tester can be define a list of solvers proposed to user solve the divergence.
User Interface
The user need see the each divergence and choose each solver can be applied for to solve the divergence.
Some properties and categories use acquisition (Ex.: destination).
- Idea 1:
- The user choose one solver for all. Solve in Packing List Level.
- It's showed each line. And the user can choose different solvers for each line (or choose the same). The problem is what write inside the Packing List Level?
- Be able to identify Global Divergences and Local Divergences.
And the divergence list will this categories can be propose one just solver. (Or list all movements?)
Rule
isDivergent return 0 or 1. (test)
getDivergenceList return a list of Objects (or just strings) that contains the divergence of Packing List. (explain)
Delivery
isDivergent return 0 or 1 if any Content (Line or Cell) are divergent inside the the Delivery.
getDivergenceList return a list of Objects (or just strings) that contains the divergence of Packing List.
User Interface
Divergence Solver UI is a kind of Fast-Input of Solver Decision documents. For the implementation, we have two possibilities:
- create temporary Solver Process and temporary Solver Decision when a user invoked the action.
- it may be too slow.
- it creates no garbage if she cancels
- create Solver Process and Solver Decision by causality_workflow, i.e. at the timing when a delivery becomes divergent.
- fast lookup of existing related solver process from a delivery is required, eg. solver category in delivery level.
SolverProcess.updateSolverDecisionList() might be required.