Commit 8dc50879 authored by Arnaud Fontaine's avatar Arnaud Fontaine Committed by Cédric Le Ninivin

erp5_budget: Fix errors/warnings reported by pylint.

parent 506a1e47
......@@ -34,33 +34,32 @@ from Products.ERP5.mixin.variated import VariatedMixin
class Budget(Predicate, VariatedMixin):
"""
Budget means a kind of budget stock.
"""
"""
Budget means a kind of budget stock.
"""
# Default Properties
property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject
, PropertySheet.SimpleItem
, PropertySheet.CategoryCore
, PropertySheet.Folder
, PropertySheet.Predicate
, PropertySheet.SortIndex
, PropertySheet.Task
, PropertySheet.Arrow
, PropertySheet.Budget
, PropertySheet.Path
, PropertySheet.VariationRange
, PropertySheet.Reference
, PropertySheet.Version
)
# Default Properties
property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject
, PropertySheet.SimpleItem
, PropertySheet.CategoryCore
, PropertySheet.Folder
, PropertySheet.Predicate
, PropertySheet.SortIndex
, PropertySheet.Task
, PropertySheet.Arrow
, PropertySheet.Budget
, PropertySheet.Path
, PropertySheet.VariationRange
, PropertySheet.Reference
, PropertySheet.Version
)
# CMF Type Definition
meta_type='ERP5 Budget'
portal_type='Budget'
add_permission = Permissions.AddPortalContent
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
# CMF Type Definition
meta_type='ERP5 Budget'
portal_type='Budget'
add_permission = Permissions.AddPortalContent
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
\ No newline at end of file
......@@ -6,6 +6,12 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>Budget</string> </value>
......@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.Document.Budget</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>document.erp5.Budget</string> </value>
......@@ -37,15 +49,7 @@
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple>
<string>W: 37, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 42, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 59, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 60, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 61, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 64, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 65, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
</tuple>
<tuple/>
</value>
</item>
<item>
......@@ -55,13 +59,28 @@
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -74,7 +93,7 @@
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
......@@ -83,7 +102,7 @@
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
......
......@@ -35,133 +35,133 @@ from Products.ERP5.Document.MetaNode import MetaNode
from Products.ERP5.Document.Movement import Movement
class BudgetCell(Predicate, MetaNode, Movement):
""" Budget Cell defines a cell of budget.
XXX This is not a Movement, but we need getDestinationCredit
XXX This is not a MetaNode
""" Budget Cell defines a cell of budget.
XXX This is not a Movement, but we need getDestinationCredit
XXX This is not a MetaNode
"""
# Default Properties
property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject
, PropertySheet.SimpleItem
, PropertySheet.Folder
, PropertySheet.Predicate
, PropertySheet.SortIndex
, PropertySheet.CategoryCore
, PropertySheet.DublinCore
, PropertySheet.Task
, PropertySheet.Arrow
, PropertySheet.Amount
, PropertySheet.Budget
, PropertySheet.MappedValue
, PropertySheet.VariationRange
)
# CMF Type Definition
meta_type='ERP5 Budget Cell'
portal_type='Budget Cell'
add_permission = Permissions.AddPortalContent
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
security.declareProtected(Permissions.AccessContentsInformation, 'getTitle')
def getTitle(self):
"""
Return a calculated title.
"""
script = self._getTypeBasedMethod('asTitle')
if script is not None:
return script()
raise UnboundLocalError(
"Did not find title script for portal type: %r" %
self.getPortalType())
security.declareProtected(Permissions.AccessContentsInformation, 'getCurrentInventory')
def getCurrentInventory(self, at_date=None, **kw):
""" Returns current inventory.
at_date parameter can be used to take into account budget transactions
before that date.
"""
kw['node_uid'] = self.getUid()
resource = self.getResourceValue()
if resource is not None:
kw['resource_uid'] = resource.getUid()
if at_date:
kw['at_date'] = at_date
sign = self.getParentValue().BudgetLine_getConsumptionSign()
return sign * self.portal_simulation.getCurrentInventory(**kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getCurrentBalance')
def getCurrentBalance(self, at_date=None):
"""
Returns current balance
"""
sign = self.getParentValue().BudgetLine_getConsumptionSign()
return sign * self.getQuantity(0.0) + self.getCurrentInventory(at_date=at_date)
# Default Properties
property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject
, PropertySheet.SimpleItem
, PropertySheet.Folder
, PropertySheet.Predicate
, PropertySheet.SortIndex
, PropertySheet.CategoryCore
, PropertySheet.DublinCore
, PropertySheet.Task
, PropertySheet.Arrow
, PropertySheet.Amount
, PropertySheet.Budget
, PropertySheet.MappedValue
, PropertySheet.VariationRange
)
# CMF Type Definition
meta_type='ERP5 Budget Cell'
portal_type='Budget Cell'
add_permission = Permissions.AddPortalContent
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
security.declareProtected(Permissions.AccessContentsInformation, 'getTitle')
def getTitle(self):
"""
Return a calculated title.
"""
script = self._getTypeBasedMethod('asTitle')
if script is not None:
return script()
raise UnboundLocalError,\
"Did not find title script for portal type: %r" %\
self.getPortalType()
security.declareProtected(Permissions.AccessContentsInformation, 'getCurrentInventory')
def getCurrentInventory(self, at_date=None, **kw):
""" Returns current inventory.
at_date parameter can be used to take into account budget transactions
before that date.
"""
kw['node_uid'] = self.getUid()
resource = self.getResourceValue()
if resource is not None:
kw['resource_uid'] = resource.getUid()
if at_date:
kw['at_date'] = at_date
sign = self.getParentValue().BudgetLine_getConsumptionSign()
return sign * self.portal_simulation.getCurrentInventory(**kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getCurrentBalance')
def getCurrentBalance(self, at_date=None):
"""
Returns current balance
"""
sign = self.getParentValue().BudgetLine_getConsumptionSign()
return sign * self.getQuantity(0.0) + self.getCurrentInventory(at_date=at_date)
security.declareProtected(Permissions.AccessContentsInformation, 'getConsumedBudget')
def getConsumedBudget(self, src__=0):
"""
Return consumed budget.
"""
script = self._getTypeBasedMethod('getConsumedBudget')
if script is not None:
return script(src__=src__)
raise UnboundLocalError,\
"Did not find consumed budget script for portal type: %r" % \
self.getPortalType()
security.declareProtected(Permissions.AccessContentsInformation, 'getAvailableBudget')
def getAvailableBudget(self, at_date=None):
"""
Return available budget.
"""
return self.getCurrentBalance(at_date=at_date) - self.getEngagedBudget()
security.declareProtected(Permissions.AccessContentsInformation, 'getEngagedBudget')
def getEngagedBudget(self, src__=0):
"""
Return Engaged budget.
"""
script = self._getTypeBasedMethod('getEngagedBudget')
if script is not None:
return script(src__=src__)
raise UnboundLocalError,\
"Did not find engaged budget script for portal type: %r" % \
self.getPortalType()
security.declareProtected(Permissions.AccessContentsInformation,
'getExplanationValue')
def getExplanationValue(self, default=None):
"""Explanation has no meaning for a budget cell"""
return default
security.declareProtected(Permissions.ModifyPortalContent,
'setSourceCredit')
def setSourceCredit(self, source_credit):
"""Set the quantity.
Overloaded from movement, we always set the quantity, even if not passed
"""
try:
source_credit = float(source_credit)
except TypeError:
source_credit = 0.0
Movement.setSourceCredit(self, source_credit)
def setSourceDebit(self, source_debit):
"""Set the quantity.
Overloaded from movement, we always set the quantity, even if not passed
"""
try:
source_debit = float(source_debit)
except TypeError:
source_debit = 0.0
Movement.setSourceDebit(self, source_debit)
security.declareProtected( Permissions.ModifyPortalContent,
'setDestinationDebit', 'setDestinationCredit' )
setDestinationDebit = setSourceCredit
setDestinationCredit = setSourceDebit
security.declareProtected(Permissions.AccessContentsInformation, 'getConsumedBudget')
def getConsumedBudget(self, src__=0):
"""
Return consumed budget.
"""
script = self._getTypeBasedMethod('getConsumedBudget')
if script is not None:
return script(src__=src__)
raise UnboundLocalError(
"Did not find consumed budget script for portal type: %r" %
self.getPortalType())
security.declareProtected(Permissions.AccessContentsInformation, 'getAvailableBudget')
def getAvailableBudget(self, at_date=None):
"""
Return available budget.
"""
return self.getCurrentBalance(at_date=at_date) - self.getEngagedBudget()
security.declareProtected(Permissions.AccessContentsInformation, 'getEngagedBudget')
def getEngagedBudget(self, src__=0):
"""
Return Engaged budget.
"""
script = self._getTypeBasedMethod('getEngagedBudget')
if script is not None:
return script(src__=src__)
raise UnboundLocalError(
"Did not find engaged budget script for portal type: %r" %
self.getPortalType())
security.declareProtected(Permissions.AccessContentsInformation,
'getExplanationValue')
def getExplanationValue(self):
"""Explanation has no meaning for a budget cell"""
return None
security.declareProtected(Permissions.ModifyPortalContent,
'setSourceCredit')
def setSourceCredit(self, source_credit):
"""Set the quantity.
Overloaded from movement, we always set the quantity, even if not passed
"""
try:
source_credit = float(source_credit)
except TypeError:
source_credit = 0.0
Movement.setSourceCredit(self, source_credit)
def setSourceDebit(self, source_debit):
"""Set the quantity.
Overloaded from movement, we always set the quantity, even if not passed
"""
try:
source_debit = float(source_debit)
except TypeError:
source_debit = 0.0
Movement.setSourceDebit(self, source_debit)
security.declareProtected(Permissions.ModifyPortalContent,
'setDestinationDebit', 'setDestinationCredit' )
setDestinationDebit = setSourceCredit
setDestinationCredit = setSourceDebit
\ No newline at end of file
......@@ -6,6 +6,12 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>BudgetCell</string> </value>
......@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.Document.BudgetCell</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>document.erp5.BudgetCell</string> </value>
......@@ -37,79 +49,7 @@
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple>
<string>W: 38, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 44, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 61, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 62, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 63, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 66, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 67, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 69, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 70, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 71, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 74, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 75, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 76, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W: 77, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 81, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 82, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 83, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 88, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 89, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 90, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 91, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W: 92, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 93, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W: 94, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 95, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 97, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 98, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 99, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:102, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:103, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:105, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:106, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:107, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:110, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:111, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:112, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W:113, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:117, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:118, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:119, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:122, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:124, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:125, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:126, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:129, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:130, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:131, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W:132, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:136, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:138, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:139, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:140, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:142, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:144, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:145, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:148, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:149, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W:150, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:151, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W:152, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:154, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:155, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:158, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:159, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W:160, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:161, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W:162, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W:164, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:166, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:167, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W:138, 4: Arguments number differs from overridden \'getExplanationValue\' method (arguments-differ)</string>
</tuple>
<tuple/>
</value>
</item>
<item>
......@@ -119,13 +59,28 @@
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -138,7 +93,7 @@
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
......@@ -147,7 +102,7 @@
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
......
......@@ -32,37 +32,35 @@ from Products.ERP5Type import Permissions, PropertySheet
from Products.ERP5.Document.DeliveryLine import DeliveryLine
class BudgetTransaction(DeliveryLine):
"""
BudgetTransaction an order or transfer of budget.
"""
# Default Properties
property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject
, PropertySheet.CategoryCore
, PropertySheet.Amount
, PropertySheet.Task
, PropertySheet.Arrow
, PropertySheet.Movement
, PropertySheet.Price
, PropertySheet.VariationRange
, PropertySheet.ItemAggregation
)
# CMF Type Definition
meta_type='ERP5 Budget Transaction'
portal_type='Budget Transaction'
add_permission = Permissions.AddPortalContent
"""
BudgetTransaction an order or transfer of budget.
"""
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
# Default Properties
property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject
, PropertySheet.CategoryCore
, PropertySheet.Amount
, PropertySheet.Task
, PropertySheet.Arrow
, PropertySheet.Movement
, PropertySheet.Price
, PropertySheet.VariationRange
, PropertySheet.ItemAggregation
)
# CMF Type Definition
meta_type='ERP5 Budget Transaction'
portal_type='Budget Transaction'
add_permission = Permissions.AddPortalContent
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
security.declareProtected(Permissions.AccessContentsInformation,
'isAccountable')
def isAccountable(self):
"""
Supersedes the DeliveryLine definition
"""
return 1
security.declareProtected(Permissions.AccessContentsInformation,
'isAccountable')
def isAccountable(self):
"""
Supersedes the DeliveryLine definition
"""
return 1
\ No newline at end of file
......@@ -6,6 +6,12 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>BudgetTransaction</string> </value>
......@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.Document.BudgetTransaction</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>document.erp5.BudgetTransaction</string> </value>
......@@ -37,19 +49,7 @@
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple>
<string>W: 35, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 40, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 52, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 53, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 54, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 57, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 58, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 61, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 63, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 64, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 67, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
</tuple>
<tuple/>
</value>
</item>
<item>
......@@ -59,13 +59,28 @@
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -78,7 +93,7 @@
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
......@@ -87,7 +102,7 @@
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
......
......@@ -33,25 +33,24 @@ from Products.ERP5Type import Permissions, PropertySheet
class BudgetTransfer(Supply):
"""
BudgetTransfer ...
"""
"""
BudgetTransfer ...
"""
# Default Properties
property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject
, PropertySheet.CategoryCore
, PropertySheet.Folder
, PropertySheet.Task
, PropertySheet.Arrow
, PropertySheet.Movement
)
# Default Properties
property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject
, PropertySheet.CategoryCore
, PropertySheet.Folder
, PropertySheet.Task
, PropertySheet.Arrow
, PropertySheet.Movement
)
# CMF Type Definition
meta_type='ERP5 Budget Transfer'
portal_type='Budget Transfer'
add_permission = Permissions.AddPortalContent
# CMF Type Definition
meta_type='ERP5 Budget Transfer'
portal_type='Budget Transfer'
add_permission = Permissions.AddPortalContent
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
\ No newline at end of file
......@@ -6,6 +6,12 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>BudgetTransfer</string> </value>
......@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.Document.BudgetTransfer</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>document.erp5.BudgetTransfer</string> </value>
......@@ -37,15 +49,7 @@
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple>
<string>W: 36, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 41, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 51, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 52, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 53, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 56, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 57, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
</tuple>
<tuple/>
</value>
</item>
<item>
......@@ -55,13 +59,28 @@
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -74,7 +93,7 @@
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
......@@ -83,7 +102,7 @@
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
......
......@@ -35,24 +35,23 @@ from Products.ERP5Type import Permissions, PropertySheet
from Products.ERP5.Document.SupplyLine import SupplyLine
class BudgetTransferLine(SupplyLine):
"""
BudgetTransferLine
"""
# Default Properties
property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject
, PropertySheet.CategoryCore
, PropertySheet.Amount
, PropertySheet.Task
, PropertySheet.Arrow
)
# CMF Type Definition
meta_type='ERP5 Budget Transfer Line'
portal_type='Budget Transfer Line'
add_permission = Permissions.AddPortalContent
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
"""
BudgetTransferLine
"""
# Default Properties
property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject
, PropertySheet.CategoryCore
, PropertySheet.Amount
, PropertySheet.Task
, PropertySheet.Arrow
)
# CMF Type Definition
meta_type='ERP5 Budget Transfer Line'
portal_type='Budget Transfer Line'
add_permission = Permissions.AddPortalContent
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
\ No newline at end of file
......@@ -6,6 +6,12 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>BudgetTransferLine</string> </value>
......@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.Document.BudgetTransferLine</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>document.erp5.BudgetTransferLine</string> </value>
......@@ -37,15 +49,7 @@
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple>
<string>W: 38, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 43, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 52, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 53, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 54, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 57, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 58, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
</tuple>
<tuple/>
</value>
</item>
<item>
......@@ -55,13 +59,28 @@
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -74,7 +93,7 @@
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
......@@ -83,7 +102,7 @@
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
......
......@@ -30,7 +30,6 @@ from AccessControl import ClassSecurityInfo
from Products.ERP5Type import Permissions, PropertySheet
from erp5.component.document.BudgetVariation import BudgetVariation
class CategoryBudgetVariation(BudgetVariation):
""" A budget variation based on a category
"""
......@@ -141,7 +140,7 @@ class CategoryBudgetVariation(BudgetVariation):
for criterion_category in context.getMembershipCriterionCategoryList():
if '/' not in criterion_category: # safe ...
continue
criterion_base_category, category_url = criterion_category.split('/', 1)
criterion_base_category, _ = criterion_category.split('/', 1)
if criterion_base_category == base_category:
if uid_based_axis:
category_uid = self.getPortalObject().portal_categories\
......@@ -184,8 +183,9 @@ class CategoryBudgetVariation(BudgetVariation):
axis = '%s_uid' % axis
if self.getProperty('full_consumption_detail'):
for title, category in self.getBudgetLineVariationRangeCategoryList(context):
if not category: continue
for _, category in self.getBudgetLineVariationRangeCategoryList(context):
if not category:
continue
if axis.endswith('_uid'):
# XXX move out getattrs
category = self.getPortalObject().portal_categories\
......
......@@ -6,6 +6,12 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>CategoryBudgetVariation</string> </value>
......@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.Document.CategoryBudgetVariation</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>document.erp5.CategoryBudgetVariation</string> </value>
......@@ -37,10 +49,7 @@
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple>
<string>W:144, 31: Unused variable \'category_url\' (unused-variable)</string>
<string>W:187, 10: Unused variable \'title\' (unused-variable)</string>
</tuple>
<tuple/>
</value>
</item>
<item>
......@@ -50,13 +59,28 @@
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -69,7 +93,7 @@
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
......@@ -78,7 +102,7 @@
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
......
......@@ -33,7 +33,6 @@ from erp5.component.document.BudgetVariation import BudgetVariation
from Products.ZSQLCatalog.SQLCatalog import Query, NegatedQuery, ComplexQuery
class NodeBudgetVariation(BudgetVariation):
""" A budget variation for node
......@@ -282,7 +281,7 @@ class NodeBudgetVariation(BudgetVariation):
found = False
for node_url in category_list:
if node_url != '%s/budget_special_node/none' % base_category:
__traceback_info__ = (node_url, )
__traceback_info__ = (node_url, ) # pylint: disable=unused-variable
if uid_based_axis:
query_dict.setdefault(axis, []).append(
portal_categories.getCategoryValue(node_url,
......
......@@ -6,6 +6,12 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>NodeBudgetVariation</string> </value>
......@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.Document.NodeBudgetVariation</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>document.erp5.NodeBudgetVariation</string> </value>
......@@ -37,10 +49,7 @@
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple>
<string>W:133, 6: Unused variable \'consumption_dict\' (unused-variable)</string>
<string>W:284, 8: Unused variable \'__traceback_info__\' (unused-variable)</string>
</tuple>
<tuple/>
</value>
</item>
<item>
......@@ -50,13 +59,28 @@
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -69,7 +93,7 @@
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
......@@ -78,7 +102,7 @@
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
......
......@@ -27,54 +27,53 @@
##############################################################################
from Products.ERP5Type.mixin.constraint import ConstraintMixin
from Products.ERP5Type import PropertySheet
class TransactionQuantityValueFeasabilityConstraint(ConstraintMixin):
"""
Check if the quantity of the transaction is possible
for the source and the destination
This is only relevant for ZODB Property Sheets (filesystem Property
Sheets rely on Products.ERP5.Constraint.TransactionQuantityValueFeasability
instead).
"""
meta_type = 'ERP5 Transaction Quantity Value Feasability Constraint'
portal_type = 'Transaction Quantity Value Feasability Constraint'
def _checkConsistency(self, obj, fixit=0, **_):
"""
Check if the quantity of the transaction is possible
for the source and the destination
This is only relevant for ZODB Property Sheets (filesystem Property
Sheets rely on Products.ERP5.Constraint.TransactionQuantityValueFeasability
instead).
"""
meta_type = 'ERP5 Transaction Quantity Value Feasability Constraint'
portal_type = 'Transaction Quantity Value Feasability Constraint'
def _checkConsistency(self, object, fixit=0):
"""
Check if the quantity of the transaction is possible
for the source and the destination
"""
errors = []
source_cell = object.getSourceValue()
destination_cell = object.getDestinationValue()
# Check for source and destination
for node, sign, node_title in ((source_cell, 1, 'source'),
(destination_cell, -1, 'destination')):
# As the quantity can change a few lines letter,
# we need to get it each time.
object_quantity = object.getQuantity()
quantity = object_quantity * sign
if node is not None:
balance = node.getCurrentBalance()
is_transaction_ok = 1
# Check if balance and quantity have the same sign
if ((balance < 0) and (quantity < 0)):
if balance > quantity:
is_transaction_ok = 0
elif ((balance >= 0) and (quantity >= 0)):
if balance < quantity:
is_transaction_ok = 0
# Raise error
if not is_transaction_ok:
if fixit != 0:
object.setQuantity(balance)
else:
error_message = 'The quantity "%s" of the transaction is not ' \
'compatible with budget "%s" defined on the ' \
'%s "%s".' % \
(object_quantity, balance, node_title, node)
# Add error
errors.append(self._generateError(object, error_message))
return errors
errors = []
source_cell = obj.getSourceValue()
destination_cell = obj.getDestinationValue()
# Check for source and destination
for node, sign, node_title in ((source_cell, 1, 'source'),
(destination_cell, -1, 'destination')):
# As the quantity can change a few lines letter,
# we need to get it each time.
object_quantity = obj.getQuantity()
quantity = object_quantity * sign
if node is not None:
balance = node.getCurrentBalance()
is_transaction_ok = 1
# Check if balance and quantity have the same sign
if ((balance < 0) and (quantity < 0)):
if balance > quantity:
is_transaction_ok = 0
elif ((balance >= 0) and (quantity >= 0)):
if balance < quantity:
is_transaction_ok = 0
# Raise error
if not is_transaction_ok:
if fixit != 0:
obj.setQuantity(balance)
else:
error_message = 'The quantity "%s" of the transaction is not ' \
'compatible with budget "%s" defined on the ' \
'%s "%s".' % \
(object_quantity, balance, node_title, node)
# Add error
errors.append(self._generateError(obj, error_message))
return errors
......@@ -6,6 +6,12 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>TransactionQuantityValueFeasabilityConstraint</string> </value>
......@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.Document.TransactionQuantityValueFeasabilityConstraint</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>document.erp5.TransactionQuantityValueFeasabilityConstraint</string> </value>
......@@ -37,38 +49,7 @@
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple>
<string>W: 33, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 41, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 42, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 44, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 45, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 49, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 50, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 51, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 53, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 57, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W: 58, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W: 59, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W: 60, 0: Bad indentation. Found 10 spaces, expected 8 (bad-indentation)</string>
<string>W: 61, 0: Bad indentation. Found 10 spaces, expected 8 (bad-indentation)</string>
<string>W: 63, 0: Bad indentation. Found 10 spaces, expected 8 (bad-indentation)</string>
<string>W: 64, 0: Bad indentation. Found 12 spaces, expected 10 (bad-indentation)</string>
<string>W: 65, 0: Bad indentation. Found 14 spaces, expected 12 (bad-indentation)</string>
<string>W: 66, 0: Bad indentation. Found 10 spaces, expected 8 (bad-indentation)</string>
<string>W: 67, 0: Bad indentation. Found 12 spaces, expected 10 (bad-indentation)</string>
<string>W: 68, 0: Bad indentation. Found 14 spaces, expected 12 (bad-indentation)</string>
<string>W: 70, 0: Bad indentation. Found 10 spaces, expected 8 (bad-indentation)</string>
<string>W: 71, 0: Bad indentation. Found 12 spaces, expected 10 (bad-indentation)</string>
<string>W: 72, 0: Bad indentation. Found 14 spaces, expected 12 (bad-indentation)</string>
<string>W: 73, 0: Bad indentation. Found 12 spaces, expected 10 (bad-indentation)</string>
<string>W: 74, 0: Bad indentation. Found 14 spaces, expected 12 (bad-indentation)</string>
<string>W: 79, 0: Bad indentation. Found 14 spaces, expected 12 (bad-indentation)</string>
<string>W: 80, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 44, 32: Redefining built-in \'object\' (redefined-builtin)</string>
<string>W: 44, 4: Arguments number differs from overridden \'_checkConsistency\' method (arguments-differ)</string>
<string>W: 30, 0: Unused PropertySheet imported from Products.ERP5Type (unused-import)</string>
</tuple>
<tuple/>
</value>
</item>
<item>
......@@ -78,13 +59,28 @@
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -97,7 +93,7 @@
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
......@@ -106,7 +102,7 @@
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
......
......@@ -27,46 +27,44 @@
##############################################################################
from Products.ERP5Type.mixin.constraint import ConstraintMixin
from Products.ERP5Type import PropertySheet
class TransactionQuantityValueValidityConstraint(ConstraintMixin):
"""
This is only relevant for ZODB Property Sheets (filesystem Property
Sheets rely on Products.ERP5.Constraint.TransactionQuantityValueValidity
instead).
"""
meta_type = 'ERP5 Transaction Quantity Value Validity Constraint'
portal_type = 'Transaction Quantity Value Validity Constraint'
def _checkConsistency(self, obj, fixit=0, **_):
"""
This is only relevant for ZODB Property Sheets (filesystem Property
Sheets rely on Products.ERP5.Constraint.TransactionQuantityValueValidity
instead).
Check if the quantity of the transaction is greater than the
balance of the source.
"""
meta_type = 'ERP5 Transaction Quantity Value Validity Constraint'
portal_type = 'Transaction Quantity Value Validity Constraint'
def _checkConsistency(self, object, fixit=0):
"""
Check if the quantity of the transaction is greater than the
balance of the source.
"""
errors = []
errors = []
source_cell = object.getSourceValue()
destination_cell = object.getDestinationValue()
source_cell = obj.getSourceValue()
destination_cell = obj.getDestinationValue()
if (source_cell is not None) and \
(destination_cell is not None):
# XXX Dirty code !
quantity = object.getQuantity()
budget_list = object.getPortalObject().budget_module.objectValues()
max_quantity = 0
for obj in budget_list:
for item in obj.objectValues():
if (item.getPortalType() == 'Budget Transfer Line') and \
(item.getSourceValue() == source_cell) and \
(item.getDestinationValue() == destination_cell):
max_quantity = item.getQuantity()
if quantity > max_quantity:
if fixit != 0:
self.setQuantity(max_quantity)
else:
error_message = 'The quantity of the transaction is greater than ' \
'the transferable maximum quantity (TMQ): ' \
if source_cell is not None and destination_cell is not None:
# XXX Dirty code !
quantity = obj.getQuantity()
budget_list = obj.getPortalObject().budget_module.objectValues()
max_quantity = 0
for obj in budget_list:
for item in obj.objectValues():
if item.getPortalType() == 'Budget Transfer Line' and \
item.getSourceValue() == source_cell and \
item.getDestinationValue() == destination_cell:
max_quantity = item.getQuantity()
if quantity > max_quantity:
if fixit != 0:
self.setQuantity(max_quantity)
else:
error_message = 'The quantity of the transaction is greater than ' \
'the transferable maximum quantity (TMQ): ' \
'TMQ = %.2f' % max_quantity
# Add error
errors.append(self._generateError(object, error_message))
return errors
# Add error
errors.append(self._generateError(obj, error_message))
return errors
\ No newline at end of file
......@@ -6,6 +6,12 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>TransactionQuantityValueValidityConstraint</string> </value>
......@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.Document.TransactionQuantityValueValidityConstraint</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>document.erp5.TransactionQuantityValueValidityConstraint</string> </value>
......@@ -37,34 +49,7 @@
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple>
<string>W: 33, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 38, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 39, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 41, 0: Bad indentation. Found 4 spaces, expected 2 (bad-indentation)</string>
<string>W: 42, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 46, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 48, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 49, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 51, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 54, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W: 55, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W: 56, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W: 57, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W: 58, 0: Bad indentation. Found 10 spaces, expected 8 (bad-indentation)</string>
<string>W: 59, 0: Bad indentation. Found 13 spaces, expected 10 (bad-indentation)</string>
<string>W: 62, 0: Bad indentation. Found 15 spaces, expected 12 (bad-indentation)</string>
<string>W: 63, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation)</string>
<string>W: 64, 0: Bad indentation. Found 10 spaces, expected 8 (bad-indentation)</string>
<string>W: 65, 0: Bad indentation. Found 12 spaces, expected 10 (bad-indentation)</string>
<string>W: 66, 0: Bad indentation. Found 10 spaces, expected 8 (bad-indentation)</string>
<string>W: 67, 0: Bad indentation. Found 12 spaces, expected 10 (bad-indentation)</string>
<string>W: 71, 0: Bad indentation. Found 12 spaces, expected 10 (bad-indentation)</string>
<string>W: 72, 0: Bad indentation. Found 6 spaces, expected 4 (bad-indentation)</string>
<string>W: 41, 32: Redefining built-in \'object\' (redefined-builtin)</string>
<string>W: 41, 4: Arguments number differs from overridden \'_checkConsistency\' method (arguments-differ)</string>
<string>W: 30, 0: Unused PropertySheet imported from Products.ERP5Type (unused-import)</string>
</tuple>
<tuple/>
</value>
</item>
<item>
......@@ -74,13 +59,28 @@
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
......@@ -93,7 +93,7 @@
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
......@@ -102,7 +102,7 @@
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
......
......@@ -85,7 +85,7 @@ class TestBudget(ERP5TypeTestCase):
budget = self.portal.budget_module.newContent(
portal_type='Budget')
budget_line = budget.newContent(portal_type='Budget Line')
budget_cell = budget_line.newContent(portal_type='Budget Cell')
budget_line.newContent(portal_type='Budget Cell')
self.assertEqual([], budget.checkConsistency())
def test_budget_cell_node_variation_with_aggregate(self):
......@@ -626,17 +626,18 @@ class TestBudget(ERP5TypeTestCase):
self.assertEqual(2, len(budget_line.contentValues()))
test_class_self = self
class ReferenceQuery:
"""Helper class to compare queries
"""
def __eq__(me, query):
self.assertTrue(isinstance(query, ComplexQuery))
self.assertEqual(query.logical_operator, 'or')
self.assertEqual(2, len(query.query_list))
self.assertEqual(query.query_list[0].kw, {'project_uid': None})
self.assertEqual(query.query_list[1].kw,
def __eq__(self, query):
test_class_self.assertTrue(isinstance(query, ComplexQuery))
test_class_self.assertEqual(query.logical_operator, 'or')
test_class_self.assertEqual(2, len(query.query_list))
test_class_self.assertEqual(query.query_list[0].kw, {'project_uid': None})
test_class_self.assertEqual(query.query_list[1].kw,
{'project_uid':
[self.portal.organisation_module.my_organisation.getUid()]})
[test_class_self.portal.organisation_module.my_organisation.getUid()]})
return True
self.assertEqual(
......@@ -730,12 +731,13 @@ class TestBudget(ERP5TypeTestCase):
self.assertEqual(1, len(budget_line.contentValues()))
test_class_self = self
class ReferenceQuery:
"""Helper class to compare queries
"""
def __eq__(me, query):
self.assertTrue(isinstance(query, Query))
self.assertEqual(query.kw, {'project_uid': None})
def __eq__(self, query):
test_class_self.assertTrue(isinstance(query, Query))
test_class_self.assertEqual(query.kw, {'project_uid': None})
return True
self.assertEqual(
......
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