From e5429db2545da378421682398fcfe58b1e6dafc2 Mon Sep 17 00:00:00 2001 From: Kevin Deldycke <kevin@nexedi.com> Date: Thu, 23 Jun 2005 12:46:23 +0000 Subject: [PATCH] Support of Bank Account Inventory & Bank Account Inventory Line git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@3327 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5SyncML/Conduit/BaobabConduit.py | 86 ++++++++++++++++++++- 1 file changed, 84 insertions(+), 2 deletions(-) diff --git a/product/ERP5SyncML/Conduit/BaobabConduit.py b/product/ERP5SyncML/Conduit/BaobabConduit.py index 3d9da249f7..f47ddfac19 100755 --- a/product/ERP5SyncML/Conduit/BaobabConduit.py +++ b/product/ERP5SyncML/Conduit/BaobabConduit.py @@ -112,8 +112,20 @@ class BaobabConduit(ERP5Conduit): , 'erp5_property': 'title' , 'conditions' : {'erp5_portal_type':'Cash Inventory Group'} } + + , { 'xml_property' : 'title' + , 'erp5_property': 'title' + , 'conditions' : {'erp5_portal_type':'Bank Account Inventory'} + } + + , { 'xml_property' : 'amount' + , 'erp5_property': 'inventory' + , 'conditions' : {'erp5_portal_type':'Bank Account Inventory Line'} + } ] + + """ Methods below are tools to use the property_map. """ @@ -159,6 +171,8 @@ class BaobabConduit(ERP5Conduit): # (it depends of the nature of objects you want to synchronize) try: cash_inventory_module = object.cash_inventory_module except: cash_inventory_module = None + try: bank_account_inventory_module = object.bank_account_inventory_module + except: bank_account_inventory_module = None try: currency_cash_module = object.currency_cash_module except: currency_cash_module = None @@ -312,6 +326,19 @@ class BaobabConduit(ERP5Conduit): new_inventory.setDestination(vault_path) subobject = new_inventory + ### handle bank account inventory objects + elif portal_type == 'Bank Account Inventory': + if bank_account_inventory_module == None: return None + subobject = bank_account_inventory_module.newContent( portal_type = 'Bank Account Inventory' + , id = object_id + ) + + ### handle bank account inventory line objects + elif portal_type == 'Bank Account Inventory Line': + subobject = object.newContent( portal_type = 'Bank Account Inventory Line' + , id = object_id + ) + return subobject @@ -421,6 +448,39 @@ class BaobabConduit(ERP5Conduit): , cell_uid = cell_id ) + ### Bank Account Inventory Line objects needs two properties to get the right bank account object + if object.getPortalType() == 'Bank Account Inventory Line': + currency_id = None + bank_account_number = None + for k,v in kw.items(): + if k == 'currency' : currency_id = v + if k == 'account_number': bank_account_number = v + # try to find the bank account + if bank_account_number != None: + customer_list = object.person.contentValues(filter={'portal_type': 'Person'}) + \ + object.organisation.contentValues(filter={'portal_type': 'Organisation'}) + bank_account_object = None + for customer in customer_list: + for bank_account in customer.contentValues(filter={'portal_type': 'Bank Account'}): + if bank_account.getBankAccountNumber() == bank_account_number: + # found ! + bank_account_object = bank_account + break + if bank_account_object != None: + break + if bank_account_object != None: + object.setDestinationValue(bank_account_object) + if currency_id != None: + # verify or add the currency + current_currency_id = bank_account_object.getPriceCurrencyId() + if current_currency_id in (None, ''): + bank_account_object.setPriceCurrency('currency/' + currency_id) + elif current_currency_id != currency_id: + LOG( 'BaobabConduit inconsistency:' + , 200 + , 'found bank account has not the same currency as expected' + ) + """ Here we use 2 generic way to update object properties : @@ -455,7 +515,7 @@ class BaobabConduit(ERP5Conduit): ### No translation rule found, try to find a hard-coded translation method in the conduit else: - method_id = "edit%s%s" % (kw['type'], convertToUpperCase(k)) + method_id = "edit%s%s" % (kw['type'].replace(' ', ''), convertToUpperCase(k)) LOG( 'BaobabConduit:' , 0 , "try to call conduit method %s on %s" % (repr(method_id), repr(object)) @@ -767,4 +827,26 @@ class BaobabConduit(ERP5Conduit): , membership_criterion_category_list = sorted_cell_category_list , category_list = sorted_cell_category_list , title = cell_uid - ) \ No newline at end of file + ) + + + + ### BankAccountInventory-related-properties functions + + def editBankAccountInventoryAgencyCode(self, document, value): + agency_path = self.getVaultPathFromCodification( object = document + , agency_code = value + ) + document.setDestination(agency_path) + + def editBankAccountInventoryDate(self, document, value): + if value in ('', None): + date = str(datetime.datetime.max) + else: + # Convert french date to strandard date + date_items = value.split('/') + day = date_items[0] + month = date_items[1] + year = date_items[2] + date = '/'.join([year, month, day]) + document.setStopDate(date) \ No newline at end of file -- 2.30.9