diff --git a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_getOpenOrderDifference.xml b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_getOpenOrderDifference.xml index b18ddfb4eaeb7be8e51921849e5897d86fa64b67..edb10573d3fcabaf7d309ec9cb04e125376c12c3 100644 --- a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_getOpenOrderDifference.xml +++ b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_getOpenOrderDifference.xml @@ -80,14 +80,16 @@ if previous_open_sale_order is not None:\n now = DateTime()\n \n add_kw_kw = {}\n -for add_kw in add_kw_list:\n +for (add_kw, explanation) in add_kw_list:\n existing = portal.portal_catalog.countResults(portal_type=\'Open Sale Order Line\', default_aggregate_uid=portal.restrictedTraverse(add_kw[\'aggregate\']).getUid())[0][0] > 0\n if add_kw[\'aggregate\'] not in hosting_subscription_mapping and not existing:\n add_kw_kw[add_kw[\'aggregate\']] = add_kw.copy()\n + add_kw_kw[add_kw[\'aggregate\']][\'explanation\'] = [\'Added because of %s \' % explanation]\n \n modify_kw_kw = {}\n hs_modify_kw_kw = {}\n for start_date_tuple in start_date_tuple_list:\n + start_date_tuple, explanation = start_date_tuple[0:2], start_date_tuple[2]\n start_date = getClosestDate(target_date=start_date_tuple[1], precision=\'day\')\n while start_date.day() >= 29:\n start_date = addToDate(start_date, to_add={\'day\': -1})\n @@ -96,11 +98,13 @@ for start_date_tuple in start_date_tuple_list:\n line = previous_open_sale_order[line_id]\n if line.getStartDate() is None:\n modify_kw_kw[line.getAggregate(portal_type=\'Hosting Subscription\')] = {\'start_date\': start_date}\n + modify_kw_kw[line.getAggregate(portal_type=\'Hosting Subscription\')][\'explanation\'] = [\'Set start date because of %s\' % explanation]\n else:\n # reset start_date to possibly already set up on Open Order Line\n start_date = line.getStartDate()\n elif start_date_tuple[0] in add_kw_kw:\n add_kw_kw[start_date_tuple[0]][\'start_date\'] = start_date\n + add_kw_kw[start_date_tuple[0]][\'explanation\'].append(\'Added start date beacuse of %s\' % explanation)\n hs = portal.restrictedTraverse(start_date_tuple[0])\n if hs.getPeriodicityMonthDayList() != [start_date.day()]:\n hs_modify_kw_kw.setdefault(start_date_tuple[0], {})\n @@ -109,6 +113,7 @@ for start_date_tuple in start_date_tuple_list:\n periodicity_hour_list=[0],\n periodicity_minute_list=[0]\n )\n + hs_modify_kw_kw[start_date_tuple[0]][\'explanation\'] = \'Set up because of %s\' % explanation\n \n if previous_open_sale_order is not None:\n for line in previous_open_sale_order.contentValues(portal_type=\'Open Sale Order Line\'):\n @@ -116,18 +121,23 @@ if previous_open_sale_order is not None:\n if old_stop_date is not None:\n if stop_date is not None and old_stop_date < stop_date:\n modify_kw_kw.setdefault(line.getAggregate(portal_type=\'Hosting Subscription\'), {})\n + modify_kw_kw[line.getAggregate(portal_type=\'Hosting Subscription\')].setdefault(\'explanation\', [])\n modify_kw_kw[line.getAggregate(portal_type=\'Hosting Subscription\')][\'stop_date\'] = stop_date\n + modify_kw_kw[line.getAggregate(portal_type=\'Hosting Subscription\')][\'explanation\'].append(\'Set stop date because of stop_date %s\' % stop_date)\n elif old_stop_date < now:\n new_stop_date = addToDate(old_stop_date, to_add={\'month\': 1})\n while new_stop_date < now:\n new_stop_date = addToDate(new_stop_date, to_add={\'month\': 1})\n hosting_id = line.getAggregate(portal_type=\'Hosting Subscription\')\n modify_kw_kw.setdefault(hosting_id, {})\n + modify_kw_kw[line.getAggregate(portal_type=\'Hosting Subscription\')].setdefault(\'explanation\', [])\n modify_kw_kw[line.getAggregate(portal_type=\'Hosting Subscription\')][\'stop_date\'] = new_stop_date\n + modify_kw_kw[line.getAggregate(portal_type=\'Hosting Subscription\')][\'explanation\'].append(\'Set stop date becase of new_stop_date %s\' % new_stop_date)\n \n for (key, value) in add_kw_kw.copy().iteritems():\n if stop_date is not None:\n add_kw_kw[key][\'stop_date\'] = stop_date\n + add_kw_kw[key][\'explanation\'].append(\'Set stop date beacuse of stop_date %s \' % stop_date)\n else:\n start_date = add_kw_kw[key].get(\'start_date\')\n if start_date is not None:\n @@ -135,10 +145,12 @@ for (key, value) in add_kw_kw.copy().iteritems():\n while new_stop_date < now:\n new_stop_date = addToDate(new_stop_date, to_add={\'month\': 1})\n add_kw_kw[key][\'stop_date\'] = new_stop_date\n + add_kw_kw[key][\'explanation\'].append(\'Set stop date because of new_stop_date %s\' % new_stop_date)\n \n for (key, value) in modify_kw_kw.copy().iteritems():\n if stop_date is not None:\n modify_kw_kw[key][\'stop_date\'] = stop_date\n + modify_kw_kw[key][\'explanation\'].append(\'Set stop date because of stop_date %s\' % stop_date)\n else:\n start_date = modify_kw_kw[key].get(\'start_date\')\n if start_date is not None:\n @@ -146,10 +158,11 @@ for (key, value) in modify_kw_kw.copy().iteritems():\n while new_stop_date < now:\n new_stop_date = addToDate(new_stop_date, to_add={\'month\': 1})\n modify_kw_kw[key][\'stop_date\'] = new_stop_date\n + modify_kw_kw[key][\'explanation\'].append(\'Set stop date because of new_stop_date %s\' % new_stop_date)\n \n remove_id_list = set()\n if previous_open_sale_order is not None:\n - for remove_hosting in remove_hosting_list:\n + for (remove_hosting, explanation) in remove_hosting_list:\n if remove_hosting in add_kw_kw or remove_hosting in modify_kw_kw:\n # just added, cannot remove yet\n continue\n diff --git a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_storeOpenOrderJournal.xml b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_storeOpenOrderJournal.xml index 813568777c3a0b5533af4807546c2083bd70cda4..fea116a637405945f07e763eda74b8baf9e4ab51 100644 --- a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_storeOpenOrderJournal.xml +++ b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_storeOpenOrderJournal.xml @@ -76,7 +76,7 @@ for cleanup_line in catalog(\n **movement_kw):\n aggregate = cleanup_line.getAggregate(portal_type=\'Hosting Subscription\')\n if aggregate not in remove_hosting_list:\n - remove_hosting_list.append(aggregate)\n + remove_hosting_list.append((aggregate, cleanup_line.getPath()))\n \n for cancelled_line in catalog(\n portal_type=\'Sale Order Line\',\n @@ -85,7 +85,7 @@ for cancelled_line in catalog(\n **movement_kw):\n aggregate = cancelled_line.getAggregate(portal_type=\'Hosting Subscription\')\n if aggregate not in remove_hosting_list:\n - remove_hosting_list.append(aggregate)\n + remove_hosting_list.append((aggregate, cancelled_line.getPath()))\n \n subscription_service_relative_url=portal.portal_preferences.getPreferredInstanceSubscriptionResource()\n common_add_kw = dict(\n @@ -108,7 +108,7 @@ for order in catalog(\n title=portal.restrictedTraverse(hosting_subscription).getTitle(),\n aggregate=hosting_subscription\n )\n - add_kw_list.append(add_kw)\n + add_kw_list.append((add_kw, order.getPath()))\n \n def getWorkflowDate(delivery, state):\n workflow_item_list = portal.portal_workflow.getInfoFor(ob=delivery, name=\'history\', wf_id=\'packing_list_workflow\')\n @@ -128,7 +128,7 @@ for setup_line in catalog(\n sort_on=((\'movement.start_date\', \'ascending\'),))\n # start date shall be stopped state reach\n start_date = getWorkflowDate(real_setup_line.getParentValue(), \'stopped\')\n - start_date_tuple_list.append((setup_line.getAggregate(portal_type=\'Hosting Subscription\'), start_date))\n + start_date_tuple_list.append((setup_line.getAggregate(portal_type=\'Hosting Subscription\'), start_date, real_setup_line.getPath()))\n \n result = person.Person_updateOpenOrder(src__=src__, remove_hosting_list=remove_hosting_list, add_kw_list=add_kw_list, start_date_tuple_list=start_date_tuple_list, stop_date=stop_date)\n from pprint import pformat\n diff --git a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_updateOpenOrder.xml b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_updateOpenOrder.xml index e034033575d40d5660d7cb190e97b515851265e5..73059a48af91e0d2bad887614a06a368cf1dbe36 100644 --- a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_updateOpenOrder.xml +++ b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_updateOpenOrder.xml @@ -62,6 +62,9 @@ if portal.portal_activities.countMessageWithTag(tag) > 0:\n # nothing to do\n return\n \n +def storeWorkflowComment(document, comment):\n + portal.portal_workflow.doActionFor(document, \'edit_action\', comment=comment)\n +\n add_kw_kw, modify_kw_kw, hs_modify_kw_kw, remove_id_list = context.Person_getOpenOrderDifference(\n remove_hosting_list=remove_hosting_list, add_kw_list=add_kw_list,\n stop_date=stop_date, start_date_tuple_list=start_date_tuple_list)\n @@ -103,11 +106,17 @@ if previous_open_sale_order is not None:\n open_sale_order.validate(activate_kw=activate_kw)\n \n for kw in add_kw_kw.itervalues():\n - open_sale_order.newContent(activate_kw=activate_kw, **kw)\n + explanation_list = kw.pop(\'explanation\', [])\n + line = open_sale_order.newContent(activate_kw=activate_kw, **kw)\n + for explanation in explanation_list:\n + storeWorkflowComment(line, explanation)\n \n for hs, kw in modify_kw_kw.iteritems():\n line = [q for q in open_sale_order.contentValues() if q.getAggregate(portal_type=\'Hosting Subscription\') == hs][0]\n + explanation_list = kw.pop(\'explanation\', [])\n line.edit(activate_kw=activate_kw, **kw)\n + for explanation in explanation_list:\n + storeWorkflowComment(line, explanation)\n \n open_sale_order.deleteContent(remove_id_list)\n if previous_open_sale_order is not None:\n diff --git a/master/bt5/vifib_slap/bt/revision b/master/bt5/vifib_slap/bt/revision index 8e6862383d3ca1f23e51b1467e98ee692e765b43..633a07769901eb809dc5c81a7130887878624251 100644 --- a/master/bt5/vifib_slap/bt/revision +++ b/master/bt5/vifib_slap/bt/revision @@ -1 +1 @@ -684 \ No newline at end of file +685 \ No newline at end of file