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