ERP5 KM

HowToConfigureBuilder

How to configure Builder

Configure Simulation Select Method

After r32519 (2010-02-15), the hierarchy of simulation tree is modified.

  • old simulation tree

AR (Order Rule)
+-SM (order:Sale Order Line, delivery:Sale Packing List Line)
  +-AR (Invoicing Rule)
    +-...
  • new simulation tree

AR (Order Simulation Rule)
+-SM (delivery:Sale Order Line)    <-- NEW
  +-AR (Deliverying Simulation Rule)          <-- NEW
    +-SM (delivery:Sale Packing List Line)
      +-AR (Invoicing Rule)
        +-...

If you don't want to migrate existing data, please configure select movement method appropriately to support both simulation hierarchy. The change on SaleOrder_selectMovement can be a good hint. But if you want to support the new simulation hierarchy only, you can make it more simple and fast.

Configure Movement Groups

After r23647 (2008-09-16), Movement Group in Builder becomes ERP5 Document (like Divergence Tester in Rule).

Collect Order Group
Select one of 'Delivery/Line/Cell' to specify in which level a movement group belongs to.
Sort Index
Use this property to specify the order of Movement Groups in each level.
Divergence Scope
If a Movement Group is related to Property, Category or Quantity, then specify the scope in this field.

See HowToConfigureMovementGroup for the detail of Movement Group.

Note that the following Movement Groups are not yet ported because they are not used in our public repository.

  • CriterionMovementGroup

  • IntIndexMovementGroup

  • OptionMovementGroup

  • ParentExplanationCausalityMovementGroup

  • RootAppliedRuleCausalityMovementGroup

  • SplitResourceMovementGroup

  • TransformationAppliedRuleCausalityMovementGroup

utility script for porting your custom Builder

Save the following as 'Script (Python)' named 'convertBuilder' and call it like 'portal_deliveries/foo_builder/convertBuilder'. Please review the int_index of each Movement Group after conversion.

   1 migrate_dict = {
   2   'AdministrationPathMovementGroup':[[], ['source_administration', 'destination_administration'], []],
   3   'AggregateMovementGroup':[[], ['aggregate'], []],
   4   'BaseApplicationMovementGroup':[[], ['base_application'], []],
   5   'BaseContributionMovementGroup':[[], ['base_contribution'], []],
   6   'BaseVariantMovementGroup':[[], [], ['Base Variant Movement Group']],
   7   'BrandMovementGroup':[['brand'], [], []],
   8   'CausalityAssignmentMovementGroup':[[], [], ['Causality Assignment Movement Group']],
   9   'CausalityMovementGroup':[[], [], ['Causality Movement Group']],
  10   'ColourMovementGroup':[[], ['colour'], []],
  11   'DateMovementGroup':[['start_date', 'stop_date'], [], []],
  12   'DecisionMovementGroup':[['decision'], [], []],
  13   'DecisionPathMovementGroup':[[], ['source_decision', 'destination_decision'], []],
  14   'DestinationDecisionMovementGroup':[[], ['destination_decision'], []],
  15   'DestinationMovementGroup':[[], ['destination'], []],
  16   'OrderMovementGroup':[[], [], ['Order Movement Group']],
  17   'ParentExplanationCausalityMovementGroup':[[], [], ['Parent Explanation Causality Movement Group']],
  18   'PathMovementGroup':[[], ['source', 'destination'], []],
  19   'PaymentModeMovementGroup':[[], ['payment_mode'], []],
  20   'PaymentPathMovementGroup':[[], ['source_payment', 'destination_payment'], []],
  21   'PriceCurrencyMovementGroup':[[], ['price_currency'], []],
  22   'QuantitySignMovementGroup':[[], [], ['Quantity Sign Movement Group']],
  23   'QuantityUnitMovementGroup':[[], ['quantity_unit'], []],
  24   'RequirementMovementGroup':[[], [], ['Requirement Movement Group']],
  25   'ResourceMovementGroup':[[], ['resource'], []],
  26   'SectionPathMovementGroup':[[], ['source_section', 'destination_section'], []],
  27   'SourceMovementGroup':[[], ['source'], []],
  28   'SourceProjectMovementGroup':[[], ['source_project'], []],
  29   'SplitMovementGroup':[[], [], ['Split Movement Group']],
  30   'TitleMovementGroup':[[], [], ['Title Movement Group']],
  31   'TradePathMovementGroup':[[], ['source_trade', 'destination_trade'], []],
  32   'VariantMovementGroup':[[], [], ['Variant Movement Group']],
  33   'VariationPropertyMovementGroup':[[], [], ['Variation Property Movement Group']],
  34 }
  35 
  36 def getTitle(portal_type, level):
  37   return '%s_on_%s' % ('_'.join([x.lower() for x in portal_type.split()]), level)
  38 
  39 for level in 'delivery', 'line', 'cell':
  40   property_list = []
  41   category_list = []
  42   other_list = []
  43   num = 1
  44 
  45   if level == 'delivery':
  46     collect_order_list = context.getDeliveryCollectOrderList()
  47   elif level == 'line':
  48     collect_order_list = context.getDeliveryLineCollectOrderList()
  49   elif level == 'cell':
  50     collect_order_list = context.getDeliveryCellCollectOrderList()
  51 
  52   for i in collect_order_list:
  53     try:
  54       prop, cat, other = migrate_dict[i]
  55     except KeyError:
  56       print '%s on %s level could not be merged.' % (i, level)
  57       continue
  58     property_list.extend(prop)
  59     category_list.extend(cat)
  60     other_list.extend(other)
  61 
  62   if len(property_list):
  63     portal_type='Property Movement Group'
  64     title = getTitle(portal_type, level)
  65     context.newContent(portal_type=portal_type, id=title, title=title,
  66                        tested_property=property_list,
  67                        categories=('divergence_scope/property', 'collect_order_group/%s' % level),
  68                        int_index=num)
  69     num += 1
  70 
  71   if len(category_list):
  72     portal_type='Category Movement Group'
  73     title = getTitle(portal_type, level)
  74     context.newContent(portal_type=portal_type, id=title, title=title,
  75                        tested_property=category_list,
  76                        categories=('divergence_scope/category', 'collect_order_group/%s' % level),
  77                        int_index=num)
  78     num += 1
  79 
  80   for portal_type in other_list:
  81     title = getTitle(portal_type, level)
  82     context.newContent(portal_type=portal_type, id=title, title=title,
  83                        categories=('collect_order_group/%s' % level,),
  84                        int_index=num)
  85     num += 1
  86 
  87 print 'finished.'
  88 return printed

HowToConfigureBuilder (last edited 2010-02-17 04:55:35 by kazuhiko)

Page
  • Immutable Page
  • Info
  • Attachments
User
Learn about new ERP5 releases,technical articles, events and more.

Subscribe to the monthly ERP5 Newsletter!