Commit 2b76f25e authored by Yoshinori Okuji's avatar Yoshinori Okuji

Use portal methods instead of global variables.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@1836 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 184792eb
......@@ -32,7 +32,6 @@ from AccessControl import ClassSecurityInfo
from Products.CMFCore.WorkflowCore import WorkflowAction
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from Products.ERP5.Document.DeliveryLine import DeliveryLine
from Products.ERP5.ERP5Globals import balance_transaction_line_type_list
from Products.ERP5.Document.Amount import Amount
from zLOG import LOG
......@@ -202,7 +201,7 @@ Une ligne tarifaire."""
security.declarePrivate('_setSource')
def _setSource(self, value):
self._setCategoryMembership('source', value, base=0)
if self.getPortalType() not in balance_transaction_line_type_list:
if self.getPortalType() not in self.getPortalBalanceTransactionLineTypeList():
source = self.restrictedTraverse(value)
destination = self.getDestination()
mirror_list = source.getDestinationList()
......@@ -220,7 +219,7 @@ Une ligne tarifaire."""
security.declarePrivate('_setDestination')
def _setDestination(self, value):
if self.getPortalType() not in balance_transaction_line_type_list:
if self.getPortalType() not in self.getPortalBalanceTransactionLineTypeList():
self._setCategoryMembership('destination', value, base=0)
destination = self.restrictedTraverse(value)
source = self.getSource()
......
......@@ -29,7 +29,6 @@
from AccessControl import ClassSecurityInfo
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from Products.ERP5.Document.Rule import Rule
from Products.ERP5.ERP5Globals import movement_type_list, order_movement_type_list, reserved_inventory_state_list, current_inventory_state_list, draft_order_state
from DateTime import DateTime
from copy import deepcopy
from string import lower
......@@ -462,6 +461,6 @@ An ERP5 Rule..."""
def isDeliverable(self, m):
return 1
# XXX ?
if m.getSimulationState() in draft_order_state:
if m.getSimulationState() in self.getPortalDraftOrderStateList():
return 0
return 1
......@@ -38,8 +38,7 @@ from Products.ERP5Type.Base import TempBase
from Products.ERP5.Document.Amount import Amount
from Products.ERP5.ERP5Globals import resource_type_list, variation_type_list, \
column_base_category_list, line_base_category_list, tab_base_category_list
from Products.CMFCore.Expression import Expression
from zLOG import LOG
......@@ -141,7 +140,7 @@ class AssortedResource(TransformedResource):
'description' : "",
'type' : 'tokens',
'acquisition_base_category' : ('resource',),
'acquisition_portal_type' : resource_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalResourceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 0,
'acquisition_sync_value' : 0,
......@@ -252,14 +251,14 @@ identify a bank account."""
column = None
line = None
sorted_list = [None, None]
for category in column_base_category_list:
for category in self.getPortalColumnBaseCategoryList():
if category in base_category_list:
if column is None:
column = category
else:
sorted_list.append(category)
base_category_list.remove(category)
for category in line_base_category_list:
for category in self.getPortalLineBaseCategoryList():
if category in base_category_list:
if line is None:
line = category
......@@ -640,7 +639,7 @@ identify a bank account."""
variation_base_category_list, variation, base=1)
# and update the price with the variation price if necessary
for resource_variation in self.getValueList(
variation_base_category_list, portal_type=variation_type_list):
variation_base_category_list, portal_type=self.getPortalVariationTypeList()):
if resource_variation.hasDefaultBasePrice():
new_base_price = resource_variation.getBasePrice()
try:
......@@ -713,7 +712,7 @@ identify a bank account."""
self.portal_categories.setCategoryMembership(line_item, base_category_list,
mapped_value.getCategoryMembershipList(base_category_list, base=1), base=1)
for resource_variation in mapped_value.getValueList(base_category_list,
portal_type=variation_type_list):
portal_type=self.getPortalVariationTypeList()):
if resource_variation.hasDefaultBasePrice():
new_base_price = resource_variation.getBasePrice()
try:
......
......@@ -32,15 +32,11 @@ from Products.CMFCore.WorkflowCore import WorkflowMethod
from AccessControl import ClassSecurityInfo
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from Products.ERP5Type.XMLObject import XMLObject
from Products.ERP5.ERP5Globals import movement_type_list, default_section_category
from Products.ERP5.ERP5Globals import current_inventory_state_list, delivery_movement_type_list
from Products.ERP5.ERP5Globals import future_inventory_state_list, reserved_inventory_state_list
from Products.ERP5Type.XMLMatrix import TempXMLMatrix
from Products.ERP5Type.Base import Base
from Products.ERP5.Document.DeliveryCell import DeliveryCell
from Acquisition import Explicit, Implicit
from Products.PythonScripts.Utility import allow_class
from Products.ERP5.ERP5Globals import movement_type_list, simulated_movement_type_list, invoice_movement_type_list, container_type_list, draft_order_state
from DateTime import DateTime
from zLOG import LOG
......@@ -564,10 +560,12 @@ une liste de mouvements..."""
return self.getRelativeUrl()
security.declareProtected(Permissions.AccessContentsInformation, 'getMovementList')
def getMovementList(self, portal_type=movement_type_list):
def getMovementList(self, portal_type=None):
"""
Return a list of movements.
"""
if portal_type is None:
portal_type = self.getPortalMovementTypeList()
movement_list = []
for m in self.contentValues(filter={'portal_type': portal_type}):
if m.hasCellContent():
......@@ -583,7 +581,7 @@ une liste de mouvements..."""
Return a list of simulated movements.
This does not contain Container Line or Container Cell.
"""
return self.getMovementList(portal_type=simulated_movement_type_list)
return self.getMovementList(portal_type=self.getPortalSimulatedMovementTypeList())
security.declareProtected(Permissions.AccessContentsInformation, 'getInvoiceMovementList')
def getInvoiceMovementList(self):
......@@ -591,7 +589,7 @@ une liste de mouvements..."""
Return a list of simulated movements.
This does not contain Container Line or Container Cell.
"""
return self.getMovementList(portal_type=invoice_movement_type_list)
return self.getMovementList(portal_type=self.getPortalInvoiceMovementTypeList())
security.declareProtected(Permissions.AccessContentsInformation, 'getContainerList')
def getContainerList(self):
......@@ -600,7 +598,7 @@ une liste de mouvements..."""
This does not contain sub-containers.
"""
container_list = []
for m in self.contentValues(filter={'portal_type': container_type_list}):
for m in self.contentValues(filter={'portal_type': self.getPortalContainerTypeList()}):
container_list.append(m)
return container_list
......@@ -609,7 +607,7 @@ une liste de mouvements..."""
portal_type = 'Simulation Movement'):
# And apply
getattr(my_simulation_movement.getObject(), method_id)()
for m in self.contentValues(filter={'portal_type': movement_type_list}):
for m in self.contentValues(filter={'portal_type': self.getPortalMovementTypeList()}):
# Find related in simulation
for my_simulation_movement in m.getDeliveryRelatedValueList(
portal_type = 'Simulation Movement'):
......@@ -741,7 +739,7 @@ une liste de mouvements..."""
def isQuantityDivergent(self):
"""
"""
for line in self.contentValues(filter={'portal_type': movement_type_list}):
for line in self.contentValues(filter={'portal_type': self.getPortalMovementTypeList()}):
if line.isDivergent():
return 1
......@@ -754,7 +752,7 @@ une liste de mouvements..."""
LOG('Delivery.isResourceDivergent, self.getPath()',0,self.getPath())
if self.isSimulated():
LOG('Delivery.isResourceDivergent, self.isSimulated()',0,self.isSimulated())
for l in self.contentValues(filter={'portal_type':delivery_movement_type_list}):
for l in self.contentValues(filter={'portal_type':self.getPortalDeliveryMovementTypeList()}):
LOG('Delivery.isResourceDivergent, l.getPath()',0,l.getPath())
resource = l.getResource()
LOG('Delivery.isResourceDivergent, line_resource',0,l.getResource())
......@@ -825,7 +823,7 @@ une liste de mouvements..."""
# Stock Management
def _getMovementResourceList(self):
resource_dict = {}
for m in self.contentValues(filter={'portal_type': movement_type_list}):
for m in self.contentValues(filter={'portal_type': self.getPortalMovementTypeList()}):
r = m.getResource()
if r is not None:
resource_dict[r] = 1
......@@ -833,12 +831,14 @@ une liste de mouvements..."""
security.declareProtected(Permissions.AccessContentsInformation, 'getInventory')
def getInventory(self, at_date = None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
if type(simulation_state) is type('a'):
simulation_state = [simulation_state]
resource_dict = {}
for m in self.contentValues(filter={'portal_type': movement_type_list}):
for m in self.contentValues(filter={'portal_type': self.getPortalMovementTypeList()}):
resource_dict[m.getResource()] = 1
result = self.Resource_zGetInventory( resource = self._getMovementResourceList(),
to_date=at_date,
......@@ -852,51 +852,59 @@ une liste de mouvements..."""
security.declareProtected(Permissions.AccessContentsInformation, 'getFutureInventory')
def getFutureInventory(self, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns inventory at infinite
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventory(at_date=None, section=section, node=node,
node_category=node_category, section_category=section_category,
simulation_state=list(future_inventory_state_list)+\
list(reserved_inventory_state_list)+\
list(current_inventory_state_list), **kw)
simulation_state=list(self.getPortalFutureInventoryStateList())+\
list(self.getPortalReservedInventoryStateList())+\
list(self.getPortalCurrentInventoryStateList()), **kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getCurrentInventory')
def getCurrentInventory(self, section = None, node = None,
node_category=None, section_category=default_section_category, ignore_variation=0, **kw):
node_category=None, section_category=None, ignore_variation=0, **kw):
"""
Returns current inventory
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventory(section=section, node=node,
node_category=node_category, section_category=section_category,
simulation_state=current_inventory_state_list, **kw)
simulation_state=self.getPortalCurrentInventoryStateList(), **kw)
#return self.getInventory(section=section, node=node,
# node_category=node_category, section_category=section_category,
# simulation_state='delivered', **kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getAvailableInventory')
def getAvailableInventory(self, section = None, node = None,
node_category=None, section_category=default_section_category,
node_category=None, section_category=None,
ignore_variation=0, **kw):
"""
Returns available inventory, ie. current inventory - deliverable
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventory(at_date=DateTime(), section=section, node=node,
node_category=node_category, section_category=section_category, **kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getInventoryList')
def getInventoryList(self, at_date = None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of inventory grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
if type(simulation_state) is type('a'):
simulation_state = [simulation_state]
resource_dict = {}
for m in self.contentValues(filter={'portal_type': movement_type_list}):
for m in self.contentValues(filter={'portal_type': self.getPortalMovementTypeList()}):
resource_dict[m.getResource()] = 1
result = self.Resource_zGetInventoryList(resource = resource_dict.keys(),
to_date=at_date,
......@@ -909,40 +917,46 @@ une liste de mouvements..."""
security.declareProtected(Permissions.AccessContentsInformation, 'getFutureInventoryList')
def getFutureInventoryList(self, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of future inventory grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventoryList(at_date=None, section=section, node=node,
node_category=node_category, section_category=section_category,
simulation_state=list(future_inventory_state_list)+\
list(reserved_inventory_state_list)+\
list(current_inventory_state_list), **kw)
simulation_state=list(self.getPortalFutureInventoryStateList())+\
list(self.getPortalReservedInventoryStateList())+\
list(self.getPortalCurrentInventoryStateList()), **kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getCurrentInventoryList')
def getCurrentInventoryList(self, section = None, node = None,
node_category=None, section_category=default_section_category,
node_category=None, section_category=None,
ignore_variation=0, **kw):
"""
Returns list of current inventory grouped by section or site
"""
return self.getInventoryList(simulation_state=current_inventory_state_list, section=section, node=node,
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventoryList(simulation_state=self.getPortalCurrentInventoryStateList(), section=section, node=node,
node_category=node_category, section_category=section_category, **kw)
#return self.getInventoryList(at_date=DateTime(), section=section, node=node,
# node_category=node_category, section_category=section_category, **kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getInventoryStat')
def getInventoryStat(self, at_date = None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns statistics of inventory list grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
resource_dict = {}
if type(simulation_state) is type('a'):
simulation_state = [simulation_state]
for m in self.contentValues(filter={'portal_type': movement_type_list}):
for m in self.contentValues(filter={'portal_type': self.getPortalMovementTypeList()}):
resource_dict[m.getResource()] = 1
result = self.Resource_zGetInventory(resource = resource_dict.keys(),
to_date=at_date,
......@@ -953,21 +967,25 @@ une liste de mouvements..."""
security.declareProtected(Permissions.AccessContentsInformation, 'getFutureInventoryStat')
def getFutureInventoryStat(self, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns statistics of future inventory list grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventoryStat(at_date=None, section=section, node=node,
node_category=node_category, section_category=section_category, **kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getCurrentInventoryStat')
def getCurrentInventoryStat(self, section = None, node = None,
node_category=None, section_category=default_section_category,
node_category=None, section_category=None,
ignore_variation=0, **kw):
"""
Returns statistics of current inventory list grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventoryStat(simulation_state='delivered', section=section, node=node,
node_category=node_category, section_category=section_category, **kw)
#return self.getInventoryStat(at_date=DateTime(), section=section, node=node,
......@@ -975,11 +993,13 @@ une liste de mouvements..."""
security.declareProtected(Permissions.AccessContentsInformation, 'getInventoryChart')
def getInventoryChart(self, at_date = None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of inventory grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
if type(simulation_state) is type('a'):
simulation_state = [simulation_state]
result = self.getInventoryList(at_date=at_date, section=section, node=node,
......@@ -989,22 +1009,26 @@ une liste de mouvements..."""
security.declareProtected(Permissions.AccessContentsInformation, 'getFutureInventoryChart')
def getFutureInventoryChart(self, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of future inventory grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventoryChart(at_date=None, section=section, node=node,
node_category=node_category, section_category=section_category, **kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getCurrentInventoryChart')
def getCurrentInventoryChart(self, section = None, node = None,
node_category=None, section_category=default_section_category,
node_category=None, section_category=None,
ignore_variation=0, **kw):
"""
Returns list of current inventory grouped by section or site
"""
return self.getInventoryChart(simulation_state=current_inventory_state_list, section=section, node=node,
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventoryChart(simulation_state=self.getPortalCurrentInventoryStateList(), section=section, node=node,
node_category=node_category, section_category=section_category, **kw)
# return self.getInventoryChart(at_date=DateTime(), section=section, node=node,
# node_category=node_category, section_category=section_category, **kw)
......@@ -1012,11 +1036,13 @@ une liste de mouvements..."""
security.declareProtected(Permissions.AccessContentsInformation, 'getMovementHistoryList')
def getMovementHistoryList(self, from_date = None, to_date=None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of inventory grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
result = self.Resource_zGetMovementHistoryList(resource = self._getMovementResourceList(),
from_date=from_date,
to_date=to_date,
......@@ -1028,11 +1054,13 @@ une liste de mouvements..."""
security.declareProtected(Permissions.AccessContentsInformation, 'getMovementHistoryStat')
def getMovementHistoryStat(self, from_date = None, to_date=None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of inventory grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
result = self.Resource_zGetInventory(resource = self._getMovementResourceList(),
from_date=from_date,
to_date=to_date,
......@@ -1044,12 +1072,14 @@ une liste de mouvements..."""
security.declareProtected(Permissions.AccessContentsInformation, 'getInventoryHistoryList')
def getInventoryHistoryList(self, from_date = None, to_date=None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of inventory grouped by section or site
"""
# Get Movement List
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
result = self.Resource_getInventoryHistoryList( resource = self._getMovementResourceList(),
from_date=from_date,
to_date=to_date,
......@@ -1064,12 +1094,14 @@ une liste de mouvements..."""
security.declareProtected(Permissions.AccessContentsInformation, 'getInventoryHistoryChart')
def getInventoryHistoryChart(self, from_date = None, to_date=None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of inventory grouped by section or site
"""
# Get Movement List
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
result = self.Resource_getInventoryHistoryChart( resource = self._getMovementResourceList(),
from_date=from_date,
to_date=to_date,
......@@ -1179,9 +1211,9 @@ une liste de mouvements..."""
destination_list = []
target_source_list = []
target_destination_list = []
for l in self.contentValues(filter={'portal_type':delivery_movement_type_list}):
for l in self.contentValues(filter={'portal_type':self.getPortalDeliveryMovementTypeList()}):
if l.hasCellContent():
for c in l.contentValues(filter={'portal_type':delivery_movement_type_list}):
for c in l.contentValues(filter={'portal_type':self.getPortalDeliveryMovementTypeList()}):
#source_list.extend(c.getSimulationSourceList())
delivery_cell_related_list = c.getDeliveryRelatedValueList()
source_list.extend(map(lambda x: x.getSource(),delivery_cell_related_list))
......@@ -1227,13 +1259,13 @@ une liste de mouvements..."""
unmatched_simulation_movement = []
unmatched_delivery_movement = []
LOG('propagateResourceToSimulation, ',0,'starting')
for l in self.contentValues(filter={'portal_type':delivery_movement_type_list}):
for l in self.contentValues(filter={'portal_type':self.getPortalDeliveryMovementTypeList()}):
LOG('propagateResourceToSimulation, l.getPhysicalPath()',0,l.getPhysicalPath())
LOG('propagateResourceToSimulation, l.objectValues()',0,l.objectValues())
LOG('propagateResourceToSimulation, l.hasCellContent()',0,l.hasCellContent())
LOG('propagateResourceToSimulation, l.showDict()',0,l.showDict())
if l.hasCellContent():
for c in l.contentValues(filter={'portal_type':delivery_movement_type_list}):
for c in l.contentValues(filter={'portal_type':self.getPortalDeliveryMovementTypeList()}):
LOG('propagateResourceToSimulation, c.getPhysicalPath()',0,c.getPhysicalPath())
for s in c.getDeliveryRelatedValueList():
LOG('propagateResourceToSimulation, s.getPhysicalPath()',0,s.getPhysicalPath())
......
......@@ -34,7 +34,6 @@ from Products.CMFCore.WorkflowCore import WorkflowAction
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from Products.ERP5Type.Base import Base
from Products.ERP5.ERP5Globals import current_inventory_state_list, target_inventory_state_list
from Products.ERP5.Document.OrderLine import OrderLine
from Products.ERP5.Document.Movement import Movement
from Products.ERP5.Document.SetMappedValue import SetMappedValue
......@@ -305,7 +304,7 @@ Une ligne tarifaire."""
"""
Take into account efficiency in converted target quantity
"""
if self.getSimulationState() in target_inventory_state_list:
if self.getSimulationState() in self.getPortalTargetInventoryStateList():
# When an order is delivered, the target quantity should be considered
# rather than the quantity
return Movement.getNetConvertedTargetQuantity(self)
......@@ -317,7 +316,7 @@ Une ligne tarifaire."""
"""
Take into account efficiency in converted target quantity
"""
if self.getSimulationState() in current_inventory_state_list:
if self.getSimulationState() in self.getPortalCurrentInventoryStateList():
# When an order is delivered, the target quantity should be considered
# rather than the quantity
return Movement.getTargetStartDate(self)
......@@ -329,7 +328,7 @@ Une ligne tarifaire."""
"""
Take into account efficiency in converted target quantity
"""
if self.getSimulationState() in current_inventory_state_list:
if self.getSimulationState() in self.getPortalCurrentInventoryStateList():
# When an order is delivered, the target quantity should be considered
# rather than the quantity
return Movement.getTargetStopDate(self)
......
......@@ -36,7 +36,6 @@ from Products.ERP5Type.XMLMatrix import XMLMatrix
from Products.ERP5Type.XMLObject import XMLObject
from Products.ERP5Type.Base import Base
from Products.ERP5.ERP5Globals import current_inventory_state_list, target_inventory_state_list
from Products.ERP5.Document.Movement import Movement
from Products.ERP5.Variated import Variated
......@@ -378,7 +377,7 @@ Une ligne tarifaire."""
Take into account efficiency in converted target quantity
Maybe we should only use target if isDivergent
"""
if self.getSimulationState() in target_inventory_state_list:
if self.getSimulationState() in self.getPortalTargetInventoryStateList():
# When an order is delivered, the target quantity should be considered
# rather than the quantity
return Movement.getNetConvertedTargetQuantity(self)
......@@ -390,7 +389,7 @@ Une ligne tarifaire."""
"""
Take into account efficiency in converted target quantity
"""
if self.getSimulationState() in current_inventory_state_list:
if self.getSimulationState() in self.getPortalCurrentInventoryStateList():
# When an order is delivered, the target quantity should be considered
# rather than the quantity
return Movement.getTargetStartDate(self)
......@@ -402,7 +401,7 @@ Une ligne tarifaire."""
"""
Take into account efficiency in converted target quantity
"""
if self.getSimulationState() in current_inventory_state_list:
if self.getSimulationState() in self.getPortalCurrentInventoryStateList():
# When an order is delivered, the target quantity should be considered
# rather than the quantity
return Movement.getTargetStopDate(self)
......
......@@ -29,7 +29,6 @@
from AccessControl import ClassSecurityInfo
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from Products.ERP5.Document.Rule import Rule
from Products.ERP5.ERP5Globals import movement_type_list, order_movement_type_list, draft_order_state
from zLOG import LOG
......@@ -143,8 +142,8 @@ An ERP5 Rule..."""
# a list of delivery ids which do not need to be copied
# eventually delete movement which do not exist anylonger
existing_uid_list = []
for movement in applied_rule.contentValues(filter={'portal_type':movement_type_list}):
delivery_value = movement.getDeliveryValue(portal_type=order_movement_type_list)
for movement in applied_rule.contentValues(filter={'portal_type':applied_rule.getPortalMovementTypeList()}):
delivery_value = movement.getDeliveryValue(portal_type=applied_rule.getPortalOrderMovementTypeList())
if delivery_value is None:
movement.flushActivity(invoke=0)
applied_rule._delObject(movement.getId()) # XXXX Make sure this is not deleted if already in delivery
......@@ -171,7 +170,7 @@ An ERP5 Rule..."""
existing_uid_list += [delivery_value.getUid()]
# Copy each movement (line or cell) from the delivery is that
for delivery_line_object in my_delivery.contentValues(filter={'portal_type':movement_type_list}):
for delivery_line_object in my_delivery.contentValues(filter={'portal_type':applied_rule.getPortalMovementTypeList()}):
try:
if delivery_line_object.hasCellContent():
for c in delivery_line_object.getCellValueList():
......@@ -267,6 +266,6 @@ An ERP5 Rule..."""
return 1
def isDeliverable(self, m):
if m.getSimulationState() in draft_order_state:
if m.getSimulationState() in m.getPortalDraftOrderState():
return 0
return 1
......@@ -30,8 +30,6 @@ from Globals import InitializeClass, PersistentMapping
from Acquisition import aq_base, aq_inner, aq_parent, aq_self
from AccessControl import ClassSecurityInfo
from Products.ERP5.ERP5Globals import current_inventory_state_list
from Products.CMFCore.WorkflowCore import WorkflowAction
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
......@@ -195,7 +193,7 @@ Une ligne tarifaire."""
variation_text = self.getVariationText(),
node = self.getDestination(),
section_category = self.getDestinationSection(), # We want to consolidate
simulation_state = current_inventory_state_list)
simulation_state = self.getPortalCurrentInventoryStateList())
inventory = self.getInventory()
if current_inventory in (None, ''):
current_inventory = 0.0
......
......@@ -30,8 +30,6 @@ from Globals import InitializeClass, PersistentMapping
from AccessControl import ClassSecurityInfo
from Acquisition import aq_base, aq_inner, aq_parent, aq_self
from Products.ERP5.ERP5Globals import current_inventory_state_list
from Products.CMFCore.WorkflowCore import WorkflowAction
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from Products.ERP5Type.XMLMatrix import XMLMatrix
......@@ -183,7 +181,7 @@ Une ligne tarifaire."""
variation_text = self.getVariationText(),
node = self.getDestination(),
section_category = self.getDestinationSection(),
simulation_state = current_inventory_state_list)
simulation_state = self.getPortalCurrentInventoryStateList())
inventory = self.getInventory()
if current_inventory in (None, ''):
current_inventory = 0.0
......
......@@ -43,7 +43,6 @@ from Products.CMFCore.WorkflowCore import WorkflowMethod
from Products.CMFCore.utils import getToolByName
from Products.ERP5.Document.Immobilisation import Immobilisation
#from Products.ERP5.Document.AmortisationRule import AmortisationRule
from Products.ERP5.ERP5Globals import movement_type_list
from zLOG import LOG
......@@ -688,7 +687,7 @@ Items in ERP5 are intended to provide a way to track objects."""
raw_list = self.getAggregateRelatedValueList()
delivery_list = []
for movement in raw_list:
if movement.getPortalType() in movement_type_list:
if movement.getPortalType() in self.getPortalMovementTypeList():
date = movement.getStopDate()
if date is None:
try:
......
......@@ -32,7 +32,6 @@ from Products.CMFCore.utils import getToolByName
from Products.CMFCore.WorkflowCore import WorkflowMethod
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from Products.ERP5Type.Base import Base
from Products.ERP5.ERP5Globals import movement_type_list, draft_order_state, planned_order_state
from Products.ERP5.Document.Delivery import Delivery
......@@ -120,11 +119,11 @@ An order..."""
def _edit(self, REQUEST=None, force_update = 0, **kw):
Delivery._edit(self, REQUEST=REQUEST, force_update = force_update, **kw)
# We must expand our applied rule only if not confirmed
if self.getSimulationState() in planned_order_state:
if self.getSimulationState() in self.getPortalPlannedOrderStateList():
self.updateAppliedRule() # This should be implemented with the interaction tool rather than with this hard coding
def updateAppliedRule(self):
if self.getSimulationState() not in draft_order_state:
if self.getSimulationState() not in self.getPortalDraftOrderStateList():
# Nothing to do
self._createOrderRule()
......@@ -288,7 +287,7 @@ An order..."""
portal_type = 'Simulation Movement'):
# And apply
getattr(my_simulation_movement, method_id)()
for m in self.contentValues(filter={'portal_type': movement_type_list}):
for m in self.contentValues(filter={'portal_type': self.getPortalMovementTypeList()}):
# Find related in simulation
for my_simulation_movement in m.getOrderRelatedValueList(
portal_type = 'Simulation Movement'):
......@@ -311,7 +310,7 @@ An order..."""
Returns simulation movements related to a cell or line of this order
"""
result = self.getOrderRelatedValueList( portal_type = 'Simulation Movement')
for m in self.contentValues(filter={'portal_type': movement_type_list}):
for m in self.contentValues(filter={'portal_type': self.getPortalMovementTypeList()}):
# Find related in simulation
result += m.getOrderRelatedValueList( portal_type = 'Simulation Movement')
for c in m.contentValues(filter={'portal_type': 'Delivery Cell'}):
......
......@@ -33,7 +33,6 @@ from Products.CMFCore.WorkflowCore import WorkflowAction
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from Products.ERP5.Document.DeliveryLine import DeliveryLine
from Products.ERP5.Document.Movement import Movement
from Products.ERP5.ERP5Globals import draft_order_state
from zLOG import LOG
......@@ -207,7 +206,7 @@ Une ligne tarifaire."""
(Called when the object is created or moved.)
"""
DeliveryLine.manage_afterAdd(self, item, container)
if self.aq_parent.getSimulationState() not in draft_order_state:
if self.aq_parent.getSimulationState() not in self.getPortalDraftOrderStateList():
# Only reexpand order rule when we add lines
self.aq_parent.activate()._createOrderRule()
......
......@@ -29,7 +29,6 @@
from AccessControl import ClassSecurityInfo
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from Products.ERP5.Document.Rule import Rule
from Products.ERP5.ERP5Globals import movement_type_list, order_movement_type_list, reserved_inventory_state_list, current_inventory_state_list, draft_order_state
from zLOG import LOG
......@@ -140,15 +139,15 @@ An ERP5 Rule..."""
# Only expand order rule if order not yet confirmed (This is consistent
# with the fact that once simulation is launched, we stick to it)
if force or \
(applied_rule.getLastExpandSimulationState() not in reserved_inventory_state_list and \
applied_rule.getLastExpandSimulationState() not in current_inventory_state_list):
(applied_rule.getLastExpandSimulationState() not in applied_rule.getPortalReservedInventoryStateList() and \
applied_rule.getLastExpandSimulationState() not in applied_rule.getPortalCurrentInventoryStateList()):
# First, check each contained movement and make
# a list of order ids which do not need to be copied
# eventually delete movement which do not exist anylonger
existing_uid_list = []
for movement in applied_rule.contentValues(filter={'portal_type':movement_type_list}):
for movement in applied_rule.contentValues(filter={'portal_type':applied_rule.getPortalMovementTypeList()}):
#LOG('Movement', 0, str(movement))
order_value = movement.getOrderValue(portal_type=order_movement_type_list)
order_value = movement.getOrderValue(portal_type=applied_rule.getPortalOrderMovementTypeList())
if order_value is None:
movement.flushActivity(invoke=0)
applied_rule._delObject(movement.getId()) # XXXX Make sur this is not deleted if already in delivery
......@@ -164,7 +163,7 @@ An ERP5 Rule..."""
existing_uid_list += [order_value.getUid()]
# Copy each movement (line or cell) from the order
for order_line_object in my_order.contentValues(filter={'portal_type':movement_type_list}):
for order_line_object in my_order.contentValues(filter={'portal_type':applied_rule.getPortalMovementTypeList()}):
try:
if order_line_object.hasCellContent():
for c in order_line_object.getCellValueList():
......@@ -249,6 +248,6 @@ An ERP5 Rule..."""
return 1
def isDeliverable(self, m):
if m.getSimulationState() in draft_order_state:
if m.getSimulationState() in m.getPortalDraftOrderState():
return 0
return 1
......@@ -29,7 +29,6 @@
from Globals import InitializeClass, PersistentMapping
from AccessControl import ClassSecurityInfo
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from Products.ERP5.ERP5Globals import movement_type_list, draft_order_state
from Products.CMFCore.utils import getToolByName
from Products.ERP5.Document.Delivery import Delivery
......@@ -140,14 +139,14 @@ An order..."""
"""
Returns 1 if not simulated or inconsistent target and values
"""
if self.getSimulationState() not in draft_order_state:
if self.getSimulationState() not in self.getPortalDraftOrderStateList():
if not self.isSimulated():
return 1
return Delivery.isDivergent(self)
security.declareProtected(Permissions.ModifyPortalContent, 'updateAppliedRule')
def updateAppliedRule(self):
if self.getSimulationState() not in draft_order_state:
if self.getSimulationState() not in self.getPortalDraftOrderStateList():
# Nothing to do if we are already simulated
self._createDeliveryRule()
......
......@@ -35,7 +35,6 @@ from Products.ERP5Type.XMLMatrix import XMLMatrix
from Products.ERP5.Variated import Variated
from Products.ERP5.Core.Resource import Resource as CoreResource
from Products.ERP5.ERP5Globals import resource_type_list, variation_type_list, default_section_category, current_inventory_state_list, future_inventory_state_list, reserved_inventory_state_list
from Products.ERP5.Document.SupplyLine import SupplyLineMixin
from zLOG import LOG
......@@ -137,7 +136,7 @@ a service in a public administration)."""
# XXX - no idea why we should keep this ? JPS
result += self.portal_categories.unrestrictedTraverse(c).getBaseItemList(base=base)
try:
other_variations = self.searchFolder(portal_type = variation_type_list)
other_variations = self.searchFolder(portal_type = self.getPortalVariationTypeList())
except:
other_variations = []
if len(other_variations) > 0:
......@@ -172,7 +171,7 @@ a service in a public administration)."""
result = Variated.getVariationCategoryItemList(self, base_category_list = base_category_list,
display_id=display_id, base = base, current_category=None)
try:
other_variations = self.searchFolder(portal_type = variation_type_list)
other_variations = self.searchFolder(portal_type = self.getPortalVariationTypeList())
except:
other_variations = []
if len(other_variations) > 0:
......@@ -232,8 +231,10 @@ a service in a public administration)."""
# Stock Management
security.declareProtected(Permissions.AccessContentsInformation, 'getInventory')
def getInventory(self, at_date = None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None, variation_text=None,
node_category=None, section_category=None, simulation_state=None, variation_text=None,
ignore_variation=0, **kw):
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
if type(simulation_state) is type('a'):
simulation_state = [simulation_state]
result = self.Resource_zGetInventory(resource_uid = [self.getUid()],
......@@ -251,26 +252,32 @@ a service in a public administration)."""
security.declareProtected(Permissions.AccessContentsInformation, 'getFutureInventory')
def getFutureInventory(self, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns inventory at infinite
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventory(at_date=None, section=section, node=node,
node_category=node_category, section_category=section_category,
simulation_state=list(future_inventory_state_list)+ \
list(reserved_inventory_state_list)+list(current_inventory_state_list),
simulation_state=list(self.getPortalFutureInventoryStateList())+ \
list(self.getPortalReservedInventoryStateList())+ \
list(self.getPortalCurrentInventoryStateList()),
**kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getCurrentInventory')
def getCurrentInventory(self, section = None, node = None,
node_category=None, section_category=default_section_category, ignore_variation=0, variation_text=None, **kw):
node_category=None, section_category=None, ignore_variation=0, variation_text=None, **kw):
"""
Returns current inventory
"""
# Consider only delivered - forget date at this point
return self.getInventory(simulation_state = current_inventory_state_list, section=section, node=node,
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventory(simulation_state = self.getPortalCurrentInventoryStateList(),
section=section, node=node,
node_category=node_category, section_category=section_category, **kw)
#return self.getInventory(at_date=DateTime(), section=section, node=node,
......@@ -278,21 +285,25 @@ a service in a public administration)."""
security.declareProtected(Permissions.AccessContentsInformation, 'getAvailableInventory')
def getAvailableInventory(self, section = None, node = None,
node_category=None, section_category=default_section_category,
node_category=None, section_category=None,
ignore_variation=0, **kw):
"""
Returns available inventory, ie. current inventory - deliverable
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventory(at_date=DateTime(), section=section, node=node,
node_category=node_category, section_category=section_category, **kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getInventoryList')
def getInventoryList(self, at_date = None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of inventory grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
if type(simulation_state) is type('a'):
simulation_state = [simulation_state]
result = self.Resource_zGetInventoryList(resource_uid = [self.getUid()],
......@@ -307,36 +318,45 @@ a service in a public administration)."""
security.declareProtected(Permissions.AccessContentsInformation, 'getFutureInventoryList')
def getFutureInventoryList(self, section = None, node = None,
node_category=None, section_category=default_section_category,
node_category=None, section_category=None,
simulation_state=None, ignore_variation=0, **kw):
"""
Returns list of future inventory grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
LOG('getFutureInventoryList',0,str(kw))
return self.getInventoryList(at_date=None, section=section, node=node,
node_category=node_category, section_category=section_category,
simulation_state=list(future_inventory_state_list)+ \
list(reserved_inventory_state_list)+list(current_inventory_state_list), **kw)
simulation_state=list(self.getPortalFutureInventoryStateList())+ \
list(self.getPortalReservedInventoryStateList())+ \
list(self.getPortalCurrentInventoryStateList()),
**kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getCurrentInventoryList')
def getCurrentInventoryList(self, section = None, node = None,
node_category=None, section_category=default_section_category,
node_category=None, section_category=None,
ignore_variation=0, **kw):
"""
Returns list of current inventory grouped by section or site
"""
return self.getInventoryList(simulation_state=current_inventory_state_list, section=section, node=node,
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventoryList(simulation_state=self.getPortalCurrentInventoryStateList(),
section=section, node=node,
node_category=node_category, section_category=section_category, **kw)
#return self.getInventoryList(at_date=DateTime(), section=section, node=node,
# node_category=node_category, section_category=section_category, **kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getInventoryStat')
def getInventoryStat(self, at_date = None, section = None, node = None,
node_category=None, section_category=default_section_category,
node_category=None, section_category=None,
simulation_state=None, ignore_variation=0, **kw):
"""
Returns statistics of inventory list grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
if type(simulation_state) is type('a'):
simulation_state = [simulation_state]
result = self.Resource_zGetInventory(resource_uid = [self.getUid()],
......@@ -351,33 +371,42 @@ a service in a public administration)."""
security.declareProtected(Permissions.AccessContentsInformation, 'getFutureInventoryStat')
def getFutureInventoryStat(self, section = None, node = None,
node_category=None, section_category=default_section_category,
node_category=None, section_category=None,
simulation_state=None, ignore_variation=0, **kw):
"""
Returns statistics of future inventory list grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventoryStat(at_date=None, section=section, node=node,
node_category=node_category, section_category=section_category,
simulation_state=list(future_inventory_state_list)+ \
list(reserved_inventory_state_list)+list(current_inventory_state_list), **kw)
simulation_state=list(self.getPortalFutureInventoryStateList())+ \
list(self.getPortalReservedInventoryStateList())+ \
list(self.getPortalCurrentInventoryStateList()),
**kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getCurrentInventoryStat')
def getCurrentInventoryStat(self, section = None, node = None,
node_category=None, section_category=default_section_category,
node_category=None, section_category=None,
ignore_variation=0, **kw):
"""
Returns statistics of current inventory list grouped by section or site
"""
return self.getInventoryStat(simulation_state=current_inventory_state_list, section=section, node=node,
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventoryStat(simulation_state=self.getPortalCurrentInventoryStateList(),
section=section, node=node,
node_category=node_category, section_category=section_category, **kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getInventoryChart')
def getInventoryChart(self, at_date = None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of inventory grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
if type(simulation_state) is type('a'):
simulation_state = [simulation_state]
result = self.Resource_zGetInventoryList(resource_uid = [self.getUid()],
......@@ -392,24 +421,31 @@ a service in a public administration)."""
security.declareProtected(Permissions.AccessContentsInformation, 'getFutureInventoryChart')
def getFutureInventoryChart(self, section = None, node = None,
node_category=None, section_category=default_section_category,
node_category=None, section_category=None,
simulation_state=None, ignore_variation=0, **kw):
"""
Returns list of future inventory grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventoryChart(at_date=None, section=section, node=node,
node_category=node_category, section_category=section_category,
simulation_state=list(future_inventory_state_list)+ \
list(reserved_inventory_state_list)+list(current_inventory_state_list), **kw)
simulation_state=list(self.getPortalFutureInventoryStateList())+ \
list(self.getPortalReservedInventoryStateList())+ \
list(self.getPortalCurrentInventoryStateList()),
**kw)
security.declareProtected(Permissions.AccessContentsInformation, 'getCurrentInventoryChart')
def getCurrentInventoryChart(self, section = None, node = None,
node_category=None, section_category=default_section_category,
node_category=None, section_category=None,
ignore_variation=0, **kw):
"""
Returns list of current inventory grouped by section or site
"""
return self.getInventoryChart(simulation_state=current_inventory_state_list, section=section, node=node,
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
return self.getInventoryChart(simulation_state=self.getPortalCurrentInventoryStateList(),
section=section, node=node,
node_category=node_category, section_category=section_category, **kw)
#return self.getInventoryChart(at_date=DateTime(), section=section, node=node,
# node_category=node_category, section_category=section_category, **kw)
......@@ -417,11 +453,13 @@ a service in a public administration)."""
security.declareProtected(Permissions.AccessContentsInformation, 'getMovementHistoryList')
def getMovementHistoryList(self, from_date = None, to_date=None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of inventory grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
result = self.Resource_zGetMovementHistoryList(resource_uid = [self.getUid()],
resource=None,
from_date=from_date,
......@@ -436,11 +474,13 @@ a service in a public administration)."""
security.declareProtected(Permissions.AccessContentsInformation, 'getMovementHistoryStat')
def getMovementHistoryStat(self, from_date = None, to_date=None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of inventory grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
result = self.Resource_zGetInventory(resource_uid = [self.getUid()],
resource=None,
from_date=from_date,
......@@ -454,12 +494,14 @@ a service in a public administration)."""
security.declareProtected(Permissions.AccessContentsInformation, 'getInventoryHistoryList')
def getInventoryHistoryList(self, from_date = None, to_date=None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of inventory grouped by section or site
"""
# Get Movement List
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
result = self.Resource_getInventoryHistoryList( resource_uid = [self.getUid()],
resource=None,
from_date=from_date,
......@@ -475,12 +517,14 @@ a service in a public administration)."""
security.declareProtected(Permissions.AccessContentsInformation, 'getInventoryHistoryChart')
def getInventoryHistoryChart(self, from_date = None, to_date=None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
"""
Returns list of inventory grouped by section or site
"""
# Get Movement List
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
result = self.Resource_getInventoryHistoryChart( resource_uid = [self.getUid()],
resource=None,
from_date=from_date,
......@@ -496,12 +540,14 @@ a service in a public administration)."""
security.declareProtected(Permissions.AccessContentsInformation, 'getNextNegativeInventoryDate')
def getNextNegativeInventoryDate(self, from_date = None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
variation_text = None,
ignore_variation=0, **kw):
"""
Returns list of inventory grouped by section or site
"""
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
if from_date is None: from_date = DateTime()
# Get Movement List
result = self.Resource_getInventoryHistoryList( resource_uid = [self.getUid()],
......
......@@ -34,7 +34,6 @@ from Products.ERP5Type.XMLObject import XMLObject
from Products.ERP5Type.Utils import asList, keepIn, rejectIn
from Products.ERP5.Variated import Variated
from Products.ERP5.ERP5Globals import resource_type_list, variation_type_list
from Products.ERP5.Document.Domain import Domain
......
......@@ -37,7 +37,7 @@ from Products.ERP5Type.Base import TempBase
from Products.ERP5.Document.Amount import Amount
from Products.ERP5.ERP5Globals import resource_type_list, variation_type_list
from Products.CMFCore.Expression import Expression
from zLOG import LOG
......@@ -131,7 +131,7 @@ class TransformedResource(XMLObject, XMLMatrix, Amount):
'description' : "",
'type' : 'tokens',
'acquisition_base_category' : ('resource',),
'acquisition_portal_type' : resource_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalResourceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 0,
'acquisition_sync_value' : 0,
......@@ -588,7 +588,7 @@ identify a bank account."""
variation_base_category_list, variation, base=1)
# and update the price with the variation price if necessary
for resource_variation in self.getValueList(
variation_base_category_list, portal_type=variation_type_list):
variation_base_category_list, portal_type=self.getPortalVariationTypeList()):
if resource_variation.hasDefaultBasePrice():
new_base_price = resource_variation.getBasePrice()
try:
......@@ -636,7 +636,7 @@ identify a bank account."""
self.portal_categories.setCategoryMembership(line_item, base_category_list,
mapped_value.getCategoryMembershipList(base_category_list, base=1), base=1)
for resource_variation in mapped_value.getValueList(base_category_list,
portal_type=variation_type_list):
portal_type=self.getPortalVariationTypeList()):
if resource_variation.hasDefaultBasePrice():
new_base_price = resource_variation.getBasePrice()
try:
......
......@@ -34,7 +34,8 @@ from Products.ERP5Type.XMLObject import XMLObject
from Products.ERP5Type.XMLMatrix import XMLMatrix
from Products.ERP5.Variated import Variated
from Products.ERP5Type.Utils import cartesianProduct
from Products.ERP5.ERP5Globals import resource_type_list
from Products.CMFCore.Expression import Expression
from zLOG import LOG
......@@ -73,7 +74,7 @@ class VariatedProperty(XMLObject, XMLMatrix, Variated):
'storage_id' : 'variation_base_category_list',
'description' : "",
'type' : 'tokens',
'acquisition_portal_type' : resource_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalResourceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 0,
'acquisition_sync_value' : 0,
......
......@@ -30,7 +30,6 @@ from AccessControl import ClassSecurityInfo
from DateTime import DateTime
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from Products.ERP5.Document.Rule import Rule
from Products.ERP5.ERP5Globals import movement_type_list
from Products.CMFCore.utils import getToolByName
from zLOG import LOG
......
from Products.ERP5.ERP5Globals import *
from Products.ERP5.Tool.Category import addBaseCategory
from Products.ERP5Type.Utils import convertToUpperCase
......@@ -16,7 +15,11 @@ def setBaseAcquisition(self):
if not hasattr(pc, bc):
addBaseCategory(pc, bc)
pc[bc].setAcquisitionBaseCategoryList(('delivery', 'order', 'parent', ))
pc[bc].setAcquisitionPortalTypeList(movement_or_item_or_delivery_or_order_or_invoice_type_list)
pc[bc].setAcquisitionPortalTypeList(self.getPortalAcquisitionMovementTypeList() + \
self.getPortalItemTypeList() + \
self.getPortalDeliveryTypeList() + \
self.getPortalOrderTypeList() + \
self.getPortalInvoiceTypeList())
pc[bc].setAcquisitionMaskValue(1)
pc[bc].setAcquisitionCopyValue(0)
pc[bc].setAcquisitionAppendValue(0)
......@@ -28,7 +31,11 @@ def setBaseAcquisition(self):
if not hasattr(pc, bc):
addBaseCategory(pc, bc)
pc[bc].setAcquisitionBaseCategoryList(('delivery', 'order', 'parent', 'causality'))
pc[bc].setAcquisitionPortalTypeList(movement_or_item_or_delivery_or_order_or_invoice_type_list)
pc[bc].setAcquisitionPortalTypeList(self.getPortalAcquisitionMovementTypeList() + \
self.getPortalItemTypeList() + \
self.getPortalDeliveryTypeList() + \
self.getPortalOrderTypeList() + \
self.getPortalInvoiceTypeList())
pc[bc].setAcquisitionMaskValue(1)
pc[bc].setAcquisitionCopyValue(0)
pc[bc].setAcquisitionAppendValue(0)
......@@ -37,7 +44,11 @@ def setBaseAcquisition(self):
if not hasattr(pc, bc):
addBaseCategory(pc, bc)
pc[bc].setAcquisitionBaseCategoryList(('delivery', 'order', 'parent'))
pc[bc].setAcquisitionPortalTypeList(movement_or_item_or_delivery_or_order_or_invoice_type_list)
pc[bc].setAcquisitionPortalTypeList(self.getPortalAcquisitionMovementTypeList() + \
self.getPortalItemTypeList() + \
self.getPortalDeliveryTypeList() + \
self.getPortalOrderTypeList() + \
self.getPortalInvoiceTypeList())
pc[bc].setAcquisitionMaskValue(1)
pc[bc].setAcquisitionCopyValue(0)
pc[bc].setAcquisitionAppendValue(0)
......@@ -46,7 +57,11 @@ def setBaseAcquisition(self):
if not hasattr(pc, bc):
addBaseCategory(pc, bc)
pc[bc].setAcquisitionBaseCategoryList(('delivery', 'order', 'parent', ))
pc[bc].setAcquisitionPortalTypeList(movement_or_item_or_delivery_or_order_or_invoice_type_list)
pc[bc].setAcquisitionPortalTypeList(self.getPortalAcquisitionMovementTypeList() + \
self.getPortalItemTypeList() + \
self.getPortalDeliveryTypeList() + \
self.getPortalOrderTypeList() + \
self.getPortalInvoiceTypeList())
pc[bc].setAcquisitionMaskValue(1)
pc[bc].setAcquisitionCopyValue(0)
pc[bc].setAcquisitionAppendValue(0)
......@@ -55,8 +70,12 @@ def setBaseAcquisition(self):
if not hasattr(pc, bc):
addBaseCategory(pc, bc)
pc[bc].setAcquisitionBaseCategoryList(('delivery', 'order', 'parent', 'resource'))
pc[bc].setAcquisitionPortalTypeList(
movement_or_item_or_delivery_or_order_or_invoice_or_resource_type_list)
pc[bc].setAcquisitionPortalTypeList(self.getPortalAcquisitionMovementTypeList() + \
self.getPortalItemTypeList() + \
self.getPortalDeliveryTypeList() + \
self.getPortalOrderTypeList() + \
self.getPortalInvoiceTypeList() + \
self.getPortalResourceTypeList())
pc[bc].setAcquisitionMaskValue(1)
pc[bc].setAcquisitionCopyValue(0)
pc[bc].setAcquisitionAppendValue(0)
......@@ -92,7 +111,7 @@ def setBaseAcquisition(self):
if not hasattr(pc, bc):
addBaseCategory(pc, bc)
pc[bc].setAcquisitionBaseCategoryList('parent',)
pc[bc].setAcquisitionPortalTypeList(item_type_list)
pc[bc].setAcquisitionPortalTypeList(self.getPortalItemTypeList())
pc[bc].setAcquisitionMaskValue(1)
pc[bc].setAcquisitionCopyValue(1)
pc[bc].setAcquisitionAppendValue(0)
......
......@@ -12,7 +12,6 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import default_section_category, current_inventory_state_list, reserved_inventory_state_list,reserved_inventory_state_list2,future_inventory_state_list
from Products.ZSQLCatalog.zsqlbrain import ZSQLBrain
from DateTime import DateTime
from ZTUtils import make_query
......@@ -30,7 +29,7 @@ class InventoryBrain(ZSQLBrain):
simulation_state = [simulation_state]
result = self.Resource_zGetInventory( resource_uid = [self.resource_uid],
to_date=at_date, omit_simulation = 0,
section_category = default_section_category,
section_category = self.getPortalDefaultSectionCategory(),
simulation_state=simulation_state)
inventory = None
if len(result) > 0:
......@@ -45,14 +44,17 @@ class InventoryBrain(ZSQLBrain):
"""
Returns current inventory
"""
return self.getInventory(simulation_state=current_inventory_state_list, ignore_variation=1)
return self.getInventory(simulation_state=self.getPortalCurrentInventoryStateList(), ignore_variation=1)
#return self.getInventory(at_date=DateTime(), ignore_variation=1)
def getFutureInventory(self):
"""
Returns current inventory
"""
return self.getInventory(ignore_variation=1,simulation_state=list(future_inventory_state_list)+list(reserved_inventory_state_list)+list(current_inventory_state_list))
return self.getInventory(ignore_variation=1,
simulation_state=list(self.getPortalFutureInventoryStateList())+ \
list(self.getPortalReservedInventoryStateList())+ \
list(self.getPortalCurrentInventoryStateList()))
def getAvailableInventory(self):
"""
......@@ -62,8 +64,8 @@ class InventoryBrain(ZSQLBrain):
current = self.getCurrentInventory()
result = self.Resource_zGetInventory( resource_uid = [self.resource_uid], ignore_variation=1,
omit_simulation = 1, omit_input = 1,
section_category = default_section_category,
simulation_state = reserved_inventory_state_list)
section_category = self.getPortalDefaultSectionCategory(),
simulation_state = self.getPortalReservedInventoryStateList())
reserved_inventory = None
if len(result) > 0:
reserved_inventory = result[0].inventory
......@@ -71,22 +73,23 @@ class InventoryBrain(ZSQLBrain):
reserved_inventory = 0.0
return current + reserved_inventory
def getAvailableInventory2(self):
"""
Returns current inventory
"""
at_date=DateTime()
current = self.getCurrentInventory()
result = self.Resource_zGetInventory( resource_uid = [self.resource_uid], ignore_variation=1,
omit_simulation = 1, omit_input = 1,
section_category = default_section_category,
simulation_state = reserved_inventory_state_list2)
reserved_inventory = None
if len(result) > 0:
reserved_inventory = result[0].inventory
if reserved_inventory is None:
reserved_inventory = 0.0
return current + reserved_inventory
# ????
#def getAvailableInventory2(self):
# """
# Returns current inventory
# """
# at_date=DateTime()
# current = self.getCurrentInventory()
# result = self.Resource_zGetInventory( resource_uid = [self.resource_uid], ignore_variation=1,
# omit_simulation = 1, omit_input = 1,
# section_category = self.getPortalDefaultSectionCategory(),
# simulation_state = reserved_inventory_state_list2)
# reserved_inventory = None
# if len(result) > 0:
# reserved_inventory = result[0].inventory
# if reserved_inventory is None:
# reserved_inventory = 0.0
# return current + reserved_inventory
def getQuantityUnit(self, **kw):
try:
......@@ -132,14 +135,17 @@ class InventoryListBrain(ZSQLBrain):
"""
Returns current inventory
"""
return self.getInventory(simulation_state=current_inventory_state_list, ignore_variation=0)
return self.getInventory(simulation_state=self.getPortalCurrentInventoryStateList(), ignore_variation=0)
#return self.getInventory(at_date=DateTime(), ignore_variation=0)
def getFutureInventory(self):
"""
Returns current inventory
"""
return self.getInventory(ignore_variation=0, simulation_state=list(future_inventory_state_list)+list(reserved_inventory_state_list)+list(current_inventory_state_list))
return self.getInventory(ignore_variation=0,
simulation_state=list(self.getPortalFutureInventoryStateList())+ \
list(self.getPortalReservedInventoryStateList())+ \
list(self.getPortalCurrentInventoryStateList()))
def getAvailableInventory(self):
"""
......@@ -152,7 +158,7 @@ class InventoryListBrain(ZSQLBrain):
section=self.section_relative_url,
node=self.node_relative_url,
variation_text = self.variation_text,
simulation_state = reserved_inventory_state_list)
simulation_state = self.getPortalReservedInventoryStateList())
reserved_inventory = None
if len(result) > 0:
reserved_inventory = result[0].inventory
......@@ -160,25 +166,26 @@ class InventoryListBrain(ZSQLBrain):
reserved_inventory = 0.0
return current + reserved_inventory
def getAvailableInventory2(self):
"""
Returns current inventory
"""
at_date=DateTime()
current = self.getCurrentInventory()
# XXX - This code is not OK if we define section_category / node_category
result = self.Resource_zGetInventory( resource_uid = [self.resource_uid],
omit_simulation = 1, omit_input = 1,
section=self.section_relative_url,
node=self.node_relative_url,
variation_text = self.variation_text,
simulation_state = reserved_inventory_state_list2)
reserved_inventory = None
if len(result) > 0:
reserved_inventory = result[0].inventory
if reserved_inventory is None:
reserved_inventory = 0.0
return current + reserved_inventory
# ????
#def getAvailableInventory2(self):
# """
# Returns current inventory
# """
# at_date=DateTime()
# current = self.getCurrentInventory()
# # XXX - This code is not OK if we define section_category / node_category
# result = self.Resource_zGetInventory( resource_uid = [self.resource_uid],
# omit_simulation = 1, omit_input = 1,
# section=self.section_relative_url,
# node=self.node_relative_url,
# variation_text = self.variation_text,
# simulation_state = reserved_inventory_state_list2)
# reserved_inventory = None
# if len(result) > 0:
# reserved_inventory = result[0].inventory
# if reserved_inventory is None:
# reserved_inventory = 0.0
# return current + reserved_inventory
def getQuantity(self, **kw):
result = self.Delivery_zGetTotal( resource_uid = [self.resource_uid],
......@@ -228,27 +235,27 @@ class InventoryListBrain(ZSQLBrain):
resource = self.portal_categories.unrestrictedTraverse(self.resource_relative_url)
return '%s/Resource_movementHistoryView?%s&reset=1' % (resource.absolute_url(),
make_query(variation_text=self.variation_text, selection_name=selection_name, selection_index=selection_index,
simulation_state=list(current_inventory_state_list)))
simulation_state=list(self.getPortalCurrentInventoryStateList())))
elif cname_id in ('getAvailableInventory',):
resource = self.portal_categories.unrestrictedTraverse(self.resource_relative_url)
return '%s/Resource_movementHistoryView?%s&reset=1' % (resource.absolute_url(),
make_query(variation_text=self.variation_text, selection_name=selection_name, selection_index=selection_index,omit_simulation = 1, omit_input = 1,
simulation_state=list(reserved_inventory_state_list)))
elif cname_id in ('getAvailableInventory2',):
resource = self.portal_categories.unrestrictedTraverse(self.resource_relative_url)
return '%s/Resource_movementHistoryView?%s&reset=1' % (resource.absolute_url(),
make_query(variation_text=self.variation_text, selection_name=selection_name, selection_index=selection_index,omit_simulation = 1, omit_input = 1,
simulation_state=list(reserved_inventory_state_list2)))
simulation_state=list(self.getPortalReservedInventoryStateList())))
#elif cname_id in ('getAvailableInventory2',):
# resource = self.portal_categories.unrestrictedTraverse(self.resource_relative_url)
# return '%s/Resource_movementHistoryView?%s&reset=1' % (resource.absolute_url(),
# make_query(variation_text=self.variation_text, selection_name=selection_name, selection_index=selection_index,omit_simulation = 1, omit_input = 1,
# simulation_state=list(reserved_inventory_state_list2)))
elif cname_id in ('getFutureInventory','inventory', ):
resource = self.portal_categories.unrestrictedTraverse(self.resource_relative_url)
return '%s/Resource_movementHistoryView?%s&reset=1' % (resource.absolute_url(),
make_query(variation_text=self.variation_text,
selection_name=selection_name, selection_index=selection_index, simulation_state=list(future_inventory_state_list)+list(reserved_inventory_state_list)))
selection_name=selection_name, selection_index=selection_index, simulation_state=list(self.getPortalFutureInventoryStateList())+list(self.getPortalReservedInventoryStateList())))
elif cname_id in ('getInventoryAtDate',):
resource = self.portal_categories.unrestrictedTraverse(self.resource_relative_url)
return '%s/Resource_movementHistoryView?%s&reset=1' % (resource.absolute_url(),
make_query(variation_text=self.variation_text, to_date=self.at_date,
selection_name=selection_name, selection_index=selection_index, simulation_state=list(future_inventory_state_list)+list(reserved_inventory_state_list)))
selection_name=selection_name, selection_index=selection_index, simulation_state=list(self.getPortalFutureInventoryStateList())+list(self.getPortalReservedInventoryStateList())))
else:
resource = self.portal_categories.unrestrictedTraverse(self.resource_relative_url)
return '%s/Resource_movementHistoryView?%s&reset=1' % (resource.absolute_url(),
......@@ -326,7 +333,7 @@ class DeliveryListBrain(InventoryListBrain):
where_expression = None
result = self.Resource_zGetInventory( resource_uid = [self.resource_uid],
to_date=at_date,
section_category = default_section_category,
section_category = self.getPortalDefaultSectionCategory(),
variation_text = self.variation_text,
simulation_state = simulation_state,
where_expression = where_expression)
......@@ -346,9 +353,9 @@ class DeliveryListBrain(InventoryListBrain):
current = self.getCurrentInventory()
result = self.Resource_zGetInventory( resource_uid = [self.resource_uid],
omit_simulation = 1, omit_input = 1,
section_category = default_section_category,
section_category = self.getPortalDefaultSectionCategory(),
variation_text = self.variation_text,
simulation_state = reserved_inventory_state_list )
simulation_state = self.getPortalReservedInventoryStateList())
reserved_inventory = None
if len(result) > 0:
reserved_inventory = result[0].inventory
......@@ -356,23 +363,24 @@ class DeliveryListBrain(InventoryListBrain):
reserved_inventory = 0.0
return current + reserved_inventory
def getAvailableInventory2(self):
"""
Returns current inventory at current date
"""
at_date=DateTime()
current = self.getCurrentInventory()
result = self.Resource_zGetInventory( resource_uid = [self.resource_uid],
omit_simulation = 1, omit_input = 1,
section_category = default_section_category,
variation_text = self.variation_text,
simulation_state = reserved_inventory_state_list2)
reserved_inventory = None
if len(result) > 0:
reserved_inventory = result[0].inventory
if reserved_inventory is None:
reserved_inventory = 0.0
return current + reserved_inventory
# ????
#def getAvailableInventory2(self):
# """
# Returns current inventory at current date
# """
# at_date=DateTime()
# current = self.getCurrentInventory()
# result = self.Resource_zGetInventory( resource_uid = [self.resource_uid],
# omit_simulation = 1, omit_input = 1,
# section_category = self.getPortalDefaultSectionCategory(),
# variation_text = self.variation_text,
# simulation_state = reserved_inventory_state_list2)
# reserved_inventory = None
# if len(result) > 0:
# reserved_inventory = result[0].inventory
# if reserved_inventory is None:
# reserved_inventory = 0.0
# return current + reserved_inventory
def getInventoryAtDate(self):
"""
......@@ -380,5 +388,5 @@ class DeliveryListBrain(InventoryListBrain):
"""
at_date=self.at_date
LOG("At Date",0,str(at_date))
return self.getInventory(at_date=at_date, ignore_variation=0, simulation_state=list(future_inventory_state_list)+list(reserved_inventory_state_list)+list(current_inventory_state_list))
return self.getInventory(at_date=at_date, ignore_variation=0, simulation_state=list(self.getPortalFutureInventoryStateList())+list(self.getPortalReservedInventoryStateList())+list(self.getPortalCurrentInventoryStateList()))
......@@ -36,7 +36,6 @@ from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from AccessControl import ClassSecurityInfo
from Globals import InitializeClass, DTMLFile
from Products.CMFCategory.Category import Category
from Products.ERP5.ERP5Globals import order_type_list, delivery_type_list
from zLOG import LOG
manage_addRootMovementGroupForm=DTMLFile('dtml/SimulationTool_addRootMovementGroup', globals())
......@@ -164,12 +163,12 @@ class OrderMovementGroup(RootMovementGroup,Folder):
if hasattr(movement, 'getRootAppliedRule'):
# This is a simulation movement
order_value = movement.getRootAppliedRule().getCausalityValue(
portal_type=order_type_list)
portal_type=movement.getPortalOrderTypeList())
if order_value is None:
# In some cases (ex. DeliveryRule), there is no order
# we may consider a PackingList as the order in the OrderGroup
order_value = movement.getRootAppliedRule().getCausalityValue(
portal_type=delivery_type_list)
portal_type=movement.getPortalDeliveryTypeList())
else:
# This is a temp movement
order_value = None
......@@ -184,13 +183,13 @@ class OrderMovementGroup(RootMovementGroup,Folder):
def test(self,movement):
if hasattr(movement, 'getRootAppliedRule'):
order_value = movement.getRootAppliedRule().getCausalityValue(
portal_type=order_type_list)
portal_type=movement.getPortalOrderTypeList())
if order_value is None:
# In some cases (ex. DeliveryRule), there is no order
# we may consider a PackingList as the order in the OrderGroup
order_value = movement.getRootAppliedRule().getCausalityValue(
portal_type=delivery_type_list)
portal_type=movement.getPortalDeliveryTypeList())
else:
# This is a temp movement
order_value = None
......
......@@ -26,7 +26,7 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import *
from Products.CMFCore.Expression import Expression
class Amortisation:
"""
......@@ -46,7 +46,7 @@ class Amortisation:
'description' : 'The value to use to calculate the accounting amortisation movements (net of tax)',
'type' : 'float',
'acquisition_base_category' : ('parent',),
'acquisition_portal_type' : item_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalItemTypeList()'),
'acquisition_copy_value' : 1,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getAmortisationBeginningPrice',
......@@ -56,7 +56,7 @@ class Amortisation:
'description' : 'The remaining amortisation duration in months',
'type' : 'int',
'acquisition_base_category' : ('parent',),
'acquisition_portal_type' : item_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalItemTypeList()'),
'acquisition_copy_value' : 1,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getAmortisationDuration',
......@@ -66,7 +66,7 @@ class Amortisation:
'description' : 'The item is immobilised after the movement',
'type' : 'boolean',
'acquisition_base_category' : ('parent',),
'acquisition_portal_type' : item_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalItemTypeList()'),
'acquisition_copy_value' : 1,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getImmobilisation',
......@@ -76,7 +76,7 @@ class Amortisation:
'description' : 'The fiscal coefficient to use in degressive amortisation',
'type' : 'float',
'acquisition_base_category' : ('parent',),
'acquisition_portal_type' : item_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalItemTypeList()'),
'acquisition_copy_value' : 1,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getFiscalCoefficient',
......@@ -86,7 +86,7 @@ class Amortisation:
'description' : 'The VAT at the beginning of the immobilisation period',
'type' : 'float',
'acquisition_base_category' : ('parent',),
'acquisition_portal_type' : item_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalItemTypeList()'),
'acquisition_copy_value' : 1,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getVat',
......
......@@ -27,7 +27,7 @@
##############################################################################
# This has to be chanegd and improved by the new category acquisition tool
from Products.ERP5.ERP5Globals import *
from Products.CMFCore.Expression import Expression
class Amount:
"""
......@@ -48,7 +48,7 @@ class Amount:
'description' : "The resource id involved",
'type' : 'string',
'acquisition_base_category' : ('resource',),
'acquisition_portal_type' : resource_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalResourceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 0,
'acquisition_sync_value' : 0,
......@@ -60,7 +60,7 @@ class Amount:
'description' : "The resource relative url involved",
'type' : 'string',
'acquisition_base_category' : ('resource',),
'acquisition_portal_type' : resource_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalResourceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 0,
'acquisition_sync_value' : 0,
......@@ -71,7 +71,7 @@ class Amount:
'description' : "The resource title involved",
'type' : 'string',
'acquisition_base_category' : ('resource',),
'acquisition_portal_type' : resource_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalResourceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 0,
'acquisition_sync_value' : 0,
......@@ -85,7 +85,7 @@ class Amount:
'type' : 'float',
'default' : 0.0,
'acquisition_base_category' : ('delivery',),
'acquisition_portal_type' : movement_or_delivery_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalAcquisitionMovementTypeList() + portal.getPortalDeliveryTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getQuantity',
......@@ -97,7 +97,7 @@ class Amount:
'type' : 'float',
'default' : 1.0,
'acquisition_base_category' : ('delivery',),
'acquisition_portal_type' : movement_or_delivery_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalAcquisitionMovementTypeList() + portal.getPortalDeliveryTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getEfficiency',
......@@ -110,7 +110,7 @@ class Amount:
'type' : 'float',
'default' : 0.0,
'acquisition_base_category' : ('order',),
'acquisition_portal_type' : movement_or_order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalAcquisitionMovementTypeList() + portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getTargetQuantity',
......@@ -121,7 +121,7 @@ class Amount:
'type' : 'float',
'default' : 1.0,
'acquisition_base_category' : ('order',),
'acquisition_portal_type' : movement_or_order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalAcquisitionMovementTypeList() + portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getTargetEfficiency',
......
......@@ -26,7 +26,7 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import *
from Products.CMFCore.Expression import Expression
class Arrow:
"""
......@@ -42,7 +42,7 @@ class Arrow:
'description' : 'The title of the source of this movement',
'type' : 'string',
'acquisition_base_category' : ('source',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -52,7 +52,7 @@ class Arrow:
'description' : 'The id of the destination of this movement',
'type' : 'string',
'acquisition_base_category' : ('source',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -62,7 +62,7 @@ class Arrow:
'description' : 'The titles of the destination of this movement',
'type' : 'string',
'acquisition_base_category' : ('source',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -91,7 +91,7 @@ class Arrow:
'description' : 'The title of the destination of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -101,7 +101,7 @@ class Arrow:
'description' : 'The id of the destination of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -111,7 +111,7 @@ class Arrow:
'description' : 'The titles of the destination of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -140,7 +140,7 @@ class Arrow:
'description' : 'The title of the target source of this movement',
'type' : 'string',
'acquisition_base_category' : ('target_source',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -150,7 +150,7 @@ class Arrow:
'description' : 'The id of the target source of this movement',
'type' : 'string',
'acquisition_base_category' : ('target_source',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -160,7 +160,7 @@ class Arrow:
'description' : 'The relative url of the target destination of this movement',
'type' : 'string',
'acquisition_base_category' : ('target_source',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -191,7 +191,7 @@ class Arrow:
'description' : 'The title of the target destination of this movement',
'type' : 'string',
'acquisition_base_category' : ('target_destination',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -201,7 +201,7 @@ class Arrow:
'description' : 'The id of the target destination of this movement',
'type' : 'string',
'acquisition_base_category' : ('target_destination',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -211,7 +211,7 @@ class Arrow:
'description' : 'The relative url of the target destination of this movement',
'type' : 'string',
'acquisition_base_category' : ('target_destination',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -242,7 +242,7 @@ class Arrow:
'description' : 'The title of the source decision of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_decision',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -252,7 +252,7 @@ class Arrow:
'description' : 'The id of the source decision of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_decision',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -262,7 +262,7 @@ class Arrow:
'description' : 'The titles of the source decision of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_decision',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -273,7 +273,7 @@ class Arrow:
'description' : 'The title of the destination decision of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_decision',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -283,7 +283,7 @@ class Arrow:
'description' : 'The id of the destination decision of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_decision',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -293,7 +293,7 @@ class Arrow:
'description' : 'The titles of the destination decision of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_decision',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -304,7 +304,7 @@ class Arrow:
'description' : 'The title of the source section of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_section',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -314,7 +314,7 @@ class Arrow:
'description' : 'The id of the source section of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_section',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -324,7 +324,7 @@ class Arrow:
'description' : 'The titles of the source section of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_section',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -335,7 +335,7 @@ class Arrow:
'description' : 'The title of the destination section of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_section',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -345,7 +345,7 @@ class Arrow:
'description' : 'The id of the destination section of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_section',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -355,7 +355,7 @@ class Arrow:
'description' : 'The titles of the destination section of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_section',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -366,7 +366,7 @@ class Arrow:
'description' : 'The title of the target source section of this movement',
'type' : 'string',
'acquisition_base_category' : ('target_source_section',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -376,7 +376,7 @@ class Arrow:
'description' : 'The id of the target source section of this movement',
'type' : 'string',
'acquisition_base_category' : ('target_source_section',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -386,7 +386,7 @@ class Arrow:
'description' : 'The relative url of the target source section of this movement',
'type' : 'string',
'acquisition_base_category' : ('target_source_section',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -397,7 +397,7 @@ class Arrow:
'description' : 'The title of the target destination section of this movement',
'type' : 'string',
'acquisition_base_category' : ('target_destination_section',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -407,7 +407,7 @@ class Arrow:
'description' : 'The id of the target destination section of this movement',
'type' : 'string',
'acquisition_base_category' : ('target_destination_section',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -417,7 +417,7 @@ class Arrow:
'description' : 'The relative url of the target destination section of this movement',
'type' : 'string',
'acquisition_base_category' : ('target_destination_section',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -428,7 +428,7 @@ class Arrow:
'description' : 'The title of the source administration of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_administration',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -438,7 +438,7 @@ class Arrow:
'description' : 'The id of the source administration of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_administration',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -448,7 +448,7 @@ class Arrow:
'description' : 'The titles of the source administration of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_administration',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -459,7 +459,7 @@ class Arrow:
'description' : 'The title of the destination administration of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_administration',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -469,7 +469,7 @@ class Arrow:
'description' : 'The id of the destination administration of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_administration',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -479,7 +479,7 @@ class Arrow:
'description' : 'The titles of the destination administration of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_administration',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'alt_accessor_id' : ('_categoryGetDestinationAdministrationRelativeUrl', ),
......@@ -490,7 +490,7 @@ class Arrow:
'description' : 'The title of the source payment of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_payment',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -500,7 +500,7 @@ class Arrow:
'description' : 'The id of the source payment of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_payment',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -510,7 +510,7 @@ class Arrow:
'description' : 'The titles of the source payment of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_payment',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -521,7 +521,7 @@ class Arrow:
'description' : 'The title of the destination payment of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_payment',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -531,7 +531,7 @@ class Arrow:
'description' : 'The id of the destination payment of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_payment',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -541,7 +541,7 @@ class Arrow:
'description' : 'The titles of the destination payment of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_payment',),
'acquisition_portal_type' : node_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalNodeTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -589,7 +589,7 @@ class Arrow:
'description' : 'The title of the source project of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_project',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -599,7 +599,7 @@ class Arrow:
'description' : 'The id of the source project of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_project',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -609,7 +609,7 @@ class Arrow:
'description' : 'The titles of the source project of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_project',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -620,7 +620,7 @@ class Arrow:
'description' : 'The title of the destination project of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_project',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -630,7 +630,7 @@ class Arrow:
'description' : 'The id of the destination project of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_project',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -640,7 +640,7 @@ class Arrow:
'description' : 'The titles of the destination project of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_project',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -651,7 +651,7 @@ class Arrow:
'description' : 'The title of the source budget of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_budget',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -661,7 +661,7 @@ class Arrow:
'description' : 'The id of the source budget of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_budget',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -671,7 +671,7 @@ class Arrow:
'description' : 'The titles of the source budget of this movement',
'type' : 'string',
'acquisition_base_category' : ('source_budget',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -682,7 +682,7 @@ class Arrow:
'description' : 'The title of the destination budget of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_budget',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -692,7 +692,7 @@ class Arrow:
'description' : 'The id of the destination budget of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_budget',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -702,7 +702,7 @@ class Arrow:
'description' : 'The titles of the destination budget of this movement',
'type' : 'string',
'acquisition_base_category' : ('destination_budget',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......
......@@ -26,7 +26,6 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import *
from Products.ERP5.PropertySheet.Path import Path
class Assignment(Path):
......
......@@ -26,8 +26,6 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import *
class Container:
"""
Properties of container
......
......@@ -26,7 +26,7 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import order_type_list, order_or_delivery_type_list
from Products.CMFCore.Expression import Expression
class Delivery:
"""
......@@ -41,7 +41,7 @@ class Delivery:
'type' : 'lines',
'override' : 1,
'acquisition_base_category' : ('causality',),
'acquisition_portal_type' : order_or_delivery_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList() + portal.getPortalDeliveryTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 0,
'acquisition_accessor_id' : 'getId',
......@@ -52,7 +52,7 @@ class Delivery:
'type' : 'lines',
'override' : 1,
'acquisition_base_category' : ('causality',),
'acquisition_portal_type' : order_or_delivery_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList() + portal.getPortalDeliveryTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 0,
'acquisition_accessor_id' : 'getTitle',
......
......@@ -27,7 +27,7 @@
##############################################################################
# This has to be chanegd and improved by the new category acquisition tool
from Products.ERP5.ERP5Globals import *
from Products.CMFCore.Expression import Expression
class Inventory:
"""
......@@ -45,7 +45,7 @@ class Inventory:
'description' : """The quantity of items in stock after inventory.""",
'type' : 'float',
'acquisition_base_category' : ('delivery',),
'acquisition_portal_type' : movement_or_delivery_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalMovementTypeList() + portal.getPortalDeliveryTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getInventory',
......
......@@ -26,7 +26,8 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import *
from Products.CMFCore.Expression import Expression
class Item:
"""
......@@ -45,5 +46,5 @@ class Item:
'mode' : 'w' },
)
_categories = tuple(['package_type'] + list(variation_base_category_list))
_categories = ('package_type', Expression('python: portal.getPortalVariationBaseCategoryList()'))
# XXX Please check if it is meaningful to add order cat to all items ?
......@@ -26,7 +26,7 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import *
from Products.CMFCore.Expression import Expression
class ItemAggregation:
......@@ -39,7 +39,7 @@ class ItemAggregation:
'description' : 'list of ids of items',
'type' : 'lines',
'acquisition_base_category' : ('aggregate',),
'acquisition_portal_type' : item_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalItemTypeList()'),
'acquisition_copy_value' : 1,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -48,7 +48,7 @@ class ItemAggregation:
'description' : 'list of titles of items',
'type' : 'lines',
'acquisition_base_category' : ('aggregate',),
'acquisition_portal_type' : item_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalItemTypeList()'),
'acquisition_copy_value' : 1,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -57,7 +57,7 @@ class ItemAggregation:
'description' : 'list of ids of produced items',
'type' : 'lines',
'acquisition_base_category' : ('aggregate',),
'acquisition_portal_type' : item_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalItemTypeList()'),
'acquisition_copy_value' : 1,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -66,7 +66,7 @@ class ItemAggregation:
'description' : 'list of ids of produced items',
'type' : 'lines',
'acquisition_base_category' : ('aggregate',),
'acquisition_portal_type' : item_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalItemTypeList()'),
'acquisition_copy_value' : 1,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -75,7 +75,7 @@ class ItemAggregation:
'description' : 'list of ids of consumed items',
'type' : 'lines',
'acquisition_base_category' : ('aggregate',),
'acquisition_portal_type' : item_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalItemTypeList()'),
'acquisition_copy_value' : 1,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -84,7 +84,7 @@ class ItemAggregation:
'description' : 'list of ids of consumed items',
'type' : 'lines',
'acquisition_base_category' : ('aggregate',),
'acquisition_portal_type' : item_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalItemTypeList()'),
'acquisition_copy_value' : 1,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......
......@@ -26,7 +26,7 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import *
from Products.CMFCore.Expression import Expression
class Movement:
"""
......@@ -48,7 +48,7 @@ class Movement:
'description' : 'The title of the order which defines contractual conditions',
'type' : 'string',
'acquisition_base_category' : ('order',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getTitle',
'acquisition_depends' : None,
......@@ -58,7 +58,7 @@ class Movement:
'description' : 'The id of the order which defines contractual conditions',
'type' : 'string',
'acquisition_base_category' : ('order',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getId',
'acquisition_depends' : None,
......@@ -68,7 +68,7 @@ class Movement:
'description' : 'The relative_url of the order which defines contractual conditions',
'type' : 'string',
'acquisition_base_category' : ('order',),
'acquisition_portal_type' : order_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalOrderTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_accessor_id' : 'getRelativeUrl',
'acquisition_depends' : None,
......@@ -76,5 +76,5 @@ class Movement:
'mode' : 'w' },
)
_categories = tuple(['order'] + list(variation_base_category_list))
_categories = ('order', Expression('python: portal.getPortalVariationBaseCategoryList()'))
# XXX Please check if it is meaningful to add order cat to all movemements ?
......@@ -26,7 +26,7 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import *
from Products.CMFCore.Expression import Expression
class Path:
"""
......@@ -38,7 +38,7 @@ class Path:
'description' : "The resource id involved",
'type' : 'string',
'acquisition_base_category' : ('resource',),
'acquisition_portal_type' : resource_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalResourceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 0,
'acquisition_sync_value' : 0,
......@@ -49,7 +49,7 @@ class Path:
'description' : "The resource relative url involved",
'type' : 'string',
'acquisition_base_category' : ('resource',),
'acquisition_portal_type' : resource_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalResourceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 0,
'acquisition_sync_value' : 0,
......@@ -60,7 +60,7 @@ class Path:
'description' : "The resource title involved",
'type' : 'string',
'acquisition_base_category' : ('resource',),
'acquisition_portal_type' : resource_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalResourceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 0,
'acquisition_sync_value' : 0,
......
......@@ -26,7 +26,7 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import *
from Products.CMFCore.Expression import Expression
class Price:
"""
......@@ -39,7 +39,7 @@ class Price:
'description' : 'A typical per unit price',
'type' : 'float',
'acquisition_base_category' : ('order', 'delivery',),
'acquisition_portal_type' : movement_or_delivery_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalMovementTypeList() + portal.getPortalDeliveryTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getPrice',
......
......@@ -26,7 +26,7 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import *
from Products.CMFCore.Expression import Expression
class Task:
"""
......@@ -49,7 +49,7 @@ class Task:
'type' : 'date',
'default' : None,
'acquisition_base_category' : ('delivery', 'order', 'parent',),
'acquisition_portal_type' : movement_or_delivery_or_order_or_invoice_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalAcquisitionMovementTypeList() + portal.getPortalDeliveryTypeList() + portal.getPortalOrderTypeList() + portal.getPortalInvoiceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getStartDate',
......@@ -61,7 +61,7 @@ class Task:
'type' : 'date',
'default' : None,
'acquisition_base_category' : ('delivery', 'order', 'parent',),
'acquisition_portal_type' : movement_or_delivery_or_order_or_invoice_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalAcquisitionMovementTypeList() + portal.getPortalDeliveryTypeList() + portal.getPortalOrderTypeList() + portal.getPortalInvoiceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getStopDate',
......@@ -74,7 +74,7 @@ class Task:
'type' : 'date',
'default' : None,
'acquisition_base_category' : ('parent',), # Do not acquire through order
'acquisition_portal_type' : movement_or_delivery_or_order_or_invoice_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalAcquisitionMovementTypeList() + portal.getPortalDeliveryTypeList() + portal.getPortalOrderTypeList() + portal.getPortalInvoiceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getTargetStartDate',
......@@ -86,7 +86,7 @@ class Task:
'type' : 'date',
'default' : None,
'acquisition_base_category' : ('parent',), # Do not acquire through order
'acquisition_portal_type' : movement_or_delivery_or_order_or_invoice_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalAcquisitionMovementTypeList() + portal.getPortalDeliveryTypeList() + portal.getPortalOrderTypeList() + portal.getPortalInvoiceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 1,
'acquisition_accessor_id' : 'getTargetStopDate',
......
......@@ -26,7 +26,7 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import resource_type_list
from Products.CMFCore.Expression import Expression
class Transformation:
"""
......@@ -71,7 +71,7 @@ class Transformation:
'description' : "The contact persons involved",
'type' : 'string',
'acquisition_base_category' : ('resource',),
'acquisition_portal_type' : resource_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalResourceTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 0,
'acquisition_sync_value' : 0,
......
......@@ -26,7 +26,7 @@
#
##############################################################################
from Products.ERP5.ERP5Globals import invoice_or_invoice_movement_type_list
from Products.CMFCore.Expression import Expression
class ValueAddedTax:
"""
......@@ -40,7 +40,7 @@ class ValueAddedTax:
'description' : 'Ratio which should be applied to income to calculate VAT',
'type' : 'float',
'acquisition_base_category' : ('parent',),
'acquisition_portal_type' : invoice_or_invoice_movement_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalInvoiceTypeList() + portal.getPortalInvoiceMovementTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 1,
'acquisition_sync_value' : 0,
......@@ -51,7 +51,7 @@ class ValueAddedTax:
'description' : 'Defines recoverability of the VAT',
'type' : 'boolean',
'acquisition_base_category' : ('parent',),
'acquisition_portal_type' : invoice_or_invoice_movement_type_list,
'acquisition_portal_type' : Expression('python: portal.getPortalInvoiceTypeList() + portal.getPortalInvoiceMovementTypeList()'),
'acquisition_copy_value' : 0,
'acquisition_mask_value' : 1,
'acquisition_sync_value' : 0,
......
......@@ -32,7 +32,6 @@ from Products.ERP5Type.Document.Folder import Folder
from Products.ERP5Type.Tool.BaseTool import BaseTool
from Products.ERP5Type import Permissions
from Products.ERP5 import _dtmldir
from Products.ERP5.ERP5Globals import alarm_type_list
from Products.CMFCore import CMFCorePermissions
from DateTime import DateTime
......@@ -91,7 +90,7 @@ class AlarmTool(BaseTool):
"""
We retrieve thanks to the catalog the full list of alarms
"""
catalog_search = self.portal_catalog(portal_type = alarm_type_list)
catalog_search = self.portal_catalog(portal_type = self.getPortalAlarmTypeList())
alarm_list = map(lambda x:x.getObject(),catalog_search)
return alarm_list
......
......@@ -32,7 +32,6 @@ from AccessControl import ClassSecurityInfo
from Globals import InitializeClass, DTMLFile
from Products.ERP5Type.Document.Folder import Folder
from Products.ERP5Type import Permissions
from Products.ERP5.ERP5Globals import default_section_category, order_type_list, delivery_type_list, current_inventory_state_list, discount_type_list, simulated_movement_type_list, container_type_list, payment_condition_type_list, invoice_movement_type_list
from Products.ERP5 import _dtmldir
......@@ -201,8 +200,10 @@ class SimulationTool (Folder, UniqueObject):
# Stock Management
security.declareProtected(Permissions.AccessContentsInformation, 'getInventory')
def getInventory(self, resource_uid=None, at_date = None, section = None, node = None,
node_category=None, section_category=default_section_category, simulation_state=None,
node_category=None, section_category=None, simulation_state=None,
ignore_variation=0, **kw):
if section_category is None:
section_category = self.getPortalDefaultSectionCategory()
result = self.Resource_zGetInventory(resource_uid = resource_uid,
to_date=at_date,
section=section, node=node,
......@@ -591,7 +592,7 @@ class SimulationTool (Folder, UniqueObject):
)
# the new delivery is added to the delivery_list
delivery_list.append(delivery)
# LOG('Livraison cre',0,str(delivery.getId()))
# LOG('Livraison cre',0,str(delivery.getId()))
# Create each delivery_line in the new delivery
......@@ -1016,7 +1017,9 @@ class SimulationTool (Folder, UniqueObject):
# Asset Price Calculation
def updateAssetPrice(self, resource, variation_text, section_category, node_category,
strict_membership=0, simulation_state=current_inventory_state_list):
strict_membership=0, simulation_state=None):
if simulation_state is None:
simulation_state = self.getPortalCurrentInventoryStateList()
section_value = self.portal_categories.resolveCategory(section_category)
node_value = self.portal_categories.resolveCategory(node_category)
# Initialize price
......@@ -1223,9 +1226,9 @@ class SimulationTool (Folder, UniqueObject):
"%s is not the same between %s and %s (%s and %s)" % (attr, delivery.getId(), main_delivery.getId(), value, main_value)
# One more sanity check. Check if discounts are the same, if any.
main_discount_list = main_delivery.contentValues(filter = {'portal_type': discount_type_list})
main_discount_list = main_delivery.contentValues(filter = {'portal_type': self.getPortalDiscountTypeList()})
for delivery in delivery_list:
discount_list = delivery.contentValues(filter = {'portal_type': discount_type_list})
discount_list = delivery.contentValues(filter = {'portal_type': self.getPortalDiscountTypeList()})
if len(main_discount_list) != len(discount_list):
raise self.MergeDeliveryListError, "Discount is not the same between %s and %s" % (delivery.getId(), main_delivery.getId())
for discount in discount_list:
......@@ -1239,9 +1242,9 @@ class SimulationTool (Folder, UniqueObject):
raise self.MergeDeliveryListError, "Discount is not the same between %s and %s" % (delivery.getId(), main_delivery.getId())
# One more sanity check. Check if payment conditions are the same, if any.
main_payment_condition_list = main_delivery.contentValues(filter = {'portal_type': payment_condition_type_list})
main_payment_condition_list = main_delivery.contentValues(filter = {'portal_type': self.getPortalPaymentConditionTypeList()})
for delivery in delivery_list:
payment_condition_list = delivery.contentValues(filter = {'portal_type': payment_condition_type_list})
payment_condition_list = delivery.contentValues(filter = {'portal_type': self.getPortalPaymentConditionTypeList()})
if len(main_payment_condition_list) != len(payment_condition_list):
raise self.MergeDeliveryListError, "Payment Condition is not the same between %s and %s" % (delivery.getId(), main_delivery.getId())
for condition in payment_condition_list:
......@@ -1258,10 +1261,10 @@ class SimulationTool (Folder, UniqueObject):
# Make sure that all activities are flushed, to get simulation movements from delivery cells.
for delivery in delivery_list:
for order in delivery.getCausalityValueList(portal_type = order_type_list):
for order in delivery.getCausalityValueList(portal_type = self.getPortalOrderTypeList()):
for applied_rule in order.getCausalityRelatedValueList(portal_type = 'Applied Rule'):
applied_rule.flushActivity(invoke = 1)
for causality_related_delivery in delivery.getCausalityValueList(portal_type = delivery_type_list):
for causality_related_delivery in delivery.getCausalityValueList(portal_type = self.getPortalDeliveryTypeList()):
for applied_rule in causality_related_delivery.getCausalityRelatedValueList(portal_type = 'Applied Rule'):
applied_rule.flushActivity(invoke = 1)
......@@ -1313,8 +1316,8 @@ class SimulationTool (Folder, UniqueObject):
delivery_line = None
for movement in base_variant_group.movement_list:
if movement in main_movement_list:
if movement.aq_parent.getPortalType() in simulated_movement_type_list \
or movement.aq_parent.getPortalType() in invoice_movement_type_list:
if movement.aq_parent.getPortalType() in self.getPortalSimulatedMovementTypeList() \
or movement.aq_parent.getPortalType() in self.getPortalInvoiceMovementTypeList():
delivery_line = movement.aq_parent
else:
delivery_line = movement
......@@ -1324,8 +1327,8 @@ class SimulationTool (Folder, UniqueObject):
if delivery_line is None:
# Not found. So create a new delivery line.
movement = base_variant_group.movement_list[0]
if movement.aq_parent.getPortalType() in simulated_movement_type_list \
or movement.aq_parent.getPortalType() in invoice_movement_type_list:
if movement.aq_parent.getPortalType() in self.getPortalSimulatedMovementTypeList() \
or movement.aq_parent.getPortalType() in self.getPortalInvoiceMovementTypeList():
delivery_line_type = movement.aq_parent.getPortalType()
else:
delivery_line_type = movement.getPortalType()
......@@ -1397,12 +1400,12 @@ class SimulationTool (Folder, UniqueObject):
LOG('mergeDeliveryList', 0, 'object_to_update = %s, cell_category_list = %s, cell_target_quantity = %s, cell_quantity = %s, average_price = %s' % (repr(object_to_update), repr(cell_category_list), repr(cell_target_quantity), repr(cell_quantity), repr(average_price)))
object_to_update.setCategoryList(cell_category_list)
if object_to_update.getPortalType() in simulated_movement_type_list:
if object_to_update.getPortalType() in self.getPortalSimulatedMovementTypeList():
object_to_update.edit(target_quantity = cell_target_quantity,
quantity = cell_quantity,
price = average_price,
)
elif object_to_update.getPortalType() in invoice_movement_type_list:
elif object_to_update.getPortalType() in self.getPortalInvoiceMovementTypeList():
# Invoices do not have target quantities, and the price never change.
object_to_update.edit(quantity = cell_quantity,
price = cell_price,
......@@ -1415,7 +1418,7 @@ class SimulationTool (Folder, UniqueObject):
# Merge containers. Just copy them from other deliveries into the main.
for delivery in delivery_list:
container_id_list = delivery.contentIds(filter = {'portal_type': container_type_list})
container_id_list = delivery.contentIds(filter = {'portal_type': self.getPortalContainerTypeList()})
if len(container_id_list) > 0:
copy_data = delivery.manage_copyObjects(ids = container_id_list)
new_id_list = main_delivery.manage_pasteObjects(copy_data)
......
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