[Erp5-report] r32576 kazuhiko - /erp5/trunk/products/ERP5/Document/PaymentRule.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Feb 16 07:34:13 CET 2010
Author: kazuhiko
Date: Tue Feb 16 07:34:12 2010
New Revision: 32576
URL: http://svn.erp5.org?rev=32576&view=rev
Log:
2 spaces indent.
Modified:
erp5/trunk/products/ERP5/Document/PaymentRule.py
Modified: erp5/trunk/products/ERP5/Document/PaymentRule.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/PaymentRule.py?rev=32576&r1=32575&r2=32576&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/PaymentRule.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/PaymentRule.py [utf8] Tue Feb 16 07:34:12 2010
@@ -36,131 +36,131 @@
from zLOG import LOG, INFO
class PaymentRule(Rule):
- """Payment Rule generates payment simulation movement from invoice
- transaction simulation movements.
+ """Payment Rule generates payment simulation movement from invoice
+ transaction simulation movements.
+ """
+
+ # CMF Type Definition
+ meta_type = 'ERP5 Payment Rule'
+ portal_type = 'Payment Rule'
+ add_permission = Permissions.AddPortalContent
+
+ # Declarative security
+ security = ClassSecurityInfo()
+ security.declareObjectProtected(Permissions.AccessContentsInformation)
+
+ receivable_account_type_list = ('asset/receivable', )
+ payable_account_type_list = ('liability/payable', )
+
+
+ def _getPaymentConditionList(self, movement):
+ """Returns payment conditions for this movement.
+ """
+ while 1:
+ delivery_movement = movement.getDeliveryValue()
+ if delivery_movement is not None:
+ explanation = delivery_movement.getExplanationValue()
+ payment_condition_list = explanation.contentValues(
+ filter=dict(portal_type='Payment Condition'))
+ if payment_condition_list:
+ return payment_condition_list
+
+ # 'order' category is deprecated. it is kept for compatibility.
+ order_movement = movement.getOrderValue()
+ if order_movement is not None:
+ explanation = order_movement.getExplanationValue()
+ payment_condition_list = explanation.contentValues(
+ filter=dict(portal_type='Payment Condition'))
+ if payment_condition_list:
+ return payment_condition_list
+
+ movement = movement.getParentValue().getParentValue()
+ if movement.getPortalType() != self.movement_type:
+ LOG('ERP5', INFO, "PaymentRule couldn't find payment condition")
+ return []
+
+ def _createMovementsForPaymentCondition(self,
+ applied_rule, payment_condition):
+ """Create simulation movements for this payment condition.
+ """
+ simulation_movement = applied_rule.getParentValue()
+ date = payment_condition.TradeCondition_getDueDate()
+
+ if payment_condition.getQuantity():
+ quantity = payment_condition.getQuantity()
+ else:
+ ratio = payment_condition.getEfficiency(1)
+ quantity = simulation_movement.getQuantity() * ratio
+
+ edit_dict = dict(
+ causality_value=payment_condition,
+ payment_mode=payment_condition.getPaymentMode(),
+ source=simulation_movement.getSource(),
+ source_section=simulation_movement.getSourceSection(),
+ source_payment=payment_condition.getSourcePayment() or
+ simulation_movement.getSourcePayment(),
+ destination=simulation_movement.getDestination(),
+ destination_section=simulation_movement.getDestinationSection(),
+ destination_payment=payment_condition.getDestinationPayment() or
+ simulation_movement.getDestinationPayment(),
+ resource=simulation_movement.getResource(),
+ start_date=date,
+ price=1,
+ quantity= - quantity,)
+
+ applied_rule.newContent( **edit_dict )
+
+ edit_dict['source'] = self.getSourcePayment()
+ edit_dict['destination'] = self.getDestinationPayment()
+ edit_dict['quantity'] = - edit_dict['quantity']
+ applied_rule.newContent( **edit_dict )
+
+
+ security.declareProtected(Permissions.ModifyPortalContent, 'expand')
+ def expand(self, applied_rule, **kw):
+ """Expands the current movement downward.
+ """
+ my_parent_movement = applied_rule.getParentValue()
+ # generate for source
+ bank_account = self.getDestinationPaymentValue(
+ portal_type='Account')
+ assert bank_account is not None
+
+ for payment_condition in self._getPaymentConditionList(
+ my_parent_movement):
+ payment_condition_url = payment_condition.getRelativeUrl()
+ # look for a movement for this payment condition:
+ corresponding_movement_list = []
+ for simulation_movement in applied_rule.contentValues():
+ if simulation_movement.getCausality() == payment_condition_url:
+ corresponding_movement_list.append(simulation_movement)
+ if not corresponding_movement_list:
+ self._createMovementsForPaymentCondition(applied_rule,
+ payment_condition)
+ else:
+ # TODO: update corresponding_movement_list
+ pass
+
+ #Rule.expand(self, applied_rule, **kw)
+
+ def test(self, context, tested_base_category_list=None):
+ """Test if this rule apply.
"""
- # CMF Type Definition
- meta_type = 'ERP5 Payment Rule'
- portal_type = 'Payment Rule'
- add_permission = Permissions.AddPortalContent
+ # XXX for now disable this rule
+ return False
- # Declarative security
- security = ClassSecurityInfo()
- security.declareObjectProtected(Permissions.AccessContentsInformation)
-
- receivable_account_type_list = ('asset/receivable', )
- payable_account_type_list = ('liability/payable', )
-
-
- def _getPaymentConditionList(self, movement):
- """Returns payment conditions for this movement.
- """
- while 1:
- delivery_movement = movement.getDeliveryValue()
- if delivery_movement is not None:
- explanation = delivery_movement.getExplanationValue()
- payment_condition_list = explanation.contentValues(
- filter=dict(portal_type='Payment Condition'))
- if payment_condition_list:
- return payment_condition_list
-
- # 'order' category is deprecated. it is kept for compatibility.
- order_movement = movement.getOrderValue()
- if order_movement is not None:
- explanation = order_movement.getExplanationValue()
- payment_condition_list = explanation.contentValues(
- filter=dict(portal_type='Payment Condition'))
- if payment_condition_list:
- return payment_condition_list
-
- movement = movement.getParentValue().getParentValue()
- if movement.getPortalType() != self.movement_type:
- LOG('ERP5', INFO, "PaymentRule couldn't find payment condition")
- return []
-
- def _createMovementsForPaymentCondition(self,
- applied_rule, payment_condition):
- """Create simulation movements for this payment condition.
- """
- simulation_movement = applied_rule.getParentValue()
- date = payment_condition.TradeCondition_getDueDate()
-
- if payment_condition.getQuantity():
- quantity = payment_condition.getQuantity()
- else:
- ratio = payment_condition.getEfficiency(1)
- quantity = simulation_movement.getQuantity() * ratio
-
- edit_dict = dict(
- causality_value=payment_condition,
- payment_mode=payment_condition.getPaymentMode(),
- source=simulation_movement.getSource(),
- source_section=simulation_movement.getSourceSection(),
- source_payment=payment_condition.getSourcePayment() or
- simulation_movement.getSourcePayment(),
- destination=simulation_movement.getDestination(),
- destination_section=simulation_movement.getDestinationSection(),
- destination_payment=payment_condition.getDestinationPayment() or
- simulation_movement.getDestinationPayment(),
- resource=simulation_movement.getResource(),
- start_date=date,
- price=1,
- quantity= - quantity,)
-
- applied_rule.newContent( **edit_dict )
-
- edit_dict['source'] = self.getSourcePayment()
- edit_dict['destination'] = self.getDestinationPayment()
- edit_dict['quantity'] = - edit_dict['quantity']
- applied_rule.newContent( **edit_dict )
-
-
- security.declareProtected(Permissions.ModifyPortalContent, 'expand')
- def expand(self, applied_rule, **kw):
- """Expands the current movement downward.
- """
- my_parent_movement = applied_rule.getParentValue()
- # generate for source
- bank_account = self.getDestinationPaymentValue(
- portal_type='Account')
- assert bank_account is not None
-
- for payment_condition in self._getPaymentConditionList(
- my_parent_movement):
- payment_condition_url = payment_condition.getRelativeUrl()
- # look for a movement for this payment condition:
- corresponding_movement_list = []
- for simulation_movement in applied_rule.contentValues():
- if simulation_movement.getCausality() == payment_condition_url:
- corresponding_movement_list.append(simulation_movement)
- if not corresponding_movement_list:
- self._createMovementsForPaymentCondition(applied_rule,
- payment_condition)
- else:
- # TODO: update corresponding_movement_list
- pass
-
- #Rule.expand(self, applied_rule, **kw)
-
- def test(self, context, tested_base_category_list=None):
- """Test if this rule apply.
- """
-
- # XXX for now disable this rule
+ if context.getParentValue()\
+ .getSpecialiseValue().getPortalType() == 'Payment Rule':
return False
- if context.getParentValue()\
- .getSpecialiseValue().getPortalType() == 'Payment Rule':
- return False
+ for account in ( context.getSourceValue(portal_type='Account'),
+ context.getDestinationValue(portal_type='Account')):
+ if account is not None:
+ account_type = account.getAccountType()
+ if account_type in self.receivable_account_type_list or \
+ account_type in self.payable_account_type_list:
+ return True
- for account in ( context.getSourceValue(portal_type='Account'),
- context.getDestinationValue(portal_type='Account')):
- if account is not None:
- account_type = account.getAccountType()
- if account_type in self.receivable_account_type_list or \
- account_type in self.payable_account_type_list:
- return True
+ return False
- return False
-
More information about the Erp5-report
mailing list