diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountListForTrialBalance.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountListForTrialBalance.xml index 5bb46c3b9bd0a611801c71a59a3b0835e06749cf..d29ec4a1fe768fb0dd6d78abf89bae5b0345741a 100755 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountListForTrialBalance.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountListForTrialBalance.xml @@ -73,11 +73,22 @@ # are split by \'destination_section\' categories and bank accounts are split by \'source_payment\'\n #\n \n +from DateTime import DateTime\n import math\n +\n LOG = lambda msg : context.getPortalObject().log(\n "AccountModule_getAccountListForTrialBalance", msg)\n \n +from_date = kw.get(\'from_date\', DateTime(\'1970/01/01\'))\n +simulation_state = kw[\'transaction_simulation_state\']\n +section_category = kw[\'transaction_section_category\']\n +at_date = kw[\'at_date\']\n +kw[\'accounting_transaction_line_currency\'] = \'TODO\'\n +\n \n +getInventory = context.getPortalObject().portal_simulation.getInventory\n +getInventoryList = context.getPortalObject().portal_simulation.getInventoryList\n + \n # wether we should or not expand accounts into virtual accounts \n # (payable & receivable with other parties / bank with bank account)\n expand_accounts = kw.get("expand_accounts", 1)\n @@ -88,28 +99,20 @@ gap_root = kw["gap_root"]\n # extra arguments for getInventory :\n extra_kw = {}\n if kw.get(\'from_date\', None) is not None:\n - extra_kw[\'from_date\'] = kw[\'from_date\']\n + extra_from_date = from_date\n \n # shall we display a summary line for expanded accounts ?\n display_summary_account_line = 0\n \n -def gap_sort_func(a, b) :\n - a_gap = a.getGapId()\n - b_gap = b.getGapId()\n - while len(a_gap) < 7 :\n - a_gap += \'0\'\n - while len(b_gap) < 7 :\n - b_gap += \'0\'\n - if a_gap < b_gap : return -1\n - if a_gap > b_gap : return 1\n - return 0\n -\n def formatValues(dict) :\n for k, v in dict.items():\n if not(same_type(v, "") or same_type(v, u"")) :\n if round(v) == 0.00 :\n dict[k] = ""\n else :\n + negative = v < 0\n + if k in (\'opening_balance\', \'closing_balance\') and negative :\n + v = - v\n # FIXME: this part is a copy of Floatfield format_value\n value = str(float(v))\n value_list = value.split(\'.\')\n @@ -119,19 +122,61 @@ def formatValues(dict) :\n while i != len(integer):\n value += \' \' + integer[i:i+3]\n i += 3\n - dict[k] = \'%s.%s\'%(integer, value_list[1])\n + dict[k] = \'%s.%s\'%(value, str(value_list[1])[:2])\n + # XXX ohada l10n local hack, we only use integer part !\n + #dict[k] = \'%s\'%(value)\n + if k in (\'opening_balance\', \'closing_balance\') :\n + if negative:\n + dict[k] = \'%s CR\'%(value)\n + else :\n + dict[k] = \'%s \'%(value)\n + dict[k]\n return dict \n \n +# organisations for expandBankAccountsForAccount\n +organisations = context.portal_categories.restrictedTraverse(\n + section_category\n + ).getGroupRelatedValueList(portal_type=\'Organisation\')\n +\n +\n +def getDefaultColumnValues(node_uid = 0, **kw): \n + """ returns then opening balance, debit movements sum, credit movements\n + sum and closing balance using defaults categories. """\n + values = {}\n + values[\'opening_balance\'] = getInventory( node_uid = node_uid,\n + to_date = from_date,\n + simulation_state = simulation_state,\n + omit_simulation = 1,\n + # TODOcurrency = kw[\'accounting_transaction_line_currency\'],\n + **kw )\n + values[\'debit_movement\'] = getInventory( node_uid = node_uid,\n + from_date = from_date,\n + at_date = at_date,\n + simulation_state = simulation_state,\n + omit_simulation = 1,\n + omit_output = 1,\n + # TODOcurrency = kw[\'accounting_transaction_line_currency\'],\n + **kw )\n + values[\'credit_movement\'] = - getInventory( node_uid = node_uid,\n + from_date = from_date,\n + at_date = at_date,\n + simulation_state = simulation_state,\n + omit_simulation = 1,\n + omit_input = 1,\n + # TODOcurrency = kw[\'accounting_transaction_line_currency\'],\n + **kw )\n + values[\'closing_balance\'] = values[\'opening_balance\'] + \\\n + values[\'debit_movement\'] - \\\n + values[\'credit_movement\']\n + return values\n +\n def expandBankAccountsForAccount(account, **kw) :\n tmp_accounts = []\n - organisations = context.portal_categories.restrictedTraverse(\n - kw[\'transaction_section_category\']\n - ).getGroupRelatedValueList(portal_type=\'Organisation\')\n orga_and_banks = []\n for orga in organisations :\n orga_and_banks += [(orga, o.getObject()) for o in \\\n - orga.searchFolder(portal_type=[\'Bank Account\'])]\n - for orga, bank in orga_and_banks :\n + orga.searchFolder(portal_type=[\'Bank Account\', \'Cash Register\'])]\n + for orga ,bank in orga_and_banks :\n this_tmp_account = {\n \'uid\' : account.getUid(),\n \'id\' : \'%s-%s-%s\' % ( account.getGapId(),\n @@ -140,22 +185,23 @@ def expandBankAccountsForAccount(account, **kw) :\n \'title\' : \'%s (%s / %s)\' % ( account.getTitle(),\n orga.getTitle(), bank.getTitle()),\n }\n - this_tmp_account[\'debit\'] = bank.BankAccount_statSourceDebit(\n - node_uid = [account.getUid()] )\n - this_tmp_account[\'credit\'] = bank.BankAccount_statSourceCredit(\n - node_uid = [account.getUid()] )\n -\n - balance = this_tmp_account[\'debit\'] - this_tmp_account[\'credit\']\n - this_tmp_account[\'debit_balance\'] = balance > 0 and balance or 0.00\n - this_tmp_account[\'credit_balance\'] = balance < 0 and - balance or 0.00\n - if this_tmp_account[\'credit\'] != 0 or this_tmp_account[\'debit\'] != 0 :\n - tmp_accounts.append(account.asContext(**formatValues(this_tmp_account)))\n + this_tmp_account.update(\n + getDefaultColumnValues( node_uid = account.getUid(),\n + payment_uid = bank.getUid() ) )\n + if ( this_tmp_account[\'opening_balance\'] != 0 or\n + this_tmp_account[\'credit_movement\'] != 0 or \n + this_tmp_account[\'debit_movement\'] != 0 or\n + this_tmp_account[\'closing_balance\'] != 0 ) :\n + tmp_accounts.append( account.asContext( **formatValues(this_tmp_account) ) )\n return tmp_accounts\n \n def expandThirdPartiesForAccount(account, **kw) :\n tmp_accounts = []\n + # get all entities that are destination section related to this account.\n entities = [o.getObject() for o in \\\n - context.Account_zDistinctSectionList(node_uid = account.getUid())]\n + context.Account_zDistinctSectionList( node_uid = account.getUid(), \n + at_date = at_date,\n + simulation_state = simulation_state)]\n for entity in entities :\n this_tmp_account = {\n \'uid\' : account.getUid(),\n @@ -164,32 +210,28 @@ def expandThirdPartiesForAccount(account, **kw) :\n \'title\' : \'%s (%s)\'%(account.getTitle(),\n entity.getTitle()),\n }\n - this_tmp_account[\'debit\'] = \\\n - entity.Entity_statSourceDebit( node_uid = [account.getUid()] )\n - this_tmp_account[\'credit\'] = \\\n - entity.Entity_statSourceCredit( node_uid = [account.getUid()] )\n -\n - balance = this_tmp_account[\'debit\'] - this_tmp_account[\'credit\']\n - this_tmp_account[\'debit_balance\'] = balance > 0 and balance or 0.00\n - this_tmp_account[\'credit_balance\'] = balance < 0 and - balance or 0.00\n - if this_tmp_account[\'credit\'] != 0 or this_tmp_account[\'debit\'] != 0 :\n - tmp_accounts.append(entity.asContext(**formatValues(this_tmp_account)))\n + this_tmp_account.update(\n + getDefaultColumnValues( node_uid = account.getUid(),\n + mirror_section_uid = entity.getUid() ) )\n + if ( this_tmp_account[\'opening_balance\'] != 0 or\n + this_tmp_account[\'credit_movement\'] != 0 or \n + this_tmp_account[\'debit_movement\'] != 0 ) :\n + tmp_accounts.append( account.asContext( **formatValues(this_tmp_account) ) )\n return tmp_accounts\n \n -\n -### FIXME: is this working ? I guess no, as multi-currency is not yet tested\n -try:\n - currency = kw[\'accounting_transaction_line_currency\']\n - id = currency.split(\'/\')[-1]\n -except KeyError:\n - id = \'\'\n -if not id:\n - id = \' \'\n -kw[\'select_expression\'] = "\'%s\' AS accounting_transaction_line_currency" % id\n -\n -\n accounts = [ o.getObject() for o in context.portal_catalog(**kw) ]\n accounts = filter(lambda account: account.getGapId() is not None, accounts )\n +\n +def gap_sort_func(a, b) :\n + """ simple function to sort accounts. """\n + a_gap = a.Account_getGapId()\n + b_gap = b.Account_getGapId()\n + while len(a_gap) < 7 :\n + a_gap += \'0\'\n + while len(b_gap) < 7 :\n + b_gap += \'0\'\n + return cmp(a_gap, b_gap)\n +\n accounts.sort(gap_sort_func)\n \n accounts_to_expand_by_third_parties = context.portal_categories\\\n @@ -200,117 +242,68 @@ accounts_to_expand_by_third_parties = context.portal_categories\\\n # we use strict_membership because we do not want VAT\n portal_type=\'Account\', strict_membership=1)\n \n +# use a dict for faster lookup\n +accounts_to_expand_by_third_parties_dict = {}\n +for account in accounts_to_expand_by_third_parties :\n + accounts_to_expand_by_third_parties_dict[account.getId()] = 1\n +\n accounts_to_expand_by_bank_accounts = context.portal_categories\\\n .account_type.asset.bank.getAccountTypeRelatedValueList(\n - # we use strict_membership because we do not want cash\n - portal_type=\'Account\', strict_membership=1)\n + portal_type=\'Account\')\n +accounts_to_expand_by_bank_accounts_dict = {}\n +for account in accounts_to_expand_by_bank_accounts :\n + accounts_to_expand_by_bank_accounts_dict[account.getId()] = 1\n \n report_items = []\n results = []\n for account in accounts :\n - if expand_accounts and account in accounts_to_expand_by_third_parties :\n + if expand_accounts and account.getId() in accounts_to_expand_by_third_parties_dict :\n # get all organisations with this account\n # and create a "virtual-Account" for each organisation\n virtual_accounts = expandThirdPartiesForAccount(account, **kw)\n - # then display the aggregate account\n - item = {\n - \'title\': account.getTitle(),\n - \'debit\': account.Resource_zGetInventory_old(\n - node_uid=account.getUid(),\n - omit_input=1,\n - omit_simulation=1,\n - simulation_state = kw[\'transaction_simulation_state\'],\n - section_category = kw[\'transaction_section_category\'],\n - at_date = kw[\'at_date\'],\n - **extra_kw\n - )[0].quantity or 0.00,\n - \'credit\': - (account.Resource_zGetInventory_old(\n - node_uid=account.getUid(),\n - omit_output=1,\n - omit_simulation=1,\n - simulation_state = kw[\'transaction_simulation_state\'],\n - section_category = kw[\'transaction_section_category\'],\n - at_date = kw[\'at_date\'],\n - **extra_kw\n - )[0].quantity or 0.00 )}\n - # provide a clearly different display when it is a summary account \n - # (TODO: it should be in itallic ?).\n - if len(virtual_accounts) :\n - item[\'id\'] = " %s **TOTAL**" % account.getGapId()\n - else :\n - item[\'id\'] = account.getGapId()\n - balance = item[\'debit\'] - item[\'credit\']\n - item[\'debit_balance\'] = balance > 0 and balance or 0.00\n - item[\'credit_balance\'] = balance < 0 and - balance or 0.00\n report_items += virtual_accounts\n - if len(virtual_accounts) and display_summary_account_line :\n - report_items.append(account.asContext(**formatValues(item)))\n + if display_summary_account_line or not len(virtual_accounts) :\n + # then display the aggregate account\n + item = { \'title\': account.getTitle(), }\n + item.update( getDefaultColumnValues( node_uid = account.getUid() ) )\n \n - elif expand_accounts and account in accounts_to_expand_by_bank_accounts :\n - virtual_accounts = expandBankAccountsForAccount(account, **kw)\n - # then display the aggregate account\n - item = {\n - \'title\': account.getTitle(),\n - \'debit\': account.Resource_zGetInventory_old(\n - node_uid = account.getUid(),\n - omit_input = 1,\n - omit_simulation = 1,\n - simulation_state = kw[\'transaction_simulation_state\'],\n - section_category = kw[\'transaction_section_category\'],\n - at_date = kw[\'at_date\'],\n - **extra_kw\n - )[0].quantity or 0.00,\n + # provide a clearly different display when it is a summary account \n + # (TODO: it should be in itallic ?).\n + if len(virtual_accounts) :\n + item[\'id\'] = " %s **TOTAL**" % account.getGapId()\n + else :\n + item[\'id\'] = account.getGapId()\n + item[\'closing_balance\'] = item[\'opening_balance\'] + \\\n + item[\'debit_movement\'] - \\\n + item[\'credit_movement\']\n +\n + report_items.append( account.asContext( **formatValues(item) ) )\n \n - \'credit\': - (account.Resource_zGetInventory_old(\n - node_uid = account.getUid(),\n - omit_output = 1,\n - omit_simulation = 1,\n - simulation_state = kw[\'transaction_simulation_state\'],\n - section_category = kw[\'transaction_section_category\'],\n - at_date = kw[\'at_date\'],\n - **extra_kw\n - )[0].quantity or 0.00 )}\n - # provide a clearly different display when it is a summary account\n - # (TODO: it should be in itallic ?).\n - if len(virtual_accounts) :\n - item[\'id\'] = " %s **TOTAL**" % account.getGapId()\n - else :\n - item[\'id\'] = account.getGapId()\n - balance = item[\'debit\'] - item[\'credit\']\n - item[\'debit_balance\'] = balance > 0 and balance or 0.00\n - item[\'credit_balance\'] = balance < 0 and - balance or 0.00\n + elif expand_accounts and account.getId() in accounts_to_expand_by_bank_accounts_dict :\n + virtual_accounts = expandBankAccountsForAccount(account, **kw)\n report_items += virtual_accounts\n - if len(virtual_accounts) and display_summary_account_line :\n - report_items.append(account.asContext(**formatValues(item)))\n - \n + if display_summary_account_line or not len(virtual_accounts) :\n + # then display the aggregate account\n + item = { \'title\': account.getTitle(), }\n + item.update( getDefaultColumnValues( node_uid = account.getUid() ) )\n +\n + # provide a clearly different display when it is a summary account \n + # (TODO: it should be in itallic ?).\n + if len(virtual_accounts) :\n + item[\'id\'] = " %s **TOTAL**" % account.getGapId()\n + else :\n + item[\'id\'] = account.getGapId()\n + item[\'closing_balance\'] = item[\'opening_balance\'] + \\\n + item[\'debit_movement\'] - \\\n + item[\'credit_movement\']\n +\n + report_items.append(account.asContext(**formatValues(item))) \n else :\n - item = {\n - \'id\': account.getGapId(),\n - \'title\': account.getTitle(),\n - \'debit\': account.Resource_zGetInventory_old(\n - node_uid = account.getUid(),\n - omit_input = 1,\n - omit_simulation = 1,\n - simulation_state = kw[\'transaction_simulation_state\'],\n - section_category = kw[\'transaction_section_category\'],\n - at_date = kw[\'at_date\'],\n - **extra_kw\n - )[0].quantity or 0.00,\n + item = { \'id\' : account.getGapId(),\n + \'title\': account.getTitle(), }\n + item.update( getDefaultColumnValues( node_uid = account.getUid() ) )\n + report_items.append( account.asContext( **formatValues(item) ) )\n \n - \'credit\': - (account.Resource_zGetInventory_old(\n - node_uid = account.getUid(),\n - omit_output = 1,\n - omit_simulation = 1,\n - simulation_state = kw[\'transaction_simulation_state\'],\n - section_category = kw[\'transaction_section_category\'],\n - at_date = kw[\'at_date\'],\n - **extra_kw\n - )[0].quantity or 0.00 )}\n - balance = item[\'debit\'] - item[\'credit\']\n - item[\'debit_balance\'] = balance > 0 and balance or 0.00\n - item[\'credit_balance\'] = balance < 0 and - balance or 0.00\n - report_items.append(account.asContext(**formatValues(item)))\n - \n return report_items\n # vim: syntax=python\n @@ -319,180 +312,198 @@ return report_items\n </item> <item> <key> <string>_code</string> </key> - <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAQAAACQAAABOAAAACwAA -AHPDCAAAZAAAawAAfQIAZAEAhAAAfQMAdAIAfAEAZAIAgwIAZAMAZAQAgwIAfQUAdAUAfAEAZAUA -gwIAfQcAaAAAfQgAdAIAfAEAZAIAgwIAZAYAdAgAgwIAdAgAagkAbx0AAXQFAHwBAGQGAIMCAHQJ -AHwIAIMBAGQGADxuAQABZAcAfQsAZAgAhAAAfQwAZAkAhAAAiQAAhwAAZAoAhgAAfQ4AhwAAZAsA -hgAAfQ8AeTIAdAUAfAEAZAwAgwIAfRAAdAUAdAIAfBAAZA0AgwIAZA4AgwEAZAQAC4MCAH0RAFdu -GQAEdBEAagoAbw0AAQEBAWQPAH0RAG4CAAFYfBEADG8KAAFkEAB9EQBuAQABZBEAfBEAFnQJAHwB -AIMBAGQSADxnAAAEaRIAfRQAdBQAdBUAdAIAdBYAZBMAgwIAfAEAjQEAgwEARF0cAH0YAHwUAHQC -AHwYAGQUAIMCAIMAAIMBAAFxRQF+FAB9GQB0GQBkFQCEAAB8GQCDAgB9GQB0AgB8GQBkFgCDAgB8 -DACDAQABdAIAdAIAdAIAdAIAdAIAdBYAZBcAgwIAZBgAgwIAZBkAgwIAZBoAgwIAZBsAgwIAZBwA -ZB0AZB4AZAQAgwACdAIAdAIAdAIAdAIAdAIAdBYAZBcAgwIAZBgAgwIAZB8AgwIAZCAAgwIAZBsA -gwIAZBwAZB0AZB4AZAQAgwACF30bAHQCAHQCAHQCAHQCAHQCAHQWAGQXAIMCAGQYAIMCAGQZAIMC -AGQhAIMCAGQbAIMCAGQcAGQdAGQeAGQEAIMAAn0cAGcAAH0dAGcAAH0eAHhZBnQUAHwZAIMBAERd -SwZ9HwB8BQBvCgABfB8AfBsAagYAby8CAXQVAHwPAHwfAHwBAI0CAH0gAGgAAARkIgB0AgB8HwBk -IwCDAgCDAAADPARkJAB0AgB0BQB0FQB0AgB8HwBkJQCDAgBkJgB0AgB8HwBkJwCDAgCDAABkKABk -BABkKQBkBABkKgB0BQB8AQBkKwCDAgBkLAB0BQB8AQBkLQCDAgBkLgB0BQB8AQBkLgCDAgB8CACN -AQZkBwCDAgBkLwCDAgBwBAABZDAAAzwEZDEAdAIAdAUAdBUAdAIAfB8AZCUAgwIAZCYAdAIAfB8A -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 + <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAQAAACwAAAA+AAAACwAA +AHN7BgAAZAEAawAAbAAAfQIAAWQCAGsBAH0DAGQDAIQAAH0EAHQDAHwBAGQEAIMCAGQFAHwCAGQG +AIMBAIMCAIkBAHQGAHwBAGQHAIMCAIkDAHQGAHwBAGQIAIMCAH0JAHQGAHwBAGQJAIMCAIkEAGQK +AHQKAHwBAIMBAGQLADx0AwB0AwB0AwB0CwBkDACDAgCDAABkDQCDAgBkDgCDAgCJAgB0AwB0AwB0 +AwB0CwBkDACDAgCDAABkDQCDAgBkDwCDAgB9DgB0AwB8AQBkBACDAgBkEABkEQCDAgB9DwB0BgB8 +AQBkEgCDAgB9EABoAAB9EQB0AwB8AQBkBACDAgBkBQB0EQCDAgB0EQBqCQBvCgABiAEAfRMAbgEA +AWQTAH0UAGQUAIQAAIkGAHQDAHQDAHQDAHQLAGQVAIMCAGQWAIMCAHwJAIMBAGQXAIMCAGQYAGQZ +AIMAAYkAAGQTAIcEAIcBAIcCAIcDAGQaAIYBAIkFAIcAAIcFAIcGAGQbAIYAAH0YAIcEAIcGAIcF +AIcDAGQcAIYAAH0ZAGcAAARpGQB9GwB0GwB0HAB0AwB0CwBkHQCDAgB8AQCNAQCDAQBEXRwAfR4A +fBsAdAMAfB4AZB4AgwIAgwAAgwEAAXG8AX4bAH0fAHQfAGQfAIQAAHwfAIMCAH0fAGQgAIQAAH0h +AHQDAHwfAGQhAIMCAHwhAIMBAAF0AwB0AwB0AwB0AwB0AwB0CwBkFQCDAgBkIgCDAgBkIwCDAgBk +JACDAgBkJQCDAgBkGABkJgBkJwBkEQCDAAJ0AwB0AwB0AwB0AwB0AwB0CwBkFQCDAgBkIgCDAgBk +KACDAgBkKQCDAgBkJQCDAgBkGABkJgBkJwBkEQCDAAIXfSIAaAAAfSMAeDAAdBsAfCIAgwEARF0i +AH0kAGQRAHQKAHwjAIMBAHQDAHwkAGQqAIMCAIMAADxxpAJXdAMAdAMAdAMAdAMAdAMAdAsAZBUA +gwIAZCIAgwIAZCMAgwIAZCsAgwIAZCUAgwIAZBgAZCYAgwABfSUAaAAAfSYAeDAAdBsAfCUAgwEA +RF0iAH0kAGQRAHQKAHwmAIMBAHQDAHwkAGQqAIMCAIMAADxxGQNXZwAAfScAZwAAfSgAeCUDdBsA +fB8AgwEARF0XA30kAHwPAG8WAAF0AwB8JABkKgCDAgCDAAB8IwBqBgBvJwEBdBwAfBkAfCQAfAEA +jQIAfSkAfCcAfCkAN30nAHwUAHALAAF0KQB8KQCDAQAMb/IAAWgAAARkLAB0AwB8JABkLQCDAgCD +AAADPH0rAHQDAHwrAGQuAIMCAIgFAGQvAHQDAHwkAGQwAIMCAIMAAIMAAYMBAAF0KQB8KQCDAQBv +JAABZDEAdAMAfCQAZDIAgwIAgwAAFnQKAHwrAIMBAGQzADxuHQABdAMAfCQAZDIAgwIAgwAAdAoA +fCsAgwEAZDMAPHQGAHwrAGQ0AIMCAHQGAHwrAGQ1AIMCABd0BgB8KwBkNgCDAgAYdAoAfCsAgwEA +ZDcAPHQDAHwnAGQ4AIMCAHQcAHQDAHwkAGQ5AIMCAIgGAHwrAIMBAI0BAIMBAAFxbwYBcVgDAXwP +AG8WAAF0AwB8JABkKgCDAgCDAAB8JgBqBgBvJwEBdBwAfBgAfCQAfAEAjQIAfSkAfCcAfCkAN30n +AHwUAHALAAF0KQB8KQCDAQAMb/IAAWgAAARkLAB0AwB8JABkLQCDAgCDAAADPH0rAHQDAHwrAGQu +AIMCAIgFAGQvAHQDAHwkAGQwAIMCAIMAAIMAAYMBAAF0KQB8KQCDAQBvJAABZDEAdAMAfCQAZDIA +gwIAgwAAFnQKAHwrAIMBAGQzADxuHQABdAMAfCQAZDIAgwIAgwAAdAoAfCsAgwEAZDMAPHQGAHwr +AGQ0AIMCAHQGAHwrAGQ1AIMCABd0BgB8KwBkNgCDAgAYdAoAfCsAgwEAZDcAPHQDAHwnAGQ4AIMC +AHQcAHQDAHwkAGQ5AIMCAIgGAHwrAIMBAI0BAIMBAAFxbwYBcVgDAWgAAARkMwB0AwB8JABkMgCD +AgCDAAADPARkLAB0AwB8JABkLQCDAgCDAAADPH0rAHQDAHwrAGQuAIMCAIgFAGQvAHQDAHwkAGQw +AIMCAIMAAIMAAYMBAAF0AwB8JwBkOACDAgB0HAB0AwB8JABkOQCDAgCIBgB8KwCDAQCNAQCDAQAB +cVgDV3wnAFNkAgBTKDoAAABzIwAAACBzaW1wbGUgZnVuY3Rpb24gdG8gc29ydCBhY2NvdW50cy4g +KAEAAABzCAAAAERhdGVUaW1lTmMBAAAAAwAAAAQAAABDAAAAcyIAAAB0AAB0AAB0AQBkAQCDAgCD +AABkAgCDAgBkAwB8AACDAgBTKAQAAABOcw8AAABnZXRQb3J0YWxPYmplY3RzAwAAAGxvZ3MrAAAA +QWNjb3VudE1vZHVsZV9nZXRBY2NvdW50TGlzdEZvclRyaWFsQmFsYW5jZSgDAAAAcwkAAABfZ2V0 +YXR0cl9zBwAAAGNvbnRleHRzAwAAAG1zZygDAAAAcwMAAABtc2dzCQAAAF9nZXRhdHRyX3MHAAAA +Y29udGV4dCgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMLAAAAPGxhbWJkYS4xNz4JAAAA +cwIAAAAbAXMDAAAAZ2V0cwkAAABmcm9tX2RhdGVzCgAAADE5NzAvMDEvMDFzHAAAAHRyYW5zYWN0 +aW9uX3NpbXVsYXRpb25fc3RhdGVzHAAAAHRyYW5zYWN0aW9uX3NlY3Rpb25fY2F0ZWdvcnlzBwAA +AGF0X2RhdGVzBAAAAFRPRE9zJAAAAGFjY291bnRpbmdfdHJhbnNhY3Rpb25fbGluZV9jdXJyZW5j +eXMPAAAAZ2V0UG9ydGFsT2JqZWN0cxEAAABwb3J0YWxfc2ltdWxhdGlvbnMMAAAAZ2V0SW52ZW50 +b3J5cxAAAABnZXRJbnZlbnRvcnlMaXN0cw8AAABleHBhbmRfYWNjb3VudHNpAQAAAHMIAAAAZ2Fw +X3Jvb3RpAAAAAGMBAAAAEQAAABgAAABDAAAAc94BAAB40wF0AAB0AQB8AABkAQCDAgCDAACDAQBE +XbkBXAIAfQMAfQQAdAUAfAQAZAIAgwIAcA0AAXQFAHwEAGQDAIMCAAxvjAEBdAYAfAQAgwEAZAQA +agIAbxQAAWQCAHQHAHwAAIMBAHwDADxx0gEBfAQAZAUAagAAfQgAfAMAZAYAZAcAZgIAagYAbwQA +AXwIAG8LAAF8BAALfQQAbgEAAXQJAHQKAHwEAIMBAIMBAH0LAHQBAHwLAGQIAIMCAGQJAIMBAH0M +AHQNAHwMAGQFAIMCAH0OAHQPAHwOAIMBAGQKABZ9EAB0DQB8DgBkAAB8EACFAgCDAgB9CwB4QwB8 +EAB0DwB8DgCDAQBqAwBvLwABfAsAZAsAdA0AfA4AfBAAfBAAZAoAF4UCAIMCABc3fQsAfBAAZAoA +N30QAHH8AAFXZAwAfAsAdA0AdAkAdA0AfAwAZA0AgwIAgwEAZAAAZA4AhQIAgwIAZgIAFnQHAHwA +AIMBAHwDADx8AwBkBgBkBwBmAgBqBgBvNwABfAgAbxgAAWQPAHwLABZ0BwB8AACDAQB8AwA8ccEB +AWQQAHwLABZ0BwB8AACDAQB8AwA8bgEAAXQNAHwAAHwDAIMCAAFxGQABcRkAV3wAAFNkAABTKBEA +AABOcwUAAABpdGVtc3MAAAAAdQAAAABmAzAuMGkAAAAAcw8AAABvcGVuaW5nX2JhbGFuY2VzDwAA +AGNsb3NpbmdfYmFsYW5jZXMFAAAAc3BsaXRzAQAAAC5pAwAAAHMBAAAAIHMFAAAAJXMuJXNpAQAA +AGkCAAAAcwUAAAAlcyBDUnMFAAAAJXMgICAoEQAAAHMJAAAAX2dldGl0ZXJfcwkAAABfZ2V0YXR0 +cl9zBAAAAGRpY3RzAQAAAGtzAQAAAHZzCQAAAHNhbWVfdHlwZXMFAAAAcm91bmRzBwAAAF93cml0 +ZV9zCAAAAG5lZ2F0aXZlcwMAAABzdHJzBQAAAGZsb2F0cwUAAAB2YWx1ZXMKAAAAdmFsdWVfbGlz +dHMJAAAAX2dldGl0ZW1fcwcAAABpbnRlZ2VycwMAAABsZW5zAQAAAGkoEQAAAHMEAAAAZGljdHMJ +AAAAX2dldGl0ZXJfcwkAAABfZ2V0YXR0cl9zAQAAAGtzAQAAAHZzCQAAAHNhbWVfdHlwZXMFAAAA +cm91bmRzBwAAAF93cml0ZV9zCAAAAG5lZ2F0aXZlcwMAAABzdHJzBQAAAGZsb2F0cwUAAAB2YWx1 +ZXMKAAAAdmFsdWVfbGlzdHMJAAAAX2dldGl0ZW1fcwcAAABpbnRlZ2VycwMAAABsZW5zAQAAAGko +AAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzDAAAAGZvcm1hdFZhbHVlcyUAAABzMAAAAAAB +GQAMASEBEwEUAgwBGgELAhIBFQEPARABFQEDABMBIQEPATgDEwEHARgCGwESAXMRAAAAcG9ydGFs +X2NhdGVnb3JpZXNzEgAAAHJlc3RyaWN0ZWRUcmF2ZXJzZXMYAAAAZ2V0R3JvdXBSZWxhdGVkVmFs +dWVMaXN0cwsAAABwb3J0YWxfdHlwZXMMAAAAT3JnYW5pc2F0aW9uYwEAAAAKAAAAEAAAAAsAAABz +7QAAAGgAAH0CAHQBAIgCAGQBAHwAAGQCAIgBAGQDAIgDAGQEAGQFAHwBAI0BBHQHAHwCAIMBAGQG +ADx0AQCIAgBkAQB8AABkBwCIAQBkCACIAABkAwCIAwBkBABkBQBkCQBkBQB8AQCNAQZ0BwB8AgCD +AQBkCgA8dAEAiAIAZAEAfAAAZAcAiAEAZAgAiAAAZAMAiAMAZAQAZAUAZAsAZAUAfAEAjQEGC3QH +AHwCAIMBAGQMADx0CQB8AgBkBgCDAgB0CQB8AgBkCgCDAgAXdAkAfAIAZAwAgwIAGHQHAHwCAIMB +AGQNADx8AgBTZA4AUygPAAAAc3oAAAAgcmV0dXJucyB0aGVuIG9wZW5pbmcgYmFsYW5jZSwgZGVi +aXQgbW92ZW1lbnRzIHN1bSwgY3JlZGl0IG1vdmVtZW50cwogIHN1bSBhbmQgY2xvc2luZyBiYWxh +bmNlIHVzaW5nIGRlZmF1bHRzIGNhdGVnb3JpZXMuIHMIAAAAbm9kZV91aWRzBwAAAHRvX2RhdGVz +EAAAAHNpbXVsYXRpb25fc3RhdGVzDwAAAG9taXRfc2ltdWxhdGlvbmkBAAAAcw8AAABvcGVuaW5n +X2JhbGFuY2VzCQAAAGZyb21fZGF0ZXMHAAAAYXRfZGF0ZXMLAAAAb21pdF9vdXRwdXRzDgAAAGRl +Yml0X21vdmVtZW50cwoAAABvbWl0X2lucHV0cw8AAABjcmVkaXRfbW92ZW1lbnRzDwAAAGNsb3Np +bmdfYmFsYW5jZU4oCgAAAHMGAAAAdmFsdWVzcwcAAABfYXBwbHlfcwwAAABnZXRJbnZlbnRvcnlz +CAAAAG5vZGVfdWlkcwkAAABmcm9tX2RhdGVzEAAAAHNpbXVsYXRpb25fc3RhdGVzAgAAAGt3cwcA +AABfd3JpdGVfcwcAAABhdF9kYXRlcwkAAABfZ2V0aXRlbV8oCgAAAHMIAAAAbm9kZV91aWRzAgAA +AGt3cwYAAAB2YWx1ZXNzBwAAAF9hcHBseV9zDAAAAGdldEludmVudG9yeXMJAAAAZnJvbV9kYXRl +cxAAAABzaW11bGF0aW9uX3N0YXRlcwcAAABfd3JpdGVfcwcAAABhdF9kYXRlcwkAAABfZ2V0aXRl +bV8oBAAAAHMHAAAAYXRfZGF0ZXMJAAAAZnJvbV9kYXRlcwwAAABnZXRJbnZlbnRvcnlzEAAAAHNp +bXVsYXRpb25fc3RhdGUoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcxYAAABnZXREZWZhdWx0Q29s +dW1uVmFsdWVzSAAAAHMmAAAAAAMGAQ8BBgEJAxMBDwEGAQYBDwQTAQ8BBgEGAQ8EFAEPAQ0BFwFj +AQAAABEAAAAWAAAACwAAAHNHAgAAZwAAfQIAZwAAfQMAeG8AdAIAiAAAgwEARF1hAH0GAHwDAGcA +AARpBQB9CAB0AgB0BwB8BgBkAQCDAgBkAgBkAwBkBABnAgCDAAGDAQBEXSIAfQoAfAgAfAYAdAcA +fAoAZAUAgwIAgwAAZgIAgwEAAXFOAH4IADd9AwBxGQBXeL4BdAIAfAMAgwEARF2wAVwCAH0GAH0L +AGgAAARkBgB0BwB8AABkBwCDAgCDAAADPARkCABkCQB0BwB8AABkCgCDAgCDAAB0BwB0CwB0BwB0 +BwB8BgBkCwCDAgCDAABkDACDAgBkDQCDAQBkAABkDgCFAgCDAgBkDwCDAgCDAAB0BwB0CwB0BwB0 +BwB8CwBkCwCDAgCDAABkDACDAgBkDQCDAQBkAABkDgCFAgCDAgBkDwCDAgCDAABmAwAWAzwEZBAA +ZBEAdAcAfAAAZAsAgwIAgwAAdAcAfAYAZAsAgwIAgwAAdAcAfAsAZAsAgwIAgwAAZgMAFgM8fQ0A +dAcAfA0AZBIAgwIAiAEAZBMAdAcAfAAAZAcAgwIAgwAAZBQAdAcAfAsAZAcAgwIAgwAAgwACgwEA +AXQLAHwNAGQVAIMCAGQWAGoDAHA/AAF0CwB8DQBkFwCDAgBkFgBqAwBwKQABdAsAfA0AZBgAgwIA +ZBYAagMAcBMAAXQLAHwNAGQZAIMCAGQWAGoDAG8vAAF0BwB8AgBkGgCDAgB0DgB0BwB8AABkGwCD +AgCIAgB8DQCDAQCNAQCDAQABcYsAAXGLAFd8AgBTZAAAUygcAAAATnMMAAAAc2VhcmNoRm9sZGVy +cwsAAABwb3J0YWxfdHlwZXMMAAAAQmFuayBBY2NvdW50cw0AAABDYXNoIFJlZ2lzdGVycwkAAABn +ZXRPYmplY3RzAwAAAHVpZHMGAAAAZ2V0VWlkcwIAAABpZHMIAAAAJXMtJXMtJXNzCAAAAGdldEdh +cElkcwgAAABnZXRUaXRsZXMGAAAAZGVjb2RlcwQAAAB1dGY4aQgAAABzBQAAAHVwcGVycwUAAAB0 +aXRsZXMMAAAAJXMgKCVzIC8gJXMpcwYAAAB1cGRhdGVzCAAAAG5vZGVfdWlkcwsAAABwYXltZW50 +X3VpZHMPAAAAb3BlbmluZ19iYWxhbmNlaQAAAABzDwAAAGNyZWRpdF9tb3ZlbWVudHMOAAAAZGVi +aXRfbW92ZW1lbnRzDwAAAGNsb3NpbmdfYmFsYW5jZXMGAAAAYXBwZW5kcwkAAABhc0NvbnRleHQo +EAAAAHMMAAAAdG1wX2FjY291bnRzcw4AAABvcmdhX2FuZF9iYW5rc3MJAAAAX2dldGl0ZXJfcw0A +AABvcmdhbmlzYXRpb25zcwQAAABvcmdhcwYAAABhcHBlbmRzCAAAACRhcHBlbmQwcwkAAABfZ2V0 +YXR0cl9zAQAAAG9zBAAAAGJhbmtzBwAAAGFjY291bnRzCQAAAF9nZXRpdGVtX3MQAAAAdGhpc190 +bXBfYWNjb3VudHMWAAAAZ2V0RGVmYXVsdENvbHVtblZhbHVlc3MHAAAAX2FwcGx5X3MMAAAAZm9y +bWF0VmFsdWVzKBEAAABzBwAAAGFjY291bnRzAgAAAGt3cwwAAAB0bXBfYWNjb3VudHNzDgAAAG9y +Z2FfYW5kX2JhbmtzcwkAAABfZ2V0aXRlcl9zDQAAAG9yZ2FuaXNhdGlvbnNzBAAAAG9yZ2FzBgAA +AGFwcGVuZHMIAAAAJGFwcGVuZDBzCQAAAF9nZXRhdHRyX3MBAAAAb3MEAAAAYmFua3MJAAAAX2dl +dGl0ZW1fcxAAAAB0aGlzX3RtcF9hY2NvdW50cxYAAABnZXREZWZhdWx0Q29sdW1uVmFsdWVzcwcA +AABfYXBwbHlfcwwAAABmb3JtYXRWYWx1ZXMoAwAAAHMNAAAAb3JnYW5pc2F0aW9uc3MWAAAAZ2V0 +RGVmYXVsdENvbHVtblZhbHVlc3MMAAAAZm9ybWF0VmFsdWVzKAAAAABzDwAAAFNjcmlwdCAoUHl0 +aG9uKXMcAAAAZXhwYW5kQmFua0FjY291bnRzRm9yQWNjb3VudGcAAABzMAAAAAABBgEGAQ0ABgET +AUwBDQAMAQoBFQEbATkBOgESAScCCQEbARMBGQEWARYBFgEwAWMBAAAAEgAAABoAAAALAAAAc84B +AABnAAB9AgBnAAAEaQEAfQQAdAMAdAQAdAUAZAEAgwIAZAIAdAQAfAAAZAMAgwIAgwAAZAQAiAAA +ZAUAiAMAgwADgwEARF0cAH0KAHwEAHQEAHwKAGQGAIMCAIMAAIMBAAFxRAB+BAB9CwB4WgF0AwB8 +CwCDAQBEXUwBfQwAaAAABGQHAHQEAHwAAGQDAIMCAIMAAAM8BGQIAGQJAHQEAHwAAGQKAIMCAIMA +AHQEAHQMAHQEAHQEAHwMAGQLAIMCAIMAAGQMAIMCAGQNAIMBAGQAAGQOAIUCAIMCAGQPAIMCAIMA +AGYCABYDPARkEABkEQB0BAB8AABkCwCDAgCDAAB0BAB8DABkCwCDAgCDAABmAgAWAzx9DgB0BAB8 +DgBkEgCDAgCIAgBkAgB0BAB8AABkAwCDAgCDAABkEwB0BAB8DABkAwCDAgCDAACDAAKDAQABdAwA +fA4AZBQAgwIAZBUAagMAcCkAAXQMAHwOAGQWAIMCAGQVAGoDAHATAAF0DAB8DgBkFwCDAgBkFQBq +AwBvLwABdAQAfAIAZBgAgwIAdA8AdAQAfAAAZBkAgwIAiAEAfA4AgwEAjQEAgwEAAXF2AAFxdgBX +fAIAU2QAAFMoGgAAAE5zHAAAAEFjY291bnRfekRpc3RpbmN0U2VjdGlvbkxpc3RzCAAAAG5vZGVf +dWlkcwYAAABnZXRVaWRzBwAAAGF0X2RhdGVzEAAAAHNpbXVsYXRpb25fc3RhdGVzCQAAAGdldE9i +amVjdHMDAAAAdWlkcwIAAABpZHMFAAAAJXMtJXNzCAAAAGdldEdhcElkcwgAAABnZXRUaXRsZXMG +AAAAZGVjb2RlcwQAAAB1dGY4aQwAAABzBQAAAHVwcGVycwUAAAB0aXRsZXMHAAAAJXMgKCVzKXMG +AAAAdXBkYXRlcxIAAABtaXJyb3Jfc2VjdGlvbl91aWRzDwAAAG9wZW5pbmdfYmFsYW5jZWkAAAAA +cw8AAABjcmVkaXRfbW92ZW1lbnRzDgAAAGRlYml0X21vdmVtZW50cwYAAABhcHBlbmRzCQAAAGFz +Q29udGV4dCgRAAAAcwwAAAB0bXBfYWNjb3VudHNzBgAAAGFwcGVuZHMIAAAAJGFwcGVuZDBzCQAA +AF9nZXRpdGVyX3MJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0cwcAAABhY2NvdW50cwcAAABhdF9k +YXRlcxAAAABzaW11bGF0aW9uX3N0YXRlcwEAAABvcwgAAABlbnRpdGllc3MGAAAAZW50aXR5cwkA +AABfZ2V0aXRlbV9zEAAAAHRoaXNfdG1wX2FjY291bnRzFgAAAGdldERlZmF1bHRDb2x1bW5WYWx1 +ZXNzBwAAAF9hcHBseV9zDAAAAGZvcm1hdFZhbHVlcygSAAAAcwcAAABhY2NvdW50cwIAAABrd3MM +AAAAdG1wX2FjY291bnRzcwYAAABhcHBlbmRzCAAAACRhcHBlbmQwcwkAAABfZ2V0aXRlcl9zCQAA +AF9nZXRhdHRyX3MHAAAAY29udGV4dHMHAAAAYXRfZGF0ZXMQAAAAc2ltdWxhdGlvbl9zdGF0ZXMB +AAAAb3MIAAAAZW50aXRpZXNzBgAAAGVudGl0eXMJAAAAX2dldGl0ZW1fcxAAAAB0aGlzX3RtcF9h +Y2NvdW50cxYAAABnZXREZWZhdWx0Q29sdW1uVmFsdWVzcwcAAABfYXBwbHlfcwwAAABmb3JtYXRW +YWx1ZXMoBAAAAHMHAAAAYXRfZGF0ZXMMAAAAZm9ybWF0VmFsdWVzcxYAAABnZXREZWZhdWx0Q29s +dW1uVmFsdWVzcxAAAABzaW11bGF0aW9uX3N0YXRlKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMc +AAAAZXhwYW5kVGhpcmRQYXJ0aWVzRm9yQWNjb3VudIAAAABzKgAAAAABBgIQAR4BBgEvAQ0ABgEK +ARUBGwE6ARIBGAIJARsBEwEZARYBFgEwAXMOAAAAcG9ydGFsX2NhdGFsb2dzCQAAAGdldE9iamVj +dGMBAAAAAwAAAAMAAABDAAAAcxYAAAB0AAB8AABkAQCDAgCDAAB0AgBqCQBTKAIAAABOcwgAAABn +ZXRHYXBJZCgDAAAAcwkAAABfZ2V0YXR0cl9zBwAAAGFjY291bnRzBAAAAE5vbmUoAwAAAHMHAAAA +YWNjb3VudHMJAAAAX2dldGF0dHJfcwQAAABOb25lKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRo +b24pcwsAAAA8bGFtYmRhLjE4PpkAAABzAAAAAGMCAAAABwAAAAcAAABDAAAAc38AAAB0AAB8AABk AQCDAgCDAAB9AwB0AAB8AQBkAQCDAgCDAAB9BAB4IgB0BQB8AwCDAQBkAgBqAABvDgABfAMAZAMA -N30DAHEnAAFXeCIAdAUAfAQAgwEAZAIAagAAbw4AAXwEAGQDADd9BABxTAABV3wDAHwEAGoAAG8J -AAFkBAALU24BAAF8AwB8BABqBABvCAABZAQAU24BAAFkBQBTZAAAUygGAAAATnMIAAAAZ2V0R2Fw -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 -AgBTZAAAUyghAAAATnMRAAAAcG9ydGFsX2NhdGVnb3JpZXNzEgAAAHJlc3RyaWN0ZWRUcmF2ZXJz -ZXMcAAAAdHJhbnNhY3Rpb25fc2VjdGlvbl9jYXRlZ29yeXMYAAAAZ2V0R3JvdXBSZWxhdGVkVmFs -dWVMaXN0cwsAAABwb3J0YWxfdHlwZXMMAAAAT3JnYW5pc2F0aW9ucwwAAABzZWFyY2hGb2xkZXJz -DAAAAEJhbmsgQWNjb3VudHMJAAAAZ2V0T2JqZWN0cwMAAAB1aWRzBgAAAGdldFVpZHMCAAAAaWRz -CAAAACVzLSVzLSVzcwgAAABnZXRHYXBJZHMIAAAAZ2V0VGl0bGVzBgAAAGRlY29kZXMEAAAAdXRm -OGkIAAAAcwUAAAB1cHBlcnMFAAAAdGl0bGVzDAAAACVzICglcyAvICVzKXMbAAAAQmFua0FjY291 -bnRfc3RhdFNvdXJjZURlYml0cwgAAABub2RlX3VpZHMFAAAAZGViaXRzHAAAAEJhbmtBY2NvdW50 -X3N0YXRTb3VyY2VDcmVkaXRzBgAAAGNyZWRpdGkAAAAAZgMwLjBzDQAAAGRlYml0X2JhbGFuY2Vz -DgAAAGNyZWRpdF9iYWxhbmNlcwYAAABhcHBlbmRzCQAAAGFzQ29udGV4dCgTAAAAcwwAAAB0bXBf -YWNjb3VudHNzCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dHMJAAAAX2dldGl0ZW1fcwIAAABrd3MN -AAAAb3JnYW5pc2F0aW9uc3MOAAAAb3JnYV9hbmRfYmFua3NzCQAAAF9nZXRpdGVyX3MEAAAAb3Jn -YXMGAAAAYXBwZW5kcwgAAAAkYXBwZW5kMHMBAAAAb3MEAAAAYmFua3MHAAAAYWNjb3VudHMQAAAA -dGhpc190bXBfYWNjb3VudHMHAAAAX3dyaXRlX3MHAAAAYmFsYW5jZXMHAAAAX2FwcGx5X3MMAAAA -Zm9ybWF0VmFsdWVzKBMAAABzBwAAAGFjY291bnRzAgAAAGt3cwwAAAB0bXBfYWNjb3VudHNzCQAA -AF9nZXRhdHRyX3MHAAAAY29udGV4dHMJAAAAX2dldGl0ZW1fcw0AAABvcmdhbmlzYXRpb25zcw4A -AABvcmdhX2FuZF9iYW5rc3MJAAAAX2dldGl0ZXJfcwQAAABvcmdhcwYAAABhcHBlbmRzCAAAACRh -cHBlbmQwcwEAAABvcwQAAABiYW5rcxAAAAB0aGlzX3RtcF9hY2NvdW50cwcAAABfd3JpdGVfcwcA -AABiYWxhbmNlcwcAAABfYXBwbHlfcwwAAABmb3JtYXRWYWx1ZXMoAQAAAHMMAAAAZm9ybWF0VmFs -dWVzKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMcAAAAZXhwYW5kQmFua0FjY291bnRzRm9yQWNj -b3VudDcAAABzNgAAAAABBgEbAR4CBgENAAYBEwFJAQ0ADAEKARUBGwE5AToBEgEkAg8BIgEPASIC -HAEkASgBLAEwAWMBAAAAEQAAABwAAAALAAAAczkCAABnAAB9AgBnAAAEaQEAfQQAdAMAdAQAdAUA -ZAEAgwIAZAIAdAQAfAAAZAMAgwIAgwAAgwABgwEARF0cAH0IAHwEAHQEAHwIAGQEAIMCAIMAAIMB -AAFxOAB+BAB9CQB40QF0AwB8CQCDAQBEXcMBfQoAaAAABGQFAHQEAHwAAGQDAIMCAIMAAAM8BGQG -AGQHAHQEAHwAAGQIAIMCAIMAAHQEAHQKAHQEAHQEAHwKAGQJAIMCAIMAAGQKAIMCAGQLAIMBAGQA -AGQMAIUCAIMCAGQNAIMCAIMAAGYCABYDPARkDgBkDwB0BAB8AABkCQCDAgCDAAB0BAB8CgBkCQCD -AgCDAABmAgAWAzx9DAB0BAB8CgBkEACDAgBkAgB0BAB8AABkAwCDAgCDAABnAQCDAAF0DAB8DACD -AQBkEQA8dAQAfAoAZBIAgwIAZAIAdAQAfAAAZAMAgwIAgwAAZwEAgwABdAwAfAwAgwEAZBMAPHQK -AHwMAGQRAIMCAHQKAHwMAGQTAIMCABh9DgB8DgBkFABqBABvBAABfA4AcAQAAWQVAHQMAHwMAIMB -AGQWADx8DgBkFABqAABvBQABfA4AC3AEAAFkFQB0DAB8DACDAQBkFwA8dAoAfAwAZBMAgwIAZBQA -agMAcBMAAXQKAHwMAGQRAIMCAGQUAGoDAG8vAAF0BAB8AgBkGACDAgB0DgB0BAB8CgBkGQCDAgCI -AAB8DACDAQCNAQCDAQABcWoAAXFqAFd8AgBTZAAAUygaAAAATnMcAAAAQWNjb3VudF96RGlzdGlu -Y3RTZWN0aW9uTGlzdHMIAAAAbm9kZV91aWRzBgAAAGdldFVpZHMJAAAAZ2V0T2JqZWN0cwMAAAB1 -aWRzAgAAAGlkcwUAAAAlcy0lc3MIAAAAZ2V0R2FwSWRzCAAAAGdldFRpdGxlcwYAAABkZWNvZGVz -BAAAAHV0ZjhpDAAAAHMFAAAAdXBwZXJzBQAAAHRpdGxlcwcAAAAlcyAoJXMpcxYAAABFbnRpdHlf -c3RhdFNvdXJjZURlYml0cwUAAABkZWJpdHMXAAAARW50aXR5X3N0YXRTb3VyY2VDcmVkaXRzBgAA -AGNyZWRpdGkAAAAAZgMwLjBzDQAAAGRlYml0X2JhbGFuY2VzDgAAAGNyZWRpdF9iYWxhbmNlcwYA -AABhcHBlbmRzCQAAAGFzQ29udGV4dCgQAAAAcwwAAAB0bXBfYWNjb3VudHNzBgAAAGFwcGVuZHMI -AAAAJGFwcGVuZDBzCQAAAF9nZXRpdGVyX3MJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0cwcAAABh -Y2NvdW50cwEAAABvcwgAAABlbnRpdGllc3MGAAAAZW50aXR5cwkAAABfZ2V0aXRlbV9zEAAAAHRo -aXNfdG1wX2FjY291bnRzBwAAAF93cml0ZV9zBwAAAGJhbGFuY2VzBwAAAF9hcHBseV9zDAAAAGZv -cm1hdFZhbHVlcygRAAAAcwcAAABhY2NvdW50cwIAAABrd3MMAAAAdG1wX2FjY291bnRzcwYAAABh -cHBlbmRzCAAAACRhcHBlbmQwcwkAAABfZ2V0aXRlcl9zCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4 -dHMBAAAAb3MIAAAAZW50aXRpZXNzBgAAAGVudGl0eXMJAAAAX2dldGl0ZW1fcxAAAAB0aGlzX3Rt -cF9hY2NvdW50cwcAAABfd3JpdGVfcwcAAABiYWxhbmNlcwcAAABfYXBwbHlfcwwAAABmb3JtYXRW -YWx1ZXMoAQAAAHMMAAAAZm9ybWF0VmFsdWVzKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMcAAAA -ZXhwYW5kVGhpcmRQYXJ0aWVzRm9yQWNjb3VudFUAAABzKgAAAAABBgEQAUcBDQAGAQoBFQEbAToB -EgEVAgMBLgEDAS4CHAEkASgBLAEwAXMkAAAAYWNjb3VudGluZ190cmFuc2FjdGlvbl9saW5lX2N1 -cnJlbmN5cwUAAABzcGxpdHMBAAAAL3MAAAAAcwYAAAAmbmJzcDtzLAAAACclcycgQVMgYWNjb3Vu -dGluZ190cmFuc2FjdGlvbl9saW5lX2N1cnJlbmN5cxEAAABzZWxlY3RfZXhwcmVzc2lvbnMOAAAA -cG9ydGFsX2NhdGFsb2dzCQAAAGdldE9iamVjdGMBAAAAAwAAAAMAAABDAAAAcxYAAAB0AAB8AABk -AQCDAgCDAAB0AgBqCQBTKAIAAABOcwgAAABnZXRHYXBJZCgDAAAAcwkAAABfZ2V0YXR0cl9zBwAA -AGFjY291bnRzBAAAAE5vbmUoAwAAAHMHAAAAYWNjb3VudHMJAAAAX2dldGF0dHJfcwQAAABOb25l -KAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcwsAAAA8bGFtYmRhLjg5PnoAAABzAAAAAHME -AAAAc29ydHMRAAAAcG9ydGFsX2NhdGVnb3JpZXNzDAAAAGFjY291bnRfdHlwZXMFAAAAYXNzZXRz -CgAAAHJlY2VpdmFibGVzHgAAAGdldEFjY291bnRUeXBlUmVsYXRlZFZhbHVlTGlzdHMLAAAAcG9y -dGFsX3R5cGVzBwAAAEFjY291bnRzEQAAAHN0cmljdF9tZW1iZXJzaGlwcwkAAABsaWFiaWxpdHlz -BwAAAHBheWFibGVzBAAAAGJhbmtzBQAAAHRpdGxlcwgAAABnZXRUaXRsZXMFAAAAZGViaXRzGgAA -AFJlc291cmNlX3pHZXRJbnZlbnRvcnlfb2xkcwgAAABub2RlX3VpZHMGAAAAZ2V0VWlkcwoAAABv -bWl0X2lucHV0cw8AAABvbWl0X3NpbXVsYXRpb25zEAAAAHNpbXVsYXRpb25fc3RhdGVzHAAAAHRy -YW5zYWN0aW9uX3NpbXVsYXRpb25fc3RhdGVzEAAAAHNlY3Rpb25fY2F0ZWdvcnlzHAAAAHRyYW5z -YWN0aW9uX3NlY3Rpb25fY2F0ZWdvcnlzBwAAAGF0X2RhdGVzCAAAAHF1YW50aXR5ZgMwLjBzBgAA -AGNyZWRpdHMLAAAAb21pdF9vdXRwdXRzDwAAACAgICVzICoqVE9UQUwqKnMIAAAAZ2V0R2FwSWRz -AgAAAGlkcw0AAABkZWJpdF9iYWxhbmNlcw4AAABjcmVkaXRfYmFsYW5jZXMGAAAAYXBwZW5kcwkA -AABhc0NvbnRleHQoIwAAAHMEAAAAbWF0aHMDAAAATE9HcwkAAABfZ2V0YXR0cl9zAgAAAGt3cw8A -AABleHBhbmRfYWNjb3VudHNzCQAAAF9nZXRpdGVtX3MIAAAAZ2FwX3Jvb3RzCAAAAGV4dHJhX2t3 -cwQAAABOb25lcwcAAABfd3JpdGVfcxwAAABkaXNwbGF5X3N1bW1hcnlfYWNjb3VudF9saW5lcw0A -AABnYXBfc29ydF9mdW5jcwwAAABmb3JtYXRWYWx1ZXNzHAAAAGV4cGFuZEJhbmtBY2NvdW50c0Zv -ckFjY291bnRzHAAAAGV4cGFuZFRoaXJkUGFydGllc0ZvckFjY291bnRzCAAAAGN1cnJlbmN5cwIA -AABpZHMIAAAAS2V5RXJyb3JzBgAAAGFwcGVuZHMIAAAAJGFwcGVuZDBzCQAAAF9nZXRpdGVyX3MH -AAAAX2FwcGx5X3MHAAAAY29udGV4dHMBAAAAb3MIAAAAYWNjb3VudHNzBgAAAGZpbHRlcnMjAAAA -YWNjb3VudHNfdG9fZXhwYW5kX2J5X3RoaXJkX3BhcnRpZXNzIwAAAGFjY291bnRzX3RvX2V4cGFu -ZF9ieV9iYW5rX2FjY291bnRzcwwAAAByZXBvcnRfaXRlbXNzBwAAAHJlc3VsdHNzBwAAAGFjY291 -bnRzEAAAAHZpcnR1YWxfYWNjb3VudHNzBAAAAGl0ZW1zAwAAAGxlbnMHAAAAYmFsYW5jZSgkAAAA -cwkAAABzZWxlY3Rpb25zAgAAAGt3cwQAAABtYXRocwMAAABMT0dzCQAAAF9nZXRhdHRyX3MPAAAA -ZXhwYW5kX2FjY291bnRzcwkAAABfZ2V0aXRlbV9zCAAAAGdhcF9yb290cwgAAABleHRyYV9rd3ME -AAAATm9uZXMHAAAAX3dyaXRlX3McAAAAZGlzcGxheV9zdW1tYXJ5X2FjY291bnRfbGluZXMNAAAA -Z2FwX3NvcnRfZnVuY3MMAAAAZm9ybWF0VmFsdWVzcxwAAABleHBhbmRCYW5rQWNjb3VudHNGb3JB -Y2NvdW50cxwAAABleHBhbmRUaGlyZFBhcnRpZXNGb3JBY2NvdW50cwgAAABjdXJyZW5jeXMCAAAA -aWRzCAAAAEtleUVycm9ycwYAAABhcHBlbmRzCAAAACRhcHBlbmQwcwkAAABfZ2V0aXRlcl9zBwAA -AF9hcHBseV9zBwAAAGNvbnRleHRzAQAAAG9zCAAAAGFjY291bnRzcwYAAABmaWx0ZXJzIwAAAGFj -Y291bnRzX3RvX2V4cGFuZF9ieV90aGlyZF9wYXJ0aWVzcyMAAABhY2NvdW50c190b19leHBhbmRf -YnlfYmFua19hY2NvdW50c3MMAAAAcmVwb3J0X2l0ZW1zcwcAAAByZXN1bHRzcwcAAABhY2NvdW50 -cxAAAAB2aXJ0dWFsX2FjY291bnRzcwQAAABpdGVtcwMAAABsZW5zBwAAAGJhbGFuY2UoAAAAACgB -AAAAcwwAAABmb3JtYXRWYWx1ZXNzDwAAAFNjcmlwdCAoUHl0aG9uKXMrAAAAQWNjb3VudE1vZHVs -ZV9nZXRBY2NvdW50TGlzdEZvclRyaWFsQmFsYW5jZQEAAABzygAAAAAFCQEJBhgDDwMGAR8BHQMG -AgkLCRIMHgwaAwEPASMBDgELAQgBCgEUAyYAJQEVARACTgM0BUIFBgEGAQ0ABgEUAxICCgEeAQ8B -HgMPAQ8BCQErAg8BHgMPAQ8BCQEfBA0BJAIcARwBJAElAQoBFwEwAhQBEgIKAR4BDwEeAw8BDwEJ -ASsDDwEeAw8BDwEJAR8EDQEkAhwBHAEkASUBCgEXATADCgEVAR4BDwEeAw8BDwEJASsDDwEeAw8B -DwEJAR8CHAEkASgBLAIoAQAAAHMrAAAAQWNjb3VudE1vZHVsZV9nZXRBY2NvdW50TGlzdEZvclRy -aWFsQmFsYW5jZSgBAAAAcysAAABBY2NvdW50TW9kdWxlX2dldEFjY291bnRMaXN0Rm9yVHJpYWxC -YWxhbmNlKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcwgAAAA8bW9kdWxlPgEAAABzAAAA -AA==</string> </value> +N30DAHEnAAFXeCIAdAUAfAQAgwEAZAIAagAAbw4AAXwEAGQDADd9BABxTAABV3QGAHwDAHwEAIMC +AFNkBABTKAUAAABzIwAAACBzaW1wbGUgZnVuY3Rpb24gdG8gc29ydCBhY2NvdW50cy4gcxAAAABB +Y2NvdW50X2dldEdhcElkaQcAAABzAQAAADBOKAcAAABzCQAAAF9nZXRhdHRyX3MBAAAAYXMFAAAA +YV9nYXBzAQAAAGJzBQAAAGJfZ2FwcwMAAABsZW5zAwAAAGNtcCgHAAAAcwEAAABhcwEAAABicwkA +AABfZ2V0YXR0cl9zBQAAAGFfZ2FwcwUAAABiX2dhcHMDAAAAbGVucwMAAABjbXAoAAAAACgAAAAA +cw8AAABTY3JpcHQgKFB5dGhvbilzDQAAAGdhcF9zb3J0X2Z1bmObAAAAcxIAAAAAAhIBEgEDABMB +DwEDABMBDwFzBAAAAHNvcnRzDAAAAGFjY291bnRfdHlwZXMFAAAAYXNzZXRzCgAAAHJlY2VpdmFi +bGVzHgAAAGdldEFjY291bnRUeXBlUmVsYXRlZFZhbHVlTGlzdHMHAAAAQWNjb3VudHMRAAAAc3Ry +aWN0X21lbWJlcnNoaXBzCQAAAGxpYWJpbGl0eXMHAAAAcGF5YWJsZXMFAAAAZ2V0SWRzBAAAAGJh +bmtzBQAAAHRpdGxlcwgAAABnZXRUaXRsZXMGAAAAdXBkYXRlcwgAAABub2RlX3VpZHMGAAAAZ2V0 +VWlkcw8AAAAgICAlcyAqKlRPVEFMKipzCAAAAGdldEdhcElkcwIAAABpZHMPAAAAb3BlbmluZ19i +YWxhbmNlcw4AAABkZWJpdF9tb3ZlbWVudHMPAAAAY3JlZGl0X21vdmVtZW50cw8AAABjbG9zaW5n +X2JhbGFuY2VzBgAAAGFwcGVuZHMJAAAAYXNDb250ZXh0KCsAAABzCAAAAERhdGVUaW1lcwQAAABt +YXRocwMAAABMT0dzCQAAAF9nZXRhdHRyX3MCAAAAa3dzCQAAAGZyb21fZGF0ZXMJAAAAX2dldGl0 +ZW1fcxAAAABzaW11bGF0aW9uX3N0YXRlcxAAAABzZWN0aW9uX2NhdGVnb3J5cwcAAABhdF9kYXRl +cwcAAABfd3JpdGVfcwcAAABjb250ZXh0cwwAAABnZXRJbnZlbnRvcnlzEAAAAGdldEludmVudG9y +eUxpc3RzDwAAAGV4cGFuZF9hY2NvdW50c3MIAAAAZ2FwX3Jvb3RzCAAAAGV4dHJhX2t3cwQAAABO +b25lcw8AAABleHRyYV9mcm9tX2RhdGVzHAAAAGRpc3BsYXlfc3VtbWFyeV9hY2NvdW50X2xpbmVz +DAAAAGZvcm1hdFZhbHVlc3MNAAAAb3JnYW5pc2F0aW9uc3MWAAAAZ2V0RGVmYXVsdENvbHVtblZh +bHVlc3McAAAAZXhwYW5kQmFua0FjY291bnRzRm9yQWNjb3VudHMcAAAAZXhwYW5kVGhpcmRQYXJ0 +aWVzRm9yQWNjb3VudHMGAAAAYXBwZW5kcwgAAAAkYXBwZW5kMHMJAAAAX2dldGl0ZXJfcwcAAABf +YXBwbHlfcwEAAABvcwgAAABhY2NvdW50c3MGAAAAZmlsdGVycw0AAABnYXBfc29ydF9mdW5jcyMA +AABhY2NvdW50c190b19leHBhbmRfYnlfdGhpcmRfcGFydGllc3MoAAAAYWNjb3VudHNfdG9fZXhw +YW5kX2J5X3RoaXJkX3BhcnRpZXNfZGljdHMHAAAAYWNjb3VudHMjAAAAYWNjb3VudHNfdG9fZXhw +YW5kX2J5X2JhbmtfYWNjb3VudHNzKAAAAGFjY291bnRzX3RvX2V4cGFuZF9ieV9iYW5rX2FjY291 +bnRzX2RpY3RzDAAAAHJlcG9ydF9pdGVtc3MHAAAAcmVzdWx0c3MQAAAAdmlydHVhbF9hY2NvdW50 +c3MDAAAAbGVucwQAAABpdGVtKCwAAABzCQAAAHNlbGVjdGlvbnMCAAAAa3dzCAAAAERhdGVUaW1l +cwQAAABtYXRocwMAAABMT0dzCQAAAF9nZXRhdHRyX3MJAAAAZnJvbV9kYXRlcwkAAABfZ2V0aXRl +bV9zEAAAAHNpbXVsYXRpb25fc3RhdGVzEAAAAHNlY3Rpb25fY2F0ZWdvcnlzBwAAAGF0X2RhdGVz +BwAAAF93cml0ZV9zBwAAAGNvbnRleHRzDAAAAGdldEludmVudG9yeXMQAAAAZ2V0SW52ZW50b3J5 +TGlzdHMPAAAAZXhwYW5kX2FjY291bnRzcwgAAABnYXBfcm9vdHMIAAAAZXh0cmFfa3dzBAAAAE5v +bmVzDwAAAGV4dHJhX2Zyb21fZGF0ZXMcAAAAZGlzcGxheV9zdW1tYXJ5X2FjY291bnRfbGluZXMM +AAAAZm9ybWF0VmFsdWVzcw0AAABvcmdhbmlzYXRpb25zcxYAAABnZXREZWZhdWx0Q29sdW1uVmFs +dWVzcxwAAABleHBhbmRCYW5rQWNjb3VudHNGb3JBY2NvdW50cxwAAABleHBhbmRUaGlyZFBhcnRp +ZXNGb3JBY2NvdW50cwYAAABhcHBlbmRzCAAAACRhcHBlbmQwcwkAAABfZ2V0aXRlcl9zBwAAAF9h +cHBseV9zAQAAAG9zCAAAAGFjY291bnRzcwYAAABmaWx0ZXJzDQAAAGdhcF9zb3J0X2Z1bmNzIwAA +AGFjY291bnRzX3RvX2V4cGFuZF9ieV90aGlyZF9wYXJ0aWVzcygAAABhY2NvdW50c190b19leHBh +bmRfYnlfdGhpcmRfcGFydGllc19kaWN0cwcAAABhY2NvdW50cyMAAABhY2NvdW50c190b19leHBh +bmRfYnlfYmFua19hY2NvdW50c3MoAAAAYWNjb3VudHNfdG9fZXhwYW5kX2J5X2JhbmtfYWNjb3Vu +dHNfZGljdHMMAAAAcmVwb3J0X2l0ZW1zcwcAAAByZXN1bHRzcxAAAAB2aXJ0dWFsX2FjY291bnRz +cwMAAABsZW5zBAAAAGl0ZW0oAAAAACgHAAAAcw0AAABvcmdhbmlzYXRpb25zcwkAAABmcm9tX2Rh +dGVzDAAAAGdldEludmVudG9yeXMQAAAAc2ltdWxhdGlvbl9zdGF0ZXMHAAAAYXRfZGF0ZXMWAAAA +Z2V0RGVmYXVsdENvbHVtblZhbHVlc3MMAAAAZm9ybWF0VmFsdWVzcw8AAABTY3JpcHQgKFB5dGhv +bilzKwAAAEFjY291bnRNb2R1bGVfZ2V0QWNjb3VudExpc3RGb3JUcmlhbEJhbGFuY2UBAAAAc5IA +AAAABQ0BCQIJAx4BDwEPAQ8BEAMkASQEGAMPAwYBHwEKAwYCCR4YARgEGB8SGRUYJgAlARICDAoQ +Ak4DNAYGAQ0ABgEgAjwDBgENAAYBIAIGAQYBDQAGASADEgEKARUCHgElBA0BJAIcAQ8BDQEaAjAC +IAESAQoBFQIeASUEDQEkAhwBDwENARoCMAIfARQBKAEsAigBAAAAcysAAABBY2NvdW50TW9kdWxl +X2dldEFjY291bnRMaXN0Rm9yVHJpYWxCYWxhbmNlKAEAAABzKwAAAEFjY291bnRNb2R1bGVfZ2V0 +QWNjb3VudExpc3RGb3JUcmlhbEJhbGFuY2UoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilz +CAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value> </item> <item> <key> <string>_dav_writelocks</string> </key> @@ -502,7 +513,7 @@ AA==</string> </value> </item> <item> <key> <string>_filepath</string> </key> - <value> <string>Script (Python):/nexedi/erp5_accounting/AccountModule_getAccountListForTrialBalance</string> </value> + <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_getAccountListForTrialBalance</string> </value> </item> <item> <key> <string>_params</string> </key> @@ -534,40 +545,48 @@ AA==</string> </value> <tuple> <string>selection</string> <string>kw</string> + <string>DateTime</string> <string>math</string> <string>LOG</string> <string>_getattr_</string> - <string>expand_accounts</string> + <string>from_date</string> <string>_getitem_</string> + <string>simulation_state</string> + <string>section_category</string> + <string>at_date</string> + <string>_write_</string> + <string>context</string> + <string>getInventory</string> + <string>getInventoryList</string> + <string>expand_accounts</string> <string>gap_root</string> <string>extra_kw</string> <string>None</string> - <string>_write_</string> + <string>extra_from_date</string> <string>display_summary_account_line</string> - <string>gap_sort_func</string> <string>formatValues</string> + <string>organisations</string> + <string>getDefaultColumnValues</string> <string>expandBankAccountsForAccount</string> <string>expandThirdPartiesForAccount</string> - <string>currency</string> - <string>id</string> - <string>KeyError</string> <string>append</string> <string>$append0</string> <string>_getiter_</string> <string>_apply_</string> - <string>context</string> <string>o</string> <string>accounts</string> <string>filter</string> + <string>gap_sort_func</string> <string>accounts_to_expand_by_third_parties</string> + <string>accounts_to_expand_by_third_parties_dict</string> + <string>account</string> <string>accounts_to_expand_by_bank_accounts</string> + <string>accounts_to_expand_by_bank_accounts_dict</string> <string>report_items</string> <string>results</string> - <string>account</string> <string>virtual_accounts</string> - <string>item</string> <string>len</string> - <string>balance</string> + <string>item</string> </tuple> </value> </item> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountStatementReportSectionList.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountStatementReportSectionList.xml new file mode 100755 index 0000000000000000000000000000000000000000..25b6c7946492a0d757e54fefb9a8274ab7390bc5 --- /dev/null +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountStatementReportSectionList.xml @@ -0,0 +1,326 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <tuple> + <string>Products.PythonScripts.PythonScript</string> + <string>PythonScript</string> + </tuple> + <none/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Python_magic</string> </key> + <value> <string encoding="base64">O/INCg==</string> </value> + </item> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>__ac_local_roles__</string> </key> + <value> + <none/> + </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>_body</string> </key> + <value> <string>"""\n +Get the report sections for account statement.\n +Account is the combination of :\n + - node (the Account in account module)\n + - destination_section (the Entity in organisation / person module)\n + - source_payment (the Bank account for the organisation)\n +"""\n +\n +from Products.ERP5Form.Report import ReportSection\n +request = context.REQUEST\n +\n +\n +at_date = request[\'at_date\']\n +transaction_section_category = request[\'transaction_section_category\']\n +account = request.get(\'account\', None)\n +destination_section = request.get(\'destination_section\', None)\n +source_payment = request.get(\'source_payment\', None)\n +transaction_simulation_state = request[\'transaction_simulation_state\']\n +from_date = request.get(\'from_date\', None)\n +omit_grouping_reference = request.get(\'omit_grouping_reference\', 0)\n +\n +params = {\n + \'at_date\' : at_date,\n + \'section_category\' : transaction_section_category,\n + \'transaction_section_category\' : transaction_section_category,\n + \'simulation_state\' : transaction_simulation_state,\n + \'accounting_transaction_line_currency\' : None,\n + \'omit_grouping_reference\' : omit_grouping_reference,\n + \'from_date_summary\' : 1\n +}\n +\n +preferences = {\n + \'preferred_accounting_transaction_at_date\' : at_date,\n + \'preferred_accounting_transaction_simulation_state\' :\n + transaction_simulation_state,\n + \'preferred_accounting_transaction_section_category\' :\n + transaction_section_category,\n + # XXX put omit_grouping_reference in preferences ?\n + \'preferred_accounting_omit_grouping_reference\' : omit_grouping_reference,\n +}\n +\n +if from_date:\n + params[\'from_date\'] = from_date\n + preferences[\'preferred_accounting_transaction_from_date\'] = from_date\n +if source_payment :\n + params[\'source_payment_uid\'] = context.restrictedTraverse(source_payment).getUid()\n +if destination_section :\n + params[\'destination_section_uid\'] = context.restrictedTraverse(destination_section).getUid()\n +if account:\n + params[\'node_uid\'] = context.restrictedTraverse(account).getUid()\n +\n +from Products.ERP5Type.Cache import clearCache\n +clearCache() # for preferences\n +\n +result = []\n +portal = context.portal_url.getPortalObject()\n +\n +account_columns = (\n + (\'delivery.start_date\', \'Accounting Operation Date\'),\n + (\'title\', \'Title\'),\n +# (\'translated_portal_type\', \'Type\'),\n +# (\'third_party\', \'Third Party\'),\n +# (\'translated_simulation_state_title\', \'State\'),\n + (\'source_debit\', \'Debit\'),\n + (\'source_credit\', \'Credit\'),\n + (\'reference\', \'Accounting Transaction Reference\'),\n + (\'net_balance\', \'Balance\'),\n +)\n +\n +return [ReportSection(\n + path = context.getPhysicalPath(),\n + #title = \'Account Statement Report\',\n + form_id = \'Account_viewAccountingTransactionList\',\n + selection_name = \'acount_preference_selection\',\n + selection_params = params,\n + selection_columns = account_columns,\n + listbox_display_mode = \'FlatListMode\',\n + selection_sort_order = [(\'delivery.stop_date\', \'ascending\')],\n + preferences = preferences )]\n +# vim: syntax=python\n +</string> </value> + </item> + <item> + <key> <string>_code</string> </key> + <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAABcAAAAZAAAAQwAA +AHPBAgAAZAEAawAAbAEAfQEAAXQCAHQDAGQCAIMCAH0EAHQFAHwEAGQDAIMCAH0GAHQFAHwEAGQE +AIMCAH0HAHQCAHwEAGQFAIMCAGQGAHQIAIMCAH0JAHQCAHwEAGQFAIMCAGQHAHQIAIMCAH0KAHQC +AHwEAGQFAIMCAGQIAHQIAIMCAH0LAHQFAHwEAGQJAIMCAH0MAHQCAHwEAGQFAIMCAGQKAHQIAIMC +AH0NAHQCAHwEAGQFAIMCAGQLAGQMAIMCAH0OAGgAAARkAwB8BgADPARkDQB8BwADPARkBAB8BwAD +PARkDgB8DAADPARkDwB0CAADPARkCwB8DgADPARkEABkEQADPH0PAGgAAARkEgB8BgADPARkEwB8 +DAADPARkFAB8BwADPARkFQB8DgADPH0QAHwNAG8kAAF8DQB0EQB8DwCDAQBkCgA8fA0AdBEAfBAA +gwEAZBYAPG4BAAF8CwBvLwABdAIAdAIAdAMAZBcAgwIAfAsAgwEAZBgAgwIAgwAAdBEAfA8AgwEA +ZBkAPG4BAAF8CgBvLwABdAIAdAIAdAMAZBcAgwIAfAoAgwEAZBgAgwIAgwAAdBEAfA8AgwEAZBoA +PG4BAAF8CQBvLwABdAIAdAIAdAMAZBcAgwIAfAkAgwEAZBgAgwIAgwAAdBEAfA8AgwEAZBsAPG4B +AAFkHABrEgBsEwB9EwABfBMAgwAAAWcAAH0UAHQCAHQCAHQDAGQdAIMCAGQeAIMCAIMAAH0VAGQf +AGQgAGYCAGQhAGQiAGYCAGQjAGQkAGYCAGQlAGQmAGYCAGQnAGQoAGYCAGQpAGQqAGYCAGYGAH0W +AHwBAGQrAHQCAHQDAGQsAIMCAIMAAGQtAGQuAGQvAGQwAGQxAHwPAGQyAHwWAGQzAGQ0AGQ1AGQ2 +AGQ3AGYCAGcBAGQ4AHwQAIMACGcBAFNkAABTKDkAAABOKAEAAABzDQAAAFJlcG9ydFNlY3Rpb25z +BwAAAFJFUVVFU1RzBwAAAGF0X2RhdGVzHAAAAHRyYW5zYWN0aW9uX3NlY3Rpb25fY2F0ZWdvcnlz +AwAAAGdldHMHAAAAYWNjb3VudHMTAAAAZGVzdGluYXRpb25fc2VjdGlvbnMOAAAAc291cmNlX3Bh +eW1lbnRzHAAAAHRyYW5zYWN0aW9uX3NpbXVsYXRpb25fc3RhdGVzCQAAAGZyb21fZGF0ZXMXAAAA +b21pdF9ncm91cGluZ19yZWZlcmVuY2VpAAAAAHMQAAAAc2VjdGlvbl9jYXRlZ29yeXMQAAAAc2lt +dWxhdGlvbl9zdGF0ZXMkAAAAYWNjb3VudGluZ190cmFuc2FjdGlvbl9saW5lX2N1cnJlbmN5cxEA +AABmcm9tX2RhdGVfc3VtbWFyeWkBAAAAcygAAABwcmVmZXJyZWRfYWNjb3VudGluZ190cmFuc2Fj +dGlvbl9hdF9kYXRlczEAAABwcmVmZXJyZWRfYWNjb3VudGluZ190cmFuc2FjdGlvbl9zaW11bGF0 +aW9uX3N0YXRlczEAAABwcmVmZXJyZWRfYWNjb3VudGluZ190cmFuc2FjdGlvbl9zZWN0aW9uX2Nh +dGVnb3J5cywAAABwcmVmZXJyZWRfYWNjb3VudGluZ19vbWl0X2dyb3VwaW5nX3JlZmVyZW5jZXMq +AAAAcHJlZmVycmVkX2FjY291bnRpbmdfdHJhbnNhY3Rpb25fZnJvbV9kYXRlcxIAAAByZXN0cmlj +dGVkVHJhdmVyc2VzBgAAAGdldFVpZHMSAAAAc291cmNlX3BheW1lbnRfdWlkcxcAAABkZXN0aW5h +dGlvbl9zZWN0aW9uX3VpZHMIAAAAbm9kZV91aWQoAQAAAHMKAAAAY2xlYXJDYWNoZXMKAAAAcG9y +dGFsX3VybHMPAAAAZ2V0UG9ydGFsT2JqZWN0cxMAAABkZWxpdmVyeS5zdGFydF9kYXRlcxkAAABB +Y2NvdW50aW5nIE9wZXJhdGlvbiBEYXRlcwUAAAB0aXRsZXMFAAAAVGl0bGVzDAAAAHNvdXJjZV9k +ZWJpdHMFAAAARGViaXRzDQAAAHNvdXJjZV9jcmVkaXRzBgAAAENyZWRpdHMJAAAAcmVmZXJlbmNl +cyAAAABBY2NvdW50aW5nIFRyYW5zYWN0aW9uIFJlZmVyZW5jZXMLAAAAbmV0X2JhbGFuY2VzBwAA +AEJhbGFuY2VzBAAAAHBhdGhzDwAAAGdldFBoeXNpY2FsUGF0aHMHAAAAZm9ybV9pZHMlAAAAQWNj +b3VudF92aWV3QWNjb3VudGluZ1RyYW5zYWN0aW9uTGlzdHMOAAAAc2VsZWN0aW9uX25hbWVzGwAA +AGFjb3VudF9wcmVmZXJlbmNlX3NlbGVjdGlvbnMQAAAAc2VsZWN0aW9uX3BhcmFtc3MRAAAAc2Vs +ZWN0aW9uX2NvbHVtbnNzFAAAAGxpc3Rib3hfZGlzcGxheV9tb2RlcwwAAABGbGF0TGlzdE1vZGVz +FAAAAHNlbGVjdGlvbl9zb3J0X29yZGVycxIAAABkZWxpdmVyeS5zdG9wX2RhdGVzCQAAAGFzY2Vu +ZGluZ3MLAAAAcHJlZmVyZW5jZXMoFwAAAHMYAAAAUHJvZHVjdHMuRVJQNUZvcm0uUmVwb3J0cw0A +AABSZXBvcnRTZWN0aW9ucwkAAABfZ2V0YXR0cl9zBwAAAGNvbnRleHRzBwAAAHJlcXVlc3RzCQAA +AF9nZXRpdGVtX3MHAAAAYXRfZGF0ZXMcAAAAdHJhbnNhY3Rpb25fc2VjdGlvbl9jYXRlZ29yeXME +AAAATm9uZXMHAAAAYWNjb3VudHMTAAAAZGVzdGluYXRpb25fc2VjdGlvbnMOAAAAc291cmNlX3Bh +eW1lbnRzHAAAAHRyYW5zYWN0aW9uX3NpbXVsYXRpb25fc3RhdGVzCQAAAGZyb21fZGF0ZXMXAAAA +b21pdF9ncm91cGluZ19yZWZlcmVuY2VzBgAAAHBhcmFtc3MLAAAAcHJlZmVyZW5jZXNzBwAAAF93 +cml0ZV9zFwAAAFByb2R1Y3RzLkVSUDVUeXBlLkNhY2hlcwoAAABjbGVhckNhY2hlcwYAAAByZXN1 +bHRzBgAAAHBvcnRhbHMPAAAAYWNjb3VudF9jb2x1bW5zKBcAAABzGAAAAFByb2R1Y3RzLkVSUDVG +b3JtLlJlcG9ydHMNAAAAUmVwb3J0U2VjdGlvbnMJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0cwcA +AAByZXF1ZXN0cwkAAABfZ2V0aXRlbV9zBwAAAGF0X2RhdGVzHAAAAHRyYW5zYWN0aW9uX3NlY3Rp +b25fY2F0ZWdvcnlzBAAAAE5vbmVzBwAAAGFjY291bnRzEwAAAGRlc3RpbmF0aW9uX3NlY3Rpb25z +DgAAAHNvdXJjZV9wYXltZW50cxwAAAB0cmFuc2FjdGlvbl9zaW11bGF0aW9uX3N0YXRlcwkAAABm +cm9tX2RhdGVzFwAAAG9taXRfZ3JvdXBpbmdfcmVmZXJlbmNlcwYAAABwYXJhbXNzCwAAAHByZWZl +cmVuY2VzcwcAAABfd3JpdGVfcxcAAABQcm9kdWN0cy5FUlA1VHlwZS5DYWNoZXMKAAAAY2xlYXJD +YWNoZXMGAAAAcmVzdWx0cwYAAABwb3J0YWxzDwAAAGFjY291bnRfY29sdW1ucygAAAAAKAAAAABz +DwAAAFNjcmlwdCAoUHl0aG9uKXMyAAAAQWNjb3VudE1vZHVsZV9nZXRBY2NvdW50U3RhdGVtZW50 +UmVwb3J0U2VjdGlvbkxpc3QBAAAAc2AAAAAACA0BDwMPAQ8BGAEYARgBDwEYARgCBwEJAQkBCQEJ +AQkBEQQHAQkCCQIJAggDBwEQARQBBwEvAQcBLwEHAS8CDQEHAgYBGwIAAQkBCQQJAQkBCQEPAwkB +GwQGAQwCDwEoAQAAAHMyAAAAQWNjb3VudE1vZHVsZV9nZXRBY2NvdW50U3RhdGVtZW50UmVwb3J0 +U2VjdGlvbkxpc3QoAQAAAHMyAAAAQWNjb3VudE1vZHVsZV9nZXRBY2NvdW50U3RhdGVtZW50UmVw +b3J0U2VjdGlvbkxpc3QoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzCAAAADxtb2R1bGU+ +AQAAAHMAAAAA</string> </value> + </item> + <item> + <key> <string>_dav_writelocks</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>_filepath</string> </key> + <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_getAccountStatementReportSectionList</string> </value> + </item> + <item> + <key> <string>_owner</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>errors</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>func_code</string> </key> + <value> + <object> + <klass> + <global name="FuncCode" module="Shared.DC.Scripts.Signature"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>co_argcount</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>co_varnames</string> </key> + <value> + <tuple> + <string>Products.ERP5Form.Report</string> + <string>ReportSection</string> + <string>_getattr_</string> + <string>context</string> + <string>request</string> + <string>_getitem_</string> + <string>at_date</string> + <string>transaction_section_category</string> + <string>None</string> + <string>account</string> + <string>destination_section</string> + <string>source_payment</string> + <string>transaction_simulation_state</string> + <string>from_date</string> + <string>omit_grouping_reference</string> + <string>params</string> + <string>preferences</string> + <string>_write_</string> + <string>Products.ERP5Type.Cache</string> + <string>clearCache</string> + <string>result</string> + <string>portal</string> + <string>account_columns</string> + </tuple> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>func_defaults</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>AccountModule_getAccountStatementReportSectionList</string> </value> + </item> + <item> + <key> <string>warnings</string> </key> + <value> + <tuple/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <tuple> + <tuple> + <string>Persistence</string> + <string>PersistentMapping</string> + </tuple> + <none/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_container</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getBankAccountItemList.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getBankAccountItemList.xml new file mode 100755 index 0000000000000000000000000000000000000000..bf56cf1dbc06ce2609048e608e58b4d432aa1d3b --- /dev/null +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getBankAccountItemList.xml @@ -0,0 +1,180 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <tuple> + <string>Products.PythonScripts.PythonScript</string> + <string>PythonScript</string> + </tuple> + <none/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Python_magic</string> </key> + <value> <string encoding="base64">O/INCg==</string> </value> + </item> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>__ac_local_roles__</string> </key> + <value> + <none/> + </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>_body</string> </key> + <value> <string>portal = context.getPortalObject()\n +if organisation == \'\' :\n + organisation = context.REQUEST.get(\'organisation\', None)\n +if organisation is None : \n + organisation = portal.portal_preferences.getPreferredAccountingTransactionSourceSection()\n +\n +organisation = portal.restrictedTraverse(organisation)\n +item_list = [(\'\', \'\')]\n +for bank in organisation.objectValues(portal_type = [\'Bank Account\', \'Cash Register\']):\n + item_list.append((bank.getTitle(), bank.getRelativeUrl()))\n +\n +return item_list\n +</string> </value> + </item> + <item> + <key> <string>_code</string> </key> + <value> <string encoding="base64">YwAAAAAAAAAAAgAAAEAAAABzEAAAAGQBAGQCAIQBAFoAAGQAAFMoAwAAAE5zAAAAAGMBAAAACAAA +AA8AAABDAAAAc/wAAAB0AAB0AQBkAQCDAgCDAAB9AwB8AABkAgBqAgBvJQABdAAAdAAAdAEAZAMA +gwIAZAQAgwIAZAUAdAQAgwIAfQAAbgEAAXwAAHQEAGoIAG8fAAF0AAB0AAB8AwBkBgCDAgBkBwCD +AgCDAAB9AABuAQABdAAAfAMAZAgAgwIAfAAAgwEAfQAAZAIAZAIAZgIAZwEAfQUAeF0AdAYAdAAA +fAAAZAkAgwIAZAoAZAsAZAwAZwIAgwABgwEARF03AH0HAHQAAHwFAGQNAIMCAHQAAHwHAGQOAIMC +AIMAAHQAAHwHAGQPAIMCAIMAAGYCAIMBAAFxuQBXfAUAU2QAAFMoEAAAAE5zDwAAAGdldFBvcnRh +bE9iamVjdHMAAAAAcwcAAABSRVFVRVNUcwMAAABnZXRzDAAAAG9yZ2FuaXNhdGlvbnMSAAAAcG9y +dGFsX3ByZWZlcmVuY2Vzcy4AAABnZXRQcmVmZXJyZWRBY2NvdW50aW5nVHJhbnNhY3Rpb25Tb3Vy +Y2VTZWN0aW9ucxIAAAByZXN0cmljdGVkVHJhdmVyc2VzDAAAAG9iamVjdFZhbHVlc3MLAAAAcG9y +dGFsX3R5cGVzDAAAAEJhbmsgQWNjb3VudHMNAAAAQ2FzaCBSZWdpc3RlcnMGAAAAYXBwZW5kcwgA +AABnZXRUaXRsZXMOAAAAZ2V0UmVsYXRpdmVVcmwoCAAAAHMJAAAAX2dldGF0dHJfcwcAAABjb250 +ZXh0cwYAAABwb3J0YWxzDAAAAG9yZ2FuaXNhdGlvbnMEAAAATm9uZXMJAAAAaXRlbV9saXN0cwkA +AABfZ2V0aXRlcl9zBAAAAGJhbmsoCAAAAHMMAAAAb3JnYW5pc2F0aW9ucwkAAABfZ2V0YXR0cl9z +BwAAAGNvbnRleHRzBgAAAHBvcnRhbHMEAAAATm9uZXMJAAAAaXRlbV9saXN0cwkAAABfZ2V0aXRl +cl9zBAAAAGJhbmsoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzJAAAAEFjY291bnRNb2R1 +bGVfZ2V0QmFua0FjY291bnRJdGVtTGlzdAEAAABzFAAAABIBDQElAQ0BHwIVAQ8BJQAJATICKAEA +AABzJAAAAEFjY291bnRNb2R1bGVfZ2V0QmFua0FjY291bnRJdGVtTGlzdCgBAAAAcyQAAABBY2Nv +dW50TW9kdWxlX2dldEJhbmtBY2NvdW50SXRlbUxpc3QoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5 +dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value> + </item> + <item> + <key> <string>_filepath</string> </key> + <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_getBankAccountItemList</string> </value> + </item> + <item> + <key> <string>_owner</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>organisation = \'\'</string> </value> + </item> + <item> + <key> <string>errors</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>func_code</string> </key> + <value> + <object> + <klass> + <global name="FuncCode" module="Shared.DC.Scripts.Signature"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>co_argcount</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>co_varnames</string> </key> + <value> + <tuple> + <string>organisation</string> + <string>_getattr_</string> + <string>context</string> + <string>portal</string> + <string>None</string> + <string>item_list</string> + <string>_getiter_</string> + <string>bank</string> + </tuple> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>func_defaults</string> </key> + <value> + <tuple> + <string></string> + </tuple> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>AccountModule_getBankAccountItemList</string> </value> + </item> + <item> + <key> <string>warnings</string> </key> + <value> + <tuple/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerReportSectionList.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerReportSectionList.xml index 184795697b578c63b548f0340ff7c21987a44944..22af32934e52db6bf08662827a65f09096046894 100755 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerReportSectionList.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerReportSectionList.xml @@ -91,6 +91,7 @@ params = {\n \'simulation_state\' : transaction_simulation_state,\n \'accounting_transaction_line_currency\' : None,\n \'omit_grouping_reference\' : omit_grouping_reference,\n + \'from_date_summary\' : 1\n }\n \n preferences = {\n @@ -100,42 +101,52 @@ preferences = {\n \'preferred_accounting_transaction_section_category\' :\n transaction_section_category,\n # XXX put omit_grouping_reference in preferences ?\n - \'preferred_accounting_omit_grouping_reference\' : omit_grouping_reference,\n + #\'preferred_accounting_omit_grouping_reference\' : omit_grouping_reference,\n }\n \n if from_date:\n params[\'from_date\'] = from_date\n preferences[\'preferred_accounting_transaction_from_date\'] = from_date\n \n +## FIXME: issue in reporting famework in ERP5 \n +from Products.ERP5Type.Cache import clearCache\n +clearCache() # for preferences\n +\n result = []\n portal = context.portal_url.getPortalObject()\n \n account_columns = (\n - (\'source_reference\', \'Reference\'),\n - (\'delivery.stop_date\', \'Date\'),\n +# (\'source_reference\', \'Reference\'),\n + (\'delivery.start_date\', \'Date\'),\n (\'title\', \'Title\'),\n - (\'Type\', \'Type\'),\n + (\'translated_portal_type\', \'Type\'),\n (\'third_party\', \'Third Party\'),\n - (\'simulation_state\', \'State\'),\n + (\'translated_simulation_state_title\', \'State\'),\n (\'source_debit\', \'Debit\'),\n (\'source_credit\', \'Credit\'),\n - (\'source_balance\', \'Balance\'),\n + (\'net_balance\', \'Balance\'),\n )\n \n if gap :\n - gap_root = [ portal.portal_categories.gap.restrictedTraverse(gap) ] +\\\n + gap_value_list = [ portal.portal_categories.gap.restrictedTraverse(gap) ] +\\\n portal.portal_categories.gap.restrictedTraverse(gap)\\\n .Category_getSortedCategoryChildValueList()\n else :\n - cat = context.portal_preferences.getPreferredAccountingTransactionGap() \\\n + cat = \'gap/%s\'%context.portal_preferences.getPreferredAccountingTransactionGap() \\\n or context.getPortalDefaultGapRoot()\n \n - gap_root = portal.portal_categories.resolveCategory(cat)\\\n + gap_value_list = portal.portal_categories.resolveCategory(cat)\\\n .Category_getSortedCategoryChildValueList()\n \n +# we don\'t want to display accounts that don\'t have any transactions associated,\n +# so we use a cache to see if the account contains transaction or not ( regardless\n +# of from_date )\n account_inventory_list_cache = {}\n +account_inventory_list_cache_params = params.copy()\n +if account_inventory_list_cache_params.has_key(\'from_date\') :\n + del account_inventory_list_cache_params[\'from_date\']\n \n -for c in gap_root :\n +for c in gap_value_list :\n account_list = c.getGapRelatedValueList(portal_type="Account")\n strict_account_list = c.getGapRelatedValueList(\n portal_type="Account", strict_membership = 1)\n @@ -144,8 +155,8 @@ for c in gap_root :\n for account in account_list :\n if account.getUid() not in account_inventory_list_cache :\n account_inventory_list_cache[account.getUid()] = len(portal.\\\n - portal_simulation.getInventoryList(\n - node_uid = account.getUid(), **params))\n + portal_simulation.getInventoryList( omit_simulation = 1,\n + node_uid = account.getUid(), **account_inventory_list_cache_params))\n \n if account_inventory_list_cache[account.getUid()] != 0 :\n skip_branch = 0\n @@ -163,36 +174,58 @@ for c in gap_root :\n level = len(c.getPhysicalPath()) - 4,\n form_id = None) )\n \n - # TODO: detail for account_type as in trial balance\n if len(strict_account_list):\n for account in strict_account_list:\n if account.getAccountTypeId() in (\'payable\', \'receivable\') :\n - # Entities\n - result.append(ReportSection(\n - path = account.getPhysicalPath(),\n - title = "%s: %s" % (c.getId(), account.getTitle()),\n - level = 9,\n - form_id = \'Account_viewAccountingTransactionList\',\n - selection_name = \'acount_selection\',\n - selection_params = params,\n - selection_columns = account_columns,\n - listbox_display_mode = \'FlatListMode\',\n - selection_sort_order = [(\'delivery.stop_date\', \'ascending\')],\n - preferences = preferences ))\n + for third_party_path in account.Account_getDestinationSectionList(\n + at_date = at_date,\n + simulation_state = transaction_simulation_state ) :\n + third_party_params = params.copy()\n + if third_party_path is not None :\n + third_party = context.getPortalObject().restrictedTraverse(third_party_path)\n + third_party_params[\'destination_section_uid\'] = third_party.getUid()\n + title = "%s: %s (%s)" % ( c.getId(),\n + account.getTitle(),\n + third_party.getTitle())\n + else :\n + third_party_params[\'no_destination_section_uid\'] = 1\n + title = "%s: %s" % ( c.getId(), account.getTitle())\n + result.append(ReportSection(\n + path = account.getPhysicalPath(),\n + title = title,\n + level = 9,\n + form_id = \'Account_viewAccountingTransactionList\',\n + selection_name = \'acount_preference_selection\',\n + selection_params = third_party_params.copy(),\n + selection_columns = account_columns,\n + listbox_display_mode = \'FlatListMode\',\n + selection_sort_order = [(\'delivery.stop_date\', \'ascending\')],\n + preferences = preferences ))\n \n - elif account.getAccountTypeId() == \'bank\' :\n + elif account.getAccountTypeId() in (\'bank\', \'cash\') :\n # Bank Account\n - result.append(ReportSection(\n - path = account.getPhysicalPath(),\n - title = "%s: %s" % (c.getId(), account.getTitle()),\n - level = 9,\n - form_id = \'Account_viewAccountingTransactionList\',\n - selection_name = \'acount_selection\',\n - selection_params = params,\n - selection_columns = account_columns,\n - listbox_display_mode = \'FlatListMode\',\n - selection_sort_order = [(\'delivery.stop_date\', \'ascending\')],\n - preferences = preferences ))\n + for bank_account_path in account.Account_getSourcePaymentList() :\n + bank_params = params.copy()\n + if bank_account_path is not None :\n + bank_account = context.getPortalObject().restrictedTraverse(bank_account_path)\n + bank_params[\'source_payment_uid\'] = bank_account.getUid()\n + title = "%s: %s (%s)" % ( c.getId(),\n + account.getTitle(),\n + bank_account.getTitle())\n + else :\n + bank_params[\'no_source_payment_uid\'] = 1\n + title = "%s: %s" % ( c.getId(), account.getTitle())\n + result.append(ReportSection(\n + path = account.getPhysicalPath(),\n + title = title,\n + level = 9,\n + form_id = \'Account_viewAccountingTransactionList\',\n + selection_name = \'acount_preference_selection\',\n + selection_params = bank_params.copy(),\n + selection_columns = account_columns,\n + listbox_display_mode = \'FlatListMode\',\n + selection_sort_order = [(\'delivery.stop_date\', \'ascending\')],\n + preferences = preferences ))\n \n else :\n result.append(ReportSection(\n @@ -200,7 +233,7 @@ for c in gap_root :\n title = "%s: %s" % (c.getId(), account.getTitle()),\n level = 9,\n form_id = \'Account_viewAccountingTransactionList\',\n - selection_name = \'acount_selection\',\n + selection_name = \'acount_preference_selection\',\n selection_params = params,\n selection_columns = account_columns,\n listbox_display_mode = \'FlatListMode\',\n @@ -213,90 +246,113 @@ return result\n </item> <item> <key> <string>_code</string> </key> - <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAACAAAABAAAAAQwAA -AHNGBgAAZAEAawAAbAEAfQEAAXQCAHQDAGQCAIMCAH0EAHQFAHwEAGQDAIMCAH0GAHQFAHwEAGQE + <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAACoAAABOAAAAQwAA +AHNeCAAAZAEAawAAbAEAfQEAAXQCAHQDAGQCAIMCAH0EAHQFAHwEAGQDAIMCAH0GAHQFAHwEAGQE AIMCAH0HAHQFAHwEAGQFAIMCAH0IAHQCAHwEAGQGAIMCAGQHAHQJAIMCAH0KAHQCAHwEAGQGAIMC AGQIAHQJAIMCAH0LAHQCAHwEAGQGAIMCAGQJAGQKAIMCAH0MAHQCAHwEAGQGAIMCAGQLAGQMAIMC AH0NAHQCAHwEAGQGAIMCAGQNAGQMAIMCAH0OAGgAAARkAwB8BgADPARkDgB8BwADPARkBAB8BwAD -PARkDwB8CAADPARkEAB0CQADPARkDQB8DgADPH0PAGgAAARkEQB8BgADPARkEgB8CAADPARkEwB8 -BwADPARkFAB8DgADPH0QAHwKAG8kAAF8CgB0EQB8DwCDAQBkBwA8fAoAdBEAfBAAgwEAZBUAPG4B -AAFnAAB9EgB0AgB0AgB0AwBkFgCDAgBkFwCDAgCDAAB9EwBkGABkGQBmAgBkGgBkGwBmAgBkHABk -HQBmAgBkHgBkHgBmAgBkHwBkIABmAgBkDwBkIQBmAgBkIgBkIwBmAgBkJABkJQBmAgBkJgBkJwBm -AgBmCQB9FAB8CwBvXwABdAIAdAIAdAIAfBMAZCgAgwIAZAgAgwIAZCkAgwIAfAsAgwEAZwEAdAIA -dAIAdAIAdAIAfBMAZCgAgwIAZAgAgwIAZCkAgwIAfAsAgwEAZCoAgwIAgwAAF30VAG5ZAAF0AgB0 -AgB0AwBkKwCDAgBkLACDAgCDAABwEAABdAIAdAMAZC0AgwIAgwAAfRYAdAIAdAIAdAIAfBMAZCgA -gwIAZC4AgwIAfBYAgwEAZCoAgwIAgwAAfRUAaAAAfRcAeK0DdBgAfBUAgwEARF2fA30ZAHQCAHwZ -AGQvAIMCAGQwAGQxAIMAAX0aAHQCAHwZAGQvAIMCAGQwAGQxAGQyAGQKAIMAAn0bAGQKAH0cAHiA -AHQYAHwaAIMBAERdcgB9HQB0AgB8HQBkMwCDAgCDAAB8FwBqBwBvUwABdB4AdB8AdAIAdAIAfBMA -ZDQAgwIAZDUAgwIAZDYAdAIAfB0AZDMAgwIAgwAAfA8AjQEBgwEAdBEAfBcAgwEAdAIAfB0AZDMA -gwIAgwAAPHHqAgFx6gJXdAUAfBcAdAIAfB0AZDMAgwIAgwAAgwIAZAwAagMAbwoAAWQMAH0cAG4B -AAF8HABvBwABcZsCbgEAAXwNAG8dAAF0HgB8GgCDAQBvEAABdB4AfBsAgwEAZAoAagMAb3YAAXQC -AHwSAGQ3AIMCAHwBAGQ4AHQCAHwZAGQ5AIMCAIMAAGQcAGQ6AHQCAHwZAGQ7AIMCAIMAAHQCAHwZ -AGQ8AIMCAIMAAGYCABZkPQB0HgB0AgB8GQBkOQCDAgCDAACDAQBkPgAYZD8AdAkAgwAEgwEAAW4B -AAF0HgB8GwCDAQBv9gEBePMBdBgAfBsAgwEARF3hAX0dAHQCAHwdAGRAAIMCAIMAAGRBAGRCAGYC -AGoGAG+NAAF0AgB8EgBkNwCDAgB8AQBkOAB0AgB8HQBkOQCDAgCDAABkHABkOgB0AgB8GQBkOwCD -AgCDAAB0AgB8HQBkPACDAgCDAABmAgAWZD0AZEMAZD8AZEQAZEUAZEYAZEcAfA8AZEgAfBQAZEkA -ZEoAZEsAZBoAZEwAZgIAZwEAZE0AfBAAgwAKgwEAAXFRBAF0AgB8HQBkQACDAgCDAABkTgBqAgBv -jQABdAIAfBIAZDcAgwIAfAEAZDgAdAIAfB0AZDkAgwIAgwAAZBwAZDoAdAIAfBkAZDsAgwIAgwAA -dAIAfB0AZDwAgwIAgwAAZgIAFmQ9AGRDAGQ/AGREAGRFAGRGAGRHAHwPAGRIAHwUAGRJAGRKAGRL -AGQaAGRMAGYCAGcBAGRNAHwQAIMACoMBAAFxUQQBdAIAfBIAZDcAgwIAfAEAZDgAdAIAfB0AZDkA -gwIAgwAAZBwAZDoAdAIAfBkAZDsAgwIAgwAAdAIAfB0AZDwAgwIAgwAAZgIAFmQ9AGRDAGQ/AGRE -AGRFAGRGAGRHAHwPAGRIAHwUAGRJAGRKAGRLAGQaAGRMAGYCAGcBAGRNAHwQAIMACoMBAAFxUQRX -cZsCAXGbAld8EgBTZAAAUyhPAAAATigBAAAAcw0AAABSZXBvcnRTZWN0aW9ucwcAAABSRVFVRVNU -cwcAAABhdF9kYXRlcxwAAAB0cmFuc2FjdGlvbl9zZWN0aW9uX2NhdGVnb3J5cxwAAAB0cmFuc2Fj -dGlvbl9zaW11bGF0aW9uX3N0YXRlcwMAAABnZXRzCQAAAGZyb21fZGF0ZXMDAAAAZ2FwcxMAAABv -bWl0X2VtcHR5X2FjY291bnRzaQEAAABzEgAAAGRpc3BsYXlfY2F0ZWdvcmllc2kAAAAAcxcAAABv -bWl0X2dyb3VwaW5nX3JlZmVyZW5jZXMQAAAAc2VjdGlvbl9jYXRlZ29yeXMQAAAAc2ltdWxhdGlv -bl9zdGF0ZXMkAAAAYWNjb3VudGluZ190cmFuc2FjdGlvbl9saW5lX2N1cnJlbmN5cygAAABwcmVm -ZXJyZWRfYWNjb3VudGluZ190cmFuc2FjdGlvbl9hdF9kYXRlczEAAABwcmVmZXJyZWRfYWNjb3Vu -dGluZ190cmFuc2FjdGlvbl9zaW11bGF0aW9uX3N0YXRlczEAAABwcmVmZXJyZWRfYWNjb3VudGlu -Z190cmFuc2FjdGlvbl9zZWN0aW9uX2NhdGVnb3J5cywAAABwcmVmZXJyZWRfYWNjb3VudGluZ19v -bWl0X2dyb3VwaW5nX3JlZmVyZW5jZXMqAAAAcHJlZmVycmVkX2FjY291bnRpbmdfdHJhbnNhY3Rp -b25fZnJvbV9kYXRlcwoAAABwb3J0YWxfdXJscw8AAABnZXRQb3J0YWxPYmplY3RzEAAAAHNvdXJj -ZV9yZWZlcmVuY2VzCQAAAFJlZmVyZW5jZXMSAAAAZGVsaXZlcnkuc3RvcF9kYXRlcwQAAABEYXRl -cwUAAAB0aXRsZXMFAAAAVGl0bGVzBAAAAFR5cGVzCwAAAHRoaXJkX3BhcnR5cwsAAABUaGlyZCBQ -YXJ0eXMFAAAAU3RhdGVzDAAAAHNvdXJjZV9kZWJpdHMFAAAARGViaXRzDQAAAHNvdXJjZV9jcmVk -aXRzBgAAAENyZWRpdHMOAAAAc291cmNlX2JhbGFuY2VzBwAAAEJhbGFuY2VzEQAAAHBvcnRhbF9j -YXRlZ29yaWVzcxIAAAByZXN0cmljdGVkVHJhdmVyc2VzKAAAAENhdGVnb3J5X2dldFNvcnRlZENh -dGVnb3J5Q2hpbGRWYWx1ZUxpc3RzEgAAAHBvcnRhbF9wcmVmZXJlbmNlc3MkAAAAZ2V0UHJlZmVy -cmVkQWNjb3VudGluZ1RyYW5zYWN0aW9uR2FwcxcAAABnZXRQb3J0YWxEZWZhdWx0R2FwUm9vdHMP -AAAAcmVzb2x2ZUNhdGVnb3J5cxYAAABnZXRHYXBSZWxhdGVkVmFsdWVMaXN0cwsAAABwb3J0YWxf -dHlwZXMHAAAAQWNjb3VudHMRAAAAc3RyaWN0X21lbWJlcnNoaXBzBgAAAGdldFVpZHMRAAAAcG9y -dGFsX3NpbXVsYXRpb25zEAAAAGdldEludmVudG9yeUxpc3RzCAAAAG5vZGVfdWlkcwYAAABhcHBl -bmRzBAAAAHBhdGhzDwAAAGdldFBoeXNpY2FsUGF0aHMGAAAAJXM6ICVzcwUAAABnZXRJZHMIAAAA -Z2V0VGl0bGVzBQAAAGxldmVsaQQAAABzBwAAAGZvcm1faWRzEAAAAGdldEFjY291bnRUeXBlSWRz -BwAAAHBheWFibGVzCgAAAHJlY2VpdmFibGVpCQAAAHMlAAAAQWNjb3VudF92aWV3QWNjb3VudGlu -Z1RyYW5zYWN0aW9uTGlzdHMOAAAAc2VsZWN0aW9uX25hbWVzEAAAAGFjb3VudF9zZWxlY3Rpb25z -EAAAAHNlbGVjdGlvbl9wYXJhbXNzEQAAAHNlbGVjdGlvbl9jb2x1bW5zcxQAAABsaXN0Ym94X2Rp -c3BsYXlfbW9kZXMMAAAARmxhdExpc3RNb2RlcxQAAABzZWxlY3Rpb25fc29ydF9vcmRlcnMJAAAA -YXNjZW5kaW5ncwsAAABwcmVmZXJlbmNlc3MEAAAAYmFuayggAAAAcxgAAABQcm9kdWN0cy5FUlA1 -Rm9ybS5SZXBvcnRzDQAAAFJlcG9ydFNlY3Rpb25zCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dHMH -AAAAcmVxdWVzdHMJAAAAX2dldGl0ZW1fcwcAAABhdF9kYXRlcxwAAAB0cmFuc2FjdGlvbl9zZWN0 -aW9uX2NhdGVnb3J5cxwAAAB0cmFuc2FjdGlvbl9zaW11bGF0aW9uX3N0YXRlcwQAAABOb25lcwkA -AABmcm9tX2RhdGVzAwAAAGdhcHMTAAAAb21pdF9lbXB0eV9hY2NvdW50c3MSAAAAZGlzcGxheV9j -YXRlZ29yaWVzcxcAAABvbWl0X2dyb3VwaW5nX3JlZmVyZW5jZXMGAAAAcGFyYW1zcwsAAABwcmVm -ZXJlbmNlc3MHAAAAX3dyaXRlX3MGAAAAcmVzdWx0cwYAAABwb3J0YWxzDwAAAGFjY291bnRfY29s -dW1uc3MIAAAAZ2FwX3Jvb3RzAwAAAGNhdHMcAAAAYWNjb3VudF9pbnZlbnRvcnlfbGlzdF9jYWNo -ZXMJAAAAX2dldGl0ZXJfcwEAAABjcwwAAABhY2NvdW50X2xpc3RzEwAAAHN0cmljdF9hY2NvdW50 -X2xpc3RzCwAAAHNraXBfYnJhbmNocwcAAABhY2NvdW50cwMAAABsZW5zBwAAAF9hcHBseV8oIAAA -AHMYAAAAUHJvZHVjdHMuRVJQNUZvcm0uUmVwb3J0cw0AAABSZXBvcnRTZWN0aW9ucwkAAABfZ2V0 -YXR0cl9zBwAAAGNvbnRleHRzBwAAAHJlcXVlc3RzCQAAAF9nZXRpdGVtX3MHAAAAYXRfZGF0ZXMc -AAAAdHJhbnNhY3Rpb25fc2VjdGlvbl9jYXRlZ29yeXMcAAAAdHJhbnNhY3Rpb25fc2ltdWxhdGlv -bl9zdGF0ZXMEAAAATm9uZXMJAAAAZnJvbV9kYXRlcwMAAABnYXBzEwAAAG9taXRfZW1wdHlfYWNj -b3VudHNzEgAAAGRpc3BsYXlfY2F0ZWdvcmllc3MXAAAAb21pdF9ncm91cGluZ19yZWZlcmVuY2Vz -BgAAAHBhcmFtc3MLAAAAcHJlZmVyZW5jZXNzBwAAAF93cml0ZV9zBgAAAHJlc3VsdHMGAAAAcG9y -dGFscw8AAABhY2NvdW50X2NvbHVtbnNzCAAAAGdhcF9yb290cwMAAABjYXRzHAAAAGFjY291bnRf -aW52ZW50b3J5X2xpc3RfY2FjaGVzCQAAAF9nZXRpdGVyX3MBAAAAY3MMAAAAYWNjb3VudF9saXN0 -cxMAAABzdHJpY3RfYWNjb3VudF9saXN0cwsAAABza2lwX2JyYW5jaHMHAAAAYWNjb3VudHMDAAAA -bGVucwcAAABfYXBwbHlfKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcy8AAABBY2NvdW50 -TW9kdWxlX2dldEdlbmVyYWxMZWRnZXJSZXBvcnRTZWN0aW9uTGlzdAEAAABzugAAAAADDQEPAg8B -DwEPARgBGAEYARgDGAMHAQkBCQEJAQkBCQEIAwcBCQIJAgkCCAMHARABFAIGARsCAAEJAQkBCQEJ -AQkBCQEJAQkBDwMHATMBLAMfAQ8CKgMGAg0ABgEYAR4DBgENAAYBGQEhAjYCIgEKAwcBBwIHAQ0B -FgESARIBJQEcAQ4DDQENAAYBIgISARIBNwQGAQwCDwEOAhwCEgESATcEBgEMAg8BEQMSARIBNwQG -AQwCDwEWAigBAAAAcy8AAABBY2NvdW50TW9kdWxlX2dldEdlbmVyYWxMZWRnZXJSZXBvcnRTZWN0 -aW9uTGlzdCgBAAAAcy8AAABBY2NvdW50TW9kdWxlX2dldEdlbmVyYWxMZWRnZXJSZXBvcnRTZWN0 -aW9uTGlzdCgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAA -AAA=</string> </value> +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 +QQCDAgCDAABmAgAWZEIAZEwAZEQAZE0AZE4AZE8AZFAAfA8AZFEAfBYAZFIAZFMAZFQAZFUAZFYA +ZgIAZwEAZFcAfBAAgwAKgwEAAXGfBFdx4wIBceMCV3wUAFNkAABTKF0AAABOKAEAAABzDQAAAFJl +cG9ydFNlY3Rpb25zBwAAAFJFUVVFU1RzBwAAAGF0X2RhdGVzHAAAAHRyYW5zYWN0aW9uX3NlY3Rp +b25fY2F0ZWdvcnlzHAAAAHRyYW5zYWN0aW9uX3NpbXVsYXRpb25fc3RhdGVzAwAAAGdldHMJAAAA +ZnJvbV9kYXRlcwMAAABnYXBzEwAAAG9taXRfZW1wdHlfYWNjb3VudHNpAQAAAHMSAAAAZGlzcGxh +eV9jYXRlZ29yaWVzaQAAAABzFwAAAG9taXRfZ3JvdXBpbmdfcmVmZXJlbmNlcxAAAABzZWN0aW9u +X2NhdGVnb3J5cxAAAABzaW11bGF0aW9uX3N0YXRlcyQAAABhY2NvdW50aW5nX3RyYW5zYWN0aW9u +X2xpbmVfY3VycmVuY3lzEQAAAGZyb21fZGF0ZV9zdW1tYXJ5cygAAABwcmVmZXJyZWRfYWNjb3Vu +dGluZ190cmFuc2FjdGlvbl9hdF9kYXRlczEAAABwcmVmZXJyZWRfYWNjb3VudGluZ190cmFuc2Fj +dGlvbl9zaW11bGF0aW9uX3N0YXRlczEAAABwcmVmZXJyZWRfYWNjb3VudGluZ190cmFuc2FjdGlv +bl9zZWN0aW9uX2NhdGVnb3J5cyoAAABwcmVmZXJyZWRfYWNjb3VudGluZ190cmFuc2FjdGlvbl9m +cm9tX2RhdGUoAQAAAHMKAAAAY2xlYXJDYWNoZXMKAAAAcG9ydGFsX3VybHMPAAAAZ2V0UG9ydGFs +T2JqZWN0cxMAAABkZWxpdmVyeS5zdGFydF9kYXRlcwQAAABEYXRlcwUAAAB0aXRsZXMFAAAAVGl0 +bGVzFgAAAHRyYW5zbGF0ZWRfcG9ydGFsX3R5cGVzBAAAAFR5cGVzCwAAAHRoaXJkX3BhcnR5cwsA +AABUaGlyZCBQYXJ0eXMhAAAAdHJhbnNsYXRlZF9zaW11bGF0aW9uX3N0YXRlX3RpdGxlcwUAAABT +dGF0ZXMMAAAAc291cmNlX2RlYml0cwUAAABEZWJpdHMNAAAAc291cmNlX2NyZWRpdHMGAAAAQ3Jl +ZGl0cwsAAABuZXRfYmFsYW5jZXMHAAAAQmFsYW5jZXMRAAAAcG9ydGFsX2NhdGVnb3JpZXNzEgAA +AHJlc3RyaWN0ZWRUcmF2ZXJzZXMoAAAAQ2F0ZWdvcnlfZ2V0U29ydGVkQ2F0ZWdvcnlDaGlsZFZh +bHVlTGlzdHMGAAAAZ2FwLyVzcxIAAABwb3J0YWxfcHJlZmVyZW5jZXNzJAAAAGdldFByZWZlcnJl +ZEFjY291bnRpbmdUcmFuc2FjdGlvbkdhcHMXAAAAZ2V0UG9ydGFsRGVmYXVsdEdhcFJvb3RzDwAA +AHJlc29sdmVDYXRlZ29yeXMEAAAAY29weXMHAAAAaGFzX2tleXMWAAAAZ2V0R2FwUmVsYXRlZFZh +bHVlTGlzdHMLAAAAcG9ydGFsX3R5cGVzBwAAAEFjY291bnRzEQAAAHN0cmljdF9tZW1iZXJzaGlw +cwYAAABnZXRVaWRzEQAAAHBvcnRhbF9zaW11bGF0aW9ucxAAAABnZXRJbnZlbnRvcnlMaXN0cw8A +AABvbWl0X3NpbXVsYXRpb25zCAAAAG5vZGVfdWlkcwYAAABhcHBlbmRzBAAAAHBhdGhzDwAAAGdl +dFBoeXNpY2FsUGF0aHMGAAAAJXM6ICVzcwUAAABnZXRJZHMIAAAAZ2V0VGl0bGVzBQAAAGxldmVs +aQQAAABzBwAAAGZvcm1faWRzEAAAAGdldEFjY291bnRUeXBlSWRzBwAAAHBheWFibGVzCgAAAHJl +Y2VpdmFibGVzIQAAAEFjY291bnRfZ2V0RGVzdGluYXRpb25TZWN0aW9uTGlzdHMXAAAAZGVzdGlu +YXRpb25fc2VjdGlvbl91aWRzCwAAACVzOiAlcyAoJXMpcxoAAABub19kZXN0aW5hdGlvbl9zZWN0 +aW9uX3VpZGkJAAAAcyUAAABBY2NvdW50X3ZpZXdBY2NvdW50aW5nVHJhbnNhY3Rpb25MaXN0cw4A +AABzZWxlY3Rpb25fbmFtZXMbAAAAYWNvdW50X3ByZWZlcmVuY2Vfc2VsZWN0aW9ucxAAAABzZWxl +Y3Rpb25fcGFyYW1zcxEAAABzZWxlY3Rpb25fY29sdW1uc3MUAAAAbGlzdGJveF9kaXNwbGF5X21v +ZGVzDAAAAEZsYXRMaXN0TW9kZXMUAAAAc2VsZWN0aW9uX3NvcnRfb3JkZXJzEgAAAGRlbGl2ZXJ5 +LnN0b3BfZGF0ZXMJAAAAYXNjZW5kaW5ncwsAAABwcmVmZXJlbmNlc3MEAAAAYmFua3MEAAAAY2Fz +aHMcAAAAQWNjb3VudF9nZXRTb3VyY2VQYXltZW50TGlzdHMSAAAAc291cmNlX3BheW1lbnRfdWlk +cxUAAABub19zb3VyY2VfcGF5bWVudF91aWQoKgAAAHMYAAAAUHJvZHVjdHMuRVJQNUZvcm0uUmVw +b3J0cw0AAABSZXBvcnRTZWN0aW9ucwkAAABfZ2V0YXR0cl9zBwAAAGNvbnRleHRzBwAAAHJlcXVl +c3RzCQAAAF9nZXRpdGVtX3MHAAAAYXRfZGF0ZXMcAAAAdHJhbnNhY3Rpb25fc2VjdGlvbl9jYXRl +Z29yeXMcAAAAdHJhbnNhY3Rpb25fc2ltdWxhdGlvbl9zdGF0ZXMEAAAATm9uZXMJAAAAZnJvbV9k +YXRlcwMAAABnYXBzEwAAAG9taXRfZW1wdHlfYWNjb3VudHNzEgAAAGRpc3BsYXlfY2F0ZWdvcmll +c3MXAAAAb21pdF9ncm91cGluZ19yZWZlcmVuY2VzBgAAAHBhcmFtc3MLAAAAcHJlZmVyZW5jZXNz +BwAAAF93cml0ZV9zFwAAAFByb2R1Y3RzLkVSUDVUeXBlLkNhY2hlcwoAAABjbGVhckNhY2hlcwYA +AAByZXN1bHRzBgAAAHBvcnRhbHMPAAAAYWNjb3VudF9jb2x1bW5zcw4AAABnYXBfdmFsdWVfbGlz +dHMDAAAAY2F0cxwAAABhY2NvdW50X2ludmVudG9yeV9saXN0X2NhY2hlcyMAAABhY2NvdW50X2lu +dmVudG9yeV9saXN0X2NhY2hlX3BhcmFtc3MJAAAAX2dldGl0ZXJfcwEAAABjcwwAAABhY2NvdW50 +X2xpc3RzEwAAAHN0cmljdF9hY2NvdW50X2xpc3RzCwAAAHNraXBfYnJhbmNocwcAAABhY2NvdW50 +cwMAAABsZW5zBwAAAF9hcHBseV9zEAAAAHRoaXJkX3BhcnR5X3BhdGhzEgAAAHRoaXJkX3BhcnR5 +X3BhcmFtc3MLAAAAdGhpcmRfcGFydHlzBQAAAHRpdGxlcxEAAABiYW5rX2FjY291bnRfcGF0aHML +AAAAYmFua19wYXJhbXNzDAAAAGJhbmtfYWNjb3VudCgqAAAAcxgAAABQcm9kdWN0cy5FUlA1Rm9y +bS5SZXBvcnRzDQAAAFJlcG9ydFNlY3Rpb25zCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dHMHAAAA +cmVxdWVzdHMJAAAAX2dldGl0ZW1fcwcAAABhdF9kYXRlcxwAAAB0cmFuc2FjdGlvbl9zZWN0aW9u +X2NhdGVnb3J5cxwAAAB0cmFuc2FjdGlvbl9zaW11bGF0aW9uX3N0YXRlcwQAAABOb25lcwkAAABm +cm9tX2RhdGVzAwAAAGdhcHMTAAAAb21pdF9lbXB0eV9hY2NvdW50c3MSAAAAZGlzcGxheV9jYXRl +Z29yaWVzcxcAAABvbWl0X2dyb3VwaW5nX3JlZmVyZW5jZXMGAAAAcGFyYW1zcwsAAABwcmVmZXJl +bmNlc3MHAAAAX3dyaXRlX3MXAAAAUHJvZHVjdHMuRVJQNVR5cGUuQ2FjaGVzCgAAAGNsZWFyQ2Fj +aGVzBgAAAHJlc3VsdHMGAAAAcG9ydGFscw8AAABhY2NvdW50X2NvbHVtbnNzDgAAAGdhcF92YWx1 +ZV9saXN0cwMAAABjYXRzHAAAAGFjY291bnRfaW52ZW50b3J5X2xpc3RfY2FjaGVzIwAAAGFjY291 +bnRfaW52ZW50b3J5X2xpc3RfY2FjaGVfcGFyYW1zcwkAAABfZ2V0aXRlcl9zAQAAAGNzDAAAAGFj +Y291bnRfbGlzdHMTAAAAc3RyaWN0X2FjY291bnRfbGlzdHMLAAAAc2tpcF9icmFuY2hzBwAAAGFj +Y291bnRzAwAAAGxlbnMHAAAAX2FwcGx5X3MQAAAAdGhpcmRfcGFydHlfcGF0aHMSAAAAdGhpcmRf +cGFydHlfcGFyYW1zcwsAAAB0aGlyZF9wYXJ0eXMFAAAAdGl0bGVzEQAAAGJhbmtfYWNjb3VudF9w +YXRocwsAAABiYW5rX3BhcmFtc3MMAAAAYmFua19hY2NvdW50KAAAAAAoAAAAAHMPAAAAU2NyaXB0 +IChQeXRob24pcy8AAABBY2NvdW50TW9kdWxlX2dldEdlbmVyYWxMZWRnZXJSZXBvcnRTZWN0aW9u +TGlzdAEAAABz7gAAAAADDQEPAg8BDwEPARgBGAEYARgDGAMHAQkBCQEJAQkBCQERBAcBCQIJAggF +BwEQARQDDQEHAgYBGwIAAgkBCQEJAQkBCQEJAQkBDwMHATMBLAMjAQ8CKgYGARUBFgEOAg0ABgEY +AR4DBgENAAYBGQEnAjYCIgEKAwcBBwIHAQ0BFgESARIBJQEcAQ4CDQENAAYBHwEVAQYBEAESAQ0B +IQEcARUBDwEXAhABKwESAQ8BGwQPAQwCDwESAh8CGQAGARIBDQEhARwBFQEPARcCEAErARIBDwEb +BA8BDAIPARUDEgESATcEBgEMAg8BFgIoAQAAAHMvAAAAQWNjb3VudE1vZHVsZV9nZXRHZW5lcmFs +TGVkZ2VyUmVwb3J0U2VjdGlvbkxpc3QoAQAAAHMvAAAAQWNjb3VudE1vZHVsZV9nZXRHZW5lcmFs +TGVkZ2VyUmVwb3J0U2VjdGlvbkxpc3QoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzCAAA +ADxtb2R1bGU+AQAAAHMAAAAA</string> </value> </item> <item> <key> <string>_dav_writelocks</string> </key> @@ -306,7 +362,7 @@ AAA=</string> </value> </item> <item> <key> <string>_filepath</string> </key> - <value> <string>Script (Python):/nexedi/erp5_accounting/AccountModule_getGeneralLedgerReportSectionList</string> </value> + <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_getGeneralLedgerReportSectionList</string> </value> </item> <item> <key> <string>_params</string> </key> @@ -354,12 +410,15 @@ AAA=</string> </value> <string>params</string> <string>preferences</string> <string>_write_</string> + <string>Products.ERP5Type.Cache</string> + <string>clearCache</string> <string>result</string> <string>portal</string> <string>account_columns</string> - <string>gap_root</string> + <string>gap_value_list</string> <string>cat</string> <string>account_inventory_list_cache</string> + <string>account_inventory_list_cache_params</string> <string>_getiter_</string> <string>c</string> <string>account_list</string> @@ -368,6 +427,13 @@ AAA=</string> </value> <string>account</string> <string>len</string> <string>_apply_</string> + <string>third_party_path</string> + <string>third_party_params</string> + <string>third_party</string> + <string>title</string> + <string>bank_account_path</string> + <string>bank_params</string> + <string>bank_account</string> </tuple> </value> </item> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getMirrorAccountUrl.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getMirrorAccountUrl.xml index f174aa5171ef679dc9d3ff9da4f5c23e6d351db0..9197fc1a2c917ce49a3de232bde278e15a4a2dfe 100755 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getMirrorAccountUrl.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getMirrorAccountUrl.xml @@ -73,7 +73,7 @@ name = selection.getName()\n object = brain.getObject()\n object = object.getDestinationValue()\n if object is None:\n - url = "#"\n + url = None\n else:\n url = object.absolute_url() + \'/view?selection_index=%s&selection_name=%s&reset=1\' % (index, name)\n \n @@ -86,22 +86,22 @@ return url\n <key> <string>_code</string> </key> <value> <string encoding="base64">YwAAAAAAAAAAAwAAAEAAAABzEwAAAGUAAGUAAGQBAIQCAFoBAGQAAFMoAgAAAE5jAgAAAAgAAAAI AAAAQwAAAHOHAAAAdAAAfAEAZAEAgwIAgwAAfQMAdAAAfAEAZAIAgwIAgwAAfQQAdAAAfAAAZAMA -gwIAgwAAfQUAdAAAfAUAZAQAgwIAgwAAfQUAfAUAdAYAaggAbwoAAWQFAH0HAG4hAAF0AAB8BQBk -BgCDAgCDAABkBwB8AwB8BABmAgAWF30HAHwHAFNkAABTKAgAAABOcwgAAABnZXRJbmRleHMHAAAA -Z2V0TmFtZXMJAAAAZ2V0T2JqZWN0cxMAAABnZXREZXN0aW5hdGlvblZhbHVlcwEAAAAjcwwAAABh -YnNvbHV0ZV91cmxzMgAAAC92aWV3P3NlbGVjdGlvbl9pbmRleD0lcyZzZWxlY3Rpb25fbmFtZT0l -cyZyZXNldD0xKAgAAABzCQAAAF9nZXRhdHRyX3MJAAAAc2VsZWN0aW9ucwUAAABpbmRleHMEAAAA -bmFtZXMFAAAAYnJhaW5zBgAAAG9iamVjdHMEAAAATm9uZXMDAAAAdXJsKAgAAABzBQAAAGJyYWlu -cwkAAABzZWxlY3Rpb25zCQAAAF9nZXRhdHRyX3MFAAAAaW5kZXhzBAAAAG5hbWVzBgAAAG9iamVj -dHMEAAAATm9uZXMDAAAAdXJsKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcyEAAABBY2Nv -dW50TW9kdWxlX2dldE1pcnJvckFjY291bnRVcmwBAAAAcw4AAAASARIBEgESAQ0BCgIgAigCAAAA -cwQAAABOb25lcyEAAABBY2NvdW50TW9kdWxlX2dldE1pcnJvckFjY291bnRVcmwoAgAAAHMEAAAA -Tm9uZXMhAAAAQWNjb3VudE1vZHVsZV9nZXRNaXJyb3JBY2NvdW50VXJsKAAAAAAoAAAAAHMPAAAA -U2NyaXB0IChQeXRob24pcwgAAAA8bW9kdWxlPgEAAABzAAAAAA==</string> </value> +gwIAgwAAfQUAdAAAfAUAZAQAgwIAgwAAfQUAfAUAdAYAaggAbwoAAXQGAH0HAG4hAAF0AAB8BQBk +BQCDAgCDAABkBgB8AwB8BABmAgAWF30HAHwHAFNkAABTKAcAAABOcwgAAABnZXRJbmRleHMHAAAA +Z2V0TmFtZXMJAAAAZ2V0T2JqZWN0cxMAAABnZXREZXN0aW5hdGlvblZhbHVlcwwAAABhYnNvbHV0 +ZV91cmxzMgAAAC92aWV3P3NlbGVjdGlvbl9pbmRleD0lcyZzZWxlY3Rpb25fbmFtZT0lcyZyZXNl +dD0xKAgAAABzCQAAAF9nZXRhdHRyX3MJAAAAc2VsZWN0aW9ucwUAAABpbmRleHMEAAAAbmFtZXMF +AAAAYnJhaW5zBgAAAG9iamVjdHMEAAAATm9uZXMDAAAAdXJsKAgAAABzBQAAAGJyYWlucwkAAABz +ZWxlY3Rpb25zCQAAAF9nZXRhdHRyX3MFAAAAaW5kZXhzBAAAAG5hbWVzBgAAAG9iamVjdHMEAAAA +Tm9uZXMDAAAAdXJsKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcyEAAABBY2NvdW50TW9k +dWxlX2dldE1pcnJvckFjY291bnRVcmwBAAAAcw4AAAASARIBEgESAQ0BCgIgAigCAAAAcwQAAABO +b25lcyEAAABBY2NvdW50TW9kdWxlX2dldE1pcnJvckFjY291bnRVcmwoAgAAAHMEAAAATm9uZXMh +AAAAQWNjb3VudE1vZHVsZV9nZXRNaXJyb3JBY2NvdW50VXJsKAAAAAAoAAAAAHMPAAAAU2NyaXB0 +IChQeXRob24pcwgAAAA8bW9kdWxlPgEAAABzAAAAAA==</string> </value> </item> <item> <key> <string>_filepath</string> </key> - <value> <string>Script (Python):/nexedi/portal_skins/local_accounting/AccountModule_getMirrorAccountUrl</string> </value> + <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_getMirrorAccountUrl</string> </value> </item> <item> <key> <string>_params</string> </key> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_statBalance.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_statBalance.xml index 656b84ea510a50e1bb38722fa70191ca4fea0f98..06b5993dd53aeb07c6b401ec27b3be21996f96ec 100755 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_statBalance.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_statBalance.xml @@ -94,7 +94,7 @@ except KeyError:\n pass\n \n # build the query with portal_catalog\n -query = context.portal_catalog.buildSQLQuery(**kw)\n +query = context.portal_catalog.buildSQLQuery(**kw) #query_table = \'node\', **kw)\n \n if query.get(\'where_expression\'):\n params[\'where_expression\'] = query[\'where_expression\']\n @@ -108,6 +108,7 @@ if selection.getReport() :\n if kw.get(\'closed_summary\'):\n params[\'closed_summary\'] = kw[\'closed_summary\']\n if selection.isInvertMode() :\n + params[\'node_uid\'] = selection.getInvertModeUidList()\n params[\'selection_uids\'] = selection.getInvertModeUidList()\n \n if kw.get(\'omit_input\'):\n @@ -123,13 +124,17 @@ if row.quantity :\n total = row.quantity or 0.00\n return total\n \n -# vim: syntax=python\n +# FIXME:\n +# here we have to buildSQLQuery on \'node\' catalog table alias and not catalog.\n +# currently this doesn\'t work.\n +context.log(\'SQL:\', context.portal_simulation.getInventory( src__=1, omit_simulation=1, **params ))\n +return context.portal_simulation.getInventory( omit_simulation=1, **params )\n </string> </value> </item> <item> <key> <string>_code</string> </key> - <value> <string encoding="base64">YwAAAAAAAAAAAwAAAEAAAABzEwAAAGUAAGUAAGQBAIQCAFoBAGQAAFMoAgAAAE5jAgAAABYAAAAz -AAAASwAAAHNxAwAAdAAAfAIAZAEAgwIAdAAAfAEAZAIAgwIAgwAAgwEAAWgAAH0EAGQDAIQAAH0F + <value> <string encoding="base64">YwAAAAAAAAAAAwAAAEAAAABzEwAAAGUAAGUAAGQBAIQCAFoBAGQAAFMoAgAAAE5jAgAAABYAAAA7 +AAAASwAAAHPvAwAAdAAAfAIAZAEAgwIAdAAAfAEAZAIAgwIAgwAAgwEAAWgAAH0EAGQDAIQAAH0F AHQAAHQAAHQFAGQEAIMCAIMAAGQFAIMCAH0HAHQAAHwHAGQGAIMCAIMAAH0IAHwIAG8UAAF8CAB0 CAB8BACDAQBkBwA8bgEAAXQAAHwHAGQIAIMCAIMAAH0KAHwKAG8UAAF8CgB0CAB8BACDAQBkCQA8 bgEAAXQAAHwHAGQKAIMCAIMAAH0LAHwLAG8UAAF8CwB0CAB8BACDAQBkCwA8bgEAAXQAAHwHAGQM @@ -140,44 +145,47 @@ fRIAdAAAfBIAZBQAgwIAZBUAgwEAbx0AAXQMAHwSAGQVAIMCAHQIAHwEAIMBAGQVADxuAQABdAAA fBIAZBQAgwIAZBYAgwEAbx0AAXQMAHwSAGQWAIMCAHQIAHwEAIMBAGQWADxuAQABdAAAfAEAZBcA gwIAgwAAbyAAAXQAAHwBAGQXAIMCAIMAAHQIAHwEAIMBAGQYADxuAQABdAAAfAEAZBkAgwIAgwAA byAAAXQAAHwBAGQZAIMCAIMAAHQIAHwEAIMBAGQaADxuAQABdAAAfAIAZBQAgwIAZBsAgwEAbx0A -AXQMAHwCAGQbAIMCAHQIAHwEAIMBAGQbADxuAQABdAAAfAEAZBwAgwIAgwAAbyAAAXQAAHwBAGQd -AIMCAIMAAHQIAHwEAIMBAGQeADxuAQABdAAAfAIAZBQAgwIAZB8AgwEAbxQAAWQgAHQIAHwEAIMB -AGQfADxuAQABdAAAfAIAZBQAgwIAZCEAgwEAbxQAAWQgAHQIAHwEAIMBAGQhADxuAQABdBAAdAAA -dAUAZCIAgwIAZCMAZCAAfAQAjQEBfRMAdAwAfBMAZCQAgwIAfRQAZCQAfRUAdAAAfBQAZCUAgwIA -bxoAAXQAAHwUAGQlAIMCAHAEAAFkJgB9FQBuAQABfBUAU2QAAFMoJwAAAE5zBgAAAHVwZGF0ZXMJ -AAAAZ2V0UGFyYW1zYwEAAAADAAAAAwAAAEMAAABzFgAAAHQAAHQBAGQBAIMCAGQCAHwAAIMCAFMo -AwAAAE5zAwAAAGxvZ3MZAAAAQWNjb3VudE1vZHVsZV9zdGF0QmFsYW5jZSgDAAAAcwkAAABfZ2V0 -YXR0cl9zBwAAAGNvbnRleHRzBwAAAG1lc3NhZ2UoAwAAAHMHAAAAbWVzc2FnZXMJAAAAX2dldGF0 -dHJfcwcAAABjb250ZXh0KAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcwoAAAA8bGFtYmRh -LjQ+AwAAAHMAAAAAcw8AAABnZXRQb3J0YWxPYmplY3RzEgAAAHBvcnRhbF9wcmVmZXJlbmNlc3Mp -AAAAZ2V0UHJlZmVycmVkQWNjb3VudGluZ1RyYW5zYWN0aW9uRnJvbURhdGVzCQAAAGZyb21fZGF0 -ZXMnAAAAZ2V0UHJlZmVycmVkQWNjb3VudGluZ1RyYW5zYWN0aW9uQXREYXRlcwcAAABhdF9kYXRl -czQAAABnZXRQcmVmZXJyZWRBY2NvdW50aW5nVHJhbnNhY3Rpb25TaW11bGF0aW9uU3RhdGVMaXN0 -cxAAAABzaW11bGF0aW9uX3N0YXRlczAAAABnZXRQcmVmZXJyZWRBY2NvdW50aW5nVHJhbnNhY3Rp -b25TZWN0aW9uQ2F0ZWdvcnlzEAAAAHNlY3Rpb25fY2F0ZWdvcnlzJAAAAGFjY291bnRpbmdfdHJh -bnNhY3Rpb25fbGluZV9jdXJyZW5jeXMSAAAAcmVzdHJpY3RlZFRyYXZlcnNlcwYAAABnZXRVaWRz -DAAAAHJlc291cmNlX3VpZHMOAAAAcG9ydGFsX2NhdGFsb2dzDQAAAGJ1aWxkU1FMUXVlcnlzAwAA -AGdldHMQAAAAd2hlcmVfZXhwcmVzc2lvbnMPAAAAZnJvbV90YWJsZV9saXN0cwkAAABnZXREb21h -aW5zEAAAAHNlbGVjdGlvbl9kb21haW5zCQAAAGdldFJlcG9ydHMQAAAAc2VsZWN0aW9uX3JlcG9y -dHMOAAAAY2xvc2VkX3N1bW1hcnlzDAAAAGlzSW52ZXJ0TW9kZXMUAAAAZ2V0SW52ZXJ0TW9kZVVp -ZExpc3RzDgAAAHNlbGVjdGlvbl91aWRzcwoAAABvbWl0X2lucHV0aQEAAABzCwAAAG9taXRfb3V0 -cHV0cxcAAABSZXNvdXJjZV96U3RhdEludmVudG9yeXMPAAAAb21pdF9zaW11bGF0aW9uaQAAAABz -CAAAAHF1YW50aXR5ZgMwLjAoFQAAAHMJAAAAX2dldGF0dHJfcwIAAABrd3MJAAAAc2VsZWN0aW9u -cwYAAABwYXJhbXNzAwAAAExPR3MHAAAAY29udGV4dHMKAAAAcHJlZmVyZW5jZXMJAAAAZnJvbV9k -YXRlcwcAAABfd3JpdGVfcwcAAABhdF9kYXRlcxAAAABzaW11bGF0aW9uX3N0YXRlcxAAAABzZWN0 -aW9uX2NhdGVnb3J5cwkAAABfZ2V0aXRlbV9zAwAAAHVybHMIAAAAY3VycmVuY3lzCAAAAEtleUVy -cm9ycwcAAABfYXBwbHlfcwUAAABxdWVyeXMHAAAAcmVzdWx0c3MDAAAAcm93cwUAAAB0b3RhbCgW -AAAAcwUAAABicmFpbnMJAAAAc2VsZWN0aW9ucwIAAABrd3MJAAAAX2dldGF0dHJfcwYAAABwYXJh -bXNzAwAAAExPR3MHAAAAY29udGV4dHMKAAAAcHJlZmVyZW5jZXMJAAAAZnJvbV9kYXRlcwcAAABf -d3JpdGVfcwcAAABhdF9kYXRlcxAAAABzaW11bGF0aW9uX3N0YXRlcxAAAABzZWN0aW9uX2NhdGVn -b3J5cwkAAABfZ2V0aXRlbV9zAwAAAHVybHMIAAAAY3VycmVuY3lzCAAAAEtleUVycm9ycwcAAABf -YXBwbHlfcwUAAABxdWVyeXMHAAAAcmVzdWx0c3MDAAAAcm93cwUAAAB0b3RhbCgAAAAAKAAAAABz -DwAAAFNjcmlwdCAoUHl0aG9uKXMZAAAAQWNjb3VudE1vZHVsZV9zdGF0QmFsYW5jZQEAAABzXAAA -AB8BBgEJAxsBEgEHARQBEgEHARQBEgEHARQBEgEHARQCAwEPAQcBFQEnAQ4BBQMkAhMBIAETASAC -EAEjARABIwETASABEAEjAhMBFwETARQCFQEJAQ8BCQENARoBKAIAAABzBAAAAE5vbmVzGQAAAEFj -Y291bnRNb2R1bGVfc3RhdEJhbGFuY2UoAgAAAHMEAAAATm9uZXMZAAAAQWNjb3VudE1vZHVsZV9z -dGF0QmFsYW5jZSgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAA -cwAAAAA=</string> </value> +AXQMAHwCAGQbAIMCAHQIAHwEAIMBAGQbADxuAQABdAAAfAEAZBwAgwIAgwAAbzwAAXQAAHwBAGQd +AIMCAIMAAHQIAHwEAIMBAGQeADx0AAB8AQBkHQCDAgCDAAB0CAB8BACDAQBkHwA8bgEAAXQAAHwC +AGQUAIMCAGQgAIMBAG8UAAFkIQB0CAB8BACDAQBkIAA8bgEAAXQAAHwCAGQUAIMCAGQiAIMBAG8U +AAFkIQB0CAB8BACDAQBkIgA8bgEAAXQQAHQAAHQFAGQjAIMCAGQkAGQhAHwEAI0BAX0TAHQMAHwT +AGQlAIMCAH0UAGQlAH0VAHQAAHwUAGQmAIMCAG8aAAF0AAB8FABkJgCDAgBwBAABZCcAfRUAbgEA +AXwVAFN0AAB0BQBkKACDAgBkKQB0EAB0AAB0AAB0BQBkKgCDAgBkKwCDAgBkLABkIQBkJABkIQB8 +BACNAQKDAgABdBAAdAAAdAAAdAUAZCoAgwIAZCsAgwIAZCQAZCEAfAQAjQEBU2QAAFMoLQAAAE5z +BgAAAHVwZGF0ZXMJAAAAZ2V0UGFyYW1zYwEAAAADAAAAAwAAAEMAAABzFgAAAHQAAHQBAGQBAIMC +AGQCAHwAAIMCAFMoAwAAAE5zAwAAAGxvZ3MZAAAAQWNjb3VudE1vZHVsZV9zdGF0QmFsYW5jZSgD +AAAAcwkAAABfZ2V0YXR0cl9zBwAAAGNvbnRleHRzBwAAAG1lc3NhZ2UoAwAAAHMHAAAAbWVzc2Fn +ZXMJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0KAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24p +cwoAAAA8bGFtYmRhLjc+AwAAAHMAAAAAcw8AAABnZXRQb3J0YWxPYmplY3RzEgAAAHBvcnRhbF9w +cmVmZXJlbmNlc3MpAAAAZ2V0UHJlZmVycmVkQWNjb3VudGluZ1RyYW5zYWN0aW9uRnJvbURhdGVz +CQAAAGZyb21fZGF0ZXMnAAAAZ2V0UHJlZmVycmVkQWNjb3VudGluZ1RyYW5zYWN0aW9uQXREYXRl +cwcAAABhdF9kYXRlczQAAABnZXRQcmVmZXJyZWRBY2NvdW50aW5nVHJhbnNhY3Rpb25TaW11bGF0 +aW9uU3RhdGVMaXN0cxAAAABzaW11bGF0aW9uX3N0YXRlczAAAABnZXRQcmVmZXJyZWRBY2NvdW50 +aW5nVHJhbnNhY3Rpb25TZWN0aW9uQ2F0ZWdvcnlzEAAAAHNlY3Rpb25fY2F0ZWdvcnlzJAAAAGFj +Y291bnRpbmdfdHJhbnNhY3Rpb25fbGluZV9jdXJyZW5jeXMSAAAAcmVzdHJpY3RlZFRyYXZlcnNl +cwYAAABnZXRVaWRzDAAAAHJlc291cmNlX3VpZHMOAAAAcG9ydGFsX2NhdGFsb2dzDQAAAGJ1aWxk +U1FMUXVlcnlzAwAAAGdldHMQAAAAd2hlcmVfZXhwcmVzc2lvbnMPAAAAZnJvbV90YWJsZV9saXN0 +cwkAAABnZXREb21haW5zEAAAAHNlbGVjdGlvbl9kb21haW5zCQAAAGdldFJlcG9ydHMQAAAAc2Vs +ZWN0aW9uX3JlcG9ydHMOAAAAY2xvc2VkX3N1bW1hcnlzDAAAAGlzSW52ZXJ0TW9kZXMUAAAAZ2V0 +SW52ZXJ0TW9kZVVpZExpc3RzCAAAAG5vZGVfdWlkcw4AAABzZWxlY3Rpb25fdWlkc3MKAAAAb21p +dF9pbnB1dGkBAAAAcwsAAABvbWl0X291dHB1dHMXAAAAUmVzb3VyY2VfelN0YXRJbnZlbnRvcnlz +DwAAAG9taXRfc2ltdWxhdGlvbmkAAAAAcwgAAABxdWFudGl0eWYDMC4wcwMAAABsb2dzBAAAAFNR +TDpzEQAAAHBvcnRhbF9zaW11bGF0aW9ucwwAAABnZXRJbnZlbnRvcnlzBQAAAHNyY19fKBUAAABz +CQAAAF9nZXRhdHRyX3MCAAAAa3dzCQAAAHNlbGVjdGlvbnMGAAAAcGFyYW1zcwMAAABMT0dzBwAA +AGNvbnRleHRzCgAAAHByZWZlcmVuY2VzCQAAAGZyb21fZGF0ZXMHAAAAX3dyaXRlX3MHAAAAYXRf +ZGF0ZXMQAAAAc2ltdWxhdGlvbl9zdGF0ZXMQAAAAc2VjdGlvbl9jYXRlZ29yeXMJAAAAX2dldGl0 +ZW1fcwMAAAB1cmxzCAAAAGN1cnJlbmN5cwgAAABLZXlFcnJvcnMHAAAAX2FwcGx5X3MFAAAAcXVl +cnlzBwAAAHJlc3VsdHNzAwAAAHJvd3MFAAAAdG90YWwoFgAAAHMFAAAAYnJhaW5zCQAAAHNlbGVj +dGlvbnMCAAAAa3dzCQAAAF9nZXRhdHRyX3MGAAAAcGFyYW1zcwMAAABMT0dzBwAAAGNvbnRleHRz +CgAAAHByZWZlcmVuY2VzCQAAAGZyb21fZGF0ZXMHAAAAX3dyaXRlX3MHAAAAYXRfZGF0ZXMQAAAA +c2ltdWxhdGlvbl9zdGF0ZXMQAAAAc2VjdGlvbl9jYXRlZ29yeXMJAAAAX2dldGl0ZW1fcwMAAAB1 +cmxzCAAAAGN1cnJlbmN5cwgAAABLZXlFcnJvcnMHAAAAX2FwcGx5X3MFAAAAcXVlcnlzBwAAAHJl +c3VsdHNzAwAAAHJvd3MFAAAAdG90YWwoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzGQAA +AEFjY291bnRNb2R1bGVfc3RhdEJhbGFuY2UBAAAAc2IAAAAfAQYBCQMbARIBBwEUARIBBwEUARIB +BwEUARIBBwEUAgMBDwEHARUBJwEOAQUDJAITASABEwEgAhABIwEQASMBEwEgARABHAEjAhMBFwET +ARQCFQEJAQ8BCQENARoBBwU6ASgCAAAAcwQAAABOb25lcxkAAABBY2NvdW50TW9kdWxlX3N0YXRC +YWxhbmNlKAIAAABzBAAAAE5vbmVzGQAAAEFjY291bnRNb2R1bGVfc3RhdEJhbGFuY2UoAAAAACgA +AAAAcw8AAABTY3JpcHQgKFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value> </item> <item> <key> <string>_dav_writelocks</string> </key> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_statTotalSourceCredit.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_statTotalSourceCredit.xml index 7d589e0a63be9d095850fe5498c914ebb21129c4..f815ffe05227d6803f358c3cbbc1c8a2d9c608a4 100755 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_statTotalSourceCredit.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_statTotalSourceCredit.xml @@ -66,25 +66,25 @@ </item> <item> <key> <string>_body</string> </key> - <value> <string>return - context.AccountModule_statBalance(brain, selection, omit_output=1, **kw)\n + <value> <string>return - context.AccountModule_statBalance(brain, selection, omit_input=1, **kw) or 0\n </string> </value> </item> <item> <key> <string>_code</string> </key> <value> <string encoding="base64">YwAAAAAAAAAAAgAAAEAAAABzEAAAAGUAAGQBAIQBAFoBAGQAAFMoAgAAAE5jAgAAAAYAAAAIAAAA -SwAAAHMnAAAAdAAAdAEAdAIAZAEAgwIAfAEAfAAAZAIAZAMAfAIAjQMBC1NkAABTKAQAAABOcxkA -AABBY2NvdW50TW9kdWxlX3N0YXRCYWxhbmNlcwsAAABvbWl0X291dHB1dGkBAAAAKAYAAABzBwAA -AF9hcHBseV9zCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dHMFAAAAYnJhaW5zCQAAAHNlbGVjdGlv -bnMCAAAAa3coBgAAAHMJAAAAc2VsZWN0aW9ucwUAAABicmFpbnMCAAAAa3dzBwAAAF9hcHBseV9z -CQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dCgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMj -AAAAQWNjb3VudE1vZHVsZV9zdGF0VG90YWxTb3VyY2VDcmVkaXQBAAAAcwAAAAAoAgAAAHMEAAAA -Tm9uZXMjAAAAQWNjb3VudE1vZHVsZV9zdGF0VG90YWxTb3VyY2VDcmVkaXQoAgAAAHMEAAAATm9u -ZXMjAAAAQWNjb3VudE1vZHVsZV9zdGF0VG90YWxTb3VyY2VDcmVkaXQoAAAAACgAAAAAcw8AAABT -Y3JpcHQgKFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value> +SwAAAHMuAAAAdAAAdAEAdAIAZAEAgwIAfAEAfAAAZAIAZAMAfAIAjQMBC3AEAAFkBABTZAAAUygF +AAAATnMZAAAAQWNjb3VudE1vZHVsZV9zdGF0QmFsYW5jZXMKAAAAb21pdF9pbnB1dGkBAAAAaQAA +AAAoBgAAAHMHAAAAX2FwcGx5X3MJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0cwUAAABicmFpbnMJ +AAAAc2VsZWN0aW9ucwIAAABrdygGAAAAcwkAAABzZWxlY3Rpb25zBQAAAGJyYWlucwIAAABrd3MH +AAAAX2FwcGx5X3MJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0KAAAAAAoAAAAAHMPAAAAU2NyaXB0 +IChQeXRob24pcyMAAABBY2NvdW50TW9kdWxlX3N0YXRUb3RhbFNvdXJjZUNyZWRpdAEAAABzAAAA +ACgCAAAAcwQAAABOb25lcyMAAABBY2NvdW50TW9kdWxlX3N0YXRUb3RhbFNvdXJjZUNyZWRpdCgC +AAAAcwQAAABOb25lcyMAAABBY2NvdW50TW9kdWxlX3N0YXRUb3RhbFNvdXJjZUNyZWRpdCgAAAAA +KAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </value> </item> <item> <key> <string>_filepath</string> </key> - <value> <string>Script (Python):/nexedi/portal_skins/local_accounting/AccountModule_statTotalSourceCredit</string> </value> + <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_statTotalSourceCredit</string> </value> </item> <item> <key> <string>_params</string> </key> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_statTotalSourceDebit.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_statTotalSourceDebit.xml index 25fb77e20c855c7e87b03cbf12b28a3c3f66bb65..fe8a592226874c88b51a9e9d982a4573d2c4333b 100755 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_statTotalSourceDebit.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_statTotalSourceDebit.xml @@ -66,21 +66,21 @@ </item> <item> <key> <string>_body</string> </key> - <value> <string>return context.AccountModule_statBalance(brain, selection, omit_input=1, float_value=1, **kw)\n + <value> <string>return context.AccountModule_statBalance(brain, selection, omit_output=1, float_value=1, **kw)\n </string> </value> </item> <item> <key> <string>_code</string> </key> <value> <string encoding="base64">YwAAAAAAAAAAAgAAAEAAAABzEAAAAGUAAGQBAIQBAFoBAGQAAFMoAgAAAE5jAgAAAAYAAAAKAAAA SwAAAHMsAAAAdAAAdAEAdAIAZAEAgwIAfAEAfAAAZAIAZAMAZAQAZAMAfAIAjQMCU2QAAFMoBQAA -AE5zGQAAAEFjY291bnRNb2R1bGVfc3RhdEJhbGFuY2VzCgAAAG9taXRfaW5wdXRpAQAAAHMLAAAA -ZmxvYXRfdmFsdWUoBgAAAHMHAAAAX2FwcGx5X3MJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0cwUA -AABicmFpbnMJAAAAc2VsZWN0aW9ucwIAAABrdygGAAAAcwkAAABzZWxlY3Rpb25zBQAAAGJyYWlu -cwIAAABrd3MHAAAAX2FwcGx5X3MJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0KAAAAAAoAAAAAHMP -AAAAU2NyaXB0IChQeXRob24pcyIAAABBY2NvdW50TW9kdWxlX3N0YXRUb3RhbFNvdXJjZURlYml0 -AQAAAHMAAAAAKAIAAABzBAAAAE5vbmVzIgAAAEFjY291bnRNb2R1bGVfc3RhdFRvdGFsU291cmNl -RGViaXQoAgAAAHMEAAAATm9uZXMiAAAAQWNjb3VudE1vZHVsZV9zdGF0VG90YWxTb3VyY2VEZWJp -dCgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </value> +AE5zGQAAAEFjY291bnRNb2R1bGVfc3RhdEJhbGFuY2VzCwAAAG9taXRfb3V0cHV0aQEAAABzCwAA +AGZsb2F0X3ZhbHVlKAYAAABzBwAAAF9hcHBseV9zCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dHMF +AAAAYnJhaW5zCQAAAHNlbGVjdGlvbnMCAAAAa3coBgAAAHMJAAAAc2VsZWN0aW9ucwUAAABicmFp +bnMCAAAAa3dzBwAAAF9hcHBseV9zCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dCgAAAAAKAAAAABz +DwAAAFNjcmlwdCAoUHl0aG9uKXMiAAAAQWNjb3VudE1vZHVsZV9zdGF0VG90YWxTb3VyY2VEZWJp +dAEAAABzAAAAACgCAAAAcwQAAABOb25lcyIAAABBY2NvdW50TW9kdWxlX3N0YXRUb3RhbFNvdXJj +ZURlYml0KAIAAABzBAAAAE5vbmVzIgAAAEFjY291bnRNb2R1bGVfc3RhdFRvdGFsU291cmNlRGVi +aXQoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value> </item> <item> <key> <string>_dav_writelocks</string> </key> @@ -90,7 +90,7 @@ dCgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string </item> <item> <key> <string>_filepath</string> </key> - <value> <string>Script (Python):/nexedi/portal_skins/local_accounting/AccountModule_statTotalSourceDebit</string> </value> + <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/AccountModule_statTotalSourceDebit</string> </value> </item> <item> <key> <string>_params</string> </key> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewAccountList.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewAccountList.xml index ae5ed5a6f3685363ce9cd2a9756482b53f56c01e..739ef3f8cdae39faa2235aeeda871d9667b441d8 100755 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewAccountList.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewAccountList.xml @@ -65,7 +65,6 @@ <string>right</string> <string>center</string> <string>bottom</string> - <string>hidden</string> </list> </value> </item> @@ -85,14 +84,6 @@ <list/> </value> </item> - <item> - <key> <string>hidden</string> </key> - <value> - <list> - <string>listbox_preferred_gap_id</string> - </list> - </value> - </item> <item> <key> <string>left</string> </key> <value> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewAccountStatementReport.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewAccountStatementReport.xml new file mode 100755 index 0000000000000000000000000000000000000000..16bda318b8a54ff3c04feb9115860683dce2658c --- /dev/null +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewAccountStatementReport.xml @@ -0,0 +1,146 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <tuple> + <string>Products.ERP5Form.Report</string> + <string>ERP5Report</string> + </tuple> + <none/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>__ac_local_roles__</string> </key> + <value> + <none/> + </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/> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>_owner</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>action</string> </key> + <value> <string></string> </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>Default</string> + <string>2</string> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>2</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>Default</string> </key> + <value> + <list> + <string>from_date</string> + <string>at_date</string> + <string>transaction_section_category</string> + <string>transaction_simulation_state</string> + <string>account</string> + <string>destination_section</string> + <string>source_payment</string> + <string>omit_grouping_reference</string> + </list> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>AccountModule_viewAccountStatementReport</string> </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string>AccountModule_viewAccountStatementReport</string> </value> + </item> + <item> + <key> <string>pt</string> </key> + <value> <string>report_view</string> </value> + </item> + <item> + <key> <string>report_method</string> </key> + <value> <string>AccountModule_getAccountStatementReportSectionList</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>Account Statement</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> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewAccountStatementReportDialog.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewAccountStatementReportDialog.xml new file mode 100755 index 0000000000000000000000000000000000000000..35dbb4f5f1c3def21037d6cad5ed7b92d023789d --- /dev/null +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_viewAccountStatementReportDialog.xml @@ -0,0 +1,158 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <tuple> + <string>Products.ERP5Form.Form</string> + <string>ERP5Form</string> + </tuple> + <none/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>__ac_local_roles__</string> </key> + <value> + <none/> + </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/> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>_owner</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>action</string> </key> + <value> <string>AccountModule_viewAccountStatementReport</string> </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>Default</string> + <string>left</string> + <string>bottom</string> + <string>diabled</string> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>Default</string> </key> + <value> + <list> + <string>my_transaction_section_category</string> + <string>my_from_date</string> + <string>my_at_date</string> + <string>my_portal_skin</string> + </list> + </value> + </item> + <item> + <key> <string>bottom</string> </key> + <value> + <list> + <string>my_account</string> + <string>my_destination_section</string> + <string>my_source_payment</string> + </list> + </value> + </item> + <item> + <key> <string>diabled</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>left</string> </key> + <value> + <list> + <string>my_transaction_simulation_state</string> + </list> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>AccountModule_viewAccountStatementReportDialog</string> </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string>AccountModule_viewGeneralLedgerReportDialog</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>Account Statement</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> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getDestinationSectionItemList.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getDestinationSectionItemList.xml new file mode 100755 index 0000000000000000000000000000000000000000..4a65999617fad3ca6a0dc4c880e9da0f4ecef674 --- /dev/null +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getDestinationSectionItemList.xml @@ -0,0 +1,206 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <tuple> + <string>Products.PythonScripts.PythonScript</string> + <string>PythonScript</string> + </tuple> + <none/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Python_magic</string> </key> + <value> <string encoding="base64">O/INCg==</string> </value> + </item> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>__ac_local_roles__</string> </key> + <value> + <none/> + </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>_body</string> </key> + <value> <string>account = None\n +if account == \'\' : \n + if (hasattr(context, \'getPortalType\') and context.getPortalType() == \'Account\') :\n + account = context\n +elif same_type(account, \'\') : \n + account = context.getPortalObject().restrictedTraverse(account)\n +\n +node_uid = None\n +if account is not None : \n + node_uid = account.getUid()\n +\n +ptype_translated_dict = {}\n +def translatePortalType(ptype) : \n + if not ptype_translated_dict.has_key(ptype) : \n + ptype_translated_dict[ptype] = context.Base_TranslateString(ptype)\n + return ptype_translated_dict[ptype]\n +\n +item_list = [("", "")]\n +for entity in context.Account_zDistinctSectionList(node_uid = node_uid): \n + item_list.append(("%s (%s)" % (entity[\'title\'], translatePortalType(entity[\'portal_type\'])), entity[\'relative_url\']))\n +\n +return item_list\n +</string> </value> + </item> + <item> + <key> <string>_code</string> </key> + <value> <string encoding="base64">YwAAAAAAAAAAAgAAAEAAAABzEAAAAGQBAGQCAIQBAFoAAGQAAFMoAwAAAE5zAAAAAGMBAAAADQAA +ABMAAAADAAAAcz4BAAB0AAB9AAB8AABkAQBqAgBvNwABdAIAdAMAZAIAgwIAbxYAAXQEAHQDAGQC +AIMCAIMAAGQDAGoCAG8KAAF0AwB9AABxfwABbjYAAXQFAHwAAGQBAIMCAG8lAAF0BAB0BAB0AwBk +BACDAgCDAABkBQCDAgB8AACDAQB9AABuAQABdAAAfQYAfAAAdAAAagkAbxYAAXQEAHwAAGQGAIMC +AIMAAH0GAG4BAAFoAACJAACHAABkBwCGAAB9CABkAQBkAQBmAgBnAQB9CQB4agB0CgB0BAB0AwBk +CACDAgBkCQB8BgCDAAGDAQBEXUoAfQsAdAQAfAkAZAoAgwIAZAsAdAwAfAsAZAwAgwIAfAgAdAwA +fAsAZA0AgwIAgwEAZgIAFnQMAHwLAGQOAIMCAGYCAIMBAAFx6ABXfAkAU2QAAFMoDwAAAE5zAAAA +AHMNAAAAZ2V0UG9ydGFsVHlwZXMHAAAAQWNjb3VudHMPAAAAZ2V0UG9ydGFsT2JqZWN0cxIAAABy +ZXN0cmljdGVkVHJhdmVyc2VzBgAAAGdldFVpZGMBAAAABgAAAAcAAAADAAAAc0sAAAB0AACIAABk +AQCDAgB8AACDAQAMbyMAAXQAAHQDAGQCAIMCAHwAAIMBAHQEAIgAAIMBAHwAADxuAQABdAUAiAAA +fAAAgwIAU2QAAFMoAwAAAE5zBwAAAGhhc19rZXlzFAAAAEJhc2VfVHJhbnNsYXRlU3RyaW5nKAYA +AABzCQAAAF9nZXRhdHRyX3MVAAAAcHR5cGVfdHJhbnNsYXRlZF9kaWN0cwUAAABwdHlwZXMHAAAA +Y29udGV4dHMHAAAAX3dyaXRlX3MJAAAAX2dldGl0ZW1fKAYAAABzBQAAAHB0eXBlcwkAAABfZ2V0 +YXR0cl9zFQAAAHB0eXBlX3RyYW5zbGF0ZWRfZGljdHMHAAAAY29udGV4dHMHAAAAX3dyaXRlX3MJ +AAAAX2dldGl0ZW1fKAEAAABzFQAAAHB0eXBlX3RyYW5zbGF0ZWRfZGljdCgAAAAAcw8AAABTY3Jp +cHQgKFB5dGhvbilzEwAAAHRyYW5zbGF0ZVBvcnRhbFR5cGUNAAAAcwYAAAAAARcBIwFzHAAAAEFj +Y291bnRfekRpc3RpbmN0U2VjdGlvbkxpc3RzCAAAAG5vZGVfdWlkcwYAAABhcHBlbmRzBwAAACVz +ICglcylzBQAAAHRpdGxlcwsAAABwb3J0YWxfdHlwZXMMAAAAcmVsYXRpdmVfdXJsKA0AAABzBAAA +AE5vbmVzBwAAAGFjY291bnRzBwAAAGhhc2F0dHJzBwAAAGNvbnRleHRzCQAAAF9nZXRhdHRyX3MJ +AAAAc2FtZV90eXBlcwgAAABub2RlX3VpZHMVAAAAcHR5cGVfdHJhbnNsYXRlZF9kaWN0cxMAAAB0 +cmFuc2xhdGVQb3J0YWxUeXBlcwkAAABpdGVtX2xpc3RzCQAAAF9nZXRpdGVyX3MGAAAAZW50aXR5 +cwkAAABfZ2V0aXRlbV8oDQAAAHMHAAAAYWNjb3VudHMEAAAATm9uZXMHAAAAaGFzYXR0cnMHAAAA +Y29udGV4dHMJAAAAX2dldGF0dHJfcwkAAABzYW1lX3R5cGVzCAAAAG5vZGVfdWlkcxUAAABwdHlw +ZV90cmFuc2xhdGVkX2RpY3RzEwAAAHRyYW5zbGF0ZVBvcnRhbFR5cGVzCQAAAGl0ZW1fbGlzdHMJ +AAAAX2dldGl0ZXJfcwYAAABlbnRpdHlzCQAAAF9nZXRpdGVtXygAAAAAKAEAAABzFQAAAHB0eXBl +X3RyYW5zbGF0ZWRfZGljdHMPAAAAU2NyaXB0IChQeXRob24pcyUAAABBY2NvdW50X2dldERlc3Rp +bmF0aW9uU2VjdGlvbkl0ZW1MaXN0AQAAAHMeAAAABgENASkBDgEQASUCBgENARYCBgEMBQ8BHwAJ +AUUCKAEAAABzJQAAAEFjY291bnRfZ2V0RGVzdGluYXRpb25TZWN0aW9uSXRlbUxpc3QoAQAAAHMl +AAAAQWNjb3VudF9nZXREZXN0aW5hdGlvblNlY3Rpb25JdGVtTGlzdCgAAAAAKAAAAABzDwAAAFNj +cmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </value> + </item> + <item> + <key> <string>_filepath</string> </key> + <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/Account_getDestinationSectionItemList</string> </value> + </item> + <item> + <key> <string>_owner</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>account = \'\'</string> </value> + </item> + <item> + <key> <string>errors</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>func_code</string> </key> + <value> + <object> + <klass> + <global name="FuncCode" module="Shared.DC.Scripts.Signature"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>co_argcount</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>co_varnames</string> </key> + <value> + <tuple> + <string>account</string> + <string>None</string> + <string>hasattr</string> + <string>context</string> + <string>_getattr_</string> + <string>same_type</string> + <string>node_uid</string> + <string>ptype_translated_dict</string> + <string>translatePortalType</string> + <string>item_list</string> + <string>_getiter_</string> + <string>entity</string> + <string>_getitem_</string> + </tuple> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>func_defaults</string> </key> + <value> + <tuple> + <string></string> + </tuple> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Account_getDestinationSectionItemList</string> </value> + </item> + <item> + <key> <string>warnings</string> </key> + <value> + <tuple/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getDestinationSectionList.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getDestinationSectionList.xml new file mode 100755 index 0000000000000000000000000000000000000000..ccf4460b7f4402cf6e9b771ec3ed7cec6ff4b57f --- /dev/null +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getDestinationSectionList.xml @@ -0,0 +1,175 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <tuple> + <string>Products.PythonScripts.PythonScript</string> + <string>PythonScript</string> + </tuple> + <none/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Python_magic</string> </key> + <value> <string encoding="base64">O/INCg==</string> </value> + </item> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>__ac_local_roles__</string> </key> + <value> + <none/> + </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>_body</string> </key> + <value> <string>account = context\n +destination_section_set = {}\n +\n +for line in account.Account_getAccountingTransactionList(**kw) :\n + movement_path = line.current_transaction_line_path\n + movement = context.restrictedTraverse(movement_path)\n + destination_section_set[movement.getDestinationSection()] = 1 \n +\n +return destination_section_set.keys()\n +</string> </value> + </item> + <item> + <key> <string>_code</string> </key> + <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAAAsAAAAKAAAASwAA +AHOJAAAAdAAAfQIAaAAAfQMAeGYAdAMAdAQAdAUAfAIAZAEAgwIAfAAAjQEAgwEARF1GAH0HAHQF +AHwHAGQCAIMCAH0IAHQFAHQAAGQDAIMCAHwIAIMBAH0JAGQEAHQKAHwDAIMBAHQFAHwJAGQFAIMC +AIMAADxxKwBXdAUAfAMAZAYAgwIAgwAAU2QAAFMoBwAAAE5zJAAAAEFjY291bnRfZ2V0QWNjb3Vu +dGluZ1RyYW5zYWN0aW9uTGlzdHMdAAAAY3VycmVudF90cmFuc2FjdGlvbl9saW5lX3BhdGhzEgAA +AHJlc3RyaWN0ZWRUcmF2ZXJzZWkBAAAAcxUAAABnZXREZXN0aW5hdGlvblNlY3Rpb25zBAAAAGtl +eXMoCwAAAHMHAAAAY29udGV4dHMHAAAAYWNjb3VudHMXAAAAZGVzdGluYXRpb25fc2VjdGlvbl9z +ZXRzCQAAAF9nZXRpdGVyX3MHAAAAX2FwcGx5X3MJAAAAX2dldGF0dHJfcwIAAABrd3MEAAAAbGlu +ZXMNAAAAbW92ZW1lbnRfcGF0aHMIAAAAbW92ZW1lbnRzBwAAAF93cml0ZV8oCwAAAHMCAAAAa3dz +BwAAAGNvbnRleHRzBwAAAGFjY291bnRzFwAAAGRlc3RpbmF0aW9uX3NlY3Rpb25fc2V0cwkAAABf +Z2V0aXRlcl9zBwAAAF9hcHBseV9zCQAAAF9nZXRhdHRyX3MEAAAAbGluZXMNAAAAbW92ZW1lbnRf +cGF0aHMIAAAAbW92ZW1lbnRzBwAAAF93cml0ZV8oAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhv +bilzIQAAAEFjY291bnRfZ2V0RGVzdGluYXRpb25TZWN0aW9uTGlzdAEAAABzDgAAAAYBBgIfAAYB +DwEVASACKAEAAABzIQAAAEFjY291bnRfZ2V0RGVzdGluYXRpb25TZWN0aW9uTGlzdCgBAAAAcyEA +AABBY2NvdW50X2dldERlc3RpbmF0aW9uU2VjdGlvbkxpc3QoAAAAACgAAAAAcw8AAABTY3JpcHQg +KFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value> + </item> + <item> + <key> <string>_filepath</string> </key> + <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/Account_getDestinationSectionList</string> </value> + </item> + <item> + <key> <string>_owner</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>**kw</string> </value> + </item> + <item> + <key> <string>errors</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>func_code</string> </key> + <value> + <object> + <klass> + <global name="FuncCode" module="Shared.DC.Scripts.Signature"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>co_argcount</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>co_varnames</string> </key> + <value> + <tuple> + <string>kw</string> + <string>context</string> + <string>account</string> + <string>destination_section_set</string> + <string>_getiter_</string> + <string>_apply_</string> + <string>_getattr_</string> + <string>line</string> + <string>movement_path</string> + <string>movement</string> + <string>_write_</string> + </tuple> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>func_defaults</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Account_getDestinationSectionList</string> </value> + </item> + <item> + <key> <string>warnings</string> </key> + <value> + <tuple/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getGapId.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getGapId.xml index eb5d606ba847ad4a894ed8d1802373e6c2685066..14953e52f1f3feba1099b9493e890caa48f4734c 100755 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getGapId.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getGapId.xml @@ -73,26 +73,27 @@ current_gap = context.getPortalObject().portal_preferences.getPreferredAccountin for gap in context.getGapValueList() : \n if current_gap in gap.getPath() : \n return gap.getId()\n +return \'\'\n </string> </value> </item> <item> <key> <string>_code</string> </key> <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAAAUAAAALAAAAQwAA -AHN7AAAAdAAAdAAAdAAAdAEAZAEAgwIAgwAAZAIAgwIAZAMAgwIAgwAAfQIAeE0AdAMAdAAAdAEA +AHN/AAAAdAAAdAAAdAAAdAEAZAEAgwIAgwAAZAIAgwIAZAMAgwIAgwAAfQIAeE0AdAMAdAAAdAEA ZAQAgwIAgwAAgwEARF0zAH0EAHwCAHQAAHwEAGQFAIMCAIMAAGoGAG8UAAF0AAB8BABkBgCDAgCD -AABTcUAAAXFAAFdkAABTKAcAAABOcw8AAABnZXRQb3J0YWxPYmplY3RzEgAAAHBvcnRhbF9wcmVm -ZXJlbmNlc3MkAAAAZ2V0UHJlZmVycmVkQWNjb3VudGluZ1RyYW5zYWN0aW9uR2Fwcw8AAABnZXRH -YXBWYWx1ZUxpc3RzBwAAAGdldFBhdGhzBQAAAGdldElkKAUAAABzCQAAAF9nZXRhdHRyX3MHAAAA -Y29udGV4dHMLAAAAY3VycmVudF9nYXBzCQAAAF9nZXRpdGVyX3MDAAAAZ2FwKAUAAABzCQAAAF9n -ZXRhdHRyX3MHAAAAY29udGV4dHMLAAAAY3VycmVudF9nYXBzCQAAAF9nZXRpdGVyX3MDAAAAZ2Fw -KAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcxAAAABBY2NvdW50X2dldEdhcElkAQAAAHMK -AAAAAAInAhkABgEZASgBAAAAcxAAAABBY2NvdW50X2dldEdhcElkKAEAAABzEAAAAEFjY291bnRf -Z2V0R2FwSWQoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMA -AAAA</string> </value> +AABTcUAAAXFAAFdkBwBTZAAAUygIAAAATnMPAAAAZ2V0UG9ydGFsT2JqZWN0cxIAAABwb3J0YWxf +cHJlZmVyZW5jZXNzJAAAAGdldFByZWZlcnJlZEFjY291bnRpbmdUcmFuc2FjdGlvbkdhcHMPAAAA +Z2V0R2FwVmFsdWVMaXN0cwcAAABnZXRQYXRocwUAAABnZXRJZHMAAAAAKAUAAABzCQAAAF9nZXRh +dHRyX3MHAAAAY29udGV4dHMLAAAAY3VycmVudF9nYXBzCQAAAF9nZXRpdGVyX3MDAAAAZ2FwKAUA +AABzCQAAAF9nZXRhdHRyX3MHAAAAY29udGV4dHMLAAAAY3VycmVudF9nYXBzCQAAAF9nZXRpdGVy +X3MDAAAAZ2FwKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcxAAAABBY2NvdW50X2dldEdh +cElkAQAAAHMMAAAAAAInAhkABgEZARgBKAEAAABzEAAAAEFjY291bnRfZ2V0R2FwSWQoAQAAAHMQ +AAAAQWNjb3VudF9nZXRHYXBJZCgAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1v +ZHVsZT4BAAAAcwAAAAA=</string> </value> </item> <item> <key> <string>_filepath</string> </key> - <value> <string>Script (Python):/nexedi/erp5_accounting/Account_getGapId</string> </value> + <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/Account_getGapId</string> </value> </item> <item> <key> <string>_params</string> </key> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getGapItemList.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getGapItemList.xml index 2d6aafafff0be34b811e31f1545df0bbadc268a9..2ea314865db54de7b602a48fee8fc178d5d32e17 100755 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getGapItemList.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getGapItemList.xml @@ -77,34 +77,50 @@ try :\n except KeyError :\n raise\n gap_root = context.getPortalDefaultGapRoot()\n -obj = context.portal_categories.resolveCategory(gap_root)\n -return obj.getCategoryChildItemList(base=0, display_method=display, sort_method=sort)\n +\n +def getGapItemList(gap_root, portal_path) : \n + obj = context.portal_categories.resolveCategory(gap_root)\n + return obj.getCategoryChildItemList(base=0, display_method=display, sort_method=sort)\n +\n +from Products.ERP5Type.Cache import CachingMethod\n +getGapItemList = CachingMethod(getGapItemList, id=\'Account.getGapItemList\')\n +return getGapItemList(gap_root=gap_root, portal_path=context.portal_url())\n </string> </value> </item> <item> <key> <string>_code</string> </key> - <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAAAcAAAAPAAAAAwAA -AHOjAAAAZAEAhAAAiQAAhwAAZAIAhgAAfQEAeR8AdAIAdAIAdAMAZAMAgwIAZAQAgwIAgwAAfQQA -V24oAAR0BQBqCgBvHAABAQEBggAAdAIAdAMAZAUAgwIAgwAAfQQAbgIAAVh0AgB0AgB0AwBkBgCD -AgBkBwCDAgB8BACDAQB9BgB0AgB8BgBkCACDAgBkCQBkCgBkCwCIAABkDAB8AQCDAANTZAAAUygN -AAAATmMBAAAAAgAAAAYAAABDAAAAcyoAAABkAQB0AAB8AABkAgCDAgCDAAB0AAB8AABkAwCDAgCD -AABmAgAWU2QAAFMoBAAAAE5zBwAAACVzIC0gJXNzBQAAAGdldElkcwgAAABnZXRUaXRsZSgCAAAA -cwkAAABfZ2V0YXR0cl9zAQAAAHgoAgAAAHMBAAAAeHMJAAAAX2dldGF0dHJfKAAAAAAoAAAAAHMP -AAAAU2NyaXB0IChQeXRob24pcwcAAABkaXNwbGF5AQAAAHMCAAAAAAFjAgAAAAQAAAAFAAAAAwAA -AHMdAAAAdAAAiAAAfAAAgwEAiAAAfAEAgwEAgwIAU2QAAFMoAQAAAE4oBAAAAHMDAAAAY21wcwcA -AABkaXNwbGF5cwEAAAB4cwEAAAB5KAQAAABzAQAAAHhzAQAAAHlzAwAAAGNtcHMHAAAAZGlzcGxh -eSgBAAAAcwcAAABkaXNwbGF5KAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMEAAAAc29ydAQAAABz -AgAAAAABcxIAAABwb3J0YWxfcHJlZmVyZW5jZXNzJAAAAGdldFByZWZlcnJlZEFjY291bnRpbmdU -cmFuc2FjdGlvbkdhcHMXAAAAZ2V0UG9ydGFsRGVmYXVsdEdhcFJvb3RzEQAAAHBvcnRhbF9jYXRl -Z29yaWVzcw8AAAByZXNvbHZlQ2F0ZWdvcnlzGAAAAGdldENhdGVnb3J5Q2hpbGRJdGVtTGlzdHME -AAAAYmFzZWkAAAAAcw4AAABkaXNwbGF5X21ldGhvZHMLAAAAc29ydF9tZXRob2QoBwAAAHMHAAAA -ZGlzcGxheXMEAAAAc29ydHMJAAAAX2dldGF0dHJfcwcAAABjb250ZXh0cwgAAABnYXBfcm9vdHMI -AAAAS2V5RXJyb3JzAwAAAG9iaigHAAAAcwcAAABkaXNwbGF5cwQAAABzb3J0cwkAAABfZ2V0YXR0 -cl9zBwAAAGNvbnRleHRzCAAAAGdhcF9yb290cwgAAABLZXlFcnJvcnMDAAAAb2JqKAAAAAAoAQAA -AHMHAAAAZGlzcGxheXMPAAAAU2NyaXB0IChQeXRob24pcxYAAABBY2NvdW50X2dldEdhcEl0ZW1M -aXN0AQAAAHMQAAAACQMMAwMBHwEOAQMBFwEeASgBAAAAcxYAAABBY2NvdW50X2dldEdhcEl0ZW1M -aXN0KAEAAABzFgAAAEFjY291bnRfZ2V0R2FwSXRlbUxpc3QoAAAAACgAAAAAcw8AAABTY3JpcHQg -KFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value> + <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAAAkAAAASAAAAAwAA +AHOwAAAAZAEAhAAAiQEAhwEAZAIAhgAAiQAAeR8AdAIAdAIAdAMAZAMAgwIAZAQAgwIAgwAAfQQA +V24oAAR0BQBqCgBvHAABAQEBggAAdAIAdAMAZAUAgwIAgwAAfQQAbgIAAViHAACHAQBkBgCGAAB9 +BgBkBwBrBwBsCAB9CAABfAgAfAYAZAgAZAkAgwEBfQYAfAYAZAoAfAQAZAsAdAIAdAMAZAwAgwIA +gwAAgwACU2QAAFMoDQAAAE5jAQAAAAIAAAAGAAAAQwAAAHMqAAAAZAEAdAAAfAAAZAIAgwIAgwAA +dAAAfAAAZAMAgwIAgwAAZgIAFlNkAABTKAQAAABOcwcAAAAlcyAtICVzcwUAAABnZXRJZHMIAAAA +Z2V0VGl0bGUoAgAAAHMJAAAAX2dldGF0dHJfcwEAAAB4KAIAAABzAQAAAHhzCQAAAF9nZXRhdHRy +XygAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMHAAAAZGlzcGxheQEAAABzAgAAAAABYwIA +AAAEAAAABQAAAAMAAABzHQAAAHQAAIgAAHwAAIMBAIgAAHwBAIMBAIMCAFNkAABTKAEAAABOKAQA +AABzAwAAAGNtcHMHAAAAZGlzcGxheXMBAAAAeHMBAAAAeSgEAAAAcwEAAAB4cwEAAAB5cwMAAABj +bXBzBwAAAGRpc3BsYXkoAQAAAHMHAAAAZGlzcGxheSgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilz +BAAAAHNvcnQEAAAAcwIAAAAAAXMSAAAAcG9ydGFsX3ByZWZlcmVuY2VzcyQAAABnZXRQcmVmZXJy +ZWRBY2NvdW50aW5nVHJhbnNhY3Rpb25HYXBzFwAAAGdldFBvcnRhbERlZmF1bHRHYXBSb290YwIA +AAAHAAAACAAAAAMAAABzRAAAAHQAAHQAAHQBAGQBAIMCAGQCAIMCAHwAAIMBAH0EAHQAAHwEAGQD +AIMCAGQEAGQFAGQGAIgBAGQHAIgAAIMAA1NkAABTKAgAAABOcxEAAABwb3J0YWxfY2F0ZWdvcmll +c3MPAAAAcmVzb2x2ZUNhdGVnb3J5cxgAAABnZXRDYXRlZ29yeUNoaWxkSXRlbUxpc3RzBAAAAGJh +c2VpAAAAAHMOAAAAZGlzcGxheV9tZXRob2RzCwAAAHNvcnRfbWV0aG9kKAYAAABzCQAAAF9nZXRh +dHRyX3MHAAAAY29udGV4dHMIAAAAZ2FwX3Jvb3RzAwAAAG9ianMHAAAAZGlzcGxheXMEAAAAc29y +dCgHAAAAcwgAAABnYXBfcm9vdHMLAAAAcG9ydGFsX3BhdGhzCQAAAF9nZXRhdHRyX3MHAAAAY29u +dGV4dHMDAAAAb2JqcwcAAABkaXNwbGF5cwQAAABzb3J0KAIAAABzBAAAAHNvcnRzBwAAAGRpc3Bs +YXkoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcw4AAABnZXRHYXBJdGVtTGlzdA0AAABzBAAAAAAB +HgEoAQAAAHMNAAAAQ2FjaGluZ01ldGhvZHMCAAAAaWRzFgAAAEFjY291bnQuZ2V0R2FwSXRlbUxp +c3RzCAAAAGdhcF9yb290cwsAAABwb3J0YWxfcGF0aHMKAAAAcG9ydGFsX3VybCgJAAAAcwcAAABk +aXNwbGF5cwQAAABzb3J0cwkAAABfZ2V0YXR0cl9zBwAAAGNvbnRleHRzCAAAAGdhcF9yb290cwgA +AABLZXlFcnJvcnMOAAAAZ2V0R2FwSXRlbUxpc3RzFwAAAFByb2R1Y3RzLkVSUDVUeXBlLkNhY2hl +cw0AAABDYWNoaW5nTWV0aG9kKAkAAABzBwAAAGRpc3BsYXlzBAAAAHNvcnRzCQAAAF9nZXRhdHRy +X3MHAAAAY29udGV4dHMIAAAAZ2FwX3Jvb3RzCAAAAEtleUVycm9ycw4AAABnZXRHYXBJdGVtTGlz +dHMXAAAAUHJvZHVjdHMuRVJQNVR5cGUuQ2FjaGVzDQAAAENhY2hpbmdNZXRob2QoAAAAACgCAAAA +cwQAAABzb3J0cwcAAABkaXNwbGF5cw8AAABTY3JpcHQgKFB5dGhvbilzFgAAAEFjY291bnRfZ2V0 +R2FwSXRlbUxpc3QBAAAAcxQAAAAJAwwDAwEfAQ4BAwEXAg8EDQESASgBAAAAcxYAAABBY2NvdW50 +X2dldEdhcEl0ZW1MaXN0KAEAAABzFgAAAEFjY291bnRfZ2V0R2FwSXRlbUxpc3QoAAAAACgAAAAA +cw8AAABTY3JpcHQgKFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value> </item> <item> <key> <string>_filepath</string> </key> @@ -144,7 +160,9 @@ KFB5dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value> <string>context</string> <string>gap_root</string> <string>KeyError</string> - <string>obj</string> + <string>getGapItemList</string> + <string>Products.ERP5Type.Cache</string> + <string>CachingMethod</string> </tuple> </value> </item> diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getSourcePaymentList.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getSourcePaymentList.xml new file mode 100755 index 0000000000000000000000000000000000000000..4d8f8e5ec36b834c731231ca298afd7ec2f1085b --- /dev/null +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Account_getSourcePaymentList.xml @@ -0,0 +1,174 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <tuple> + <string>Products.PythonScripts.PythonScript</string> + <string>PythonScript</string> + </tuple> + <none/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Python_magic</string> </key> + <value> <string encoding="base64">O/INCg==</string> </value> + </item> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>__ac_local_roles__</string> </key> + <value> + <none/> + </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>_body</string> </key> + <value> <string>account = context\n +\n +source_payment_set = {}\n +\n +for line in account.Account_getAccountingTransactionList() :\n + movement_path = line.current_transaction_line_path\n + movement = context.restrictedTraverse(movement_path)\n + source_payment_set[movement.getSourcePayment()] = 1\n +# if movement.getSourcePayment() is None : \n +# context.log(\'Movement getSourcePayment None \', movement.getPath())\n +return source_payment_set.keys()\n +</string> </value> + </item> + <item> + <key> <string>_code</string> </key> + <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAAAAAAkAAAAJAAAAQwAA +AHODAAAAdAAAfQEAaAAAfQIAeGAAdAMAdAQAfAEAZAEAgwIAgwAAgwEARF1GAH0FAHQEAHwFAGQC +AIMCAH0GAHQEAHQAAGQDAIMCAHwGAIMBAH0HAGQEAHQIAHwCAIMBAHQEAHwHAGQFAIMCAIMAADxx +JQBXdAQAfAIAZAYAgwIAgwAAU2QAAFMoBwAAAE5zJAAAAEFjY291bnRfZ2V0QWNjb3VudGluZ1Ry +YW5zYWN0aW9uTGlzdHMdAAAAY3VycmVudF90cmFuc2FjdGlvbl9saW5lX3BhdGhzEgAAAHJlc3Ry +aWN0ZWRUcmF2ZXJzZWkBAAAAcxAAAABnZXRTb3VyY2VQYXltZW50cwQAAABrZXlzKAkAAABzBwAA +AGNvbnRleHRzBwAAAGFjY291bnRzEgAAAHNvdXJjZV9wYXltZW50X3NldHMJAAAAX2dldGl0ZXJf +cwkAAABfZ2V0YXR0cl9zBAAAAGxpbmVzDQAAAG1vdmVtZW50X3BhdGhzCAAAAG1vdmVtZW50cwcA +AABfd3JpdGVfKAkAAABzBwAAAGNvbnRleHRzBwAAAGFjY291bnRzEgAAAHNvdXJjZV9wYXltZW50 +X3NldHMJAAAAX2dldGl0ZXJfcwkAAABfZ2V0YXR0cl9zBAAAAGxpbmVzDQAAAG1vdmVtZW50X3Bh +dGhzCAAAAG1vdmVtZW50cwcAAABfd3JpdGVfKAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24p +cxwAAABBY2NvdW50X2dldFNvdXJjZVBheW1lbnRMaXN0AQAAAHMOAAAABgIGAhkABgEPARUBIAMo +AQAAAHMcAAAAQWNjb3VudF9nZXRTb3VyY2VQYXltZW50TGlzdCgBAAAAcxwAAABBY2NvdW50X2dl +dFNvdXJjZVBheW1lbnRMaXN0KAAAAAAoAAAAAHMPAAAAU2NyaXB0IChQeXRob24pcwgAAAA8bW9k +dWxlPgEAAABzAAAAAA==</string> </value> + </item> + <item> + <key> <string>_filepath</string> </key> + <value> <string>Script (Python):/nexedi/portal_skins/erp5_accounting/Account_getSourcePaymentList</string> </value> + </item> + <item> + <key> <string>_owner</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>errors</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>func_code</string> </key> + <value> + <object> + <klass> + <global name="FuncCode" module="Shared.DC.Scripts.Signature"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>co_argcount</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>co_varnames</string> </key> + <value> + <tuple> + <string>context</string> + <string>account</string> + <string>source_payment_set</string> + <string>_getiter_</string> + <string>_getattr_</string> + <string>line</string> + <string>movement_path</string> + <string>movement</string> + <string>_write_</string> + </tuple> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>func_defaults</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Account_getSourcePaymentList</string> </value> + </item> + <item> + <key> <string>warnings</string> </key> + <value> + <tuple/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData>