Commit c6884ff5 authored by Alain Takoudjou's avatar Alain Takoudjou Committed by Rafael Monnerat

Apply commit: Disallow any compensation.

From Lukasz Nowak:

1- Compensation is undesired. (51c8a250)

  Raise loudly with message.

2- Disallow any compensation. (3c74ed07)

3- Emit more informative log. (534b2e77)
parent 72fadc06
...@@ -35,6 +35,8 @@ from erp5.component.module.ExpandPolicy import policy_dict ...@@ -35,6 +35,8 @@ from erp5.component.module.ExpandPolicy import policy_dict
from erp5.component.interface.IRule import IRule from erp5.component.interface.IRule import IRule
from erp5.component.interface.IDivergenceController import IDivergenceController from erp5.component.interface.IDivergenceController import IDivergenceController
from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater
from pprint import pformat
def _compare(tester_list, prevision_movement, decision_movement): def _compare(tester_list, prevision_movement, decision_movement):
for tester in tester_list: for tester in tester_list:
...@@ -279,6 +281,9 @@ class RuleMixin(Predicate): ...@@ -279,6 +281,9 @@ class RuleMixin(Predicate):
if quantity: if quantity:
if decision_movement.isFrozen(): if decision_movement.isFrozen():
# Compensate # Compensate
raise NotImplementedError(
'Compensation undesired: decision_movement %s = %s' % (decision_movement.getPath(),
pformat(decision_movement.__dict__), ))
new_movement = decision_movement.asContext(quantity=-quantity) new_movement = decision_movement.asContext(quantity=-quantity)
new_movement.setDelivery(None) new_movement.setDelivery(None)
movement_collection_diff.addNewMovement(new_movement) movement_collection_diff.addNewMovement(new_movement)
...@@ -326,6 +331,12 @@ class RuleMixin(Predicate): ...@@ -326,6 +331,12 @@ class RuleMixin(Predicate):
not_completed_movement = decision_movement not_completed_movement = decision_movement
# Frozen must be compensated # Frozen must be compensated
if not _compare(profit_tester_list, prevision_movement, decision_movement): if not _compare(profit_tester_list, prevision_movement, decision_movement):
raise NotImplementedError(
'Compensation undesired: prevision_movement %s = %s decision_movement %s = %s' % (
prevision_movement.getPath(),
pformat(prevision_movement.__dict__),
decision_movement.getPath(),
pformat(decision_movement.__dict__) ))
new_movement = decision_movement.asContext( new_movement = decision_movement.asContext(
quantity=-decision_movement_quantity) quantity=-decision_movement_quantity)
new_movement.setDelivery(None) new_movement.setDelivery(None)
...@@ -344,6 +355,12 @@ class RuleMixin(Predicate): ...@@ -344,6 +355,12 @@ class RuleMixin(Predicate):
if decision_movement.isFrozen(): if decision_movement.isFrozen():
# Frozen must be compensated # Frozen must be compensated
if not _compare(divergence_tester_list, prevision_movement, decision_movement): if not _compare(divergence_tester_list, prevision_movement, decision_movement):
raise NotImplementedError(
'Compensation undesired: prevision_movement %s = %s decision_movement %s = %s' % (
prevision_movement.getPath(),
pformat(prevision_movement.__dict__),
decision_movement.getPath(),
pformat(decision_movement.__dict__) ))
new_movement = decision_movement.asContext( new_movement = decision_movement.asContext(
quantity=-decision_movement_quantity) quantity=-decision_movement_quantity)
new_movement.setDelivery(None) new_movement.setDelivery(None)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment