Commit 7afdf612 authored by Rafael Monnerat's avatar Rafael Monnerat

Reuse Previous Accounts instead always create new ones.

The reusage permit use configuration for multiple gap
definitions. Included specific test for Account Configurator Item.
parent 4216ad93
...@@ -57,14 +57,15 @@ class AccountConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -57,14 +57,15 @@ class AccountConfiguratorItem(ConfiguratorItemMixin, XMLObject):
def _build(self, business_configuration): def _build(self, business_configuration):
account_module = self.getPortalObject().account_module account_module = self.getPortalObject().account_module
account = None
account_id = getattr(self, 'account_id', None)
extra_kw = {} extra_kw = {}
account_id = getattr(self, 'account_id', None)
if account_id: if account_id:
# XXX FIXME This cause conflict when use configuration extra_kw['id'] = account_id
# more then once. account = getattr(account_module, account_id, None)
#extra_kw['id'] = account_id
pass if account is None:
account = account_module.newContent( account = account_module.newContent(
portal_type='Account', portal_type='Account',
title=self.getTitle(), title=self.getTitle(),
...@@ -74,6 +75,19 @@ class AccountConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -74,6 +75,19 @@ class AccountConfiguratorItem(ConfiguratorItemMixin, XMLObject):
credit_account=self.isCreditAccount(), credit_account=self.isCreditAccount(),
description=self.getDescription(), description=self.getDescription(),
**extra_kw) **extra_kw)
else:
# Update existing account
if (self.getAccountType() != account.getAccountType()) and \
(self.getFinancialSection() != account.getFinancialSection()):
raise ValueError("The Configurator is trying to overwritte previous configuration information (%s)" % account.getRelativeUrl())
account.edit(title=self.getTitle(), description=self.getDescription())
gap_list = account.getGapList()
# Only include only the additional gap that do not collide.
if self.getGap() not in gap_list:
gap_list.append(self.getGap())
account.setGapList(gap_list)
account.setCreditAccount(self.isCreditAccount())
if self.portal_workflow.isTransitionPossible(account, 'validate'): if self.portal_workflow.isTransitionPossible(account, 'validate'):
account.validate(comment="Validated by Configurator") account.validate(comment="Validated by Configurator")
......
...@@ -50,6 +50,7 @@ class TestConfiguratorItem(TestLiveConfiguratorWorkflowMixin): ...@@ -50,6 +50,7 @@ class TestConfiguratorItem(TestLiveConfiguratorWorkflowMixin):
'erp5_simulation', 'erp5_simulation',
'erp5_pdm', 'erp5_pdm',
'erp5_trade', 'erp5_trade',
'erp5_accounting',
'erp5_configurator_standard_trade_template') 'erp5_configurator_standard_trade_template')
def createConfigurationSave(self): def createConfigurationSave(self):
...@@ -249,6 +250,58 @@ class TestConfiguratorItem(TestLiveConfiguratorWorkflowMixin): ...@@ -249,6 +250,58 @@ class TestConfiguratorItem(TestLiveConfiguratorWorkflowMixin):
self.assertNotEquals(None, security_script) self.assertNotEquals(None, security_script)
self.assertEquals(security_script(), expect_script_outcome) self.assertEquals(security_script(), expect_script_outcome)
def testAccountConfiguratorItem(self):
""" Test Account Configurator Item """
configuration_save = self.createConfigurationSave()
bc = configuration_save.getParentValue()
account_module = self.portal.account_module
account_dict = {
'account_type': 'asset/receivable',
'account_id': 'receivable',
'title': 'Customers',
'gap': 'ias/ifrs/4/41',
'financial_section': 'asset/current_assets/trade_receivables'}
item = configuration_save.addConfigurationItem(
"Account Configurator Item", **account_dict)
self.stepTic()
item._build(bc)
self.stepTic()
account = getattr(account_module, account_dict['account_id'], None)
self.assertNotEquals(account, None)
self.assertEquals(account.getTitle(), account_dict['title'])
self.assertEquals(account.getGap(), account_dict['gap'])
self.assertEquals(account.getFinancialSection(),
account_dict['financial_section'])
self.assertEquals(account.getAccountType(),
account_dict['account_type'])
# Update Account dict and try to create again the same account,
# the account should be only updated instead a new account be created.
account_dict['title'] = 'Clientes'
previous_gap = account_dict['gap']
account_dict['gap'] = 'br/pcg/1/1.1/1.1.2'
item = configuration_save.addConfigurationItem(
"Account Configurator Item", **account_dict)
self.stepTic()
item._build(bc)
self.stepTic()
same_account = getattr(account_module, account_dict['account_id'], None)
self.assertEquals(account, same_account)
self.assertEquals(account.getTitle(), account_dict['title'])
self.assertSameSet(account.getGapList(), [previous_gap,
account_dict['gap']])
self.assertEquals(account.getFinancialSection(),
account_dict['financial_section'])
self.assertEquals(account.getAccountType(),
account_dict['account_type'])
def testAlarmConfiguratorItem(self): def testAlarmConfiguratorItem(self):
""" Test Alarm Configurator Item """ """ Test Alarm Configurator Item """
configuration_save = self.createConfigurationSave() configuration_save = self.createConfigurationSave()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment