Compare commits

..

1 Commits

Author SHA1 Message Date
clementmbr
5e074f7bb2 [ADD] new module mail_message_date_order 2022-09-29 19:43:06 +02:00
529 changed files with 6189 additions and 13848 deletions

View File

@@ -0,0 +1,23 @@
# © 2016-2017 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Account Fiscal Position Payable Receivable",
"version": "12.0.1.0.0",
"category": "Accounting & Finance",
"license": "AGPL-3",
"summary": "Configure payable/receivable accounts on fiscal positions",
"description": """
Account Fiscal Position Payable Receivable
==========================================
This module allows to configure a special *Partner Receivable Account* and a special *Partner Payable Account* on fiscal positions. This is used in the onchange of the fiscal position of partners.
This module has been written by Alexis de Lattre from Akretion <alexis.delattre@akretion.com>.
""",
"author": "Akretion",
"website": "http://www.akretion.com",
"depends": ["account"],
"data": ["views/account_fiscal_position_view.xml"],
"installable": False,
}

View File

@@ -0,0 +1,2 @@
from . import account_fiscal_position
from . import res_partner

View File

@@ -0,0 +1,21 @@
# © 2016-2017 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models, fields
class AccountFiscalPosition(models.Model):
_inherit = "account.fiscal.position"
receivable_account_id = fields.Many2one(
"account.account",
string="Partner Receivable Account",
company_dependent=True,
domain=[("internal_type", "=", "receivable")],
)
payable_account_id = fields.Many2one(
"account.account",
string="Partner Payable Account",
company_dependent=True,
domain=[("internal_type", "=", "payable")],
)

View File

@@ -0,0 +1,25 @@
# © 2016-2017 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models, api
class ResPartner(models.Model):
_inherit = "res.partner"
@api.onchange("property_account_position_id")
def fiscal_position_receivable_payable_change(self):
fp = self.property_account_position_id
ipo = self.env["ir.property"]
if fp.receivable_account_id:
self.property_account_receivable_id = fp.receivable_account_id
else:
self.property_account_receivable_id = ipo.get(
"property_account_receivable_id", "res.partner"
)
if fp.payable_account_id:
self.property_account_payable_id = fp.payable_account_id
else:
self.property_account_payable_id = ipo.get(
"property_account_payable_id", "res.partner"
)

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
© 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-->
<odoo>
<record id="view_account_position_form" model="ir.ui.view">
<field name="name">receivable_payable.fiscal_position_form</field>
<field name="model">account.fiscal.position</field>
<field name="inherit_id" ref="account.view_account_position_form" />
<field name="arch" type="xml">
<field name="company_id" position="after">
<field name="receivable_account_id"/>
<field name="payable_account_id"/>
</field>
</field>
</record>
</odoo>

View File

@@ -1 +1,2 @@
from . import models
from . import account_invoice
from . import account_invoice_report

View File

@@ -1,26 +1,24 @@
# Copyright 2015-2025 Akretion France (https://www.akretion.com)
# Copyright 2015-2019 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).
{
'name': 'Account Invoice Margin',
'version': '16.0.1.0.0',
'version': '12.0.1.0.0',
'category': 'Invoicing Management',
'license': 'AGPL-3',
'summary': 'Copy standard price on invoice line and compute margins',
'description': """
This module copies the field *standard_price* of the product on the invoice line when the invoice line is created. The allows the computation of the margin of the invoice.
A new measure *Margin* is available in the Invoice Analysis.
This module has been written by Alexis de Lattre from Akretion
<alexis.delattre@akretion.com>.
""",
'author': 'Akretion',
'website': 'https://github.com/akretion/odoo-usability',
'website': 'http://www.akretion.com',
'depends': ['account'],
'data': [
'views/account_move.xml',
'account_invoice_view.xml',
],
'installable': True,
'installable': False,
}

View File

@@ -0,0 +1,152 @@
# Copyright 2015-2019 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).
from odoo import api, fields, models
import odoo.addons.decimal_precision as dp
class AccountInvoiceLine(models.Model):
_inherit = 'account.invoice.line'
standard_price_company_currency = fields.Float(
string='Cost Price in Company Currency', readonly=True,
digits=dp.get_precision('Product Price'),
help="Cost price in company currency in the unit of measure "
"of the invoice line (which may be different from the unit "
"of measure of the product).")
standard_price_invoice_currency = fields.Float(
string='Cost Price in Invoice Currency', readonly=True,
compute='_compute_margin', store=True,
digits=dp.get_precision('Product Price'),
help="Cost price in invoice currency in the unit of measure "
"of the invoice line")
margin_invoice_currency = fields.Monetary(
string='Margin in Invoice Currency', readonly=True, store=True,
compute='_compute_margin', currency_field='currency_id')
margin_company_currency = fields.Monetary(
string='Margin in Company Currency', readonly=True, store=True,
compute='_compute_margin', currency_field='company_currency_id')
margin_rate = fields.Float(
string="Margin Rate", readonly=True, store=True,
compute='_compute_margin',
digits=(16, 2), help="Margin rate in percentage of the sale price")
@api.depends(
'standard_price_company_currency', 'invoice_id.currency_id',
'invoice_id.type', 'invoice_id.company_id',
'invoice_id.date_invoice', 'quantity', 'price_subtotal')
def _compute_margin(self):
for il in self:
standard_price_inv_cur = 0.0
margin_inv_cur = 0.0
margin_comp_cur = 0.0
margin_rate = 0.0
inv = il.invoice_id
if inv and inv.type in ('out_invoice', 'out_refund'):
# it works in _get_current_rate
# even if we set date = False in context
# standard_price_inv_cur is in the UoM of the invoice line
date = inv._get_currency_rate_date() or\
fields.Date.context_today(self)
company = inv.company_id
company_currency = company.currency_id
standard_price_inv_cur =\
company_currency._convert(
il.standard_price_company_currency,
inv.currency_id, company, date)
margin_inv_cur =\
il.price_subtotal - il.quantity * standard_price_inv_cur
margin_comp_cur = inv.currency_id._convert(
margin_inv_cur, company_currency, company, date)
if il.price_subtotal:
margin_rate = 100 * margin_inv_cur / il.price_subtotal
# for a refund, margin should be negative
# but margin rate should stay positive
if inv.type == 'out_refund':
margin_inv_cur *= -1
margin_comp_cur *= -1
il.standard_price_invoice_currency = standard_price_inv_cur
il.margin_invoice_currency = margin_inv_cur
il.margin_company_currency = margin_comp_cur
il.margin_rate = margin_rate
# We want to copy standard_price on invoice line for customer
# invoice/refunds. We can't do that via on_change of product_id,
# because it is not always played when invoice is created from code
# => we inherit write/create
# We write standard_price_company_currency even on supplier invoice/refunds
# because we don't have access to the 'type' of the invoice
@api.model
def create(self, vals):
if vals.get('product_id'):
pp = self.env['product.product'].browse(vals['product_id'])
std_price = pp.standard_price
inv_uom_id = vals.get('uom_id')
if inv_uom_id and inv_uom_id != pp.uom_id.id:
inv_uom = self.env['uom.uom'].browse(inv_uom_id)
std_price = pp.uom_id._compute_price(
std_price, inv_uom)
vals['standard_price_company_currency'] = std_price
return super(AccountInvoiceLine, self).create(vals)
def write(self, vals):
if not vals:
vals = {}
if 'product_id' in vals or 'uom_id' in vals:
for il in self:
if 'product_id' in vals:
if vals.get('product_id'):
pp = self.env['product.product'].browse(
vals['product_id'])
else:
pp = False
else:
pp = il.product_id or False
# uom_id is NOT a required field
if 'uom_id' in vals:
if vals.get('uom_id'):
inv_uom = self.env['uom.uom'].browse(
vals['uom_id'])
else:
inv_uom = False
else:
inv_uom = il.uom_id or False
std_price = 0.0
if pp:
std_price = pp.standard_price
if inv_uom and inv_uom != pp.uom_id:
std_price = pp.uom_id._compute_price(
std_price, inv_uom)
il.write({'standard_price_company_currency': std_price})
return super(AccountInvoiceLine, self).write(vals)
class AccountInvoice(models.Model):
_inherit = 'account.invoice'
margin_invoice_currency = fields.Monetary(
string='Margin in Invoice Currency',
compute='_compute_margin', store=True, readonly=True,
currency_field='currency_id')
margin_company_currency = fields.Monetary(
string='Margin in Company Currency',
compute='_compute_margin', store=True, readonly=True,
currency_field='company_currency_id')
@api.depends(
'type',
'invoice_line_ids.margin_invoice_currency',
'invoice_line_ids.margin_company_currency')
def _compute_margin(self):
res = self.env['account.invoice.line'].read_group(
[('invoice_id', 'in', self.ids)],
['invoice_id', 'margin_invoice_currency',
'margin_company_currency'],
['invoice_id'])
for re in res:
if re['invoice_id']:
inv = self.browse(re['invoice_id'][0])
if inv.type in ('out_invoice', 'out_refund'):
inv.margin_invoice_currency = re['margin_invoice_currency']
inv.margin_company_currency = re['margin_company_currency']

View File

@@ -0,0 +1,60 @@
# Copyright 2018-2019 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).
from odoo import api, fields, models
class AccountInvoiceReport(models.Model):
_inherit = 'account.invoice.report'
margin = fields.Float(string='Margin', readonly=True)
# why digits=0 ??? Why is it like that in the native "account" module
user_currency_margin = fields.Float(
string="Margin", compute='_compute_user_currency_margin', digits=0)
_depends = {
'account.invoice': [
'account_id', 'amount_total_company_signed',
'commercial_partner_id', 'company_id',
'currency_id', 'date_due', 'date_invoice', 'fiscal_position_id',
'journal_id', 'number', 'partner_bank_id', 'partner_id',
'payment_term_id', 'residual', 'state', 'type', 'user_id',
],
'account.invoice.line': [
'account_id', 'invoice_id', 'price_subtotal', 'product_id',
'quantity', 'uom_id', 'account_analytic_id',
'margin_company_currency',
],
'product.product': ['product_tmpl_id'],
'product.template': ['categ_id'],
'uom.uom': ['category_id', 'factor', 'name', 'uom_type'],
'res.currency.rate': ['currency_id', 'name'],
'res.partner': ['country_id'],
}
@api.depends('currency_id', 'date', 'margin')
def _compute_user_currency_margin(self):
user_currency = self.env.user.company_id.currency_id
currency_rate = self.env['res.currency.rate'].search([
('rate', '=', 1),
'|',
('company_id', '=', self.env.user.company_id.id),
('company_id', '=', False)], limit=1)
base_currency = currency_rate.currency_id
for record in self:
date = record.date or fields.Date.today()
company = record.company_id
record.user_currency_margin = base_currency._convert(
record.margin, user_currency, company, date)
# TODO check for refunds
def _sub_select(self):
select_str = super(AccountInvoiceReport, self)._sub_select()
select_str += ", SUM(ail.margin_company_currency) AS margin"
return select_str
def _select(self):
select_str = super(AccountInvoiceReport, self)._select()
select_str += ", sub.margin AS margin"
return select_str

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
© 2015-2017 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).
-->
<odoo>
<record id="view_invoice_line_form" model="ir.ui.view">
<field name="name">margin.account.invoice.line.form</field>
<field name="model">account.invoice.line</field>
<field name="inherit_id" ref="account.view_invoice_line_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='analytic_tag_ids']/.." position="inside">
<field name="standard_price_company_currency"
string="Cost Price in Comp. Cur."
groups="base.group_no_one"/>
<field name="standard_price_invoice_currency"
string="Cost Price in Inv. Cur."
groups="base.group_no_one"/>
<field name="margin_invoice_currency"
string="Margin in Inv. Cur."
groups="base.group_no_one"/>
<field name="margin_company_currency"
string="Margin in Comp. Cur."
groups="base.group_no_one"/>
<label for="margin_rate" groups="base.group_no_one"/>
<div name="margin_rate" groups="base.group_no_one">
<field name="margin_rate" class="oe_inline"/> %
</div>
</xpath>
</field>
</record>
<record id="invoice_form" model="ir.ui.view">
<field name="name">margin.account.invoice.form</field>
<field name="model">account.invoice</field>
<field name="inherit_id" ref="account.invoice_form"/>
<field name="arch" type="xml">
<field name="move_id" position="after">
<field name="margin_invoice_currency"
string="Margin in Inv. Cur." groups="base.group_no_one"/>
<field name="margin_company_currency"
string="Margin in Comp. Cur." groups="base.group_no_one"/>
</field>
</field>
</record>
</odoo>

View File

@@ -1,98 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_margin
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-16 16:24+0000\n"
"PO-Revision-Date: 2025-01-16 16:24+0000\n"
"Last-Translator: Alexis de Lattre <alexis.delattre@akretion.com>\n"
"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_invoice_margin
#: model:ir.model,name:account_invoice_margin.model_account_invoice_report
msgid "Invoices Statistics"
msgstr "Statistiques des factures"
#. module: account_invoice_margin
#: model:ir.model,name:account_invoice_margin.model_account_move
msgid "Journal Entry"
msgstr "Pièce comptable"
#. module: account_invoice_margin
#: model:ir.model,name:account_invoice_margin.model_account_move_line
msgid "Journal Item"
msgstr "Écriture comptable"
#. module: account_invoice_margin
#: model:ir.model.fields,field_description:account_invoice_margin.field_account_invoice_report__margin
#: model_terms:ir.ui.view,arch_db:account_invoice_margin.view_invoice_tree
#: model_terms:ir.ui.view,arch_db:account_invoice_margin.view_move_form
msgid "Margin"
msgstr "Marge"
#. module: account_invoice_margin
#: model_terms:ir.ui.view,arch_db:account_invoice_margin.view_move_form
msgid "Margin %"
msgstr "Marge %"
#. module: account_invoice_margin
#: model:ir.model.fields,field_description:account_invoice_margin.field_account_move_line__margin_rate
msgid "Margin Rate"
msgstr "Taux de marge"
#. module: account_invoice_margin
#: model:ir.model.fields,field_description:account_invoice_margin.field_account_bank_statement_line__margin_company_currency
#: model:ir.model.fields,field_description:account_invoice_margin.field_account_move__margin_company_currency
#: model:ir.model.fields,field_description:account_invoice_margin.field_account_move_line__margin_company_currency
#: model:ir.model.fields,field_description:account_invoice_margin.field_account_payment__margin_company_currency
msgid "Margin in Company Currency"
msgstr "Marge dans la devise de la société"
#. module: account_invoice_margin
#: model:ir.model.fields,field_description:account_invoice_margin.field_account_bank_statement_line__margin_invoice_currency
#: model:ir.model.fields,field_description:account_invoice_margin.field_account_move__margin_invoice_currency
#: model:ir.model.fields,field_description:account_invoice_margin.field_account_move_line__margin_invoice_currency
#: model:ir.model.fields,field_description:account_invoice_margin.field_account_payment__margin_invoice_currency
msgid "Margin in Invoice Currency"
msgstr "Marge dans la devise de la facture"
#. module: account_invoice_margin
#: model:ir.model.fields,help:account_invoice_margin.field_account_move_line__margin_rate
msgid "Margin rate in percentage of the sale price"
msgstr "Taux de marge en pourcentage du prix de vente"
#. module: account_invoice_margin
#: model:ir.model.fields,field_description:account_invoice_margin.field_account_move_line__standard_price_company_currency
msgid "Unit Cost in Company Currency"
msgstr "Coût unitaire dans la devise de la société"
#. module: account_invoice_margin
#: model:ir.model.fields,field_description:account_invoice_margin.field_account_move_line__standard_price_invoice_currency
msgid "Unit Cost in Invoice Currency"
msgstr "Coût unitaire dans la devise de la facture"
#. module: account_invoice_margin
#: model:ir.model.fields,help:account_invoice_margin.field_account_move_line__standard_price_company_currency
msgid ""
"Unit Cost in company currency in the unit of measure of the invoice line "
"(which may be different from the unit of measure of the product)."
msgstr ""
"Coût unitaire dans la devise de la société dans l'unité de mesure de la "
"ligne de facture (qui peut être différente de l'unité de mesure du produit)."
#. module: account_invoice_margin
#: model:ir.model.fields,help:account_invoice_margin.field_account_move_line__standard_price_invoice_currency
msgid ""
"Unit Cost in invoice currency in the unit of measure of the invoice line "
"(which may be different from the unit of measure of the product)."
msgstr ""
"Coût unitaire dans la devise de la facture dans l'unité de mesure "
"de la ligne de la facture (qui peut être différente de l'unité de mesure du produit)."

View File

@@ -1,2 +0,0 @@
from . import account_move
from . import account_invoice_report

View File

@@ -1,17 +0,0 @@
# Copyright 2018-2025 Akretion France (https://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
class AccountInvoiceReport(models.Model):
_inherit = 'account.invoice.report'
margin = fields.Float(string='Margin', readonly=True)
@api.model
def _select(self):
select_str = super()._select()
select_str += ", line.margin_company_currency * currency_table.rate AS margin"
return select_str

View File

@@ -1,109 +0,0 @@
# Copyright 2015-2025 Akretion France (https://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
class AccountMoveLine(models.Model):
_inherit = 'account.move.line'
standard_price_company_currency = fields.Float(
compute='_compute_margin', store=True, digits='Product Price',
string='Unit Cost in Company Currency',
help="Unit Cost in company currency in the unit of measure "
"of the invoice line (which may be different from the unit "
"of measure of the product).")
standard_price_invoice_currency = fields.Float(
compute='_compute_margin', store=True, digits='Product Price',
string='Unit Cost in Invoice Currency',
help="Unit Cost in invoice currency in the unit of measure "
"of the invoice line (which may be different from the unit "
"of measure of the product).")
margin_invoice_currency = fields.Monetary(
compute='_compute_margin', store=True,
string='Margin in Invoice Currency', currency_field='currency_id')
margin_company_currency = fields.Monetary(
compute='_compute_margin', store=True,
string='Margin in Company Currency',
currency_field='company_currency_id')
margin_rate = fields.Float(
string="Margin Rate", readonly=True, store=True,
compute='_compute_margin',
digits=(16, 2), help="Margin rate in percentage of the sale price")
@api.depends(
'product_id', 'product_uom_id', 'display_type', 'quantity', 'price_subtotal',
'move_id.currency_id', 'move_id.move_type', 'move_id.company_id', 'move_id.date')
def _compute_margin(self):
for ml in self:
standard_price_comp_cur = 0.0
standard_price_inv_cur = 0.0
margin_inv_cur = 0.0
margin_comp_cur = 0.0
margin_rate = 0.0
if (
ml.display_type == 'product' and
ml.product_id and
ml.move_type in ('out_invoice', 'out_refund')):
move = ml.move_id
date = move.date
company = move.company_id
company_currency = company.currency_id
move_currency = move.currency_id
standard_price_comp_cur = ml.product_id.with_company(company.id).standard_price
if ml.product_uom_id and ml.product_uom_id != ml.product_id.uom_id:
standard_price_comp_cur = ml.product_id.uom_id._compute_price(
standard_price_comp_cur, ml.product_uom_id)
standard_price_inv_cur = company_currency._convert(
standard_price_comp_cur, move_currency, company, date)
margin_inv_cur =\
ml.price_subtotal - (ml.quantity * standard_price_inv_cur)
margin_comp_cur = move_currency._convert(
margin_inv_cur, company_currency, company, date)
if ml.price_subtotal:
margin_rate = 100 * margin_inv_cur / ml.price_subtotal
# for a refund, margin should be negative
# but margin rate should stay positive
if ml.move_type == 'out_refund':
margin_inv_cur *= -1
margin_comp_cur *= -1
ml.standard_price_company_currency = standard_price_comp_cur
ml.standard_price_invoice_currency = standard_price_inv_cur
ml.margin_invoice_currency = margin_inv_cur
ml.margin_company_currency = margin_comp_cur
ml.margin_rate = margin_rate
class AccountMove(models.Model):
_inherit = 'account.move'
margin_invoice_currency = fields.Monetary(
string='Margin in Invoice Currency',
compute='_compute_margin', store=True,
currency_field='currency_id')
margin_company_currency = fields.Monetary(
string='Margin in Company Currency',
compute='_compute_margin', store=True,
currency_field='company_currency_id')
@api.depends(
'move_type',
'invoice_line_ids.margin_invoice_currency',
'invoice_line_ids.margin_company_currency')
def _compute_margin(self):
rg_res = self.env['account.move.line'].read_group(
[
('move_id', 'in', self.ids),
('display_type', '=', 'product'),
('move_id.move_type', 'in', ('out_invoice', 'out_refund')),
],
['move_id', 'margin_invoice_currency:sum', 'margin_company_currency:sum'],
['move_id'])
mapped_data = dict([(x['move_id'][0], {
'margin_invoice_currency': x['margin_invoice_currency'],
'margin_company_currency': x['margin_company_currency'],
}) for x in rg_res])
for move in self:
move.margin_invoice_currency = mapped_data.get(move.id, {}).get('margin_invoice_currency')
move.margin_company_currency = mapped_data.get(move.id, {}).get('margin_company_currency')

View File

@@ -1,55 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2015-2025 Akretion (https://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="view_move_form" model="ir.ui.view">
<field name="name">margin.account.move.form</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form"/>
<field name="arch" type="xml">
<group name="sale_info_group" position="inside">
<field name="margin_invoice_currency"
groups="base.group_no_one"
attrs="{'invisible': [('move_type', 'not in', ('out_invoice', 'out_refund'))]}"/>
<field name="margin_company_currency"
groups="base.group_no_one"
attrs="{'invisible': [('move_type', 'not in', ('out_invoice', 'out_refund'))]}"/>
</group>
<xpath expr="//field[@name='invoice_line_ids']/tree/field[@name='price_total']" position="after">
<field name="standard_price_invoice_currency" optional="hide" attrs="{'column_invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund'))]}"/>
<field name="margin_invoice_currency" optional="hide" attrs="{'column_invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund'))]}" string="Margin"/>
<field name="margin_rate" optional="hide" string="Margin %" attrs="{'column_invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund'))]}"/>
</xpath>
<xpath expr="//field[@name='invoice_line_ids']/form//field[@name='price_total']/.." position="inside">
<field name="standard_price_company_currency"
groups="base.group_no_one" attrs="{'invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund'))]}"/>
<field name="standard_price_invoice_currency"
groups="base.group_no_one" attrs="{'invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund'))]}"/>
<field name="margin_invoice_currency"
groups="base.group_no_one" attrs="{'invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund'))]}"/>
<field name="margin_company_currency"
groups="base.group_no_one" attrs="{'invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund'))]}"/>
<label for="margin_rate" groups="base.group_no_one" attrs="{'invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund'))]}"/>
<div name="margin_rate" groups="base.group_no_one" attrs="{'invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund'))]}">
<field name="margin_rate" class="oe_inline"/> %
</div>
</xpath>
</field>
</record>
<record id="view_invoice_tree" model="ir.ui.view">
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_invoice_tree"/>
<field name="arch" type="xml">
<field name="amount_residual_signed" position="after">
<field name="margin_company_currency" optional="hide" sum="1" invisible="context.get('default_move_type') not in ('out_invoice', 'out_refund')" string="Margin"/>
</field>
</field>
</record>
</odoo>

View File

@@ -18,5 +18,5 @@
'wizard/account_move_update_view.xml',
'views/account_move.xml',
],
'installable': False,
'installable': True,
}

View File

@@ -11,8 +11,9 @@ class AccountMove(models.Model):
self.ensure_one()
wizard = self.env['account.move.update']
res = wizard._prepare_default_get(self)
action = self.env["ir.actions.actions"]._for_xml_id(
'account_invoice_update_wizard.account_invoice_update_action')
action = self.env.ref(
'account_invoice_update_wizard.account_invoice_update_action'
).read()[0]
action['name'] = "Update Wizard"
action['res_id'] = wizard.create(res).id
return action

View File

@@ -14,13 +14,16 @@ class AccountMoveUpdate(models.TransientModel):
invoice_id = fields.Many2one(
'account.move', string='Invoice', required=True,
readonly=True)
move_type = fields.Selection(related='invoice_id.move_type')
company_id = fields.Many2one(related='invoice_id.company_id')
partner_id = fields.Many2one(related='invoice_id.partner_id')
type = fields.Selection(related='invoice_id.move_type', readonly=True)
company_id = fields.Many2one(
related='invoice_id.company_id', readonly=True)
partner_id = fields.Many2one(
related='invoice_id.partner_id', readonly=True)
user_id = fields.Many2one('res.users', string='Salesperson')
invoice_payment_term_id = fields.Many2one(
'account.payment.term', string='Payment Term')
ref = fields.Char(string='Reference') # field label is customized in the view
ref = fields.Char(string='Invoice Reference')
name = fields.Char(string='Reference/Description')
invoice_origin = fields.Char(string='Source Document')
partner_bank_id = fields.Many2one(
'res.partner.bank', string='Bank Account')
@@ -30,7 +33,7 @@ class AccountMoveUpdate(models.TransientModel):
@api.model
def _simple_fields2update(self):
'''List boolean, date, datetime, char, text fields'''
return ['ref', 'invoice_origin']
return ['ref', 'name', 'invoice_origin']
@api.model
def _m2o_fields2update(self):
@@ -52,16 +55,15 @@ class AccountMoveUpdate(models.TransientModel):
'quantity': line.quantity,
'price_subtotal': line.price_subtotal,
'analytic_account_id': line.analytic_account_id.id,
'currency_id': line.currency_id.id,
'analytic_tag_ids': aa_tags,
'display_type': line.display_type,
}])
return res
@api.onchange('move_type')
def move_type_on_change(self):
@api.onchange('type')
def type_on_change(self):
res = {'domain': {}}
if self.move_type in ('out_invoice', 'out_refund'):
if self.type in ('out_invoice', 'out_refund'):
res['domain']['partner_bank_id'] =\
"[('partner_id.ref_company_ids', 'in', [company_id])]"
else:
@@ -241,11 +243,11 @@ class AccountMoveLineUpdate(models.TransientModel):
('line_section', "Section"),
('line_note', "Note")], default=False, help="Technical field for UX purpose.")
quantity = fields.Float(
string='Quantity', digits='Product Unit of Measure', readonly=True)
price_subtotal = fields.Monetary(
string='Amount', readonly=True)
string='Quantity', digits=dp.get_precision('Product Unit of Measure'),
readonly=True)
price_subtotal = fields.Float(
string='Amount', readonly=True, digits=dp.get_precision('Account'))
analytic_account_id = fields.Many2one(
'account.analytic.account', string='Analytic Account')
analytic_tag_ids = fields.Many2many(
'account.analytic.tag', string='Analytic Tags')
currency_id = fields.Many2one('res.currency', readonly=True)

View File

@@ -12,27 +12,26 @@
<form string="Update Invoice Wizard">
<group name="main">
<field name="invoice_id" invisible="1"/>
<field name="move_type" invisible="1"/>
<field name="type" invisible="1"/>
<field name="company_id" invisible="1"/>
<field name="partner_id" invisible="1"/>
<field string="Bill Reference" attrs="{'invisible': [('move_type', 'not in', ('in_invoice', 'in_refund'))]}" name="ref"/>
<field string="Customer Reference" attrs="{'invisible': [('move_type', 'not in', ('out_invoice', 'out_refund'))]}" name="ref"/>
<field name="ref" attrs="{'invisible': [('type', 'not in', ('in_invoice', 'in_refund'))]}"/>
<field name="invoice_origin"/>
<field name="name"/>
<field name="invoice_payment_term_id" widget="selection"/>
<field name="partner_bank_id"/>
<field name="user_id" options="{'no_open': True, 'no_create': True, 'no_create_edit': True}"/>
<field name="user_id"/>
</group>
<group name="lines">
<field name="line_ids" nolabel="1">
<tree editable="bottom" create="false" delete="false" edit="true">
<field name="invoice_line_id" invisible="1"/>
<field name="display_type" invisible="1"/>
<field name="currency_id" invisible="1"/>
<field name="name"/>
<field name="quantity" attrs="{'invisible': [('display_type', '!=', False)]}"/>
<field name="price_subtotal" attrs="{'invisible': [('display_type', '!=', False)]}"/>
<field name="analytic_account_id" attrs="{'invisible': [('display_type', '!=', False)]}" groups="analytic.group_analytic_accounting"/>
<field name="analytic_tag_ids" attrs="{'invisible': [('display_type', '!=', False)]}" groups="analytic.group_analytic_tags" widget="many2many_tags"/>
<field name="analytic_tag_ids" attrs="{'invisible': [('display_type', '!=', False)]}" groups="analytic.group_analytic_accounting" widget="many2many_tags"/>
</tree>
</field>
</group>

View File

@@ -1,39 +0,0 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
Account Invoice Update Wizard
=============================
This module adds a button *Update Invoice* on Customer and Supplier invoices in
Open or Paid state. This button starts a wizard which allows the user to update
non-legal fields of the invoice:
* Source Document
* Reference/Description
* Payment terms (update allowed only to a payment term with same number of terms
of the same amount and on invoices without any payment)
* Bank Account
* Salesman
* Notes
* Description of invoice lines
* Analytic account
* Analytic tags
Bug Tracker
===========
Bugs are tracked on `GitHub Issues
<https://github.com/akretion/odoo-usability/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smash it by providing detailed and welcomed feedback.
Contributors
------------
* Alexis de Lattre <alexis.delattre@akretion.com>
* Florian da Costa <florian.dacosta@akretion.com>
* Matthieu Dietrich <matthieu.dietrich@camptocamp.com>
* Yannick Vaucher <yannick.vaucher@camptocamp.com>
* Mykhailo Panarin <m.panarin@mobilunity.com>
* Artem Kostyuk <a.kostyuk@mobilunity.com>

View File

@@ -1 +0,0 @@
from . import wizard

View File

@@ -1,17 +0,0 @@
# Copyright 2022 Akretion France (http://www.akretion.com/)
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
'name': 'Account Invoice Update Wizard Payment Mode',
'version': '14.0.1.0.0',
'category': 'Accounting & Finance',
'license': 'AGPL-3',
'summary': 'Add Payment Mode to Invoice Update Wizard',
'author': 'Akretion',
'website': 'https://github.com/akretion/odoo-usability',
'depends': ['account_invoice_update_wizard', 'account_payment_partner'],
'data': ['wizard/account_move_update_view.xml'],
'installable': False,
'auto_install': True,
}

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2017 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-->
<odoo>
<record id="view_move_form_inherit" model="ir.ui.view">
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form"/>
<field name="arch" type="xml">
<button name="button_draft" position="before">
<button name="prepare_update_wizard" type="object" string="Update Invoice" states="posted" groups="account.group_account_invoice"/>
</button>
</field>
</record>
</odoo>

View File

@@ -1 +0,0 @@
from . import account_move_update

View File

@@ -1,24 +0,0 @@
# Copyright 2022 Akretion France (http://www.akretion.com/)
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import models, fields, api, _
class AccountMoveUpdate(models.TransientModel):
_inherit = 'account.move.update'
payment_mode_filter_type_domain = fields.Char(
related='invoice_id.payment_mode_filter_type_domain')
partner_bank_filter_type_domain = fields.Many2one(
related='invoice_id.partner_bank_filter_type_domain')
bank_account_required = fields.Boolean(
related='invoice_id.bank_account_required')
payment_mode_id = fields.Many2one("account.payment.mode")
@api.model
def _m2o_fields2update(self):
m2o_list = super()._m2o_fields2update()
m2o_list.append('payment_mode_id')
return m2o_list

View File

@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2022 Akretion France (http://www.akretion.com/)
@author: Alexis de Lattre <alexis.delattre@akretion.com>
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
-->
<odoo>
<record id="account_invoice_update_form" model="ir.ui.view">
<field name="model">account.move.update</field>
<field name="inherit_id" ref="account_invoice_update_wizard.account_invoice_update_form"/>
<field name="arch" type="xml">
<field name="invoice_payment_term_id" position="after">
<field name="payment_mode_filter_type_domain" invisible="1"/>
<field name="partner_bank_filter_type_domain" invisible="1"/>
<field name="bank_account_required" invisible="1"/>
<field name="payment_mode_id" domain="[('payment_type', '=', payment_mode_filter_type_domain), ('company_id', '=', company_id)]"/>
</field>
<field name="partner_bank_id" position="attributes">
<attribute name="domain">
[('partner_id', '=', partner_bank_filter_type_domain),
'|',('company_id', '=', company_id),('company_id', '=', False)]
</attribute>
<attribute name="attrs">{'required': [('bank_account_required', '=', True),('move_type', 'in', ('in_invoice', 'in_refund'))]}</attribute>
</field>
</field>
</record>
</odoo>

View File

@@ -14,5 +14,5 @@
'data': [
'views/account_menu.xml',
],
'installable': False,
'installable': True,
}

View File

@@ -25,5 +25,5 @@ I don't recommend the use of this module.
'data': [
'views/account_move.xml',
],
'installable': False,
'installable': True,
}

View File

@@ -1 +0,0 @@
from . import report

View File

@@ -1,32 +0,0 @@
# Copyright 2023 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).
{
'name': 'Account Product Fiscal Classification - Sale',
'version': '16.0.1.0.0',
'category': 'Sales',
'license': 'AGPL-3',
'summary': 'Glue module between account_product_fiscal_classification and sale',
'description': """
This module adds a **Start Date** and **End Date** field on invoice
lines. For example, if you have an insurance contrat for your company
that run from April 1st 2013 to March 31st 2014, you will enter these
dates as start and end dates on the supplier invoice line. If your
fiscal year ends on December 31st 2013, 3 months of expenses are part of
the 2014 fiscal year and should not be part of the 2013 fiscal year. So,
thanks to this module, you will create a *Prepaid Expense* on December
31st 2013 and OpenERP will identify this expense with the 3 months that
are after the cut-off date and propose to generate the appropriate
cut-off journal entry.
This module has been written by Alexis de Lattre from Akretion
<alexis.delattre@akretion.com>.
""",
'author': 'Akretion',
'maintainers': ['alexis-via'],
'website': 'https://github.com/akretion/odoo-usability',
'depends': ['pos_sale', 'account_product_fiscal_classification'],
"data": ['report/sale_report_view.xml'],
'auto_install': True,
}

View File

@@ -1 +0,0 @@
from . import sale_report

View File

@@ -1,35 +0,0 @@
# Copyright 2023 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).
from odoo import fields, models
class SaleReport(models.Model):
_inherit = "sale.report"
fiscal_classification_id = fields.Many2one(
"account.product.fiscal.classification",
string="Product Fiscal Classification",
readonly=True,
)
def _select_additional_fields(self):
res = super()._select_additional_fields()
res["fiscal_classification_id"] = "t.fiscal_classification_id"
return res
def _group_by_sale(self):
res = super()._group_by_sale()
res += ", t.fiscal_classification_id"
return res
def _fill_pos_fields(self, additional_fields):
res = super()._fill_pos_fields(additional_fields)
res['fiscal_classification_id'] = "t.fiscal_classification_id"
return res
def _group_by_pos(self):
res = super()._group_by_pos()
res += ", t.fiscal_classification_id"
return res

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2023 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="view_order_product_search" model="ir.ui.view">
<field name="model">sale.report</field>
<field name="inherit_id" ref="sale.view_order_product_search"/>
<field name="arch" type="xml">
<filter name="Category" position="after">
<filter name="fiscal_classification_groupby" string="Product Fiscal Classification" context="{'group_by': 'fiscal_classification_id'}"/>
</filter>
</field>
</record>
</odoo>

View File

@@ -23,14 +23,14 @@ This modules adds the following functions:
* Add an *Overdue* filter on invoice search view (this feature was previously
located in te module *account_invoice_overdue_filter*)
* Increase the default limit of 80 lines in journal entries and journal items views.
* Increase the default limit of 80 lines in account move and account move line view.
* disable reconciliation "guessing"
* fast search on *Reconcile Ref* for journal items.
* fast search on *Reconcile Ref* for account move line.
* add sale dates to invoice report to be compliant with
https://www.service-public.fr/professionnels-entreprises/vosdroits/F31808
* Sale date on qweb invoices
* A wizard to mark several invoices as sent at once (forward from v8)
* Default date for reversal journal entry is now D+1 instead of today
* Default date for Account Move Reversal is now D+1 instead of today
* Track more fields on invoice (see details in account.py)
* Add boolean fields `has_discount` and `has_attachment` on invoice
* Add button "Delete line qty = 0" on supplier invoice
@@ -41,8 +41,8 @@ This modules adds the following functions:
* add direct search of journal using code
* add copy=False on some fields
* Add unicity constraint on analytic codes per company
* Better default values on journal entry
* Add link from journal items to to invoice
* Better default values on account move
* Add link from account move line to invoice
* Add start_date and end_date on bank statements
* Add transfer_account_id to invoicing config page
* Improve domain reconciliation widget

View File

@@ -1,3 +1,2 @@
from . import models
from . import wizard
from .hooks import post_init_hook

View File

@@ -1,41 +1,44 @@
# Copyright 2015-2022 Akretion (http://www.akretion.com)
# 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).
{
'name': 'Account Usability',
'version': '16.0.1.0.0',
'version': '14.0.1.0.0',
'category': 'Accounting & Finance',
'license': 'AGPL-3',
'summary': 'Small usability enhancements in account module',
'author': 'Akretion',
'website': 'https://github.com/akretion/odoo-usability',
'website': 'http://www.akretion.com',
'depends': [
'account',
'base_usability', # needed only to access base_usability.group_nobody
# in v12, I may create a module only for group_nobody
],
'data': [
'views/account_account_type.xml',
'views/account_account.xml',
'views/account_group.xml',
# 'views/account_bank_statement.xml',
'views/account_analytic_account.xml',
'views/account_analytic_group.xml',
'views/account_bank_statement.xml',
'views/account_invoice_report.xml',
'views/account_journal.xml',
'views/account_move.xml',
'views/account_analytic_line.xml',
'views/account_menu.xml',
'views/account_tax.xml',
# 'views/product.xml', # TODO
'views/product.xml',
'views/res_config_settings.xml',
'views/res_partner.xml',
'views/res_company.xml',
'views/account_report.xml',
'views/account_reconcile_model.xml',
'wizard/account_invoice_mark_sent_view.xml',
'wizard/account_group_generate_view.xml',
'wizard/account_payment_register_views.xml',
'wizard/account_move_reversal.xml',
'security/ir.model.access.csv',
# 'report/invoice_report.xml', # TODO
"views/res_partner.xml",
],
# 'qweb': ['static/src/xml/account_payment.xml'],
'report/invoice_report.xml',
],
'qweb': ['static/src/xml/account_payment.xml'],
'installable': True,
# "post_init_hook": "post_init_hook",
}

View File

@@ -0,0 +1,696 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_usability
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_usability
#: code:addons/account_usability/wizard/account_group_generate.py:0
#, python-format
msgid ""
"%d account groups already exists in company '%s'. This wizard is designed to"
" generate account groups from scratch."
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_account
msgid "Account"
msgstr ""
#. module: account_usability
#: code:addons/account_usability/wizard/account_group_generate.py:0
#, python-format
msgid "Account Groups"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_move_reversal
msgid "Account Move Reversal"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_reconciliation_widget
msgid "Account Reconciliation widget"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_journal__account_type_current_assets_id
msgid "Account Type Current Assets"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_journal__account_type_current_liabilities_id
msgid "Account Type Current Liabilities"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__account_reconcile
msgid "Allow Reconciliation"
msgstr ""
#. module: account_usability
#: model:ir.model.constraint,message:account_usability.constraint_account_analytic_account_code_company_unique
msgid ""
"An analytic account with the same code already exists in the same company!"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_analytic_account
msgid "Analytic Account"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_bank_statement_form
msgid "Are you sure to unreconcile all the entrie of the bank statement?"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_bank_statement_line__partner_bank_id
#: model:ir.model.fields,help:account_usability.field_account_move__partner_bank_id
msgid ""
"Bank Account Number to which the invoice will be paid. A Company bank "
"account if this is a Customer Invoice or Vendor Credit Note, otherwise a "
"Partner bank account number."
msgstr ""
#. module: account_usability
#: model:ir.ui.menu,name:account_usability.res_partner_bank_account_config_menu
msgid "Bank Accounts"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_bank_statement
msgid "Bank Statement"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr ""
#. module: account_usability
#: model:ir.ui.menu,name:account_usability.res_bank_account_config_menu
msgid "Banks"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.account_group_generate_form
#: model_terms:ir.ui.view,arch_db:account_usability.account_invoice_mark_sent_form
msgid "Cancel"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_move_line__account_reconcile
msgid ""
"Check this box if this account allows invoices & payments matching of "
"journal items."
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_search
msgid "Code"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_res_company
msgid "Companies"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_res_config_settings
msgid "Config Settings"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_res_partner
msgid "Contact"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__create_uid
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent__create_uid
msgid "Created by"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__create_date
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent__create_date
msgid "Created on"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_move_line__matched_credit_ids
msgid "Credit journal items that are matched with this journal item."
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_move_line_filter
msgid "Current Year"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__date
#: model:ir.model.fields,field_description:account_usability.field_account_move__date
#: model:ir.model.fields,field_description:account_usability.field_account_payment__date
msgid "Date"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_move_line__matched_debit_ids
msgid "Debit journal items that are matched with this journal item."
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_move_line_filter
msgid "Debit or Credit"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_account__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_analytic_account__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_incoterms__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_report__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_journal__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_move__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_move_reversal__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_partial_reconcile__display_name
#: model:ir.model.fields,field_description:account_usability.field_product_supplierinfo__display_name
#: model:ir.model.fields,field_description:account_usability.field_product_template__display_name
#: model:ir.model.fields,field_description:account_usability.field_res_company__display_name
#: model:ir.model.fields,field_description:account_usability.field_res_config_settings__display_name
#: model:ir.model.fields,field_description:account_usability.field_res_partner__display_name
msgid "Display Name"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__invoice_date_due
#: model:ir.model.fields,field_description:account_usability.field_account_move__invoice_date_due
#: model:ir.model.fields,field_description:account_usability.field_account_payment__invoice_date_due
msgid "Due Date"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement__end_date
#: model_terms:ir.ui.view,arch_db:account_usability.view_bank_statement_search
msgid "End Date"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_fiscal_position
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__fiscal_position_id
#: model:ir.model.fields,field_description:account_usability.field_account_move__fiscal_position_id
#: model:ir.model.fields,field_description:account_usability.field_account_payment__fiscal_position_id
#: model:ir.model.fields,field_description:account_usability.field_res_partner__property_account_position_id
#: model:ir.model.fields,field_description:account_usability.field_res_users__property_account_position_id
msgid "Fiscal Position"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_fiscalyear
msgid "Fiscal Year"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_bank_statement_line__fiscal_position_id
#: model:ir.model.fields,help:account_usability.field_account_move__fiscal_position_id
#: model:ir.model.fields,help:account_usability.field_account_payment__fiscal_position_id
msgid ""
"Fiscal positions are used to adapt taxes and accounts for particular "
"customers or sales orders/invoices. The default value comes from the "
"customer."
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__full_reconcile_id
msgid "Full Reconcile"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_move_line_filter
msgid "Fully Reconciled"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.account_group_generate_form
msgid "Generate"
msgstr ""
#. module: account_usability
#: model:ir.actions.act_window,name:account_usability.account_group_generate_action
#: model:ir.model,name:account_usability.model_account_group_generate
#: model:ir.ui.menu,name:account_usability.account_group_generate_menu
msgid "Generate Account Groups"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.account_group_generate_form
msgid "Generate account groups"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_analytic_account_search
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_search
msgid "Group"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_journal_search
msgid "Group By"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__has_attachment
#: model:ir.model.fields,field_description:account_usability.field_account_move__has_attachment
#: model:ir.model.fields,field_description:account_usability.field_account_payment__has_attachment
msgid "Has Attachment"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__has_discount
#: model:ir.model.fields,field_description:account_usability.field_account_move__has_discount
#: model:ir.model.fields,field_description:account_usability.field_account_payment__has_discount
msgid "Has Discount"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement__hide_bank_statement_balance
#: model:ir.model.fields,field_description:account_usability.field_account_journal__hide_bank_statement_balance
msgid "Hide Bank Statement Balance"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_account__id
#: model:ir.model.fields,field_description:account_usability.field_account_analytic_account__id
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement__id
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__id
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__id
#: model:ir.model.fields,field_description:account_usability.field_account_incoterms__id
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent__id
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_report__id
#: model:ir.model.fields,field_description:account_usability.field_account_journal__id
#: model:ir.model.fields,field_description:account_usability.field_account_move__id
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__id
#: model:ir.model.fields,field_description:account_usability.field_account_move_reversal__id
#: model:ir.model.fields,field_description:account_usability.field_account_partial_reconcile__id
#: model:ir.model.fields,field_description:account_usability.field_product_supplierinfo__id
#: model:ir.model.fields,field_description:account_usability.field_product_template__id
#: model:ir.model.fields,field_description:account_usability.field_res_company__id
#: model:ir.model.fields,field_description:account_usability.field_res_config_settings__id
#: model:ir.model.fields,field_description:account_usability.field_res_partner__id
msgid "ID"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_incoterms
msgid "Incoterms"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_res_config_settings__transfer_account_id
msgid "Inter-Banks Transfer Account"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_res_config_settings__transfer_account_id
msgid ""
"Intermediary account used when moving money from a liquidity account to "
"another"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_move_line__product_barcode
msgid "International Article Number used for product identification."
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_invoice
#: model:ir.model.fields,field_description:account_usability.field_res_partner__invoice_warn
#: model:ir.model.fields,field_description:account_usability.field_res_users__invoice_warn
msgid "Invoice"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_company_form
msgid "Invoice Legal Terms"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_invoice_line
msgid "Invoice Line"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.account_invoice_report_tree
msgid "Invoices Analysis"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_invoice_report
msgid "Invoices Statistics"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_journal
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__journal_id
#: model:ir.model.fields,field_description:account_usability.field_account_move__journal_id
#: model:ir.model.fields,field_description:account_usability.field_account_payment__journal_id
msgid "Journal"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_account____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_analytic_account____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_incoterms____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_report____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_journal____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_move____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_move_line____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_move_reversal____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_partial_reconcile____last_update
#: model:ir.model.fields,field_description:account_usability.field_product_supplierinfo____last_update
#: model:ir.model.fields,field_description:account_usability.field_product_template____last_update
#: model:ir.model.fields,field_description:account_usability.field_res_company____last_update
#: model:ir.model.fields,field_description:account_usability.field_res_config_settings____last_update
#: model:ir.model.fields,field_description:account_usability.field_res_partner____last_update
msgid "Last Modified on"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__write_uid
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent__write_uid
msgid "Last Updated by"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__write_date
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent__write_date
msgid "Last Updated on"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_company_form
msgid "Legal Terms"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_res_company__static_invoice_terms
msgid "Legal Terms on Invoice"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__level
msgid "Level"
msgstr ""
#. module: account_usability
#: model:ir.actions.act_window,name:account_usability.account_invoice_mark_sent_action
#: model_terms:ir.ui.view,arch_db:account_usability.account_invoice_mark_sent_form
msgid "Mark as Sent"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_invoice_mark_sent
#: model_terms:ir.ui.view,arch_db:account_usability.account_invoice_mark_sent_form
msgid "Mark invoices as sent"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_invoice_filter
msgid "Missing Attachment"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_partial_reconcile
msgid "Partial Reconcile"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__matched_credit_ids
msgid "Partial Reconcile Credit"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__matched_debit_ids
msgid "Partial Reconcile Debit"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_report__industry_id
msgid "Partner Industry"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__invoice_payment_term_id
#: model:ir.model.fields,field_description:account_usability.field_account_move__invoice_payment_term_id
#: model:ir.model.fields,field_description:account_usability.field_account_payment__invoice_payment_term_id
msgid "Payment Terms"
msgstr ""
#. module: account_usability
#: code:addons/account_usability/models/account_move.py:0
#, python-format
msgid "Please post the following entries before reconciliation :"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__name_prefix
msgid "Prefix"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_reconcile_model
msgid ""
"Preset to create journal entries during a invoices and payments matching"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_move_line_filter
msgid "Previous Year"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_move_form
msgid "Print"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__product_barcode
msgid "Product Barcode"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_product_template
msgid "Product Template"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_product_product__purchase_price_type
#: model:ir.model.fields,field_description:account_usability.field_product_supplierinfo__purchase_price_type
#: model:ir.model.fields,field_description:account_usability.field_product_template__purchase_price_type
msgid "Purchase Price Type"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__partner_bank_id
#: model:ir.model.fields,field_description:account_usability.field_account_move__partner_bank_id
msgid "Recipient Bank"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__reconcile_string
msgid "Reconcile"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__ref
#: model:ir.model.fields,field_description:account_usability.field_account_move__ref
#: model:ir.model.fields,field_description:account_usability.field_account_payment__ref
msgid "Reference"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_reversal__date
msgid "Reversal date"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__sale_dates
#: model:ir.model.fields,field_description:account_usability.field_account_move__sale_dates
#: model:ir.model.fields,field_description:account_usability.field_account_payment__sale_dates
msgid "Sale Dates"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_product_product__sale_price_type
#: model:ir.model.fields,field_description:account_usability.field_product_template__sale_price_type
msgid "Sale Price Type"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_res_partner__invoice_warn
#: model:ir.model.fields,help:account_usability.field_res_users__invoice_warn
msgid ""
"Selecting the \"Warning\" option will notify user with the message, "
"Selecting \"Blocking Message\" will throw an exception with the message and "
"block the flow. The Message has to be written in the next field."
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_invoice_filter
msgid "Sent"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement__start_date
#: model_terms:ir.ui.view,arch_db:account_usability.view_bank_statement_search
msgid "Start Date"
msgstr ""
#. module: account_usability
#: model:ir.model,name:account_usability.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.product_supplierinfo_tree_view
msgid "Tax"
msgstr ""
#. module: account_usability
#: code:addons/account_usability/models/product.py:0
#, python-format
msgid "Tax excl."
msgstr ""
#. module: account_usability
#: code:addons/account_usability/models/product.py:0
#, python-format
msgid "Tax incl."
msgstr ""
#. module: account_usability
#: code:addons/account_usability/wizard/account_group_generate.py:0
#, python-format
msgid ""
"The code of account '%s' is %d caracters. It cannot be inferior to level "
"(%d)."
msgstr ""
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_res_partner__property_account_position_id
#: model:ir.model.fields,help:account_usability.field_res_users__property_account_position_id
msgid ""
"The fiscal position determines the taxes/accounts used for this contact."
msgstr ""
#. module: account_usability
#: code:addons/account_usability/wizard/account_group_generate.py:0
#, python-format
msgid "The level must be >= 1."
msgstr ""
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_bank_statement_line__sale_dates
#: model:ir.model.fields,help:account_usability.field_account_move__sale_dates
#: model:ir.model.fields,help:account_usability.field_account_payment__sale_dates
msgid ""
"This information appears on invoice qweb report (you may use it for your own"
" report)"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.account_group_generate_form
msgid ""
"This wizard is designed to auto-generate account groups from the chart of "
"account."
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.account_invoice_mark_sent_form
msgid ""
"This wizard will mark as <i>sent</i> all the selected invoices in open or "
"paid state."
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_invoice_filter
msgid "To Send"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__amount_total
#: model:ir.model.fields,field_description:account_usability.field_account_move__amount_total
#: model:ir.model.fields,field_description:account_usability.field_account_payment__amount_total
msgid "Total"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.res_config_settings_view_form
msgid ""
"Transit account when you transfer money from a bank account of your company "
"to another bank account of your company."
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_journal_search
msgid "Type"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_bank_statement_form
msgid "Unreconcile All"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_move_line_filter
msgid "Unreconciled or Partially Reconciled"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_bank_statement_form
msgid "View Journal Entry"
msgstr ""
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_move_line_tree
msgid "View Journal Entry Form"
msgstr ""
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_bank_statement__hide_bank_statement_balance
#: model:ir.model.fields,help:account_usability.field_account_journal__hide_bank_statement_balance
msgid ""
"You may want to enable this option when your bank journal is generated from "
"a bank statement file that doesn't handle start/end balance (QIF for "
"instance) and you don't want to enter the start/end balance manually: it "
"will prevent the display of wrong information in the accounting dashboard "
"and on bank statements."
msgstr ""

View File

@@ -0,0 +1,744 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_usability
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-06-01 14:17+0000\n"
"PO-Revision-Date: 2022-09-18 18:55+0200\n"
"Last-Translator: \n"
"Language-Team: Alpis Traduction et Interprétation <info@alpis.fr>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.4\n"
#. module: account_usability
#: code:addons/account_usability/wizard/account_group_generate.py:0
#, python-format
msgid ""
"%d account groups already exists in company '%s'. This wizard is designed "
"to generate account groups from scratch."
msgstr ""
"%d des groupes de comptes existent déjà dans la société '%s'. Cet "
"assistant est conçu pour créer des groupes de comptes à partir de zéro."
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_account
msgid "Account"
msgstr "Compte"
#. module: account_usability
#: code:addons/account_usability/wizard/account_group_generate.py:0
#, python-format
msgid "Account Groups"
msgstr "Groupes de comptes"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_move_reversal
msgid "Account Move Reversal"
msgstr "Extourne d'écritures"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_reconciliation_widget
msgid "Account Reconciliation widget"
msgstr "Outils de lettrage de compte"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_journal__account_type_current_assets_id
msgid "Account Type Current Assets"
msgstr "Type de compte actif circulant"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_journal__account_type_current_liabilities_id
msgid "Account Type Current Liabilities"
msgstr "Type de compte Dettes à court terme"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__account_reconcile
msgid "Allow Reconciliation"
msgstr "Autoriser le lettrage"
#. module: account_usability
#: model:ir.model.constraint,message:account_usability.constraint_account_analytic_account_code_company_unique
msgid ""
"An analytic account with the same code already exists in the same company!"
msgstr ""
"Un compte analytique avec le même code existe déjà dans la même société !"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_analytic_account
msgid "Analytic Account"
msgstr "Compte analytique"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_bank_statement_form
msgid "Are you sure to unreconcile all the entries of the bank statement?"
msgstr "Êtes-vous sûr de vouloir délettrer toutes les écritures du relevé ?"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__balance
#: model_terms:ir.ui.view,arch_db:account_usability.view_move_line_tree
msgid "Balance"
msgstr "Solde"
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_bank_statement_line__partner_bank_id
#: model:ir.model.fields,help:account_usability.field_account_move__partner_bank_id
msgid ""
"Bank Account Number to which the invoice will be paid. A Company bank "
"account if this is a Customer Invoice or Vendor Credit Note, otherwise a "
"Partner bank account number."
msgstr ""
"Numéro du compte bancaire sur lequel la facture sera payée. Un compte "
"bancaire de la société s'il s'agit d'une facture client ou d'un avoir du "
"fournisseur, sinon un numéro de compte bancaire du tiers."
#. module: account_usability
#: model:ir.ui.menu,name:account_usability.res_partner_bank_account_config_menu
msgid "Bank Accounts"
msgstr "Comptes bancaires"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_bank_statement
msgid "Bank Statement"
msgstr "Relevé de compte"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Ligne de relevé de compte"
#. module: account_usability
#: model:ir.ui.menu,name:account_usability.res_bank_account_config_menu
msgid "Banks"
msgstr "Banques"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.account_group_generate_form
#: model_terms:ir.ui.view,arch_db:account_usability.account_invoice_mark_sent_form
msgid "Cancel"
msgstr "Annuler"
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_move_line__account_reconcile
msgid ""
"Check this box if this account allows invoices & payments matching of "
"journal items."
msgstr ""
"Cochez cette case si ce compte permet de faire du rapprochement entre "
"factures et paiements."
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_search
msgid "Code"
msgstr "Code"
#. module: account_usability
#: model:ir.model,name:account_usability.model_res_company
msgid "Companies"
msgstr "Sociétés"
#. module: account_usability
#: model:ir.model,name:account_usability.model_res_config_settings
msgid "Config Settings"
msgstr "Paramètres de configuration"
#. module: account_usability
#: model:ir.model,name:account_usability.model_res_partner
msgid "Contact"
msgstr "Contact"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__create_uid
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__create_date
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent__create_date
msgid "Created on"
msgstr "Créé le"
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_move_line__matched_credit_ids
msgid "Credit journal items that are matched with this journal item."
msgstr "Écritures comptables au crédit qui correspondent à cette écriture comptable."
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_move_line_filter
msgid "Current Year"
msgstr "Année en cours"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__date
#: model:ir.model.fields,field_description:account_usability.field_account_move__date
#: model:ir.model.fields,field_description:account_usability.field_account_payment__date
msgid "Date"
msgstr "Date"
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_move_line__matched_debit_ids
msgid "Debit journal items that are matched with this journal item."
msgstr "Écritures comptables au débit qui correspondent avec cette écriture comptable."
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_move_line_filter
msgid "Debit or Credit"
msgstr "Débit ou crédit"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_account__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_analytic_account__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_incoterms__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_report__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_journal__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_move__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_move_reversal__display_name
#: model:ir.model.fields,field_description:account_usability.field_account_partial_reconcile__display_name
#: model:ir.model.fields,field_description:account_usability.field_product_supplierinfo__display_name
#: model:ir.model.fields,field_description:account_usability.field_product_template__display_name
#: model:ir.model.fields,field_description:account_usability.field_res_company__display_name
#: model:ir.model.fields,field_description:account_usability.field_res_config_settings__display_name
#: model:ir.model.fields,field_description:account_usability.field_res_partner__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__invoice_date_due
#: model:ir.model.fields,field_description:account_usability.field_account_move__invoice_date_due
#: model:ir.model.fields,field_description:account_usability.field_account_payment__invoice_date_due
msgid "Due Date"
msgstr "Date d'échéance"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement__end_date
#: model_terms:ir.ui.view,arch_db:account_usability.view_bank_statement_search
msgid "End Date"
msgstr "Date de Fin"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_fiscal_position
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__fiscal_position_id
#: model:ir.model.fields,field_description:account_usability.field_account_move__fiscal_position_id
#: model:ir.model.fields,field_description:account_usability.field_account_payment__fiscal_position_id
#: model:ir.model.fields,field_description:account_usability.field_res_partner__property_account_position_id
#: model:ir.model.fields,field_description:account_usability.field_res_users__property_account_position_id
msgid "Fiscal Position"
msgstr "Position fiscale"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_fiscalyear
msgid "Fiscal Year"
msgstr "Exercice"
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_bank_statement_line__fiscal_position_id
#: model:ir.model.fields,help:account_usability.field_account_move__fiscal_position_id
#: model:ir.model.fields,help:account_usability.field_account_payment__fiscal_position_id
msgid ""
"Fiscal positions are used to adapt taxes and accounts for particular "
"customers or sales orders/invoices. The default value comes from the "
"customer."
msgstr ""
"Les positions fiscales sont utilisées pour adapter les taxes et les comptes "
"à des clients particuliers ou à des bons de commande/factures. La valeur "
"par défaut provient du client."
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__full_reconcile_id
msgid "Full Reconcile"
msgstr "Marque de lettrage"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_move_line_filter
msgid "Fully Reconciled"
msgstr "Lettré totalement"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.account_group_generate_form
msgid "Generate"
msgstr "Générer"
#. module: account_usability
#: model:ir.actions.act_window,name:account_usability.account_group_generate_action
#: model:ir.model,name:account_usability.model_account_group_generate
#: model:ir.ui.menu,name:account_usability.account_group_generate_menu
msgid "Generate Account Groups"
msgstr "Générer les groupes de comptes"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_analytic_account_search
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_search
msgid "Group"
msgstr "Groupe"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_journal_search
msgid "Group By"
msgstr "Regrouper par"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__has_attachment
#: model:ir.model.fields,field_description:account_usability.field_account_move__has_attachment
#: model:ir.model.fields,field_description:account_usability.field_account_payment__has_attachment
msgid "Has Attachment"
msgstr "Possède une pièce jointe"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__has_discount
#: model:ir.model.fields,field_description:account_usability.field_account_move__has_discount
#: model:ir.model.fields,field_description:account_usability.field_account_payment__has_discount
msgid "Has Discount"
msgstr "A une réduction"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement__hide_bank_statement_balance
#: model:ir.model.fields,field_description:account_usability.field_account_journal__hide_bank_statement_balance
msgid "Hide Bank Statement Balance"
msgstr "Masquer le solde du relevé bancaire"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_account__id
#: model:ir.model.fields,field_description:account_usability.field_account_analytic_account__id
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement__id
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__id
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__id
#: model:ir.model.fields,field_description:account_usability.field_account_incoterms__id
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent__id
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_report__id
#: model:ir.model.fields,field_description:account_usability.field_account_journal__id
#: model:ir.model.fields,field_description:account_usability.field_account_move__id
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__id
#: model:ir.model.fields,field_description:account_usability.field_account_move_reversal__id
#: model:ir.model.fields,field_description:account_usability.field_account_partial_reconcile__id
#: model:ir.model.fields,field_description:account_usability.field_product_supplierinfo__id
#: model:ir.model.fields,field_description:account_usability.field_product_template__id
#: model:ir.model.fields,field_description:account_usability.field_res_company__id
#: model:ir.model.fields,field_description:account_usability.field_res_config_settings__id
#: model:ir.model.fields,field_description:account_usability.field_res_partner__id
msgid "ID"
msgstr "ID"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_incoterms
msgid "Incoterms"
msgstr "Incoterms"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_res_config_settings__transfer_account_id
msgid "Inter-Banks Transfer Account"
msgstr "Compte de transfert inter-bancaire"
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_res_config_settings__transfer_account_id
msgid ""
"Intermediary account used when moving money from a liquidity account to "
"another"
msgstr ""
"Compte intermédiaire utilisé pour déplacer de l'argent d'un compte de "
"trésorerie vers un autre"
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_move_line__product_barcode
msgid "International Article Number used for product identification."
msgstr ""
"Numéro d'article international (IAN) utilisé pour identifier cet article."
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_invoice
#: model:ir.model.fields,field_description:account_usability.field_res_partner__invoice_warn
#: model:ir.model.fields,field_description:account_usability.field_res_users__invoice_warn
msgid "Invoice"
msgstr "Facture"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_company_form
msgid "Invoice Legal Terms"
msgstr "Mentions légales sur les factures"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_invoice_line
msgid "Invoice Line"
msgstr "Lignes de facture"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.account_invoice_report_tree
msgid "Invoices Analysis"
msgstr "Analyse des factures"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_invoice_report
msgid "Invoices Statistics"
msgstr "Statistiques des factures"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_journal
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__journal_id
#: model:ir.model.fields,field_description:account_usability.field_account_move__journal_id
#: model:ir.model.fields,field_description:account_usability.field_account_payment__journal_id
msgid "Journal"
msgstr "Journal"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_move
msgid "Journal Entry"
msgstr "Pièce comptable"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_move_line
msgid "Journal Item"
msgstr "Écriture comptable"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_account____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_analytic_account____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_incoterms____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_report____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_journal____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_move____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_move_line____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_move_reversal____last_update
#: model:ir.model.fields,field_description:account_usability.field_account_partial_reconcile____last_update
#: model:ir.model.fields,field_description:account_usability.field_product_supplierinfo____last_update
#: model:ir.model.fields,field_description:account_usability.field_product_template____last_update
#: model:ir.model.fields,field_description:account_usability.field_res_company____last_update
#: model:ir.model.fields,field_description:account_usability.field_res_config_settings____last_update
#: model:ir.model.fields,field_description:account_usability.field_res_partner____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__write_uid
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent__write_uid
msgid "Last Updated by"
msgstr "Mis à jour par"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__write_date
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_mark_sent__write_date
msgid "Last Updated on"
msgstr "Mis à jour le"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_company_form
msgid "Legal Terms"
msgstr "Mentions légales"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_res_company__static_invoice_terms
msgid "Legal Terms on Invoice"
msgstr "Mentions légales sur les factures"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__level
msgid "Level"
msgstr "Niveau"
#. module: account_usability
#: model:ir.actions.act_window,name:account_usability.account_invoice_mark_sent_action
#: model_terms:ir.ui.view,arch_db:account_usability.account_invoice_mark_sent_form
msgid "Mark as Sent"
msgstr "Marquer comme envoyé"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_invoice_mark_sent
#: model_terms:ir.ui.view,arch_db:account_usability.account_invoice_mark_sent_form
msgid "Mark invoices as sent"
msgstr "Marquer les factures comme envoyées"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_invoice_filter
msgid "Missing Attachment"
msgstr "Pièce jointe manquante"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_partial_reconcile
msgid "Partial Reconcile"
msgstr "Lettrage partiel"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__matched_credit_ids
msgid "Partial Reconcile Credit"
msgstr "Crédit de lettrage partiel"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__matched_debit_ids
msgid "Partial Reconcile Debit"
msgstr "Débit de lettrage partiel"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_invoice_report__industry_id
msgid "Partner Industry"
msgstr "Secteur dactivité du partenaire"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__invoice_payment_term_id
#: model:ir.model.fields,field_description:account_usability.field_account_move__invoice_payment_term_id
#: model:ir.model.fields,field_description:account_usability.field_account_payment__invoice_payment_term_id
msgid "Payment Terms"
msgstr "Conditions de paiement"
#. module: account_usability
#: code:addons/account_usability/models/account_move.py:0
#, python-format
msgid "Please post the following entries before reconciliation :"
msgstr "Veuillez comptabiliser les pièces suivantes avant le lettrage :"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_group_generate__name_prefix
msgid "Prefix"
msgstr "Préfixe"
#. module: account_usability
#: model:ir.model,name:account_usability.model_account_reconcile_model
msgid ""
"Preset to create journal entries during a invoices and payments matching"
msgstr ""
"Préconfigurer pour créer une écriture pendant la correspondance entre des "
"factures et des paiements"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_move_line_filter
msgid "Previous Year"
msgstr "Année précédente"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_move_form
msgid "Print"
msgstr "Imprimer"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__product_barcode
msgid "Product Barcode"
msgstr "Code barre du produit"
#. module: account_usability
#: model:ir.model,name:account_usability.model_product_template
msgid "Product Template"
msgstr "Modèle de produit"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_product_product__purchase_price_type
#: model:ir.model.fields,field_description:account_usability.field_product_supplierinfo__purchase_price_type
#: model:ir.model.fields,field_description:account_usability.field_product_template__purchase_price_type
msgid "Purchase Price Type"
msgstr "Type de prix dachat"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__partner_bank_id
#: model:ir.model.fields,field_description:account_usability.field_account_move__partner_bank_id
msgid "Recipient Bank"
msgstr "Compte bancaire destinataire"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_line__reconcile_string
msgid "Reconcile"
msgstr "Lettrer"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__ref
#: model:ir.model.fields,field_description:account_usability.field_account_move__ref
#: model:ir.model.fields,field_description:account_usability.field_account_payment__ref
msgid "Reference"
msgstr "Référence"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_move_reversal__date
msgid "Reversal date"
msgstr "Date d'extourne"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__sale_dates
#: model:ir.model.fields,field_description:account_usability.field_account_move__sale_dates
#: model:ir.model.fields,field_description:account_usability.field_account_payment__sale_dates
msgid "Sale Dates"
msgstr "Dates de vente"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_product_product__sale_price_type
#: model:ir.model.fields,field_description:account_usability.field_product_template__sale_price_type
msgid "Sale Price Type"
msgstr "Type de prix de vente"
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_res_partner__invoice_warn
#: model:ir.model.fields,help:account_usability.field_res_users__invoice_warn
msgid ""
"Selecting the \"Warning\" option will notify user with the message, "
"Selecting \"Blocking Message\" will throw an exception with the message and "
"block the flow. The Message has to be written in the next field."
msgstr ""
"Sélectionner l'option 'Avertissement' notifiera l'utilisateur avec le "
"Message. Sélectionner 'Message Bloquant' lancera une exception avec le "
"message et bloquera le flux. Le Message doit être encodé dans le champ "
"suivant."
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_invoice_filter
msgid "Sent"
msgstr "Envoyé"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement__start_date
#: model_terms:ir.ui.view,arch_db:account_usability.view_bank_statement_search
msgid "Start Date"
msgstr "Date de Début"
#. module: account_usability
#: model:ir.model,name:account_usability.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr "Liste prix fournisseur"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.product_supplierinfo_tree_view
msgid "Tax"
msgstr "Taxe"
#. module: account_usability
#: code:addons/account_usability/models/product.py:0
#, python-format
msgid "Tax excl."
msgstr "HT"
#. module: account_usability
#: code:addons/account_usability/models/product.py:0
#, python-format
msgid "Tax incl."
msgstr "TTC"
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_move_line__balance
msgid ""
"Technical field holding the debit - credit in order to open meaningful "
"graph views from reports"
msgstr ""
"Champ technique égal à 'débit - crédit', utilisé pour les vues graphes dans "
"les rapports"
#. module: account_usability
#: code:addons/account_usability/wizard/account_group_generate.py:0
#, python-format
msgid ""
"The code of account '%s' is %d caracters. It cannot be inferior to level "
"(%d)."
msgstr ""
"Le code du compte '%s' fait %d caractères. Il ne peut pas être de niveau "
"inférieur à (%d)."
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_res_partner__property_account_position_id
#: model:ir.model.fields,help:account_usability.field_res_users__property_account_position_id
msgid ""
"The fiscal position determines the taxes/accounts used for this contact."
msgstr ""
"La position fiscale détermine les taxes / comptes utilisés pour ce contact."
#. module: account_usability
#: code:addons/account_usability/wizard/account_group_generate.py:0
#, python-format
msgid "The level must be >= 1."
msgstr "Le niveau doit être >= 1."
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_bank_statement_line__sale_dates
#: model:ir.model.fields,help:account_usability.field_account_move__sale_dates
#: model:ir.model.fields,help:account_usability.field_account_payment__sale_dates
msgid ""
"This information appear on invoice qweb report (you may use it for your "
"own report)"
msgstr ""
"Cette information apparait sur le rapport qweb de la facture (vous "
"pouvez les utiliser pour votre propre rapport)"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.account_group_generate_form
msgid ""
"This wizard is designed to auto-generate account groups from the chart of "
"account."
msgstr ""
"Cet assistant est conçu pour générer automatiquement les groupes de comptes "
"à partir du plan comptable."
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.account_invoice_mark_sent_form
msgid ""
"This wizard will mark as <i>sent</i> all the selected posted invoices."
msgstr ""
"Cet assistant marquera comme <i>envoyées</i> toutes les factures "
"sélectionnées et comptabilisées."
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_invoice_filter
msgid "To Send"
msgstr "À envoyer"
#. module: account_usability
#: model:ir.model.fields,field_description:account_usability.field_account_bank_statement_line__amount_total
#: model:ir.model.fields,field_description:account_usability.field_account_move__amount_total
#: model:ir.model.fields,field_description:account_usability.field_account_payment__amount_total
msgid "Total"
msgstr "Total"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.res_config_settings_view_form
msgid ""
"Transit account when you transfer money from a bank account of your company "
"to another bank account of your company."
msgstr ""
"Compte de transit lorsque vous transférez de l'argent d'un compte bancaire "
"de votre entreprise vers un autre compte bancaire de votre entreprise."
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_journal_search
msgid "Type"
msgstr "Type"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_bank_statement_form
msgid "Unreconcile All"
msgstr "Tout délettrer"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_account_move_line_filter
msgid "Unreconciled or Partially Reconciled"
msgstr "Non lettré ou partiellement lettré"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_bank_statement_form
msgid "View Journal Entry"
msgstr "Voir la pièce comptable"
#. module: account_usability
#: model_terms:ir.ui.view,arch_db:account_usability.view_move_line_tree
msgid "View Journal Entry Form"
msgstr "Voir la pièce comptable en vue formulaire"
#. module: account_usability
#: model:ir.model.fields,help:account_usability.field_account_bank_statement__hide_bank_statement_balance
#: model:ir.model.fields,help:account_usability.field_account_journal__hide_bank_statement_balance
msgid ""
"You may want to enable this option when your bank journal is generated from "
"a bank statement file that doesn't handle start/end balance (QIF for "
"instance) and you don't want to enter the start/end balance manually: it "
"will prevent the display of wrong information in the accounting dashboard "
"and on bank statements."
msgstr ""
"Vous pouvez activer cette option lorsque votre journal bancaire est généré "
"à partir d'un fichier de relevés bancaires qui ne gère pas le solde de "
"début/fin (par exemple QIF) et que vous ne souhaitez pas saisir le solde de "
"début/fin manuellement : cela empêchera l'affichage d'informations erronées "
"dans le tableau de bord comptable et sur les relevés bancaires."

View File

@@ -0,0 +1,55 @@
diff --git a/addons/account/models/account_payment.py b/addons/account/models/account_payment.py
index 2dd1f9cef83..62275fca65e 100644
--- a/addons/account/models/account_payment.py
+++ b/addons/account/models/account_payment.py
@@ -262,6 +262,7 @@ class AccountPayment(models.Model):
'credit': write_off_balance > 0.0 and write_off_balance or 0.0,
'partner_id': self.partner_id.id,
'account_id': write_off_line_vals.get('account_id'),
+ 'analytic_account_id': write_off_line_vals.get('analytic_account_id'),
})
return line_vals_list
@@ -699,6 +700,7 @@ class AccountPayment(models.Model):
'name': writeoff_lines[0].name,
'amount': writeoff_amount * sign,
'account_id': writeoff_lines[0].account_id.id,
+ 'analytic_account_id': writeoff_lines[0].analytic_account_id.id,
}
else:
write_off_line_vals = {}
diff --git a/addons/account/wizard/account_payment_register.py b/addons/account/wizard/account_payment_register.py
index 3fc91f716ad..35636774c7e 100644
--- a/addons/account/wizard/account_payment_register.py
+++ b/addons/account/wizard/account_payment_register.py
@@ -93,6 +93,7 @@ class AccountPaymentRegister(models.TransientModel):
], default='open', string="Payment Difference Handling")
writeoff_account_id = fields.Many2one('account.account', string="Difference Account", copy=False,
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]")
+ writeoff_analytic_account_id = fields.Many2one('account.analytic.account', string="Difference Analytic Account", copy=False, domain="[('company_id', '=', company_id)]")
writeoff_label = fields.Char(string='Journal Item Label', default='Write-Off',
help='Change label of the counterpart that will hold the payment difference')
@@ -422,6 +423,7 @@ class AccountPaymentRegister(models.TransientModel):
'name': self.writeoff_label,
'amount': self.payment_difference,
'account_id': self.writeoff_account_id.id,
+ 'analytic_account_id': self.writeoff_analytic_account_id.id or False,
}
return payment_vals
diff --git a/addons/account/wizard/account_payment_register_views.xml b/addons/account/wizard/account_payment_register_views.xml
index 16eec30e265..b9386567baa 100644
--- a/addons/account/wizard/account_payment_register_views.xml
+++ b/addons/account/wizard/account_payment_register_views.xml
@@ -65,6 +65,10 @@
string="Post Difference In"
options="{'no_create': True}"
attrs="{'required': [('payment_difference_handling', '=', 'reconcile')]}"/>
+ <label for="writeoff_analytic_account_id" class="oe_edit_only" string="Analytic Account" groups="analytic.group_analytic_accounting"/>
+ <field name="writeoff_analytic_account_id"
+ groups="analytic.group_analytic_accounting"
+ options="{'no_create': True}" />
<label for="writeoff_label" class="oe_edit_only" string="Label"/>
<field name="writeoff_label" attrs="{'required': [('payment_difference_handling', '=', 'reconcile')]}"/>
</div>

View File

@@ -1,12 +1,11 @@
from . import account_account
from . import account_analytic_account
#from . import account_bank_statement
from . import account_bank_statement
from . import account_incoterms
from . import account_journal
from . import account_move
from . import account_partial_reconcile
from . import res_partner
from . import res_company
#from . import product
from . import product
from . import account_invoice_report
from . import res_partner_bank

View File

@@ -0,0 +1,59 @@
# 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, models
import logging
logger = logging.getLogger(__name__)
class AccountAccount(models.Model):
_inherit = 'account.account'
@api.depends('name', 'code')
def name_get(self):
if self._context.get('account_account_show_code_only'):
res = []
for record in self:
res.append((record.id, record.code))
return res
else:
return super().name_get()
# https://github.com/odoo/odoo/issues/23040
# TODO mig to v14 ?
def fix_bank_account_types(self):
aao = self.env['account.account']
companies = self.env['res.company'].search([])
if len(companies) > 1:
self = self.sudo()
logger.info("START the script 'fix bank and cash account types'")
bank_type = self.env.ref('account.data_account_type_liquidity')
asset_type = self.env.ref('account.data_account_type_current_assets')
journals = self.env['account.journal'].search(
[('type', 'in', ('bank', 'cash'))], order='company_id')
journal_accounts_bank_type = aao
for journal in journals:
for account in [
journal.default_credit_account_id,
journal.default_debit_account_id]:
if account:
if account.user_type_id != bank_type:
account.user_type_id = bank_type.id
logger.info(
'Company %s: Account %s updated to Bank '
'and Cash type',
account.company_id.display_name, account.code)
if account not in journal_accounts_bank_type:
journal_accounts_bank_type += account
accounts = aao.search([
('user_type_id', '=', bank_type.id)], order='company_id, code')
for account in accounts:
if account not in journal_accounts_bank_type:
account.user_type_id = asset_type.id
logger.info(
'Company %s: Account %s updated to Current Asset type',
account.company_id.display_name, account.code)
logger.info("END of the script 'fix bank and cash account types'")
return True

View File

@@ -1,4 +1,4 @@
# Copyright 2015-2022 Akretion (http://www.akretion.com)
# 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).
@@ -7,8 +7,6 @@ from odoo import models
class AccountAnalyticAccount(models.Model):
_inherit = 'account.analytic.account'
# native: _order = 'plan_id, name asc'
_order = 'plan_id, code, name'
def name_get(self):
if self._context.get('analytic_account_show_code_only'):

View File

@@ -1,4 +1,4 @@
# Copyright 2015-2022 Akretion (http://www.akretion.com)
# 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).
@@ -8,11 +8,6 @@ from odoo import api, models
class AccountIncoterms(models.Model):
_inherit = 'account.incoterms'
_sql_constraints = [(
'code_unique',
'unique(code)',
'This incoterm code already exists.')]
@api.depends('code', 'name')
def name_get(self):
res = []

View File

@@ -1,4 +1,4 @@
# Copyright 2015-2022 Akretion (http://www.akretion.com)
# 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).
@@ -9,18 +9,24 @@ class AccountJournal(models.Model):
_inherit = 'account.journal'
hide_bank_statement_balance = fields.Boolean(
string='Hide and Disable Bank Statement Balance', default=True,
string='Hide and Disable Bank Statement Balance',
help="When this option is enabled, the start and end balance is "
"not displayed on the bank statement form view, and the check of "
"the end balance vs the real end balance is disabled. When you enable "
"this option, you process the statement lines without considering "
"the start/end balance and you regularly check the accounting balance "
"of the bank account vs the amount of your bank account."
"of the bank account vs the amount of your bank account "
"(the 2 processes are managed separately)."
)
# Used to set default user_type_id on account fields via context
# account_type_current_assets_id = fields.Many2one(
# 'account.account.type',
# default=lambda self: self.env.ref('account.data_account_type_current_assets').id)
account_type_current_assets_id = fields.Many2one(
'account.account.type',
default=lambda self: self.env.ref('account.data_account_type_current_assets').id)
# SQL constraint in the 'account' module: unique(code, name, company_id) !!!
_sql_constraints = [(
'code_unique', 'unique(code, company_id)',
'Another journal already has this code in this company!')]
@api.depends(
'name', 'currency_id', 'company_id', 'company_id.currency_id', 'code')
@@ -56,11 +62,26 @@ class AccountJournal(models.Model):
}
return action
# field used in journal dashboard for bank journals
# compute account_balance like in v14, using accounting and
# NOT bank statement balance_start/balance_end
def _compute_current_statement_balance(self):
query_result = self._get_journal_dashboard_bank_running_balance()
for journal in self:
journal.has_statement_lines = query_result.get(journal.id)[0]
journal.current_statement_balance = journal._get_journal_bank_account_balance()[0]
# @api.constrains('default_credit_account_id', 'default_debit_account_id')
# def _check_account_type_on_bank_journal(self):
# bank_acc_type = self.env.ref('account.data_account_type_liquidity')
# for jrl in self:
# if jrl.type in ('bank', 'cash'):
# if (
# jrl.default_debit_account_id and
# jrl.default_debit_account_id.user_type_id !=
# bank_acc_type):
# raise ValidationError(_(
# "On journal '%s', the default debit account '%s' "
# "should be configured with Type = 'Bank and Cash'.")
# % (jrl.display_name,
# jrl.default_debit_account_id.display_name))
# if (
# jrl.default_credit_account_id and
# jrl.default_credit_account_id.user_type_id !=
# bank_acc_type):
# raise ValidationError(_(
# "On journal '%s', the default credit account '%s' "
# "should be configured with Type = 'Bank and Cash'.")
# % (jrl.display_name,
# jrl.default_credit_account_id.display_name))

View File

@@ -1,19 +1,13 @@
# Copyright 2015-2022 Akretion (http://www.akretion.com)
# 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 datetime import timedelta
from collections import defaultdict
import logging
from odoo import api, fields, models, _
from odoo.exceptions import UserError
from odoo.osv import expression
from odoo.tools import float_is_zero
from odoo.tools.misc import format_date
from odoo.tools.safe_eval import safe_eval, time
_logger = logging.getLogger(__name__)
from odoo.osv import expression
from datetime import timedelta
from odoo.exceptions import UserError
class AccountMove(models.Model):
@@ -22,59 +16,33 @@ class AccountMove(models.Model):
# By default, we can still modify "ref" when account move is posted
# which seems a bit lazy for me...
ref = fields.Char(states={'posted': [('readonly', True)]})
date = fields.Date(tracking=True)
invoice_date_due = fields.Date(tracking=True)
invoice_payment_term_id = fields.Many2one(tracking=True)
journal_id = fields.Many2one(tracking=True)
partner_bank_id = fields.Many2one(tracking=True)
fiscal_position_id = fields.Many2one(tracking=True)
amount_total = fields.Monetary(tracking=True)
# for invoice report
has_discount = fields.Boolean(compute='_compute_has_discount')
has_discount = fields.Boolean(
compute='_compute_has_discount', readonly=True)
# has_attachment is useful for those who use attachment to archive
# supplier invoices. It allows them to find supplier invoices
# that don't have any attachment
has_attachment = fields.Boolean(
compute='_compute_has_attachment', search='_search_has_attachment')
compute='_compute_has_attachment',
search='_search_has_attachment', readonly=True)
sale_dates = fields.Char(
compute="_compute_sales_dates",
compute="_compute_sales_dates", readonly=True,
help="This information appear on invoice qweb report "
"(you may use it for your own report)")
# There is a native "blocked" field (bool) on account.move.line
# We want to have that field on invoices to improve usability
# while keeping compatibility with the standard Odoo datamodel
blocked = fields.Boolean(
compute="_compute_blocked",
inverse="_inverse_blocked",
store=True,
string="Dispute",
tracking=True,
)
# Field search_account_id is just for search view
search_account_id = fields.Many2one(related='line_ids.account_id')
@api.depends("line_ids", "line_ids.blocked")
def _compute_blocked(self):
for move in self:
move.blocked = any(
[
l.blocked
for l in move.line_ids
if l.account_id.account_type in ("liability_payable", "asset_receivable")
]
)
def _inverse_blocked(self):
for move in self:
for line in move.line_ids.filtered(
lambda l: l.account_id.account_type in ("liability_payable", "asset_receivable")
):
line.blocked = move.blocked
def _compute_has_discount(self):
prec = self.env['decimal.precision'].precision_get('Discount')
for inv in self:
has_discount = False
for line in inv.invoice_line_ids:
if line.display_type == 'product' and not float_is_zero(line.discount, precision_digits=prec):
if not line.display_type and not float_is_zero(line.discount, precision_digits=prec):
has_discount = True
break
inv.has_discount = has_discount
@@ -122,19 +90,27 @@ class AccountMove(models.Model):
res.append((old_re[0], name))
return res
def _reverse_moves(self, default_values_list=None, cancel=False):
reverse_moves = super()._reverse_moves(
default_values_list=default_values_list, cancel=cancel)
# In the simple scenario 1 invoice -> 1 refund, we add a message in the chatter
# of the invoice and in the chatter of the refund
if len(self) == 1 and len(reverse_moves) == 1:
self.message_post(body=_("A reverse journal entry <a href=# data-oe-model=account.move data-oe-id=%d>%s</a> has been generated.") % (reverse_moves.id, reverse_moves.display_name))
reverse_moves.message_post(body=_("This journal entry has been generated as the reverse of <a href=# data-oe-model=account.move data-oe-id=%d>%s</a>.") % (self.id, self.display_name))
return reverse_moves
# 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:
# 1) the label of an account move line is an important field, we can't
# write a rubbish '/' in it !
# 2) the 'name' field of the account.move.line is used in the overdue
# letter, and '/' is not meaningful for our customer !
# TODO mig to v12
# def action_move_create(self):
# res = super().action_move_create()
# for inv in self:
# self._cr.execute(
# "UPDATE account_move_line SET name= "
# "CASE WHEN name='/' THEN %s "
# "ELSE %s||' - '||name END "
# "WHERE move_id=%s", (inv.number, inv.number, inv.move_id.id))
# self.invalidate_cache()
# return res
def delete_lines_qty_zero(self):
lines = self.env['account.move.line'].search([
('display_type', '=', 'product'),
('display_type', '=', False),
('move_id', 'in', self.ids),
('quantity', '=', 0)])
lines.unlink()
@@ -150,7 +126,7 @@ class AccountMove(models.Model):
# Warning: the order of invoice line is forced in the view
# <tree editable="bottom" default_order="sequence, date desc, move_name desc, id"
# it's not the same as the _order in the class AccountMoveLine
lines = self.env['account.move.line'].search([('display_type', 'in', ('product', 'line_section', 'line_note')), ('move_id', '=', self.id)], order="sequence, date desc, move_name desc, id")
lines = self.env['account.move.line'].search([('exclude_from_invoice_tab', '=', False), ('move_id', '=', self.id)], order="sequence, date desc, move_name desc, id")
for line in lines:
if line.display_type == 'line_section':
# insert line
@@ -159,7 +135,7 @@ class AccountMove(models.Model):
subtotal = 0.0 # reset counter
has_sections = True
else:
if line.display_type == 'product':
if not line.display_type:
subtotal += line.price_subtotal * sign
res.append({'line': line})
if has_sections: # insert last subtotal line
@@ -167,8 +143,8 @@ class AccountMove(models.Model):
# res:
# [
# {'line': account_invoice_line(1) with display_type=='line_section'},
# {'line': account_invoice_line(2) with display_type=='product'},
# {'line': account_invoice_line(3) with display_type=='product'},
# {'line': account_invoice_line(2) without display_type},
# {'line': account_invoice_line(3) without display_type},
# {'line': account_invoice_line(4) with display_type=='line_note'},
# {'subtotal': 8932.23},
# ]
@@ -205,14 +181,33 @@ class AccountMove(models.Model):
move.suitable_journal_ids = self.env['account.journal'].search(domain)
def button_draft(self):
# Delete attached pdf invoice
for move in self.filtered(lambda x: x.move_type in ('out_invoice', 'out_refund')):
for report_xmlid in ('account.account_invoices', 'account.account_invoices_without_payment'):
report = self.env.ref(report_xmlid)
attach = report.retrieve_attachment(move)
if attach:
attach.unlink()
super().button_draft()
# Delete attached pdf invoice
try:
report_invoice = self.env['ir.actions.report']._get_report_from_name('account.report_invoice')
except IndexError:
report_invoice = False
if report_invoice and report_invoice.attachment:
for move in self.filtered(lambda x: x.move_type in ('out_invoice', 'out_refund')):
# The pb is that the filename is dynamic and related to move.state
# in v12, the feature was native and they used that kind of code:
# with invoice.env.do_in_draft():
# invoice.number, invoice.state = invoice.move_name, 'open'
# attachment = self.env.ref('account.account_invoices').retrieve_attachment(invoice)
# But do_in_draft() doesn't exists in v14
# If you know how we could do that, please update the code below
attachment = self.env['ir.attachment'].search([
('name', '=', self._get_invoice_attachment_name()),
('res_id', '=', move.id),
('res_model', '=', self._name),
('type', '=', 'binary'),
], limit=1)
if attachment:
attachment.unlink()
def _get_invoice_attachment_name(self):
self.ensure_one()
return '%s.pdf' % (self.name and self.name.replace('/', '_') or 'INV')
def _get_accounting_date(self, invoice_date, has_tax):
# On vendor bills/refunds, we want date = invoice_date unless
@@ -222,7 +217,7 @@ class AccountMove(models.Model):
if self.is_purchase_document(include_receipts=True):
tax_lock_date = self.company_id.tax_lock_date
if invoice_date and tax_lock_date and has_tax and invoice_date <= tax_lock_date:
invoice_date = tax_lock_date + timedelta(days=1)
invoice_date = tax_lock_date + timedelta(days=1)
date = invoice_date
return date
@@ -243,6 +238,8 @@ class AccountMoveLine(models.Model):
full_reconcile_id = fields.Many2one(string='Full Reconcile')
matched_debit_ids = fields.One2many(string='Partial Reconcile Debit')
matched_credit_ids = fields.One2many(string='Partial Reconcile Credit')
reconcile_string = fields.Char(
compute='_compute_reconcile_string', string='Reconcile', store=True)
# for optional display in tree view
product_barcode = fields.Char(related='product_id.barcode', string="Product Barcode")
@@ -258,23 +255,19 @@ class AccountMoveLine(models.Model):
})
return action
def update_matching_number(self):
records = self.search([("matching_number", "=", "P")])
_logger.info(f"Update partial reconcile number for {len(records)} lines")
records._compute_matching_number()
@api.depends(
'full_reconcile_id', 'matched_debit_ids', 'matched_credit_ids')
def _compute_reconcile_string(self):
for line in self:
rec_str = False
if line.full_reconcile_id:
rec_str = line.full_reconcile_id.name
else:
rec_str = ', '.join([
'a%d' % pr.id for pr in line.matched_debit_ids + line.matched_credit_ids])
line.reconcile_string = rec_str
# def _compute_matching_number(self):
# TODO maybe it will be better to have the same maching_number for
# all partial so it will be easier to group by
# super()._compute_matching_number()
# for record in self:
# if record.matching_number == "P":
# record.matching_number = ", ".join([
# "a%d" % pr.id
# for pr in record.matched_debit_ids + record.matched_credit_ids
# ])
def _compute_name(self):
def _get_computed_name(self):
# This is useful when you want to have the product code in a dedicated
# column in your customer invoice report
# The same ir.config_parameter is used in sale_usability,
@@ -283,7 +276,7 @@ class AccountMoveLine(models.Model):
'usability.line_name_no_product_code')
if no_product_code_param and no_product_code_param == 'True':
self = self.with_context(display_default_code=False)
return super()._compute_name()
return super()._get_computed_name()
def reconcile(self):
"""Explicit error message if unposted lines"""

View File

@@ -1,4 +1,4 @@
# Copyright 2015-2022 Akretion (http://www.akretion.com)
# 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).

View File

@@ -1,4 +1,4 @@
# Copyright 2017-2022 Akretion France (https://akretion.com/)
# Copyright 2017-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).

View File

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2015-2022 Akretion France (http://www.akretion.com/)
Copyright 2015-2021 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).
-->
@@ -14,7 +14,7 @@
<field name="inherit_id" ref="account.view_account_form"/>
<field name="arch" type="xml">
<field name="deprecated" position="before">
<field name="reconcile" attrs="{'invisible': ['|', ('account_type', 'in', ('asset_cash', 'liability_credit_card')), ('internal_group', '=', 'off_balance')]}" widget="boolean_toggle"/>
<field name="reconcile" attrs="{'invisible': ['|', ('internal_type','=','liquidity'), ('internal_group', '=', 'off_balance')]}"/>
</field>
</field>
</record>
@@ -25,8 +25,11 @@
<field name="model">account.account</field>
<field name="inherit_id" ref="account.view_account_search"/>
<field name="arch" type="xml">
<!-- The native "name" filter uses a domain ['|', ('name','ilike',self), ('code','=like',str(self)+'%')]
This is good because it uses '=like' on 'code', but sometimes there are digits in account names,
so you get additionnal unexpected accounts in the result of the search -->
<field name="name" position="after">
<field name="code" filter_domain="[('code', '=like', self + '%')]" string="Code"/>
<field name="code" filter_domain="[('code', '=like', str(self)+'%')]" string="Code"/>
</field>
<filter name="accounttype" position="after">
<filter name="group_groupby" string="Group" context="{'group_by': 'group_id'}"/>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2015-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="view_account_type_tree" model="ir.ui.view">
<field name="name">account_usability.account_type_tree</field>
<field name="model">account.account.type</field>
<field name="inherit_id" ref="account.view_account_type_tree" />
<field name="arch" type="xml">
<field name="type" position="after">
<field name="include_initial_balance" optional="show"/>
</field>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2015-2021 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="view_account_analytic_account_list" model="ir.ui.view">
<field name="model">account.analytic.account</field>
<field name="inherit_id" ref="analytic.view_account_analytic_account_list"/>
<field name="arch" type="xml">
<field name="code" position="after">
<field name="group_id" optional="show"/>
</field>
</field>
</record>
<record id="view_account_analytic_account_search" model="ir.ui.view">
<field name="model">account.analytic.account</field>
<field name="inherit_id" ref="analytic.view_account_analytic_account_search"/>
<field name="arch" type="xml">
<filter name="associatedpartner" position="before">
<filter name="group_groupby" string="Group" context="{'group_by': 'group_id'}"/>
</filter>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2021 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_analytic_group_tree_view" model="ir.ui.view">
<field name="model">account.analytic.group</field>
<field name="inherit_id" ref="analytic.account_analytic_group_tree_view"/>
<field name="arch" type="xml">
<field name="name" position="after">
<field name="parent_id" optional="show"/>
</field>
</field>
</record>
</odoo>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2021-2022 Akretion France (http://www.akretion.com/)
Copyright 2021 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).
-->

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018-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).
-->
<odoo>
<record id="account_invoice_report_tree" model="ir.ui.view">
<field name="name">usability.account.invoice.report.tree</field>
<field name="model">account.invoice.report</field>
<field name="arch" type="xml">
<tree string="Invoices Analysis">
<field name="move_id"/>
<field name="journal_id" optional="hide"/>
<field name="company_id" optional="hide" groups="base.group_multi_company"/>
<field name="invoice_date"/>
<field name="invoice_date_due"/>
<field name="move_type"/>
<field name="commercial_partner_id"/>
<field name="partner_id" optional="hide"/>
<field name="country_id" optional="hide"/>
<field name="industry_id" optional="hide"/>
<field name="invoice_user_id"/>
<field name="fiscal_position_id" optional="hide"/>
<field name="product_id"/>
<field name="product_categ_id" optional="hide"/>
<field name="account_id" optional="hide"/>
<field name="analytic_account_id" optional="hide" groups="analytic.group_analytic_accounting"/>
<field name="quantity" sum="1"/>
<field name="product_uom_id" groups="uom.group_uom"/>
<field name="price_subtotal" sum="1"/>
<field name="state"/>
<field name="payment_state" optional="hide"/>
</tree>
</field>
</record>
<record id="account.action_account_invoice_report_all_supp" model="ir.actions.act_window">
<field name="context">{'search_default_current': 1, 'search_default_supplier': 1, 'group_by': ['invoice_date']}</field> <!-- Remove group_by_no_leaf, which breaks tree view -->
<field name="view_mode">pivot,graph</field>
</record>
<record id="account.action_account_invoice_report_all" model="ir.actions.act_window">
<field name="context">{'search_default_current': 1, 'search_default_customer': 1, 'group_by': ['invoice_date']}</field> <!-- Remove group_by_no_leaf, which breaks tree view -->
<field name="view_mode">pivot,graph</field>
</record>
<record id="view_account_invoice_report_pivot" model="ir.ui.view">
<field name="name">usability.account.invoice.report</field>
<field name="model">account.invoice.report</field>
<field name="inherit_id" ref="account.view_account_invoice_report_pivot"/>
<field name="arch" type="xml">
<pivot position="attributes">
<attribute name="disable_linking"></attribute>
</pivot>
</field>
</record>
</odoo>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2015-2022 Akretion France (http://www.akretion.com/)
Copyright 2015-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).
-->
@@ -12,18 +12,10 @@
<field name="model">account.journal</field>
<field name="inherit_id" ref="account.view_account_journal_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='account_control_ids']/.." position="after">
<group name="usability" string="Misc" attrs="{'invisible': [('type', '!=', 'bank')]}">
<field name="hide_bank_statement_balance" groups="account.group_account_readonly"/>
</group>
</xpath>
<xpath expr="//field[@name='inbound_payment_method_line_ids']/tree/field[@name='payment_account_id']" position="attributes">
<attribute name="optional">show</attribute>
</xpath>
<xpath expr="//field[@name='outbound_payment_method_line_ids']/tree/field[@name='payment_account_id']" position="attributes">
<attribute name="optional">show</attribute>
</xpath>
<!--
<field name="bank_statements_source" position="after">
<field name="hide_bank_statement_balance" groups="account.group_account_readonly"/>
<field name="account_type_current_assets_id" invisible="1"/>
</field>
<field name="suspense_account_id" position="attributes">
<attribute name="context">{'default_user_type_id': account_type_current_assets_id, 'default_reconcile': False}</attribute>
</field>
@@ -32,7 +24,7 @@
</field>
<field name="payment_credit_account_id" position="attributes">
<attribute name="context">{'default_user_type_id': account_type_current_assets_id, 'default_reconcile': True}</attribute>
</field> -->
</field>
</field>
</record>
@@ -47,10 +39,20 @@
<xpath expr="//div[@name='latest_statement']/.." position="attributes">
<attribute name="t-if">dashboard.has_at_least_one_statement and dashboard.account_balance != dashboard.last_balance and !record.hide_bank_statement_balance.raw_value</attribute>
</xpath>
<!--
<t t-esc="dashboard.outstanding_pay_account_balance" position="replace">
<a name="open_outstanding_payments" type="object" title="Outstanding Payments/Receipts"><t t-esc="dashboard.outstanding_pay_account_balance"/></a>
</t> -->
</t>
</field>
</record>
<record id="view_account_journal_tree" model="ir.ui.view">
<field name="name">usability.account.journal.tree</field>
<field name="model">account.journal</field>
<field name="inherit_id" ref="account.view_account_journal_tree"/>
<field name="arch" type="xml">
<field name="name" position="after">
<field name="code" optional="show"/>
</field>
</field>
</record>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2015-2022 Akretion France (http://www.akretion.com/)
Copyright 2015-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).
-->

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2015-2022 Akretion France (http://www.akretion.com/)
Copyright 2015-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).
-->
@@ -12,22 +12,20 @@
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form"/>
<field name="arch" type="xml">
<!--
<field name="fiscal_position_id" position="attributes">
<attribute name="widget">selection</attribute>
</field>
<field name="invoice_incoterm_id" position="attributes">
<attribute name="widget">selection</attribute>
</field> -->
<button id="account_invoice_payment_btn" position="attributes">
</field>
<button name="action_register_payment" position="attributes">
<attribute name="class">btn-default</attribute>
</button>
<button name="action_register_payment" position="before">
<button name="%(account.account_invoices)d" type="action" string="Print" attrs="{'invisible': [('move_type', 'not in', ('out_invoice', 'out_refund'))]}"/>
</button>
<button name="preview_invoice" position="attributes">
<attribute name="attrs">{}</attribute>
<attribute name="invisible">1</attribute>
<attribute name="attrs">{'invisible': 1}</attribute>
</button>
<!-- move sent field and make it visible -->
<field name="is_move_sent" position="replace"/>
@@ -37,32 +35,19 @@
<field name="invoice_origin" position="after">
<field name="is_move_sent" attrs="{'invisible': [('move_type', 'not in', ('out_invoice', 'out_refund'))]}"/>
</field>
<xpath expr="//field[@name='line_ids']/tree/field[@name='analytic_account_id']" position="attributes">
<attribute name="optional">show</attribute>
</xpath>
<xpath expr="//field[@name='line_ids']/tree/field[@name='currency_id']" position="attributes">
<attribute name="optional">show</attribute>
</xpath>
<xpath expr="//field[@name='line_ids']/tree/field[@name='tax_tag_ids']" position="after">
<field name="matching_number" optional="show"/>
<field name="matching_number" optional="hide"/>
<field name="reconcile_string" optional="show"/>
</xpath>
<xpath expr="//field[@name='invoice_line_ids']/tree/field[@name='product_id']" position="after">
<field name="product_barcode" optional="hide"/>
</xpath>
<field name="invoice_source_email" position="after">
<field name="blocked"/>
</field>
<div role="alert" position="after">
<div id="warn_blocked" groups="account.group_account_invoice,account.group_account_readonly"
class="alert alert-warning" role="alert" style="margin-bottom:0px;"
attrs="{'invisible': ['|', ('move_type', 'not in', ('in_invoice', 'in_refund', 'out_invoice', 'out_refund')), ('blocked', '=', False)]}">
This <field name="move_type"/> is marked as <b>disputed</b>.
</div>
</div>
<xpath expr="//button[@name='open_duplicated_ref_bill_view']/.." position="attributes">
<!-- show duplicate warning not only in draft state, but also in posted state -->
<attribute name="attrs">{'invisible': ['|', ('state', '=', 'cancel'), ('duplicated_ref_ids', '=', [])]}</attribute>
</xpath>
<button name="button_cancel" attrs="{'invisible' : ['|', '|', ('id', '=', False), ('state', '!=', 'draft'),('move_type', '!=', 'entry')]}" position="attributes">
<attribute name="confirm">Are you sure you want to cancel this journal entry?</attribute>
</button>
<button name="button_cancel" attrs="{'invisible' : ['|', '|', ('id', '=', False), ('state', '!=', 'draft'),('move_type', '==', 'entry')]}" position="attributes">
<attribute name="confirm">Are you sure you want to cancel this invoice?</attribute>
</button>
</field>
</record>
@@ -81,19 +66,12 @@
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_account_invoice_filter"/>
<field name="arch" type="xml">
<filter name="invoice_date" position="before">
<filter name="invoice" string="Invoices" domain="[('move_type', 'in', ('out_invoice', 'in_invoice'))]"/>
<filter name="refund" string="Refunds" domain="[('move_type', 'in', ('out_refund', 'in_refund'))]"/>
<separator/>
</filter>
<filter name="due_date" position="after">
<separator/>
<filter name="to_send" string="To Send" domain="[('is_move_sent', '=', False), ('state', '=', 'posted'), ('move_type', 'in', ('out_invoice', 'out_refund'))]"/>
<filter name="sent" string="Sent" domain="[('is_move_sent', '=', True), ('move_type', 'in', ('out_invoice', 'out_refund'))]"/>
<separator/>
<filter name="no_attachment" string="Missing Attachment" domain="[('has_attachment', '=', False)]"/>
<separator/>
<filter name="dispute" string="Dispute" domain="[('blocked', '=', True)]"/>
</filter>
<filter name="salesperson" position="before">
<filter name="commercial_partner_groupby" string="Commercial Partner" context="{'group_by': 'commercial_partner_id'}"/>
@@ -104,44 +82,16 @@
</field>
</record>
<record id="view_account_move_filter" model="ir.ui.view">
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_account_move_filter"/>
<field name="arch" type="xml">
<field name="journal_id" position="after">
<field name="search_account_id"/>
</field>
</field>
</record>
<record id="view_move_line_form" model="ir.ui.view">
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account.view_move_line_form"/>
<field name="arch" type="xml">
<!-- The field 'blocked' is alone in it's block
We don't want to display an empty block, so we put the attrs on the group
The drawback of this is that, if someone added a field in that group,
he won't see the field when internal_type is not payable/receivable -->
<xpath expr="//field[@name='blocked']/.." position="attributes">
<attribute name="attrs">{'invisible': [('account_type', 'not in', ('liability_payable', 'asset_receivable'))]}</attribute>
</xpath>
<field name="account_id" position="after">
<field name="account_type" invisible="1"/>
</field>
</field>
</record>
<record id="view_move_line_tree" model="ir.ui.view">
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account.view_move_line_tree"/>
<field name="arch" type="xml">
<field name="analytic_distribution" position="after">
<field name="matching_number" position="after">
<button title="View Journal Entry Form" type="object" name="show_account_move_form" icon="fa-arrow-right"/>
</field>
<!-- balance is already present
<field name="credit" position="after">
<field name="balance" sum="Balance" optional="show"/>
</field> -->
</field>
</field>
</record>
@@ -150,34 +100,35 @@
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account.view_account_move_line_filter"/>
<field name="arch" type="xml">
<filter name="unposted" position="before">
<filter name="current_year" string="Current Year" domain="[('date', '&gt;=', (context_today().strftime('%Y-01-01'))), ('date', '&lt;=', (context_today().strftime('%Y-12-31')))]"/>
<filter name="previous_year" string="Previous Year" domain="[('date', '&gt;=', (context_today() + relativedelta(day=1, month=1, years=-1)).strftime('%Y-%m-%d')), ('date', '&lt;=', (context_today() + relativedelta(day=31, month=12, years=-1)).strftime('%Y-%m-%d'))]"/>
<separator/>
</filter>
<field name="partner_id" position="after">
<field name="matching_number" />
<field name="reconcile_string" />
<field name="debit" filter_domain="['|', ('debit', '=', self), ('credit', '=', self)]" string="Debit or Credit"/>
</field>
<filter name="unreconciled" position="before">
<filter name="reconciled" string="Fully Reconciled" domain="[('account_id.reconcile', '=', True), ('full_reconcile_id', '!=', False)]"/>
<filter name="reconciled" string="Fully Reconciled" domain="[('reconciled', '=', True)]"/>
</filter>
<filter name="unreconciled" position="attributes">
<attribute name="string">Unreconciled or Partially Reconciled</attribute>
<attribute name="domain">[('reconciled', '=', False), ('balance', '!=', 0), ('account_id.reconcile', '=', True)]</attribute>
</filter>
<!--
<field name="name" position="attributes">
<attribute name="string">Label, Reference, Account or Partner</attribute>
</field>
<field name="name" position="before">
<field name="move_id" position="move"/>
</field>
<attribute name="string">Name or Reference</attribute>
</field> -->
<field name="partner_id" position="attributes">
<attribute name="domain">['|', ('parent_id', '=', False), ('is_company', '=', True)]</attribute>
</field>
</field>
</record>
<!-- Inherit action called from button of account.account form view
Make it similar to standard "Journal Items" menu account.action_account_moves_all_a -->
<record id="account.action_move_line_select" model="ir.actions.act_window">
<field name="domain">[('display_type', 'not in', ('line_section', 'line_note'))]</field>
<field name="view_id" ref="account.view_move_line_tree"/>
<field name="view_mode">tree,pivot,graph,kanban</field>
<record id="account.action_move_journal_line" model="ir.actions.act_window">
<field name="context">{'default_move_type': 'entry', 'view_no_maturity': True}</field>
<!-- Remove 'search_default_misc_filter': 1 -->
</record>
</odoo>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2022 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="view_account_reconcile_model_form" model="ir.ui.view">
<field name="model">account.reconcile.model</field>
<field name="inherit_id" ref="account.view_account_reconcile_model_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='line_ids']/tree/field[@name='analytic_account_id']" position="attributes">
<attribute name="optional">show</attribute> <!-- native value: hide -->
</xpath>
</field>
</record>
</odoo>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018-2022 Akretion (http://www.akretion.com/)
Copyright 2018-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).
-->

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2015-2022 Akretion France (http://www.akretion.com/)
Copyright 2015-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).
-->
@@ -11,7 +11,7 @@
<field name="model">account.tax</field>
<field name="inherit_id" ref="account.view_tax_tree"/>
<field name="arch" type="xml">
<field name="type_tax_use" position="after">
<field name="description" position="after">
<field name="price_include" optional="show"/>
</field>
</field>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2017-2022 Akretion (http://www.akretion.com/)
Copyright 2017-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).
-->

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2021-2022 Akretion (http://www.akretion.com/)
Copyright 2021 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).
-->
@@ -16,7 +16,7 @@
<notebook position="inside">
<page string="Legal Terms" name="legal_terms">
<group string="Invoice Legal Terms" name="static_invoice_terms">
<field name="static_invoice_terms" nolabel="1" colspan="2"/>
<field name="static_invoice_terms" nolabel="1"/>
</group>
</page>
</notebook>

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2015-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="res_config_settings_view_form" model="ir.ui.view">
<field name="name">account_usability account config page</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="account.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[@id='bank_cash']" position="inside">
<div class="col-xs-12 col-md-6 o_setting_box" id="transfer_account">
<div class="o_setting_left_pane"/>
<div class="o_setting_right_pane">
<label for="transfer_account_id"/>
<div class="text-muted">
Transit account when you transfer money from a bank account of your company to another bank account of your company.
</div>
<field name="transfer_account_id"/>
</div>
</div>
</xpath>
</field>
</record>
</odoo>

View File

@@ -1,21 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2025 Akretion France (https://www.akretion.com/)
Copyright 2017-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).
-->
<odoo>
<record id="view_partner_property_form" model="ir.ui.view">
<field name="name">account_usability.res.partner.form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="purchase.view_partner_property_form"/>
<field name="inherit_id" ref="account.view_partner_property_form"/>
<field name="arch" type="xml">
<field name="property_purchase_currency_id" position="before">
<field name="purchase_picking_type_id" attrs="{'invisible': [('parent_id', '!=', False)]}"/>
</field>
<xpath expr="//field[@name='bank_ids']/tree/field[@name='acc_number']" position="after">
<field name="acc_type"/>
</xpath>
</field>
</record>
</odoo>
</odoo>

View File

@@ -1,3 +1,4 @@
from . import account_invoice_mark_sent
from . import account_move_reversal
from . import res_config_settings
from . import account_group_generate

View File

@@ -1,4 +1,4 @@
# Copyright 2015-2022 Akretion (http://www.akretion.com)
# 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).

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2020-2022 Akretion France (http://www.akretion.com/)
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).
-->

View File

@@ -1,4 +1,4 @@
# Copyright 2017-2022 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).

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2017-2022 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).
-->

View File

@@ -0,0 +1,29 @@
# 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).
from odoo import api, models, _
from dateutil.relativedelta import relativedelta
from odoo.exceptions import UserError
class AccountMoveReversal(models.TransientModel):
_inherit = 'account.move.reversal'
# Set default reversal date to original move + 1 day
# and raise error if original move has already been reversed
@api.model
def default_get(self, fields_list):
res = super().default_get(fields_list)
assert self._context.get('active_model') == 'account.move'
amo = self.env['account.move']
moves = amo.browse(self._context['active_ids'])
if len(moves) == 1:
res['date'] = moves.date + relativedelta(days=1)
reversed_move = amo.search([('reversed_entry_id', 'in', moves.ids)], limit=1)
if reversed_move:
raise UserError(_(
"Move '%s' has already been reversed by move '%s'.") % (
reversed_move.reversed_entry_id.display_name,
reversed_move.display_name))
return res

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2021-2022 Akretion France (http://www.akretion.com/)
Copyright 2021 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).
-->
@@ -14,9 +14,10 @@ So, in the view, the date should be BEFORE the amount -->
<field name="inherit_id" ref="account.view_account_payment_register_form"/>
<field name="arch" type="xml">
<label for="amount" position="before">
<field name="payment_date" position="move"/>
<field name="payment_date" position="move"/>
</label>
</field>
</record>
</odoo>

View 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)

View File

@@ -1,9 +0,0 @@
# Copyright 2022 Akretion (https://www.akretion.com).
# @author Sébastien BEAU <sebastien.beau@akretion.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import SUPERUSER_ID, api
def post_init_hook(cr, registry):
env = api.Environment(cr, SUPERUSER_ID, {})
env["account.move.line"].update_matching_number()

View File

@@ -1,610 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_usability_akretion
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-07 14:47+0000\n"
"PO-Revision-Date: 2024-07-07 14:47+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_usability_akretion
#. odoo-python
#: code:addons/account_usability_akretion/wizard/account_group_generate.py:0
#, python-format
msgid ""
"%d account groups already exists in company '%s'. This wizard is designed to"
" generate account groups from scratch."
msgstr ""
"%d groupes de comptes existent déjà dans la société '%s'. Cet assistant "
"est conçu pour créer des groupes de comptes à partir de zéro."
#. module: account_usability_akretion
#. odoo-python
#: code:addons/account_usability_akretion/models/account_move.py:0
#, python-format
msgid ""
"A reverse journal entry <a href=# data-oe-model=account.move data-oe-"
"id=%d>%s</a> has been generated."
msgstr ""
"Une extourne <a href=# data-oe-model=account.move data-oe-"
"id=%d>%s</a> a été générée."
#. module: account_usability_akretion
#. odoo-python
#: code:addons/account_usability_akretion/wizard/account_move_reversal.py:0
#, python-format
msgid "%s reversed by %s"
msgstr "%s extourné par %s"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_move_reversal
msgid ""
"You are about to reverse entries that have already been reversed or partially reversed (refund). Make sure it is intented.\n"
" Already reversed entries are the following :"
msgstr "Vous êtes sur le point d'extourner une pièce comptable déjà extournée, ou partiellement extournée (avoir). Vérifiez que c'est bien ce que vous souhaitez faire.\n"
" Les pièces comptables déjà extournées sont les suivantes :"
#. module: account_usability_akretion
#: model:ir.model,name:account_usability_akretion.model_account_account
msgid "Account"
msgstr "Compte"
#. module: account_usability_akretion
#. odoo-python
#: code:addons/account_usability_akretion/wizard/account_group_generate.py:0
#, python-format
msgid "Account Groups"
msgstr "Groupes de comptes"
#. module: account_usability_akretion
#: model:ir.model,name:account_usability_akretion.model_account_move_reversal
msgid "Account Move Reversal"
msgstr "Extourne de l'écriture comptable"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move_line__account_reconcile
msgid "Allow Reconciliation"
msgstr "Autoriser le lettrage"
#. module: account_usability_akretion
#: model:ir.model.constraint,message:account_usability_akretion.constraint_account_analytic_account_code_company_unique
msgid ""
"An analytic account with the same code already exists in the same company!"
msgstr ""
"Un compte analytique avec le même code existe déjà dans la même société !"
#. module: account_usability_akretion
#: model:ir.model,name:account_usability_akretion.model_account_analytic_account
msgid "Analytic Account"
msgstr "Compte analytique"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_move_form
msgid "Are you sure you want to cancel this invoice?"
msgstr "Êtes-vous sûr de vouloir annuler cette facture ?"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_move_form
msgid "Are you sure you want to cancel this journal entry?"
msgstr "Êtes-vous sûr de vouloir annuler cette pièce comptable ?"
#. module: account_usability_akretion
#: model:ir.model,name:account_usability_akretion.model_res_partner_bank
#: model:ir.ui.menu,name:account_usability_akretion.res_partner_bank_account_config_menu
msgid "Bank Accounts"
msgstr "Comptes bancaires"
#. module: account_usability_akretion
#: model:ir.ui.menu,name:account_usability_akretion.res_bank_account_config_menu
msgid "Banks"
msgstr "Banques"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.account_group_generate_form
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.account_invoice_mark_sent_form
msgid "Cancel"
msgstr "Annuler"
#. module: account_usability_akretion
#: model:ir.model.fields,help:account_usability_akretion.field_account_move_line__account_reconcile
msgid ""
"Check this box if this account allows invoices & payments matching of "
"journal items."
msgstr ""
"Cochez cette case si ce compte permet de faire du lettrage entre "
"factures et paiements."
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_search
msgid "Code"
msgstr ""
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_invoice_filter
msgid "Commercial Partner"
msgstr "Partenaire commercial"
#. module: account_usability_akretion
#: model:ir.model,name:account_usability_akretion.model_res_company
msgid "Companies"
msgstr "Sociétés"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_group_generate__company_id
msgid "Company"
msgstr "Société"
#. module: account_usability_akretion
#: model:ir.model,name:account_usability_akretion.model_res_partner
msgid "Contact"
msgstr ""
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_group_generate__create_uid
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_invoice_mark_sent__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_group_generate__create_date
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_invoice_mark_sent__create_date
msgid "Created on"
msgstr "Créé le"
#. module: account_usability_akretion
#: model:ir.model.fields,help:account_usability_akretion.field_account_move_line__matched_credit_ids
msgid "Credit journal items that are matched with this journal item."
msgstr ""
"Écritures comptables au crédit qui sont lettrées avec cette écriture comptable."
#. module: account_usability_akretion
#: model:ir.model.fields,help:account_usability_akretion.field_account_move_line__matched_debit_ids
msgid "Debit journal items that are matched with this journal item."
msgstr ""
"Écritures comptables au débit qui sont lettrées avec cette écriture comptable."
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_move_line_filter
msgid "Debit or Credit"
msgstr "Débit ou crédit"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_group_generate__display_name
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_invoice_mark_sent__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_bank_statement_line__blocked
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move__blocked
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_payment__blocked
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_invoice_filter
msgid "Dispute"
msgstr "Litige"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_bank_statement_line__invoice_date_due
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move__invoice_date_due
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_payment__invoice_date_due
msgid "Due Date"
msgstr "Date d'échéance"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_bank_statement_line__fiscal_position_id
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move__fiscal_position_id
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_payment__fiscal_position_id
#: model:ir.model.fields,field_description:account_usability_akretion.field_res_partner__property_account_position_id
#: model:ir.model.fields,field_description:account_usability_akretion.field_res_users__property_account_position_id
msgid "Fiscal Position"
msgstr "Position fiscale"
#. module: account_usability_akretion
#: model:ir.model.fields,help:account_usability_akretion.field_account_bank_statement_line__fiscal_position_id
#: model:ir.model.fields,help:account_usability_akretion.field_account_move__fiscal_position_id
#: model:ir.model.fields,help:account_usability_akretion.field_account_payment__fiscal_position_id
msgid ""
"Fiscal positions are used to adapt taxes and accounts for particular "
"customers or sales orders/invoices. The default value comes from the "
"customer."
msgstr ""
"Les positions fiscales sont utilisées pour adapter les taxes et les comptes "
"à des clients spécifiques ou à des bons de commande/factures. La valeur par"
" défaut provient de la fiche client."
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move_line__full_reconcile_id
msgid "Full Reconcile"
msgstr "Lettrage total"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_move_line_filter
msgid "Fully Reconciled"
msgstr "Lettré totalement"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.account_group_generate_form
msgid "Generate"
msgstr "Générer"
#. module: account_usability_akretion
#: model:ir.actions.act_window,name:account_usability_akretion.account_group_generate_action
#: model:ir.model,name:account_usability_akretion.model_account_group_generate
#: model:ir.ui.menu,name:account_usability_akretion.account_group_generate_menu
msgid "Generate Account Groups"
msgstr "Générer les groupes de comptes"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_search
msgid "Group"
msgstr "Groupe"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_journal_search
msgid "Group By"
msgstr "Regrouper par"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_bank_statement_line__has_attachment
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move__has_attachment
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_payment__has_attachment
msgid "Has Attachment"
msgstr "Possède une pièce jointe"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_bank_statement_line__has_discount
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move__has_discount
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_payment__has_discount
msgid "Has Discount"
msgstr "A une remise"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_journal__hide_bank_statement_balance
msgid "Hide and Disable Bank Statement Balance"
msgstr "Masquer et désactiver le solde du relevé de compte"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_group_generate__id
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_invoice_mark_sent__id
msgid "ID"
msgstr ""
#. module: account_usability_akretion
#: model:ir.model,name:account_usability_akretion.model_account_incoterms
msgid "Incoterms"
msgstr ""
#. module: account_usability_akretion
#: model:ir.model.fields,help:account_usability_akretion.field_account_move_line__product_barcode
msgid "International Article Number used for product identification."
msgstr ""
"Numéro d'article international utilisé pour identifier cet article."
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_res_partner__invoice_warn
#: model:ir.model.fields,field_description:account_usability_akretion.field_res_users__invoice_warn
msgid "Invoice"
msgstr "Facture"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_company_form
msgid "Invoice Legal Terms"
msgstr "Mentions légales sur les factures"
#. module: account_usability_akretion
#: model:ir.model,name:account_usability_akretion.model_account_invoice_report
msgid "Invoices Statistics"
msgstr "Statistiques de facturation"
#. module: account_usability_akretion
#: model:ir.model,name:account_usability_akretion.model_account_journal
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_bank_statement_line__journal_id
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move__journal_id
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_payment__journal_id
msgid "Journal"
msgstr ""
#. module: account_usability_akretion
#: model:ir.model,name:account_usability_akretion.model_account_move
msgid "Journal Entry"
msgstr "Pièce comptable"
#. module: account_usability_akretion
#: model:ir.model,name:account_usability_akretion.model_account_move_line
msgid "Journal Item"
msgstr "Écriture comptable"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_move_line_filter
msgid "Label, Reference, Account or Partner"
msgstr "Libellé, Référence, Compte ou Partenaire"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_group_generate____last_update
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_invoice_mark_sent____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_group_generate__write_uid
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_invoice_mark_sent__write_uid
msgid "Last Updated by"
msgstr "Mis à jour par"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_group_generate__write_date
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_invoice_mark_sent__write_date
msgid "Last Updated on"
msgstr "Mis à jour le"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_company_form
msgid "Legal Terms"
msgstr "Mentions légales"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_res_company__static_invoice_terms
msgid "Legal Terms on Invoice"
msgstr "Mentions légales sur les factures"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_group_generate__level
msgid "Level"
msgstr "Niveau"
#. module: account_usability_akretion
#: model:ir.actions.act_window,name:account_usability_akretion.account_invoice_mark_sent_action
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.account_invoice_mark_sent_form
msgid "Mark as Sent"
msgstr "Marquer comme envoyé"
#. module: account_usability_akretion
#: model:ir.model,name:account_usability_akretion.model_account_invoice_mark_sent
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.account_invoice_mark_sent_form
msgid "Mark invoices as sent"
msgstr "Marquer les factures comme envoyées"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_journal_form
msgid "Misc"
msgstr "Divers"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_invoice_filter
msgid "Missing Attachment"
msgstr "Pièce jointe manquante"
#. module: account_usability_akretion
#: model:ir.model,name:account_usability_akretion.model_account_partial_reconcile
msgid "Partial Reconcile"
msgstr "Lettrage partiel"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move_line__matched_credit_ids
msgid "Partial Reconcile Credit"
msgstr "Crédit de lettrage partiel"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move_line__matched_debit_ids
msgid "Partial Reconcile Debit"
msgstr "Débit de lettrage partiel"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_invoice_report__industry_id
msgid "Partner Industry"
msgstr "Secteur dactivité du partenaire"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_invoice_filter
msgid "Payment Status"
msgstr "État de paiement"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_bank_statement_line__invoice_payment_term_id
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move__invoice_payment_term_id
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_payment__invoice_payment_term_id
msgid "Payment Terms"
msgstr "Conditions de paiement"
#. module: account_usability_akretion
#. odoo-python
#: code:addons/account_usability_akretion/models/account_move.py:0
#, python-format
msgid "Please post the following entries before reconciliation :"
msgstr "Veuillez comptabiliser les pièces suivantes avant le lettrage :"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_group_generate__name_prefix
msgid "Prefix"
msgstr "Préfixe"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_move_form
msgid "Print"
msgstr "Imprimer"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_invoice_report_search
msgid "Product"
msgstr "Produit"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move_line__product_barcode
msgid "Product Barcode"
msgstr "Code barre du produit"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_bank_statement_line__ref
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move__ref
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_payment__ref
msgid "Reference"
msgstr "Référence"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_bank_statement_line__sale_dates
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move__sale_dates
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_payment__sale_dates
msgid "Sale Dates"
msgstr "Dates de vente"
#. module: account_usability_akretion
#: model:ir.model.fields,help:account_usability_akretion.field_res_partner__invoice_warn
#: model:ir.model.fields,help:account_usability_akretion.field_res_users__invoice_warn
msgid ""
"Selecting the \"Warning\" option will notify user with the message, "
"Selecting \"Blocking Message\" will throw an exception with the message and "
"block the flow. The Message has to be written in the next field."
msgstr ""
"Sélectionner l'option 'Avertissement' notifiera l'utilisateur avec le "
"message. Sélectionner 'Message Bloquant' lancera une exception avec le "
"message et bloquera le flux. Le Message doit être encodé dans le champ "
"suivant."
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_invoice_filter
msgid "Sent"
msgstr "Envoyé"
#. module: account_usability_akretion
#. odoo-python
#: code:addons/account_usability_akretion/models/product.py:0
#, python-format
msgid "Tax excl."
msgstr "HT"
#. module: account_usability_akretion
#. odoo-python
#: code:addons/account_usability_akretion/models/product.py:0
#, python-format
msgid "Tax incl."
msgstr "TTC"
#. module: account_usability_akretion
#. odoo-python
#: code:addons/account_usability_akretion/wizard/account_group_generate.py:0
#, python-format
msgid ""
"The code of account '%s' is %d caracters. It cannot be inferior to level "
"(%d)."
msgstr ""
"Le code du compte '%s' fait %d caractères. Il ne peut pas être "
"inférieur au niveau (%d)."
#. module: account_usability_akretion
#: model:ir.model.fields,help:account_usability_akretion.field_res_partner__property_account_position_id
#: model:ir.model.fields,help:account_usability_akretion.field_res_users__property_account_position_id
msgid ""
"The fiscal position determines the taxes/accounts used for this contact."
msgstr ""
"La position fiscale détermine les taxes / comptes utilisés pour ce contact."
#. module: account_usability_akretion
#. odoo-python
#: code:addons/account_usability_akretion/wizard/account_group_generate.py:0
#, python-format
msgid "The level must be >= 1."
msgstr "Le niveau doit être >= 1."
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_move_form
msgid "This"
msgstr "Ce"
#. module: account_usability_akretion
#: model:ir.model.constraint,message:account_usability_akretion.constraint_account_incoterms_code_unique
msgid "This incoterm code already exists."
msgstr "Ce code incoterm existe déjà."
#. module: account_usability_akretion
#: model:ir.model.fields,help:account_usability_akretion.field_account_bank_statement_line__sale_dates
#: model:ir.model.fields,help:account_usability_akretion.field_account_move__sale_dates
#: model:ir.model.fields,help:account_usability_akretion.field_account_payment__sale_dates
msgid ""
"This information appear on invoice qweb report (you may use it for your own "
"report)"
msgstr ""
"Cette information apparait sur le rapport qweb de la facture (vous pouvez "
"les utiliser pour votre propre rapport)"
#. module: account_usability_akretion
#. odoo-python
#: code:addons/account_usability_akretion/models/account_move.py:0
#, python-format
msgid ""
"This journal entry has been generated as the reverse of <a href=# data-oe-"
"model=account.move data-oe-id=%d>%s</a>."
msgstr ""
"Cette pièce comptable a été générée comme extourne de <a href=# data-oe-"
"model=account.move data-oe-id=%d>%s</a>."
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.account_group_generate_form
msgid ""
"This wizard is designed to auto-generate account groups from the chart of "
"account."
msgstr ""
"Cet assistant est conçu pour générer automatiquement les groupes de comptes "
"à partir du plan comptable."
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.account_invoice_mark_sent_form
msgid "This wizard will mark as <i>sent</i> all the selected posted invoices."
msgstr ""
"Cet assistant marquera comme <i>envoyées</i> toutes les factures "
"sélectionnées et comptabilisées."
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_invoice_filter
msgid "To Send"
msgstr "À envoyer"
#. module: account_usability_akretion
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_bank_statement_line__amount_total
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_move__amount_total
#: model:ir.model.fields,field_description:account_usability_akretion.field_account_payment__amount_total
msgid "Total"
msgstr ""
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_journal_search
msgid "Type"
msgstr ""
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_account_move_line_filter
msgid "Unreconciled or Partially Reconciled"
msgstr "Non lettré ou partiellement lettré"
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_move_line_tree
msgid "View Journal Entry Form"
msgstr "Voir la pièce comptable en vue formulaire"
#. module: account_usability_akretion
#: model:ir.model.fields,help:account_usability_akretion.field_account_journal__hide_bank_statement_balance
msgid ""
"When this option is enabled, the start and end balance is not displayed on "
"the bank statement form view, and the check of the end balance vs the real "
"end balance is disabled. When you enable this option, you process the "
"statement lines without considering the start/end balance and you regularly "
"check the accounting balance of the bank account vs the amount of your bank "
"account."
msgstr ""
"Lorsque cette option est activée, le solde de début et de fin ne s'affiche "
"pas sur la vue du formulaire du relevé de compte, et la vérification du solde"
" final vs le solde final réel est désactivée. Lorsque vous activez cette "
"option, vous traitez les lignes de relevé de compte sans tenir compte du solde de "
"début/fin et vous vérifiez régulièrement le solde du compte "
"bancaire vs le montant sur votre compte en banque."
#. module: account_usability_akretion
#: model_terms:ir.ui.view,arch_db:account_usability_akretion.view_move_form
msgid "is marked as <b>disputed</b>."
msgstr "est marquée <b>en litige</b>."

View File

@@ -1,9 +0,0 @@
# Copyright 2020 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import SUPERUSER_ID, api
def migrate(cr, version):
env = api.Environment(cr, SUPERUSER_ID, {})
env["account.move.line"].update_matching_number()

View File

@@ -1,19 +0,0 @@
# Copyright 2015-2022 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, models
class AccountAccount(models.Model):
_inherit = 'account.account'
@api.depends('name', 'code')
def name_get(self):
if self._context.get('account_account_show_code_only'):
res = []
for record in self:
res.append((record.id, record.code))
return res
else:
return super().name_get()

View File

@@ -1,21 +0,0 @@
# Copyright 2015-2022 Akretion France (http://www.akretion.com/)
# @author: Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
class ResPartnerBank(models.Model):
_inherit = 'res.partner.bank'
def name_get(self):
res = []
for acc in self:
name = acc.acc_number
if acc.currency_id:
name = "%s (%s)" % (name, acc.currency_id.name)
if acc.bank_id.name:
name = "%s - %s" % (name, acc.bank_id.name)
res += [(acc.id, name)]
return res

View File

@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2024 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="view_account_analytic_line_tree_inherit_account" model="ir.ui.view">
<field name="model">account.analytic.line</field>
<field name="inherit_id" ref="account.view_account_analytic_line_tree_inherit_account"/>
<field name="arch" type="xml">
<field name="general_account_id" position="attributes">
<attribute name="optional">show</attribute>
</field>
</field>
</record>
</odoo>

View File

@@ -1,59 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2018-2024 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).
-->
<odoo>
<record id="account_invoice_report_view_tree" model="ir.ui.view">
<field name="name">usability.account.invoice.report.tree</field>
<field name="model">account.invoice.report</field>
<field name="inherit_id" ref="account.account_invoice_report_view_tree"/>
<field name="arch" type="xml">
<field name="partner_id" position="after">
<field name="commercial_partner_id" optional="hide"/>
<field name="country_id" optional="hide"/>
<field name="industry_id" optional="hide"/>
<field name="fiscal_position_id" optional="hide"/>
</field>
<field name="quantity" position="after">
<field name="product_uom_id" groups="uom.group_uom" optional="hide"/>
</field>
</field>
</record>
<record id="view_account_invoice_report_search" model="ir.ui.view">
<field name="model">account.invoice.report</field>
<field name="inherit_id" ref="account.view_account_invoice_report_search"/>
<field name="arch" type="xml">
<field name="partner_id" position="after">
<field name="industry_id"/>
</field>
<filter name="category_product" position="after">
<filter string="Product" name="product_groupby" context="{'group_by': 'product_id', 'residual_invisible':True}"/>
<filter name="invoice_refund_groupby" string="Invoice/Refund" context="{'group_by': 'move_type'}"/>
</filter>
<!-- group by on commercial_partner_id by default -->
<filter name="partner_id" position="attributes">
<attribute name="invisible">1</attribute>
</filter>
<filter name="partner_id" position="after">
<filter name="commercial_partner_groupby" string="Commercial Partner" context="{'group_by': 'commercial_partner_id'}"/>
<filter name="industry_groupby" string="Partner Industry" context="{'group_by': 'industry_id'}"/>
</filter>
</field>
</record>
<!-- Switch order: pivot in 1st position -->
<record id="account.action_account_invoice_report_all_supp" model="ir.actions.act_window">
<field name="view_mode">pivot,graph</field>
</record>
<record id="account.action_account_invoice_report_all" model="ir.actions.act_window">
<field name="view_mode">pivot,graph</field>
</record>
</odoo>

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2014-2024 Akretion (http://www.akretion.com/)
@author: Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-->
<odoo>
<record id="view_partner_simple_form" model="ir.ui.view">
<field name="name">base_usability.title.on.partner.simplified.form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="account.view_partner_property_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='bank_ids']//field[@name='acc_number']" position="after">
<field name="currency_id" optional="hide"/>
</xpath>
</field>
</record>
</odoo>

View File

@@ -1,40 +0,0 @@
# Copyright 2018-2022 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).
from odoo import api, fields, models, _
from dateutil.relativedelta import relativedelta
from odoo.exceptions import UserError
class AccountMoveReversal(models.TransientModel):
_inherit = 'account.move.reversal'
already_reversed_warning = fields.Text(compute="_compute_already_reversed_warning")
@api.depends("move_ids")
def _compute_already_reversed_warning(self):
for wizard in self:
moves = wizard.move_ids or self.env["account.move"].browse(self._context['active_ids'])
reversed_moves = self.env["account.move"].search([('reversed_entry_id', 'in', moves.ids)])
warning = ""
for already_reversed_move in reversed_moves.reversed_entry_id:
if warning:
warning += "\n"
reversed_by = " ; ".join(already_reversed_move.reversal_move_id.mapped("display_name"))
move_detail = _("%s reversed by %s") % (already_reversed_move.display_name, reversed_by)
warning += move_detail
wizard.already_reversed_warning = warning or False
# Set default reversal date to original move + 1 day
# and raise error if original move has already been reversed
@api.model
def default_get(self, fields_list):
res = super().default_get(fields_list)
assert self._context.get('active_model') == 'account.move'
amo = self.env['account.move']
moves = amo.browse(self._context['active_ids'])
if len(moves) == 1:
res['date'] = moves.date + relativedelta(days=1)
return res

View File

@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_account_move_reversal" model="ir.ui.view">
<field name="model">account.move.reversal</field>
<field name="inherit_id" ref="account.view_account_move_reversal"/>
<field name="arch" type="xml">
<field name="residual" position="before">
<div
class="alert alert-warning"
role="alert"
attrs="{'invisible': [('already_reversed_warning', '=', False)]}"
>
You are about to reverse entries that have already been reversed or partially reversed (refund). Make sure it is intented.
Already reversed entries are the following :
<field
name="already_reversed_warning"
/>
</div>
</field>
</field>
</record>
</odoo>

View File

@@ -1 +1 @@
from . import models
from . import company

View File

@@ -1,17 +1,17 @@
# Copyright 2014-2022 Akretion (http://www.akretion.com)
# Copyright 2014-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).
{
'name': 'Base Company Extension',
'version': '16.0.1.0.0',
'version': '14.0.1.0.0',
'category': 'Partner',
'license': 'AGPL-3',
'summary': 'Adds capital and title on company',
'author': 'Akretion',
'website': 'https://github.com/akretion/odoo-usability',
'website': 'http://www.akretion.com',
# I depend on base_usability only for _report_company_legal_name()
'depends': ['base_usability'],
'data': ['views/res_company.xml'],
'data': ['company_view.xml'],
'installable': True,
}

View File

@@ -1,4 +1,4 @@
# Copyright 2014-2022 Akretion (http://www.akretion.com)
# Copyright 2014-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).
@@ -15,7 +15,7 @@ class ResCompany(models.Model):
def _report_company_legal_name(self):
self.ensure_one()
if self.legal_type and not self.name.endswith(self.legal_type):
if self.legal_type:
name = '%s %s' % (self.name, self.legal_type)
else:
name = self.name

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2014-2022 Akretion (http://www.akretion.com/)
Copyright 2014-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).
-->
@@ -12,7 +12,7 @@
<field name="model">res.company</field>
<field name="inherit_id" ref="base.view_company_form" />
<field name="arch" type="xml">
<field name="currency_id" position="after">
<field name="company_registry" position="after">
<field name="capital_amount"/>
<field name="legal_type"/>
</field>

View File

@@ -1 +0,0 @@
from . import res_company

Some files were not shown because too many files have changed in this diff Show More