Port account_usability to v10
This commit is contained in:
@@ -1,3 +1,3 @@
|
|||||||
# -*- encoding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from . import account
|
from . import account
|
||||||
|
|||||||
@@ -1,29 +1,11 @@
|
|||||||
# -*- encoding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# © 2015-2016 Akretion (http://www.akretion.com)
|
||||||
#
|
|
||||||
# Account Usability module for Odoo
|
|
||||||
# Copyright (C) 2015 Akretion (http://www.akretion.com)
|
|
||||||
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
#
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
'name': 'Account Usability',
|
'name': 'Account Usability',
|
||||||
'version': '0.3',
|
'version': '10.0.1.0.0',
|
||||||
'category': 'Accounting & Finance',
|
'category': 'Accounting & Finance',
|
||||||
'license': 'AGPL-3',
|
'license': 'AGPL-3',
|
||||||
'summary': 'Small usability enhancements in account module',
|
'summary': 'Small usability enhancements in account module',
|
||||||
@@ -48,7 +30,6 @@ This module has been written by Alexis de Lattre from Akretion <alexis.delattre@
|
|||||||
'author': 'Akretion',
|
'author': 'Akretion',
|
||||||
'website': 'http://www.akretion.com',
|
'website': 'http://www.akretion.com',
|
||||||
'depends': ['account'],
|
'depends': ['account'],
|
||||||
'conflicts': ['account_invoice_overdue_filter'],
|
|
||||||
'data': ['account_view.xml'],
|
'data': ['account_view.xml'],
|
||||||
'installable': False,
|
'installable': True,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,54 +1,26 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# © 2015-2016 Akretion (http://www.akretion.com)
|
||||||
#
|
|
||||||
# Account Usability module for Odoo
|
|
||||||
# Copyright (C) 2015 Akretion (http://www.akretion.com)
|
|
||||||
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
#
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
from openerp import models, fields, api, _
|
from odoo import models, fields, api, _
|
||||||
from openerp.tools import float_compare
|
from odoo.tools import float_compare, float_is_zero
|
||||||
from openerp.exceptions import Warning as UserError
|
from odoo.exceptions import UserError
|
||||||
|
|
||||||
|
|
||||||
class AccountInvoice(models.Model):
|
class AccountInvoice(models.Model):
|
||||||
_inherit = 'account.invoice'
|
_inherit = 'account.invoice'
|
||||||
|
|
||||||
origin = fields.Char(track_visibility='onchange')
|
origin = fields.Char(track_visibility='onchange')
|
||||||
supplier_invoice_number = fields.Char(track_visibility='onchange')
|
|
||||||
internal_number = fields.Char(track_visibility='onchange')
|
|
||||||
reference = fields.Char(track_visibility='onchange')
|
reference = fields.Char(track_visibility='onchange')
|
||||||
sent = fields.Boolean(track_visibility='onchange')
|
sent = fields.Boolean(track_visibility='onchange')
|
||||||
date_invoice = fields.Date(track_visibility='onchange')
|
date_invoice = fields.Date(track_visibility='onchange')
|
||||||
date_due = fields.Date(track_visibility='onchange')
|
date_due = fields.Date(track_visibility='onchange')
|
||||||
payment_term = fields.Many2one(track_visibility='onchange')
|
payment_term_id = fields.Many2one(track_visibility='onchange')
|
||||||
period_id = fields.Many2one(track_visibility='onchange')
|
|
||||||
account_id = fields.Many2one(track_visibility='onchange')
|
account_id = fields.Many2one(track_visibility='onchange')
|
||||||
journal_id = fields.Many2one(track_visibility='onchange')
|
journal_id = fields.Many2one(track_visibility='onchange')
|
||||||
partner_bank_id = fields.Many2one(track_visibility='onchange')
|
partner_bank_id = fields.Many2one(track_visibility='onchange')
|
||||||
fiscal_position = fields.Many2one(track_visibility='onchange')
|
fiscal_position_id = fields.Many2one(track_visibility='onchange')
|
||||||
|
|
||||||
@api.multi
|
|
||||||
def onchange_payment_term_date_invoice(self, payment_term_id, date_invoice):
|
|
||||||
res = super(AccountInvoice, self).onchange_payment_term_date_invoice(
|
|
||||||
payment_term_id, date_invoice)
|
|
||||||
if res and isinstance(res, dict) and 'value' in res:
|
|
||||||
res['value']['period_id'] = False
|
|
||||||
return res
|
|
||||||
|
|
||||||
# I really hate to see a "/" in the 'name' field of the account.move.line
|
# I really hate to see a "/" in the 'name' field of the account.move.line
|
||||||
# generated from customer invoices linked to the partners' account because:
|
# generated from customer invoices linked to the partners' account because:
|
||||||
@@ -56,26 +28,32 @@ class AccountInvoice(models.Model):
|
|||||||
# write a rubbish '/' in it !
|
# write a rubbish '/' in it !
|
||||||
# 2) the 'name' field of the account.move.line is used in the overdue letter,
|
# 2) the 'name' field of the account.move.line is used in the overdue letter,
|
||||||
# and '/' is not meaningful for our customer !
|
# and '/' is not meaningful for our customer !
|
||||||
@api.multi
|
# TODO port to v10
|
||||||
def action_number(self):
|
#@api.multi
|
||||||
res = super(AccountInvoice, self).action_number()
|
#def action_number(self):
|
||||||
for inv in self:
|
# res = super(AccountInvoice, self).action_number()
|
||||||
self._cr.execute(
|
# for inv in self:
|
||||||
"UPDATE account_move_line SET name= "
|
# self._cr.execute(
|
||||||
"CASE WHEN name='/' THEN %s "
|
# "UPDATE account_move_line SET name= "
|
||||||
"ELSE %s||' - '||name END "
|
# "CASE WHEN name='/' THEN %s "
|
||||||
"WHERE move_id=%s", (inv.number, inv.number, inv.move_id.id))
|
# "ELSE %s||' - '||name END "
|
||||||
self.invalidate_cache()
|
# "WHERE move_id=%s", (inv.number, inv.number, inv.move_id.id))
|
||||||
return res
|
# self.invalidate_cache()
|
||||||
|
# return res
|
||||||
|
|
||||||
|
|
||||||
class AccountFiscalYear(models.Model):
|
class AccountInvoiceLine(models.Model):
|
||||||
_inherit = 'account.fiscalyear'
|
_inherit = 'account.invoice.line'
|
||||||
|
|
||||||
# For companies that have a fiscal year != calendar year
|
# In the 'account' module, we have related stored field for:
|
||||||
# I want to be able to write '2015-2016' in the code field
|
# company_id, partner_id, currency_id
|
||||||
# => size=9 instead of 6
|
type = fields.Selection(
|
||||||
code = fields.Char(size=9)
|
related='invoice_id.type', store=True, readonly=True)
|
||||||
|
date_invoice = fields.Date(
|
||||||
|
related='invoice_id.date_invoice', store=True, readonly=True)
|
||||||
|
commercial_partner_id = fields.Many2one(
|
||||||
|
related='invoice_id.commercial_partner_id',
|
||||||
|
store=True, readonly=True)
|
||||||
|
|
||||||
|
|
||||||
class AccountJournal(models.Model):
|
class AccountJournal(models.Model):
|
||||||
@@ -122,35 +100,33 @@ class AccountAnalyticAccount(models.Model):
|
|||||||
return super(AccountAnalyticAccount, self).name_get()
|
return super(AccountAnalyticAccount, self).name_get()
|
||||||
|
|
||||||
|
|
||||||
class AccountMove(models.Model):
|
|
||||||
_inherit = 'account.move'
|
|
||||||
|
|
||||||
@api.onchange('date')
|
|
||||||
def date_onchange(self):
|
|
||||||
if self.date:
|
|
||||||
self.period_id = self.env['account.period'].find(self.date)
|
|
||||||
|
|
||||||
|
|
||||||
class AccountMoveLine(models.Model):
|
class AccountMoveLine(models.Model):
|
||||||
_inherit = 'account.move.line'
|
_inherit = 'account.move.line'
|
||||||
|
|
||||||
@api.onchange('credit')
|
@api.onchange('credit')
|
||||||
def _credit_onchange(self):
|
def _credit_onchange(self):
|
||||||
if self.credit and self.debit:
|
prec = self.env['decimal.precision'].precision_get('Account')
|
||||||
|
if (
|
||||||
|
not float_is_zero(self.credit, precision_digits=prec) and
|
||||||
|
not float_is_zero(self.debit, precision_digits=prec)):
|
||||||
self.debit = 0
|
self.debit = 0
|
||||||
|
|
||||||
@api.onchange('debit')
|
@api.onchange('debit')
|
||||||
def _debit_onchange(self):
|
def _debit_onchange(self):
|
||||||
if self.debit and self.credit:
|
prec = self.env['decimal.precision'].precision_get('Account')
|
||||||
|
if (
|
||||||
|
not float_is_zero(self.debit, precision_digits=prec) and
|
||||||
|
not float_is_zero(self.credit, precision_digits=prec)):
|
||||||
self.credit = 0
|
self.credit = 0
|
||||||
|
|
||||||
@api.onchange('currency_id', 'amount_currency')
|
@api.onchange('currency_id', 'amount_currency')
|
||||||
def _amount_currency_change(self):
|
def _amount_currency_change(self):
|
||||||
|
prec = self.env['decimal.precision'].precision_get('Account')
|
||||||
if (
|
if (
|
||||||
self.currency_id and
|
self.currency_id and
|
||||||
self.amount_currency and
|
self.amount_currency and
|
||||||
not self.credit and
|
float_is_zero(self.credit, precision_digits=prec) and
|
||||||
not self.debit):
|
float_is_zero(self.debit, precision_digits=prec)):
|
||||||
date = self.date or None
|
date = self.date or None
|
||||||
amount_company_currency = self.currency_id.with_context(
|
amount_company_currency = self.currency_id.with_context(
|
||||||
date=date).compute(
|
date=date).compute(
|
||||||
@@ -182,77 +158,35 @@ class AccountBankStatementLine(models.Model):
|
|||||||
# figure out that the fact that the user can't find move line 'x'
|
# figure out that the fact that the user can't find move line 'x'
|
||||||
# is caused by this.
|
# is caused by this.
|
||||||
# Set search_reconciliation_proposition to False by default
|
# Set search_reconciliation_proposition to False by default
|
||||||
def get_data_for_reconciliations(
|
# TODO: re-write in v10
|
||||||
self, cr, uid, ids, excluded_ids=None,
|
#def get_data_for_reconciliations(
|
||||||
search_reconciliation_proposition=False, context=None):
|
# self, cr, uid, ids, excluded_ids=None,
|
||||||
# Make variable name shorted for PEP8 !
|
# search_reconciliation_proposition=False, context=None):
|
||||||
search_rec_prop = search_reconciliation_proposition
|
# # Make variable name shorted for PEP8 !
|
||||||
return super(AccountBankStatementLine, self).\
|
# search_rec_prop = search_reconciliation_proposition
|
||||||
get_data_for_reconciliations(
|
# return super(AccountBankStatementLine, self).\
|
||||||
cr, uid, ids, excluded_ids=excluded_ids,
|
# get_data_for_reconciliations(
|
||||||
search_reconciliation_proposition=search_rec_prop,
|
# cr, uid, ids, excluded_ids=excluded_ids,
|
||||||
context=context)
|
# search_reconciliation_proposition=search_rec_prop,
|
||||||
|
# context=context)
|
||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
def show_account_move(self):
|
def show_account_move(self):
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
action = self.env['ir.actions.act_window'].for_xml_id(
|
action = self.env['ir.actions.act_window'].for_xml_id(
|
||||||
'account', 'action_move_journal_line')
|
'account', 'action_move_journal_line')
|
||||||
if self.journal_entry_id:
|
if self.journal_entry_ids:
|
||||||
action.update({
|
action.update({
|
||||||
'views': False,
|
'views': False,
|
||||||
'view_id': False,
|
'view_id': False,
|
||||||
'view_mode': 'form,tree',
|
'view_mode': 'form,tree',
|
||||||
'res_id': self.journal_entry_id.id,
|
'res_id': self.journal_entry_ids[0].id,
|
||||||
})
|
})
|
||||||
return action
|
return action
|
||||||
else:
|
else:
|
||||||
raise UserError(_(
|
raise UserError(_(
|
||||||
'No journal entry linked to this bank statement line.'))
|
'No journal entry linked to this bank statement line.'))
|
||||||
|
|
||||||
class ResPartner(models.Model):
|
|
||||||
_inherit = 'res.partner'
|
|
||||||
|
|
||||||
@api.multi
|
|
||||||
def show_receivable_account(self):
|
|
||||||
self.ensure_one()
|
|
||||||
account_id = self.property_account_receivable.id
|
|
||||||
return self.common_show_account(self.ids[0], account_id)
|
|
||||||
|
|
||||||
@api.multi
|
|
||||||
def show_payable_account(self):
|
|
||||||
self.ensure_one()
|
|
||||||
account_id = self.property_account_payable.id
|
|
||||||
return self.common_show_account(self.ids[0], account_id)
|
|
||||||
|
|
||||||
def common_show_account(self, partner_id, account_id):
|
|
||||||
action = self.env['ir.actions.act_window'].for_xml_id(
|
|
||||||
'account', 'action_account_moves_all_tree')
|
|
||||||
action['context'] = {
|
|
||||||
'search_default_partner_id': [partner_id],
|
|
||||||
'default_partner_id': partner_id,
|
|
||||||
'search_default_account_id': account_id,
|
|
||||||
}
|
|
||||||
return action
|
|
||||||
|
|
||||||
@api.multi
|
|
||||||
def _compute_journal_item_count(self):
|
|
||||||
amlo = self.env['account.move.line']
|
|
||||||
for partner in self:
|
|
||||||
partner.journal_item_count = amlo.search_count([
|
|
||||||
('partner_id', '=', partner.id),
|
|
||||||
('account_id', '=', partner.property_account_receivable.id)])
|
|
||||||
partner.payable_journal_item_count = amlo.search_count([
|
|
||||||
('partner_id', '=', partner.id),
|
|
||||||
('account_id', '=', partner.property_account_payable.id)])
|
|
||||||
|
|
||||||
journal_item_count = fields.Integer(
|
|
||||||
compute='_compute_journal_item_count',
|
|
||||||
string="Journal Items", readonly=True)
|
|
||||||
payable_journal_item_count = fields.Integer(
|
|
||||||
compute='_compute_journal_item_count',
|
|
||||||
string="Payable Journal Items", readonly=True)
|
|
||||||
|
|
||||||
|
|
||||||
class AccountFiscalPosition(models.Model):
|
class AccountFiscalPosition(models.Model):
|
||||||
_inherit = 'account.fiscal.position'
|
_inherit = 'account.fiscal.position'
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!--
|
<!--
|
||||||
Copyright (C) 2015 Akretion (http://www.akretion.com/)
|
© 2015-2016 Akretion (http://www.akretion.com/)
|
||||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
The licence is in the file __openerp__.py
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<openerp>
|
<odoo>
|
||||||
<data>
|
|
||||||
|
|
||||||
<!-- INVOICE -->
|
<!-- INVOICE -->
|
||||||
<record id="invoice_supplier_form" model="ir.ui.view">
|
<record id="invoice_supplier_form" model="ir.ui.view">
|
||||||
@@ -14,14 +13,9 @@
|
|||||||
<field name="model">account.invoice</field>
|
<field name="model">account.invoice</field>
|
||||||
<field name="inherit_id" ref="account.invoice_supplier_form"/>
|
<field name="inherit_id" ref="account.invoice_supplier_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="fiscal_position" position="attributes">
|
<field name="fiscal_position_id" position="attributes">
|
||||||
<attribute name="widget">selection</attribute>
|
<attribute name="widget">selection</attribute>
|
||||||
</field>
|
</field>
|
||||||
<!-- by default, period_id is restricted to account.group_account_user
|
|
||||||
But a member of account.group_account_invoice may need to change it -->
|
|
||||||
<field name="period_id" position="attributes">
|
|
||||||
<attribute name="groups"></attribute>
|
|
||||||
</field>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
@@ -30,14 +24,9 @@
|
|||||||
<field name="model">account.invoice</field>
|
<field name="model">account.invoice</field>
|
||||||
<field name="inherit_id" ref="account.invoice_form"/>
|
<field name="inherit_id" ref="account.invoice_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="fiscal_position" position="attributes">
|
<field name="fiscal_position_id" position="attributes">
|
||||||
<attribute name="widget">selection</attribute>
|
<attribute name="widget">selection</attribute>
|
||||||
</field>
|
</field>
|
||||||
<!-- by default, period_id is restricted to account.group_account_user
|
|
||||||
But a member of account.group_account_invoice may need to change it -->
|
|
||||||
<field name="period_id" position="attributes">
|
|
||||||
<attribute name="groups"></attribute>
|
|
||||||
</field>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
@@ -46,25 +35,12 @@
|
|||||||
<field name="model">account.invoice</field>
|
<field name="model">account.invoice</field>
|
||||||
<field name="inherit_id" ref="account.invoice_tree"/>
|
<field name="inherit_id" ref="account.invoice_tree"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="number" position="after">
|
<field name="reference" position="attributes">
|
||||||
<field name="supplier_invoice_number"
|
<attribute name="invisible">not context.get('type') in ('in_invoice', 'in_refund')</attribute>
|
||||||
invisible="not context.get('type') in ('in_invoice', 'in_refund')"/>
|
|
||||||
</field>
|
</field>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="view_account_invoice_filter" model="ir.ui.view">
|
|
||||||
<field name="name">account_usability.invoice.search</field>
|
|
||||||
<field name="model">account.invoice</field>
|
|
||||||
<field name="inherit_id" ref="account.view_account_invoice_filter"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<filter name="unpaid" position="after">
|
|
||||||
<filter name="overdue" string="Overdue"
|
|
||||||
domain="[('state', '=', 'open'), ('date_due', '<', current_date)]"/>
|
|
||||||
</filter>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- model account.move.line / Journal Items -->
|
<!-- model account.move.line / Journal Items -->
|
||||||
<record id="account.action_account_moves_all_a" model="ir.actions.act_window">
|
<record id="account.action_account_moves_all_a" model="ir.actions.act_window">
|
||||||
<field name="limit">200</field>
|
<field name="limit">200</field>
|
||||||
@@ -77,35 +53,29 @@
|
|||||||
<field name="limit">200</field>
|
<field name="limit">200</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<!--
|
||||||
<record id="view_move_form" model="ir.ui.view">
|
<record id="view_move_form" model="ir.ui.view">
|
||||||
<field name="name">account_usability.account_move_form</field>
|
<field name="name">account_usability.account_move_form</field>
|
||||||
<field name="model">account.move</field>
|
<field name="model">account.move</field>
|
||||||
<field name="inherit_id" ref="account.view_move_form"/>
|
<field name="inherit_id" ref="account.view_move_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr="//field[@name='line_id']/tree/field[@name='tax_code_id']" position="attributes">
|
|
||||||
<attribute name="invisible">1</attribute>
|
|
||||||
</xpath>
|
|
||||||
<xpath expr="//field[@name='line_id']/tree/field[@name='tax_amount']" position="attributes">
|
|
||||||
<attribute name="invisible">1</attribute>
|
|
||||||
</xpath>
|
|
||||||
<xpath expr="//field[@name='line_id']/tree/field[@name='state']" position="attributes">
|
|
||||||
<attribute name="invisible">1</attribute>
|
|
||||||
</xpath>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
-->
|
||||||
|
|
||||||
<record id="view_account_move_line_filter" model="ir.ui.view">
|
<record id="view_account_move_line_filter" model="ir.ui.view">
|
||||||
<field name="name">account_usability.account_move_line_search</field>
|
<field name="name">account_usability.account_move_line_search</field>
|
||||||
<field name="model">account.move.line</field>
|
<field name="model">account.move.line</field>
|
||||||
<field name="inherit_id" ref="account.view_account_move_line_filter"/>
|
<field name="inherit_id" ref="account.view_account_move_line_filter"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
|
<!--
|
||||||
<field name="partner_id" position="after">
|
<field name="partner_id" position="after">
|
||||||
<field name="reconcile_ref" />
|
<field name="reconcile_ref" />
|
||||||
</field>
|
</field>
|
||||||
<filter name="unreconciled" position="before">
|
<filter name="unreconciled" position="before">
|
||||||
<filter name="reconciled" string="Fully Reconciled" domain="[('reconcile_id', '!=', False)]"/>
|
<filter name="reconciled" string="Fully Reconciled" domain="[('reconcile_id', '!=', False)]"/>
|
||||||
<filter name="partial_reconciled" string="Partially Reconciled" domain="[('reconcile_partial_id', '!=', False)]"/>
|
<filter name="partial_reconciled" string="Partially Reconciled" domain="[('reconcile_partial_id', '!=', False)]"/>
|
||||||
</filter>
|
</filter> -->
|
||||||
<field name="name" position="attributes">
|
<field name="name" position="attributes">
|
||||||
<attribute name="string">Name or Reference</attribute>
|
<attribute name="string">Name or Reference</attribute>
|
||||||
</field>
|
</field>
|
||||||
@@ -123,15 +93,12 @@
|
|||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- Display analytic account even when you don't have any journal selected -->
|
<!--
|
||||||
<record id="view_move_line_tree" model="ir.ui.view">
|
<record id="view_move_line_tree" model="ir.ui.view">
|
||||||
<field name="name">account_usability.account_move_line_tree</field>
|
<field name="name">account_usability.account_move_line_tree</field>
|
||||||
<field name="model">account.move.line</field>
|
<field name="model">account.move.line</field>
|
||||||
<field name="inherit_id" ref="account.view_move_line_tree"/>
|
<field name="inherit_id" ref="account.view_move_line_tree"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="analytic_account_id" position="attributes">
|
|
||||||
<attribute name="invisible"></attribute>
|
|
||||||
</field>
|
|
||||||
<field name="reconcile_ref" position="attributes">
|
<field name="reconcile_ref" position="attributes">
|
||||||
<attribute name="invisible">1</attribute>
|
<attribute name="invisible">1</attribute>
|
||||||
</field>
|
</field>
|
||||||
@@ -141,50 +108,15 @@
|
|||||||
</field>
|
</field>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
-->
|
||||||
<record id="view_account_list" model="ir.ui.view">
|
|
||||||
<field name="name">account_usability.account_account.tree</field>
|
|
||||||
<field name="model">account.account</field>
|
|
||||||
<field name="inherit_id" ref="account.view_account_list"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<field name="user_type" position="replace"/>
|
|
||||||
<field name="type" position="after">
|
|
||||||
<field name="user_type"/>
|
|
||||||
</field>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="view_account_type_tree" model="ir.ui.view">
|
<record id="view_account_type_tree" model="ir.ui.view">
|
||||||
<field name="name">account_usability.account_type_tree</field>
|
<field name="name">account_usability.account_type_tree</field>
|
||||||
<field name="model">account.account.type</field>
|
<field name="model">account.account.type</field>
|
||||||
<field name="inherit_id" ref="account.view_account_type_tree" />
|
<field name="inherit_id" ref="account.view_account_type_tree" />
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="code" position="after">
|
<field name="type" position="after">
|
||||||
<field name="close_method" />
|
<field name="include_initial_balance" />
|
||||||
</field>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="partner_view_button_journal_item_count" model="ir.ui.view">
|
|
||||||
<field name="name">usability.res.partner.journal.items.button</field>
|
|
||||||
<field name="model">res.partner</field>
|
|
||||||
<field name="inherit_id" ref="account.partner_view_button_journal_item_count"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<button name="%(account.action_account_moves_all_tree)d" position="after">
|
|
||||||
<button name="show_payable_account" type="object"
|
|
||||||
attrs="{'invisible': [('supplier', '=', False)]}"
|
|
||||||
icon="fa-list" class="oe_stat_button">
|
|
||||||
<field string="Payable Account" name="payable_journal_item_count"
|
|
||||||
widget="statinfo"/>
|
|
||||||
</button>
|
|
||||||
</button>
|
|
||||||
<button name="%(account.action_account_moves_all_tree)d" position="attributes">
|
|
||||||
<attribute name="type">object</attribute>
|
|
||||||
<attribute name="name">show_receivable_account</attribute>
|
|
||||||
<attribute name="attrs">{'invisible': [('customer', '=', False)]}</attribute>
|
|
||||||
</button>
|
|
||||||
<field name="journal_item_count" position="attributes">
|
|
||||||
<attribute name="string">Receivable Account</attribute>
|
|
||||||
</field>
|
</field>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
@@ -197,11 +129,10 @@
|
|||||||
<xpath expr="//field[@name='line_ids']/tree/field[@name='bank_account_id']" position="after">
|
<xpath expr="//field[@name='line_ids']/tree/field[@name='bank_account_id']" position="after">
|
||||||
<!-- The cancel button is provided by the account_cancel module, but we don't want to depend on it -->
|
<!-- The cancel button is provided by the account_cancel module, but we don't want to depend on it -->
|
||||||
<button name="show_account_move" type="object"
|
<button name="show_account_move" type="object"
|
||||||
string="View Account Move" icon="gtk-redo"
|
string="View Account Move" icon="fa fa-arrow-right"
|
||||||
attrs="{'invisible': [('journal_entry_id', '=', False)]}"/>
|
attrs="{'invisible': [('journal_entry_ids', '=', [])]}"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</data>
|
</odoo>
|
||||||
</openerp>
|
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
|
|
||||||
def migrate(cr, version):
|
|
||||||
if not version:
|
|
||||||
return
|
|
||||||
|
|
||||||
# cf the inherit of action_number() of account.invoice
|
|
||||||
# in account_usability/account.py
|
|
||||||
cr.execute(
|
|
||||||
"UPDATE account_move_line SET name= "
|
|
||||||
"CASE WHEN account_move_line.name='/' THEN account_move.name "
|
|
||||||
"ELSE account_move.name||' - '||account_move_line.name END "
|
|
||||||
"FROM account_move WHERE account_move_line.move_id = account_move.id "
|
|
||||||
"AND account_move_line.journal_id in "
|
|
||||||
"(SELECT id FROM account_journal WHERE type in ('sale', 'sale_refund'))")
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
|
|
||||||
def migrate(cr, version):
|
|
||||||
if not version:
|
|
||||||
return
|
|
||||||
|
|
||||||
# cf the inherit of action_number() of account.invoice
|
|
||||||
# in account_usability/account.py
|
|
||||||
cr.execute(
|
|
||||||
"UPDATE account_move_line SET name=account_move.name "
|
|
||||||
"FROM account_move WHERE account_move_line.move_id = account_move.id "
|
|
||||||
"AND account_move_line.name='/' "
|
|
||||||
"AND account_move_line.journal_id in "
|
|
||||||
"(SELECT id FROM account_journal WHERE type in ('purchase', 'purchase_refund'))")
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
'name': 'Stock Usability',
|
'name': 'Stock Usability',
|
||||||
'version': '0.2',
|
'version': '10.0.1.0.0',
|
||||||
'category': 'Inventory, Logistic, Storage',
|
'category': 'Inventory, Logistic, Storage',
|
||||||
'license': 'AGPL-3',
|
'license': 'AGPL-3',
|
||||||
'summary': 'Several usability enhancements in Warehouse management',
|
'summary': 'Several usability enhancements in Warehouse management',
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_procurement_scheduler_log_full,Full access on procurement.scheduler.log to System group,model_procurement_scheduler_log,base.group_system,1,1,1,1
|
access_procurement_scheduler_log_full,Full access on procurement.scheduler.log to System group,model_procurement_scheduler_log,base.group_system,1,1,1,1
|
||||||
|
access_procurement_scheduler_log_user,Read/Create procurement.scheduler.log to Stock user,model_procurement_scheduler_log,stock.group_stock_user,1,0,1,0
|
||||||
access_procurement_scheduler_log_read,Read access on procurement.scheduler.log to Employee,model_procurement_scheduler_log,base.group_user,1,0,0,0
|
access_procurement_scheduler_log_read,Read access on procurement.scheduler.log to Employee,model_procurement_scheduler_log,base.group_user,1,0,0,0
|
||||||
|
|||||||
|
Reference in New Issue
Block a user