Merge pull request #12 from Noviat/16.0

Syncing from upstream Noviat/account_ebics (16.0)
This commit is contained in:
braintec 2023-09-18 01:14:01 +02:00 committed by GitHub
commit af8d502f67
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 41 additions and 5 deletions

View File

@ -3,7 +3,7 @@
{ {
"name": "EBICS banking protocol", "name": "EBICS banking protocol",
"version": "16.0.1.5.0", "version": "16.0.1.6.1",
"license": "LGPL-3", "license": "LGPL-3",
"author": "Noviat", "author": "Noviat",
"website": "https://www.noviat.com/", "website": "https://www.noviat.com/",

View File

@ -550,6 +550,11 @@ class EbicsFile(models.Model):
currency_code = stmt.xpath( currency_code = stmt.xpath(
"ns:Acct/ns:Ccy/text() | ns:Bal/ns:Amt/@Ccy", namespaces=ns "ns:Acct/ns:Ccy/text() | ns:Bal/ns:Amt/@Ccy", namespaces=ns
)[0] )[0]
# some banks (e.g. COMMERZBANK) add the currency as the last 3 digits
# of the bank account number hence we need to remove this since otherwise
# the journal matching logic fails
if acc_number[-3:] == currency_code:
acc_number = acc_number[:-3]
root_new = deepcopy(root) root_new = deepcopy(root)
entries = False entries = False

View File

@ -109,6 +109,12 @@ class EbicsUserID(models.Model):
"passphrase for every EBICS transaction, hence do not uncheck this " "passphrase for every EBICS transaction, hence do not uncheck this "
"option on a userid for automated EBICS downloads.", "option on a userid for automated EBICS downloads.",
) )
ebics_passphrase_required = fields.Boolean(
compute="_compute_ebics_passphrase_view_modifiers"
)
ebics_passphrase_invisible = fields.Boolean(
compute="_compute_ebics_passphrase_view_modifiers"
)
ebics_ini_letter = fields.Binary( ebics_ini_letter = fields.Binary(
string="EBICS INI Letter", string="EBICS INI Letter",
readonly=True, readonly=True,
@ -208,6 +214,19 @@ class EbicsUserID(models.Model):
rec.ebics_keys_fn rec.ebics_keys_fn
) )
@api.depends("state", "ebics_passphrase")
def _compute_ebics_passphrase_view_modifiers(self):
for rec in self:
if rec.state == "draft":
rec.ebics_passphrase_required = True
rec.ebics_passphrase_invisible = False
elif rec.state == "get_bank_keys":
rec.ebics_passphrase_required = not rec.ebics_passphrase
rec.ebics_passphrase_invisible = rec.ebics_passphrase
else:
rec.ebics_passphrase_required = False
rec.ebics_passphrase_invisible = True
@api.constrains("ebics_key_x509") @api.constrains("ebics_key_x509")
def _check_ebics_key_x509(self): def _check_ebics_key_x509(self):
for cfg in self: for cfg in self:
@ -247,6 +266,14 @@ class EbicsUserID(models.Model):
return self.write({"state": "active_keys"}) return self.write({"state": "active_keys"})
def set_to_get_bank_keys(self): def set_to_get_bank_keys(self):
self.ensure_one()
if self.ebics_config_id.state != "draft":
raise UserError(
_(
"Set the EBICS Configuation record to 'Draft' "
"before starting the Key Renewal process."
)
)
return self.write({"state": "get_bank_keys"}) return self.write({"state": "get_bank_keys"})
def ebics_init_1(self): # noqa: C901 def ebics_init_1(self): # noqa: C901

View File

@ -57,7 +57,7 @@
string="Change Passphrase" string="Change Passphrase"
type="object" type="object"
class="oe_highlight" class="oe_highlight"
attrs="{'invisible': [('ebics_keys_found', '=', False)]}" attrs="{'invisible': ['|', ('ebics_keys_found', '=', False), ('state', '!=', 'active_keys')]}"
/> />
<button <button
name="set_to_draft" name="set_to_draft"
@ -86,12 +86,14 @@
<field name="ebics_keys_found" invisible="1" /> <field name="ebics_keys_found" invisible="1" />
<field name="ebics_keys_fn" invisible="1" /> <field name="ebics_keys_fn" invisible="1" />
<field name="ebics_version" invisible="1" /> <field name="ebics_version" invisible="1" />
<field name="ebics_passphrase_required" invisible="1" />
<field name="ebics_passphrase_invisible" invisible="1" />
<group name="main-left"> <group name="main-left">
<field name="name" /> <field name="name" />
<field <field
name="ebics_passphrase" name="ebics_passphrase"
password="True" password="True"
attrs="{'required': [('ebics_passphrase_store', '=', True)], 'invisible': [('state', '!=', 'draft')]}" attrs="{'required': [('ebics_passphrase_required', '=', True)], 'invisible': [('ebics_passphrase_invisible', '=', True)]}"
/> />
<field name="ebics_passphrase_store" /> <field name="ebics_passphrase_store" />
<field name="transaction_rights" /> <field name="transaction_rights" />

View File

@ -4,7 +4,7 @@
{ {
"name": "account_ebics with OCA Bank Statement Imoort", "name": "account_ebics with OCA Bank Statement Imoort",
"summary": "Use OCA Bank Statement Import with account_ebics", "summary": "Use OCA Bank Statement Import with account_ebics",
"version": "16.0.1.0.1", "version": "16.0.1.0.2",
"author": "Noviat", "author": "Noviat",
"website": "https://www.noviat.com/", "website": "https://www.noviat.com/",
"category": "Hidden", "category": "Hidden",

View File

@ -46,7 +46,9 @@ class AccountStatementImport(models.TransientModel):
We could also create empty bank statement (in state done) to clearly We could also create empty bank statement (in state done) to clearly
show days without transactions via the bank statement list view. show days without transactions via the bank statement list view.
""" """
if self.env.context.get("active_model") == "ebics.file": if self.env.context.get("active_model") != "ebics.file":
return super()._create_bank_statements(stmts_vals, result)
else:
messages = [] messages = []
transactions = False transactions = False
for st_vals in stmts_vals: for st_vals in stmts_vals: