From 4c61c65a13d88a824ed85f341c7d254544e1daa8 Mon Sep 17 00:00:00 2001 From: Kevin Deldycke <kevin@nexedi.com> Date: Thu, 16 Jun 2005 18:54:42 +0000 Subject: [PATCH] better generation of category lists needed to create lines and cells; code cleaning; git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@3270 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5SyncML/Conduit/BaobabConduit.py | 83 ++++++++++++--------- 1 file changed, 46 insertions(+), 37 deletions(-) diff --git a/product/ERP5SyncML/Conduit/BaobabConduit.py b/product/ERP5SyncML/Conduit/BaobabConduit.py index 6bbaf1f6e7..d80420fc58 100755 --- a/product/ERP5SyncML/Conduit/BaobabConduit.py +++ b/product/ERP5SyncML/Conduit/BaobabConduit.py @@ -330,7 +330,6 @@ class BaobabConduit(ERP5Conduit): , agency_code = kw['agency_code'] , inventory_code = kw['inventory_code'] ) - LOG('KevLogggg>>>>',0,repr(object)) object.setDestination(vault_path) ### Cash Inventory Detail objects needs all properties to create and update the cell matrix @@ -359,7 +358,7 @@ class BaobabConduit(ERP5Conduit): return None # get the list of existing currency to find the currency of the line line_currency_cash = None - currency_cash_list = currency_cash_module.contentValues(filter={'portal_type': currency_portal_type}) + currency_cash_list = object.currency_cash_module.contentValues(filter={'portal_type': currency_portal_type}) for currency_cash in currency_cash_list: if base_price not in (None, '') and \ currency_name not in (None, '') and \ @@ -386,10 +385,6 @@ class BaobabConduit(ERP5Conduit): new_line = object.newContent(portal_type = 'Cash Inventory Line') new_line.setResourceValue(line_currency_cash) new_line.setPrice(line_currency_cash.getBasePrice()) -# new_line.setVariationBaseCategoryList([ 'cash_status' -# , 'emission_letter' -# , 'variation' -# ]) # get matrix variation values category_list = [] base_cat_map = { 'variation' : 'variation' @@ -638,7 +633,7 @@ class BaobabConduit(ERP5Conduit): ### CashInventory-related-properties functions - def editCashInventoryGroupInventoryDate(self, document, value): + def editCashInventoryInventoryDate(self, document, value): if value in ('', None): date = str(datetime.datetime.max) else: @@ -673,12 +668,14 @@ class BaobabConduit(ERP5Conduit): for agency_sub_item in agency_site_object.getCategoryChildLogicalPathItemList(base=1)[1:]: agency_sub_item_path = agency_sub_item[1] agency_sub_item_object = category_tool.resolveCategory(agency_sub_item_path) - vault_type_path = 'vault_type/' + agency_sub_item_object.getVaultType() - vault_type_object = category_tool.resolveCategory(vault_type_path) - vault_type_code = vault_type_object.getCodification() - if vault_type_code not in (None, '') and vault_type_code.upper() == inventory_code.upper(): - inventory_path = agency_sub_item_path - break + agency_sub_item_vault = agency_sub_item_object.getVaultType() + if agency_sub_item_vault not in (None, ''): + vault_type_path = 'vault_type/' + agency_sub_item_vault + vault_type_object = category_tool.resolveCategory(vault_type_path) + vault_type_code = vault_type_object.getCodification() + if vault_type_code not in (None, '') and vault_type_code.upper() == inventory_code.upper(): + inventory_path = agency_sub_item_path + break if vault_code in (None, ''): return inventory_path # Get the site path corresponding to the vault code @@ -698,44 +695,56 @@ class BaobabConduit(ERP5Conduit): ### CashInventoryDetail-related-properties functions def updateCashInventoryMatrix(self, line, cell_category_list, quantity, cell_description): - # save line current properties value - line_category_list = line.getVariationCategoryList() - # set the new_line_category_list - new_line_category_list = [] - for category in cell_category_list + line_category_list: - if category not in new_line_category_list: - new_line_category_list.append(category) - # update the line - line.setVariationCategoryList(new_line_category_list) - # update the cell range base_id = 'movement' - # cell_category_list must have the same base_category order of cell_range base category, so sort the category list ->>>>>> must be verified - base_category_list = [ 'cash_status' - , 'emission_letter' + base_category_list = [ 'emission_letter' , 'variation' + , 'cash_status' ] - cell_category_list.sort() - cell_range = [] - new_base_category_list = [] + + old_line_category_list = line.getVariationCategoryList() + messy_line_category_list = cell_category_list + old_line_category_list + + sorted_line_base_category_list = [] + sorted_line_category_list = [] + sorted_cell_category_list = [] + sorted_cell_range = [] + + # cell_category_list must have the same base category order of cell_range base category for base_category in base_category_list: + + # generate the sorted line categories + for category in messy_line_category_list: + if category.startswith(base_category + '/') and category not in sorted_line_category_list: + sorted_line_category_list.append(category) + + # generate the sorted cell range base_group = [] - for category in new_line_category_list: + for category in messy_line_category_list: if category.startswith(base_category + '/') and category not in base_group: base_group.append(category) + sorted_cell_range.append(base_group) + # generate the sorted base category if len(base_group) > 0: - new_base_category_list.append(base_category) - cell_range.append(base_group) - line.setVariationBaseCategoryList(new_base_category_list) - line.setCellRange(base_id = base_id, *cell_range) + sorted_line_base_category_list.append(base_category) + + # generate the sorted cell variation categories + for category in cell_category_list: + if category.startswith(base_category + '/') and category not in sorted_cell_category_list: + sorted_cell_category_list.append(category) + + # update line variation categories + line.setVariationBaseCategoryList(sorted_line_base_category_list) + line.setVariationCategoryList(sorted_line_category_list) + line.setCellRange(base_id = base_id, *sorted_cell_range) # create the cell kwd = { 'base_id' : base_id , 'portal_type': 'Cash Inventory Cell' } - new_cell = line.newCell(*cell_category_list, **kwd) + new_cell = line.newCell(*sorted_cell_category_list, **kwd) new_cell.edit( mapped_value_property_list = ('price', 'inventory') , force_update = 1 , inventory = quantity - , membership_criterion_category_list = cell_category_list - , category_list = cell_category_list + , membership_criterion_category_list = sorted_cell_category_list + , category_list = sorted_cell_category_list , description = cell_description ) -- 2.30.9