[Erp5-report] r27361 - /erp5/trunk/products/ERP5/Document/
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Jun 4 09:54:54 CEST 2009
Author: yusuke
Date: Thu Jun 4 09:54:51 2009
New Revision: 27361
URL: http://svn.erp5.org?rev=27361&view=rev
Log:
- changed ProductionOrderRule to inherit mixin instead of using
monkeyPatch
- added the interface ITransformation to Transformation and
TransformedResource
- changed TransformedResource to return a tempDocument of
TransformedResouce instead of Amount
- changed TransformationRule to use
Transformation.getAggeratedAmountList again, because Transformation
came to be able to return document which has trade_phase
Modified:
erp5/trunk/products/ERP5/Document/ProductionOrderRule.py
erp5/trunk/products/ERP5/Document/Transformation.py
erp5/trunk/products/ERP5/Document/TransformationRule.py
erp5/trunk/products/ERP5/Document/TransformedResource.py
Modified: erp5/trunk/products/ERP5/Document/ProductionOrderRule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/ProductionOrderRule.py?rev=27361&r1=27360&r2=27361&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/ProductionOrderRule.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/ProductionOrderRule.py [utf8] Thu Jun 4 09:54:51 2009
@@ -34,7 +34,7 @@
from zLOG import LOG, WARNING
-class ProductionOrderRule(OrderRule):
+class ProductionOrderRule(TransformationRuleMixin, OrderRule):
"""
Prouction Order Rule object use a Supply Chain to expand a
Production Order.
@@ -106,6 +106,3 @@
property_dict[prop] = movement.getProperty(prop)
return property_dict
-
-from Products.ERP5Type.Utils import monkeyPatch
-monkeyPatch(TransformationRuleMixin, ProductionOrderRule)
Modified: erp5/trunk/products/ERP5/Document/Transformation.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/Transformation.py?rev=27361&r1=27360&r2=27361&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/Transformation.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/Transformation.py [utf8] Thu Jun 4 09:54:51 2009
@@ -80,7 +80,9 @@
)
# Declarative interfaces
- __implements__ = ( interfaces.IVariated, )
+ __implements__ = ( interfaces.IVariated
+ , interfaces.ITransformation
+ )
security.declareProtected(Permissions.AccessContentsInformation,
@@ -221,6 +223,9 @@
display_id=display_id,**kw).\
render(object_list))
return variation_category_item_list
+
+ def updateAggregatedAmountList(self, context, **kw):
+ raise NotImplementedError, 'need?'
security.declareProtected(Permissions.AccessContentsInformation,
'getAggregatedAmountList')
Modified: erp5/trunk/products/ERP5/Document/TransformationRule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/TransformationRule.py?rev=27361&r1=27360&r2=27361&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/TransformationRule.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/TransformationRule.py [utf8] Thu Jun 4 09:54:51 2009
@@ -40,7 +40,7 @@
class TransformationMovementFactory:
def __init__(self):
- self.product = None # base information to use for making movements
+ self.default = None # base information to use for making movements
self.produced_list = list()
self.consumed_list = list()
@@ -63,6 +63,17 @@
return [causality_value.getRelativeUrl()
for causality_value in causality_value_list]
+ def getRequestList(self):
+ _list = []
+ for (request_list, sign) in ((self.produced_list, -1),
+ (self.consumed_list, 1)):
+ for request in request_list:
+ d = self.default.copy()
+ d.update(request)
+ d['quantity'] *= sign
+ _list.append(d)
+ return _list
+
def makeMovements(self, applied_rule):
"""
make movements under the applied_rule by requests
@@ -77,24 +88,18 @@
produced quantity should be represented by minus quantity on movement.
because plus quantity is consumed.
"""
- for (request_list, sign) in ((self.produced_list, -1),
- (self.consumed_list, 1)):
- for request in request_list:
- d = self.product.copy()
- d.update(request)
- d['quantity'] *= sign
-
- # get movement by causality
- key = tuple(sorted(self._getCausalityList(**request)))
- movement = movement_dict.get(key, None)
- # when no exist
- if movement is None:
- movement = applied_rule.newContent(portal_type="Simulation Movement")
- # update
- if movement.isFrozen():
- self.makeDifferentMovement(movement, **d)
- else:
- movement.edit(**d)
+ for request in self.getRequestList():
+ # get movement by causality
+ key = tuple(sorted(self._getCausalityList(**request)))
+ movement = movement_dict.get(key, None)
+ # when no exist
+ if movement is None:
+ movement = applied_rule.newContent(portal_type="Simulation Movement")
+ # update
+ if movement.isFrozen():
+ self.makeDifferentMovement(movement, **request)
+ else:
+ movement.edit(**request)
def _requestNetQuantity(self, request):
quantity = request.get('quantity', None)
@@ -214,7 +219,7 @@
"""
production_trade_phase_set = set([amount.getTradePhase()
for amount in transformation\
- .objectValues(portal_type='Transformation Transformed Resource')])
+ .getAggregatedAmountList()])
head_path_list = []
for state in business_process.objectValues(
portal_type=self.getPortalBusinessStateTypeList()):
@@ -261,7 +266,7 @@
head_production_path_list = self.getHeadProductionPathList(transformation,
business_process)
factory = self.getFactory()
- factory.product = dict(
+ factory.default = dict(
resource=transformation.getResource(),
quantity=parent_movement.getNetQuantity(),
quantity_unit=parent_movement.getQuantityUnit(),
@@ -270,8 +275,7 @@
# consumed amounts are sorted by phase, but not ordered.
amount_dict = {}
- # XXX Transformation.getAggregatedAmountList is useless for this, it can not have trade_phase, because Amout.
- for amount in transformation.objectValues(portal_type='Transformation Transformed Resource'):
+ for amount in transformation.getAggregatedAmountList():
phase = amount.getTradePhase()
if phase not in trade_phase_list:
@@ -313,7 +317,7 @@
start_date=start_date,
stop_date=stop_date,
# when last path of transformation, path.getQuantity() will be return 1.
- quantity=factory.product['quantity'] * path.getQuantity(),
+ quantity=factory.default['quantity'] * path.getQuantity(),
destination=destination,
#destination_section=???,
trade_phase_value_list=successor_remaining_phase_list)
@@ -346,7 +350,7 @@
causality_value=path,
start_date=start_date,
stop_date=stop_date,
- quantity=factory.product['quantity'] * path.getQuantity(),
+ quantity=factory.default['quantity'] * path.getQuantity(),
source=path.getSource(),
#source_section=???,
trade_phase_value_list=predecessor_remaining_phase_list)
@@ -358,7 +362,7 @@
start_date=start_date,
stop_date=stop_date,
resource=amount.getResource(),
- quantity=factory.product['quantity'] * amount.getQuantity()\
+ quantity=factory.default['quantity'] * amount.getQuantity()\
/ amount.getEfficiency() * path.getQuantity(),
quantity_unit=amount.getQuantityUnit(),
source=path.getSource(),
@@ -394,7 +398,7 @@
factory.requestProduced(
causality_value_list=last_phase_path_list,
# when last path of transformation, path.getQuantity() will be return 1.
- quantity=factory.product['quantity'] * path.getQuantity(),
+ quantity=factory.default['quantity'] * path.getQuantity(),
#destination_section=???,
**last_prop_dict)
Modified: erp5/trunk/products/ERP5/Document/TransformedResource.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/TransformedResource.py?rev=27361&r1=27360&r2=27361&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/TransformedResource.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/TransformedResource.py [utf8] Thu Jun 4 09:54:51 2009
@@ -30,7 +30,7 @@
from Globals import InitializeClass
from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet, Constraint, interfaces
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
from Products.ERP5Type.XMLObject import XMLObject
from Products.ERP5Type.XMLMatrix import XMLMatrix
from Products.ERP5Type.Utils import cartesianProduct
@@ -77,8 +77,9 @@
)
# Declarative interfaces
- __implements__ = ( interfaces.IVariated, )
-
+ __implements__ = ( interfaces.IVariated
+ , interfaces.ITransformation
+ )
### Variation matrix definition
@@ -163,6 +164,9 @@
self._setVVariationBaseCategoryList(value)
self.reindexObject()
+ def updateAggregatedAmountList(self, context, **kw):
+ raise NotImplementedError('TODO')
+
security.declareProtected(Permissions.AccessContentsInformation,
'getAggregatedAmountList')
def getAggregatedAmountList(self, context=None, REQUEST=None, **kw):
@@ -178,11 +182,11 @@
# If no predicate is defined on line, the result of the test
# must be true
# Create temporary object to store amount
- from Products.ERP5Type.Document import newTempAmount
+ from Products.ERP5Type.Document import newTempTransformedResource
# XXX changed by TB getParentID()+getId() instead of getId()
# This might not be enough if we have different transformation
# with the same id (for example in several modules)
- tmp_amount = newTempAmount(self.getPortalObject(), self.getParentId()+'_'+self.getId())
+ tmp_amount = newTempTransformedResource(self.getPortalObject(), self.getParentId()+'_'+self.getId())
# Create error string
error_string = ''
# Add resource relation
@@ -320,17 +324,19 @@
else:
variation_category_list = self._getVariationCategoryList()
variation_category_list_defined_by = self.getRelativeUrl()
+ trade_phase = self.getTradePhase()
# Store values in Amount
tmp_amount._edit(
# Properties define on transformation line
- title = self.getTitle(),
- description = self.getDescription(),
- efficiency = efficiency,
- quantity = quantity,
+ title=self.getTitle(),
+ description=self.getDescription(),
+ efficiency=efficiency,
+ quantity=quantity,
# This fields only store some informations for debugging if necessary
- quantity_defined_by = quantity_defined_by,
- variation_category_list_defined_by = variation_category_list_defined_by,
- error_string = error_string
+ quantity_defined_by=quantity_defined_by,
+ variation_category_list_defined_by=variation_category_list_defined_by,
+ trade_phase=trade_phase,
+ error_string=error_string
)
tmp_amount.setVariationCategoryList(variation_category_list)
# Variation property dict
More information about the Erp5-report
mailing list