Commit 9913d981 authored by Xiaowu Zhang's avatar Xiaowu Zhang

erp5_production_planning: improve production planning

1. add Periodicity tab
2. if production order is not in period, add it with new column
parent 7f2fca19
......@@ -40,7 +40,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>render_production_planning</string> </value>
<value> <string>render_production_planning_status</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
......@@ -60,7 +60,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Render Production Planning</string> </value>
<value> <string>Render Production Planning Status</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
......@@ -77,7 +77,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/ProductionPlanningModule_renderProductionPlanningDialog</string> </value>
<value> <string>string:${object_url}/ProductionPlanningModule_renderProductionPlanningStatusDialog</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -58,7 +58,7 @@
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>1.0</float> </value>
<value> <float>10.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/object_view</string>
</tuple>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_view</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>production_planning_preference</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<value>
<tuple>
<string>View</string>
</tuple>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Action Information</string> </value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>2.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Preference</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Expression" module="Products.CMFCore.Expression"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/ProductionPlanning_viewPreference</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/object_action</string>
</tuple>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_action</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>rerender_production_planning_status</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<value>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Action Information</string> </value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>5.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Rerender Production Planning Status</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Expression" module="Products.CMFCore.Expression"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/ProductionPlanning_rerenderProductionPlanningStatusDialog</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="Expression" module="Products.CMFCore.Expression"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>python: here.getValidationState() in (\'recorded\')</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<base_category_list>
<portal_type id="Production Planning">
<item>production_planning_period</item>
</portal_type>
<portal_type id="Production Planning Cell">
<item>specialise</item>
</portal_type>
......
<hidden_content_type_list>
<portal_type id="Production Planning">
<item>Production Planning Cell</item>
</portal_type>
<portal_type id="Production Planning Module">
<item>Production Planning</item>
</portal_type>
......
......@@ -16,6 +16,12 @@
<key> <string>content_icon</string> </key>
<value> <string>folder_icon.gif</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>factory</string> </key>
<value> <string>addFolder</string> </value>
......@@ -32,6 +38,18 @@
<key> <string>id</string> </key>
<value> <string>Production Planning Module</string> </value>
</item>
<item>
<key> <string>init_script</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>permission</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Base Type</string> </value>
......@@ -40,6 +58,18 @@
<key> <string>type_class</string> </key>
<value> <string>Folder</string> </value>
</item>
<item>
<key> <string>type_interface</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>type_mixin</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
......
production_planning = context.newContent(portal_type='Production Planning', start_date=start_date, stop_date=stop_date)
line_list, column_list = production_planning.ProductionPlanning_getCellRange()
line_ids = map(lambda x: x[0], line_list)
column_ids = map(lambda x: x[0], column_list)
production_planning.setCellRange(line_ids, column_ids, base_id='cell')
production_planning = context.newContent(
portal_type='Production Planning',
start_date=start_date,
stop_date=stop_date,
production_planning_period = context.portal_preferences.getPreferredProductionPlanningPeriod())
production_planning.render()
production_planning.activate().ProductionPlanning_renderProductionMatrixStatus()
if batch_mode:
return production_planning
message = context.Base_translateString("Production Planning is rendering.")
message = context.Base_translateString("Production Planning Status is rendering.")
return production_planning.Base_redirect('view',keep_items={'portal_status_message': message})
......@@ -54,7 +54,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ProductionPlanningModule_renderProductionPlanning</string> </value>
<value> <string>ProductionPlanningModule_renderProductionPlanningStatus</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -14,7 +14,7 @@
</item>
<item>
<key> <string>action</string> </key>
<value> <string>ProductionPlanningModule_renderProductionPlanning</string> </value>
<value> <string>ProductionPlanningModule_renderProductionPlanningStatus</string> </value>
</item>
<item>
<key> <string>description</string> </key>
......@@ -88,7 +88,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ProductionPlanningModule_renderProductionPlanningDialog</string> </value>
<value> <string>ProductionPlanningModule_renderProductionPlanningStatusDialog</string> </value>
</item>
<item>
<key> <string>method</string> </key>
......@@ -96,7 +96,7 @@
</item>
<item>
<key> <string>name</string> </key>
<value> <string>ProductionPlanningModule_renderProductionPlanningDialog</string> </value>
<value> <string>ProductionPlanningModule_renderProductionPlanningStatusDialog</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
......@@ -112,7 +112,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Render Production Planning</string> </value>
<value> <string>Render Production Planning Status</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
......
......@@ -81,6 +81,10 @@
<string>delivery.stop_date</string>
<string>Stop Date</string>
</tuple>
<tuple>
<string>translated_validation_state_title</string>
<string>State</string>
</tuple>
</list>
</value>
</item>
......
from Products.ERP5Type.DateUtils import addToDate
from DateTime import DateTime
from Products.ZSQLCatalog.SQLCatalog import Query, ComplexQuery
portal = context.getPortalObject()
if not start_date:
......@@ -7,21 +8,49 @@ if not start_date:
if not stop_date:
stop_date = context.getStopDate()
# Sunday is 0
day_number = start_date.dow()
# Get Monday
if day_number == 0:
start_date = addToDate(start_date, {'day': 1})
elif day_number > 1:
start_date = addToDate(start_date, {'day': 8 - day_number})
period = context.getProductionPlanningPeriod()
column_list = []
while start_date < stop_date:
date = start_date.Date()
column_list.append(('%s' % date, '%s, week %s' % (date,start_date.week())))
start_date = addToDate(start_date, {'day': 7})
date_dict = {
'monday': 1,
'tuesday': 2,
'wednesday': 3,
'thursday': 4,
'friday': 5,
'saturday': 6,
'sunday': 0
}
tmp_date = start_date
day_number = tmp_date.dow()
if day_number < date_dict[period]:
tmp_date = addToDate(tmp_date, {'day': date_dict[period] - day_number})
else:
tmp_date = addToDate(tmp_date, {'day': 7 - day_number + date_dict[period]})
column_dict = {}
while tmp_date < stop_date:
column_dict[tmp_date] = '%s, week %s' % (tmp_date.Date(),tmp_date.week())
tmp_date = addToDate(tmp_date, {'day': 7})
line_list = []
for product in portal.portal_catalog(portal_type='Product', product_line_relative_url='product_line/car', sort_on=(('uid', 'ascending'),)):
line_list.append((int(product.getUid()), '%s/%s'% (product.getReference(), product.getTitle())))
# Now check date
product_uid = product.getUid()
query_list = [
Query(portal_type='Production Order'),
Query(simulation_state=('planned','auto_planned')),
Query(child_resource_uid=product_uid),
ComplexQuery(Query(**{'delivery.start_date': {'query': stop_date, 'range': '<'}}),
Query(**{'delivery.start_date': {'query': start_date, 'range': '>='}}),
logical_operator='AND')
]
production_order_list = portal.portal_catalog(query=ComplexQuery(logical_operator='AND', *query_list))
for production_order in production_order_list:
start_date = production_order.getStartDate()
if start_date not in column_dict:
column_dict[start_date] = '%s, week %s' % (start_date.Date(), start_date.week())
column_list = []
for date, value in sorted(column_dict.items()):
column_list.append(('%s' % date.Date(), value))
return line_list, column_list
......@@ -3,10 +3,13 @@ from Products.ERP5Type.DateUtils import addToDate
from Products.ZSQLCatalog.SQLCatalog import Query, ComplexQuery
portal = context.getPortalObject()
_, column_list = context.ProductionPlanning_getCellRange()
column_list = [x[0] for x in column_list]
start_date = DateTime(column_list[0])
stop_date = addToDate(DateTime(column_list[-1]), {'day':1})
line_list, column_list = context.ProductionPlanning_getCellRange()
line_ids = map(lambda x: x[0], line_list)
column_ids = map(lambda x: x[0], column_list)
context.setCellRange(line_ids, column_ids, base_id='cell')
start_date = DateTime(column_list[0][0])
stop_date = addToDate(DateTime(column_list[-1][0]), {'day':1})
for product in portal.portal_catalog(portal_type='Product', product_line_relative_url='product_line/car'):
product_uid = product.getUid()
query_list = [
......@@ -25,11 +28,12 @@ for product in portal.portal_catalog(portal_type='Product', product_line_relativ
for production_order_line in production_order.searchFolder(portal_type='Production Order Line', strict_resource_uid=product_uid):
k = (line, column)
if not context.hasInRange(*k, **kd):
raise ValueError('Production order date %s is not a monday' % start_date)
context.log('Waring: Production order date %s is not in range which should not be, need to check' % start_date)
if context.hasCell(*k, **kd):
raise ValueError('Duplicated production order for %s at %s' % (product.getReference(), start_date))
new_cell = context.newCell(*k, **kd)
new_cell.edit(
quantity = production_order_line.getQuantity(),
specialise_value = production_order_line)
context.record()
# Delete previous contents
context.manage_delObjects(ids=[x.getId() for x in context.contentValues(portal_type='Production Planning Cell')])
context.render()
context.activate().ProductionPlanning_renderProductionMatrixStatus()
message = context.Base_translateString("Production Planning Status is rerendering.")
return context.Base_redirect('view',keep_items={'portal_status_message': message})
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ProductionPlanning_rerenderProductionPlanningStatus</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5 Form" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string>ProductionPlanning_rerenderProductionPlanningStatus</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list>
<string>your_warning</string>
</list>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ProductionPlanning_rerenderProductionPlanningStatusDialog</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>ProductionPlanning_rerenderProductionPlanningStatusDialog</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_dialog</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Rerender Production Planning Status</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>default</string>
<string>display_width</string>
<string>editable</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>your_warning</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string>Production Planning Status will be Rerendered</string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>20</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_string_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Warning</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5 Form" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string>Base_edit</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list>
<string>my_production_planning_period</string>
</list>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ProductionPlanning_viewPreference</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>ProductionPlanning_viewPreference</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_view</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>required</string>
<string>size</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>my_production_planning_period</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_view_mode_category</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Production Planning Period</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -14,8 +14,18 @@
</item>
<item>
<key> <string>action</string> </key>
<value> <string>Base_edit</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
......@@ -87,6 +97,10 @@
<key> <string>name</string> </key>
<value> <string>SystemPreference_viewProductionPlanning</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_view</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
......@@ -103,6 +117,14 @@
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
......
......@@ -31,6 +31,7 @@
<string>apply</string>
<string>cancel</string>
<string>cancel_action</string>
<string>render</string>
</tuple>
</value>
</item>
......
Production Planning Cell | view
Production Planning Module | render_production_planning
Production Planning Module | render_production_planning_status
Production Planning Module | view
Production Planning | apply_production_planning_change
Production Planning | production_planning_preference
Production Planning | rerender_production_planning_status
Production Planning | view
System Preference | production_planning_preference
\ No newline at end of file
Production Planning Cell | specialise
Production Planning Module | business_application
\ No newline at end of file
Production Planning Module | business_application
Production Planning | production_planning_period
\ No newline at end of file
Production Planning Module | Production Planning
\ No newline at end of file
Production Planning Module | Production Planning
Production Planning | Production Planning Cell
\ No newline at end of file
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