[Erp5-report] r28171 - /erp5/trunk/products/ERP5/Document/
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Jul 24 11:56:41 CEST 2009
Author: luke
Date: Fri Jul 24 11:56:38 2009
New Revision: 28171
URL: http://svn.erp5.org?rev=28171&view=rev
Log:
- _getExpandablePropertyUpdateDict do not need **kw, current_property_dict is more important
- do BPMInvoiceTransactionRule more like other BPM rules - follow naming, remove hardcoding
- provide matching_property as rule configuration to compare movements with previsions
- force using _list for categories (XXX: mixing category and category_list in edit leads to errors)
Modified:
erp5/trunk/products/ERP5/Document/BPMDeliveryRule.py
erp5/trunk/products/ERP5/Document/BPMInvoiceTransactionRule.py
erp5/trunk/products/ERP5/Document/BPMInvoicingRule.py
erp5/trunk/products/ERP5/Document/BPMOrderRule.py
erp5/trunk/products/ERP5/Document/BPMRule.py
Modified: erp5/trunk/products/ERP5/Document/BPMDeliveryRule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/BPMDeliveryRule.py?rev=28171&r1=28170&r2=28171&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/BPMDeliveryRule.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/BPMDeliveryRule.py [utf8] Fri Jul 24 11:56:38 2009
@@ -56,8 +56,8 @@
portal_type=delivery.getPortalDeliveryMovementTypeList())
return []
- def _getExpandablePropertyUpdateDict(self, applied_rule, movement, business_path,
- **kw):
+ def _getExpandablePropertyUpdateDict(self, applied_rule, movement,
+ business_path, current_property_dict):
"""Delivery specific update dict"""
return {
'order_value': movement,
Modified: erp5/trunk/products/ERP5/Document/BPMInvoiceTransactionRule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/BPMInvoiceTransactionRule.py?rev=28171&r1=28170&r2=28171&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/BPMInvoiceTransactionRule.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/BPMInvoiceTransactionRule.py [utf8] Fri Jul 24 11:56:38 2009
@@ -69,21 +69,21 @@
These previsions are actually returned as dictionaries.
"""
prevision_list = []
- context_movement = applied_rule.getParentValue()
+ input_movement = applied_rule.getParentValue()
business_process = applied_rule.getBusinessProcessValue()
movement_and_path_list = []
for business_path in business_process.getPathValueList(
self.getProperty('trade_phase_list'),
- context_movement):
- movement_and_path_list.append((context_movement, business_path))
+ input_movement):
+ movement_and_path_list.append((input_movement, business_path))
if len(movement_and_path_list) > 1:
raise NotImplementedError
# Find a matching cell
- cell = self._getMatchingCell(context_movement)
+ cell = self._getMatchingCell(input_movement)
if cell is not None : # else, we do nothing
for accounting_rule_cell_line in cell.objectValues() :
@@ -95,7 +95,7 @@
# * price_currency from the top level simulation movement's
# orderValue
resource = None
- invoice_line = context_movement.getDeliveryValue()
+ invoice_line = input_movement.getDeliveryValue()
if invoice_line is not None :
invoice = invoice_line.getExplanationValue()
resource = invoice.getProperty('resource',
@@ -123,33 +123,19 @@
# last resort : get the resource from the rule
resource = accounting_rule_cell_line.getResource() \
or cell.getResource()
- # XXX Harcoded list
- prevision_line = {
- 'source': accounting_rule_cell_line.getSource(),
- 'source_section': context_movement.getSourceSection(),
- 'source_decision': context_movement.getSourceDecision(),
- 'source_administration': context_movement \
- .getSourceAdministration(),
- 'source_project': context_movement.getSourceProject(),
- 'source_function': context_movement.getSourceFunction(),
- 'source_payment': context_movement.getSourcePayment(),
- 'destination': accounting_rule_cell_line.getDestination(),
- 'destination_section': context_movement.getDestinationSection(),
- 'destination_decision': context_movement.getDestinationDecision(),
- 'destination_administration': context_movement \
- .getDestinationAdministration(),
- 'destination_project': context_movement.getDestinationProject(),
- 'destination_function': context_movement.getDestinationFunction(),
- 'destination_payment': context_movement.getDestinationPayment(),
- 'start_date': context_movement.getStartDate(),
- 'stop_date': context_movement.getStopDate(),
- 'resource': resource,
- 'quantity': (context_movement.getCorrectedQuantity() *
- context_movement.getPrice(0.0)) *
- accounting_rule_cell_line.getQuantity(),
- 'price': 1,
- 'causality_value': business_path,
- }
+ prevision_line = {}
+ prevision_line.update(**self._getExpandablePropertyDict(applied_rule,
+ input_movement, business_path))
+
+ prevision_line.update(
+ source_list = [accounting_rule_cell_line.getSource()],
+ destination_list = [accounting_rule_cell_line.getDestination()],
+ quantity = (input_movement.getCorrectedQuantity() *
+ input_movement.getPrice(0.0)) *
+ accounting_rule_cell_line.getQuantity(),
+ resource_list = [resource],
+ price = 1,
+ )
from Products.ERP5Type.Document import newTempSimulationMovement
temporary_movement = newTempSimulationMovement(self.getPortalObject(),
'1', **prevision_line)
@@ -158,7 +144,7 @@
if resource is not None:
currency = self.restrictedTraverse(resource)
currency_url = currency.getRelativeUrl()
- destination_section = prevision_line['destination_section']
+ destination_section = prevision_line['destination_section_list'][0]
if destination_section is not None:
destination_currency_url = self.restrictedTraverse(
destination_section).getProperty('price_currency', None)
@@ -178,10 +164,10 @@
(destination_exchange_ratio*
applied_rule.getParentValue().getTotalPrice()),precision))
- source_section = prevision_line['source_section']
+ source_section = prevision_line['source_section_list'][0]
if source_section is not None:
source_currency_url = self.restrictedTraverse(
- 'source_section').getProperty('price_currency', None)
+ source_section).getProperty('price_currency', None)
else:
source_currency_url = None
if source_currency_url is not None \
@@ -202,7 +188,7 @@
'generate_prevision_script_id'):
generate_prevision_script_id = \
accounting_rule_cell_line.getGeneratePrevisionScriptId()
- prevision_line.update(getattr(context_movement,
+ prevision_line.update(getattr(input_movement,
generate_prevision_script_id)(prevision_line))
prevision_list.append(prevision_line)
return prevision_list
Modified: erp5/trunk/products/ERP5/Document/BPMInvoicingRule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/BPMInvoicingRule.py?rev=28171&r1=28170&r2=28171&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/BPMInvoicingRule.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/BPMInvoicingRule.py [utf8] Fri Jul 24 11:56:38 2009
@@ -61,8 +61,8 @@
return 0
#### Helper methods for expand
- def _getExpandablePropertyUpdateDict(self, applied_rule, movement, business_path,
- **kw):
+ def _getExpandablePropertyUpdateDict(self, applied_rule, movement,
+ business_path, current_property_dict):
return {
'deliverable': 1
}
Modified: erp5/trunk/products/ERP5/Document/BPMOrderRule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/BPMOrderRule.py?rev=28171&r1=28170&r2=28171&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/BPMOrderRule.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/BPMOrderRule.py [utf8] Fri Jul 24 11:56:38 2009
@@ -55,8 +55,8 @@
portal_type=order.getPortalOrderMovementTypeList())
return []
- def _getExpandablePropertyUpdateDict(self, applied_rule, movement, business_path,
- **kw):
+ def _getExpandablePropertyUpdateDict(self, applied_rule, movement,
+ business_path, current_property_dict):
"""Order rule specific update dictionary"""
return {
'order_value': movement,
Modified: erp5/trunk/products/ERP5/Document/BPMRule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/BPMRule.py?rev=28171&r1=28170&r2=28171&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/BPMRule.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/BPMRule.py [utf8] Fri Jul 24 11:56:38 2009
@@ -73,6 +73,7 @@
, PropertySheet.Reference
, PropertySheet.Version
, PropertySheet.AppliedRule
+ , PropertySheet.BPMAppliedRule
)
movement_type = 'Simulation Movement'
@@ -161,7 +162,8 @@
return 1
#### Helpers to overload
- def _getExpandablePropertyUpdateDict(self, applied_rule, movement, business_path, **kw):
+ def _getExpandablePropertyUpdateDict(self, applied_rule, movement,
+ business_path, current_property_dict):
"""Rule specific dictionary used to update _getExpandablePropertyDict
This method might be overloaded.
"""
@@ -231,11 +233,7 @@
return (immutable_movement_list, mutable_movement_list,
deletable_movement_list)
- def _getCompensatedMovementList(self, applied_rule,
- matching_property_list=(
- 'resource_list',
- 'variation_category_list',
- 'variation_property_dict',), **kw):
+ def _getCompensatedMovementList(self, applied_rule, **kw):
"""
Compute the difference between prevision and existing movements
@@ -259,7 +257,7 @@
for prevision in prevision_list:
p_matched_list = []
for movement in non_matched_list:
- for prop in matching_property_list:
+ for prop in self.getMatchingPropertyList():
if prevision.get(prop) != movement.getProperty(prop):
break
else:
@@ -345,9 +343,13 @@
for base_category in \
business_path.getSourceBaseCategoryList() +\
business_path.getDestinationBaseCategoryList():
- property_dict[base_category] = business_path\
- .getDefaultAcquiredCategoryMembership(base_category,
- context=movement)
+ # XXX: we need to use _list for categories *always*
+ category_url = business_path.getDefaultAcquiredCategoryMembership(
+ base_category, context=movement)
+ if category_url not in ['', None]:
+ property_dict['%s_list' % base_category] = [category_url]
+ else:
+ property_dict['%s_list' % base_category] = []
# Amount
if business_path.getQuantity():
property_dict['quantity'] = business_path.getQuantity()
@@ -371,7 +373,7 @@
# rule specific
property_dict.update(**self._getExpandablePropertyUpdateDict(applied_rule,
- movement, business_path, **kw))
+ movement, business_path, property_dict))
return property_dict
security.declareProtected(Permissions.ModifyPortalContent, 'expand')
More information about the Erp5-report
mailing list