[MIG] beta migration of account_usability
This commit is contained in:
@@ -1,2 +1,4 @@
|
||||
from . import account_invoice_mark_sent
|
||||
from . import account_move_reversal
|
||||
from . import res_config_settings
|
||||
from . import account_group_generate
|
||||
|
||||
60
account_usability/wizard/account_group_generate.py
Normal file
60
account_usability/wizard/account_group_generate.py
Normal file
@@ -0,0 +1,60 @@
|
||||
# Copyright 2015-2020 Akretion (http://www.akretion.com)
|
||||
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class AccountGroupGenerate(models.TransientModel):
|
||||
_name = 'account.group.generate'
|
||||
_description = 'Generate Account Groups'
|
||||
|
||||
name_prefix = fields.Char(string='Prefix', required=True, default='Comptes')
|
||||
level = fields.Integer(default=2, required=True)
|
||||
|
||||
def run(self):
|
||||
if self.level < 1:
|
||||
raise UserError(_("The level must be >= 1."))
|
||||
assert isinstance(level, int)
|
||||
ago = self.env['account.group']
|
||||
company = self.env.company
|
||||
groups = ago.search([('company_id', '=', company.id)])
|
||||
if groups:
|
||||
raise UserError(_(
|
||||
"%d account groups already exists in company '%s'. This wizard is "
|
||||
"designed to generate account groups from scratch.")
|
||||
% (len(groups), company.display_name))
|
||||
accounts = self.search([('company_id', '=', company.id)])
|
||||
struct = {'childs': {}}
|
||||
for account in accounts:
|
||||
if len(account.code) <= self.level:
|
||||
raise UserError(_(
|
||||
"The code of account '%s' is %d caracters. "
|
||||
"It cannot be inferior to level (%d).")
|
||||
% (account.display_name, len(account.code), self.level))
|
||||
n = 1
|
||||
parent = struct
|
||||
gparent = False
|
||||
while n <= level:
|
||||
group_code = account.code[:n]
|
||||
if group_code not in parent['childs']:
|
||||
new_group = ago.create({
|
||||
'name': '%s %s' % (name_prefix or '', group_code),
|
||||
'code_prefix_start': group_code,
|
||||
'parent_id': gparent and gparent.id or False,
|
||||
'company_id': company.id,
|
||||
})
|
||||
parent['childs'][group_code] = {'obj': new_group, 'childs': {}}
|
||||
parent = parent['childs'][group_code]
|
||||
gparent = parent['obj']
|
||||
n += 1
|
||||
account.write({'group_id': gparent.id})
|
||||
action = {
|
||||
'type': 'ir.actions.act_window',
|
||||
'name': _('Account Groups'),
|
||||
'view_mode': 'tree,form',
|
||||
'res_model': 'account.group',
|
||||
}
|
||||
return action
|
||||
|
||||
41
account_usability/wizard/account_group_generate_view.xml
Normal file
41
account_usability/wizard/account_group_generate_view.xml
Normal file
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2020 Akretion France (http://www.akretion.com/)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
|
||||
<record id="account_group_generate_form" model="ir.ui.view">
|
||||
<field name="name">account.group.generate.form</field>
|
||||
<field name="model">account.group.generate</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Generate account groups">
|
||||
<p>
|
||||
This wizard is designed to auto-generate account groups from the chart of account.
|
||||
</p>
|
||||
<group name="main">
|
||||
<field name="name_prefix"/>
|
||||
<field name="level"/>
|
||||
<footer>
|
||||
<button type="object" name="run" string="Generate" class="btn-primary"/>
|
||||
<button special="cancel" string="Cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="account_group_generate_action" model="ir.actions.act_window">
|
||||
<field name="name">Generate Account Groups</field>
|
||||
<field name="res_model">account.group.generate</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="account_group_generate_menu"
|
||||
action="account_group_generate_action"
|
||||
parent="account.account_account_menu"
|
||||
sequence="52"/>
|
||||
|
||||
</odoo>
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2017-2019 Akretion France (https://akretion.com/en)
|
||||
# Copyright 2017-2020 Akretion France (https://akretion.com/en)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
@@ -12,12 +12,13 @@ class AccountInvoiceMarkSent(models.TransientModel):
|
||||
_description = 'Mark invoices as sent'
|
||||
|
||||
def run(self):
|
||||
assert self.env.context.get('active_model') == 'account.invoice',\
|
||||
assert self.env.context.get('active_model') == 'account.move',\
|
||||
'Source model must be invoices'
|
||||
assert self.env.context.get('active_ids'), 'No invoices selected'
|
||||
invoices = self.env['account.invoice'].search([
|
||||
invoices = self.env['account.move'].search([
|
||||
('id', 'in', self.env.context.get('active_ids')),
|
||||
('state', 'in', ('open', 'paid'))])
|
||||
invoices.write({'sent': True})
|
||||
('move_type', 'in', ('out_invoice', 'out_refund')),
|
||||
('state', '=', 'posted')])
|
||||
invoices.write({'is_move_sent': True})
|
||||
logger.info('Marking invoices with ID %s as sent', invoices.ids)
|
||||
return
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2017-2019 Akretion France
|
||||
Copyright 2017-2020 Akretion France
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
-->
|
||||
@@ -23,14 +23,13 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<act_window id="account_invoice_mark_sent_action"
|
||||
multi="True"
|
||||
key2="client_action_multi"
|
||||
name="Mark as Sent"
|
||||
res_model="account.invoice.mark.sent"
|
||||
src_model="account.invoice"
|
||||
view_mode="form"
|
||||
target="new"
|
||||
groups="account.group_account_invoice" />
|
||||
<record id="account_invoice_mark_sent_action" model="ir.actions.act_window">
|
||||
<field name="name">Mark as Sent</field>
|
||||
<field name="res_model">account.invoice.mark.sent</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
<field name="binding_model_id" ref="account.model_account_move" />
|
||||
<field name="binding_view_types">list</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2018-2019 Akretion France (https://akretion.com/)
|
||||
# Copyright 2018-2020 Akretion France (https://akretion.com/)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
@@ -16,9 +16,7 @@ class AccountMoveReversal(models.TransientModel):
|
||||
self._context.get('active_model') == 'account.move' and
|
||||
self._context.get('active_id')):
|
||||
move = self.env['account.move'].browse(self._context['active_id'])
|
||||
date_dt = fields.Date.from_string(move.date) +\
|
||||
relativedelta(days=1)
|
||||
date = fields.Date.to_string(date_dt)
|
||||
return date
|
||||
date_dt = move.date + relativedelta(days=1)
|
||||
return date_dt
|
||||
|
||||
date = fields.Date(default=_default_date)
|
||||
|
||||
12
account_usability/wizard/res_config_settings.py
Normal file
12
account_usability/wizard/res_config_settings.py
Normal file
@@ -0,0 +1,12 @@
|
||||
# Copyright 2015-2020 Akretion (http://www.akretion.com)
|
||||
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
transfer_account_id = fields.Many2one(
|
||||
related='company_id.transfer_account_id', readonly=False)
|
||||
Reference in New Issue
Block a user