Compare commits

...

27 Commits

Author SHA1 Message Date
Florian da Costa
3f133ab663 [IMP] Add default agent boolean when creating an agent from the commission profile view 2025-09-10 10:46:26 +02:00
Florian da Costa
47197eb5f6 [FIX] chatter in commission result view + add action name for all commission related new actions 2025-09-09 12:21:32 +02:00
Florian da Costa
5ca18e6374 [MIG] commission_simple_agent_purchase to 18 2025-09-09 12:04:37 +02:00
Benoît
4d52d54460 fix missing import 2025-09-02 17:50:27 +02:00
Benoît
0a260e0b54 mig report 2025-09-02 17:30:48 +02:00
Florian da Costa
46e11948fd [MIG] commission_simple_agent : technical migration to 18 2025-09-02 16:02:40 +02:00
Florian da Costa
a19ec0db45 [MIG] commission_simple to 18 2025-09-02 15:59:08 +02:00
Florian da Costa
6af8aac67e [MIG] sale_agent to v18 2025-09-02 15:32:29 +02:00
Alexis de Lattre
36b35f1b87 [IMP] l10n_fr_account_profile_akretion: Add dep on account_dashboard_banner 2025-07-17 15:28:24 +02:00
Alexis de Lattre
f1f808d977 [UDP] l10n_fr_account_profile_akretion: new module names and newly ported modules 2025-06-25 16:02:24 +02:00
Alexis de Lattre
11f3d393b5 mail_debrand has been moved from OCA/social to OCA/mail in v18 2025-06-25 12:31:18 +02:00
Alexis de Lattre
ca5730c701 [IMP] base_profile_akretion: add mail_debrand 2025-06-25 12:23:13 +02:00
Alexis de Lattre
76a1bbd9f4 [IMP] stock_usability_akretion: add button to show reservations from quand tree view 2025-06-23 12:32:03 +02:00
Alexis de Lattre
48d5a3b327 [IMP] stock_quant_package_move_wizard: more accurate source location on picking when all quants have the same location 2025-06-23 12:24:43 +02:00
Akretion Git Bot
836a88dfeb [BOT] add or update setup/_metapackage 2025-05-26 10:16:44 +00:00
Akretion Git Bot
8182b839d4 [BOT] add pyproject.toml 2025-05-26 10:16:43 +00:00
Akretion Git Bot
6cd86f8820 [ADD] icon.png 2025-05-26 10:16:43 +00:00
Alexis de Lattre
76e93f0379 [MIG] l10n_fr_account_profile_akretion from v16 to v18 2025-05-26 12:16:18 +02:00
Alexis de Lattre
d9f65b96fc Remove patch web-advanced_search_startswith.diff (native in v18) 2025-05-26 11:47:26 +02:00
Akretion Git Bot
a729762b4a [BOT] add or update setup/_metapackage 2025-05-26 09:19:03 +00:00
Akretion Git Bot
18551f9b0d [BOT] add pyproject.toml 2025-05-26 09:19:03 +00:00
Akretion Git Bot
05b2d14cd2 [ADD] icon.png 2025-05-26 09:19:02 +00:00
Akretion Git Bot
1d57615b97 [UPD] README.rst 2025-05-26 09:19:02 +00:00
Alexis de Lattre
545cd797e3 [MIG] base_company_extension, eradicate_quick_create, mail_usability_akretion, base_profile_akretion to v18 2025-05-26 11:18:22 +02:00
Alexis de Lattre
70b66681d6 [IMP] stock_usability_akretion: add seller_id on orderpoints 2025-05-20 10:30:29 +02:00
Akretion Git Bot
2e93aaa55b [UPD] README.rst 2025-04-01 16:35:45 +00:00
Alexis de Lattre
5b6a166ed6 [IMP] account_usability_akretion: add move_id on account.payment form view 2025-04-01 18:35:07 +02:00
51 changed files with 362 additions and 378 deletions

View File

@@ -7,7 +7,7 @@ Account Usability
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:eb36005cad5a80be7fad1bfb83a2214419a8cae472545cc920545e6168d10231
!! source digest: sha256:dbf367e7cf8330c803622d0c171cd10e128344d318466d6e37ad7b0fc812e152
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png

View File

@@ -22,6 +22,7 @@
'views/account_journal.xml',
'views/account_move.xml',
'views/account_move_line.xml',
'views/account_payment.xml',
'views/account_analytic_line.xml',
'views/account_menu.xml',
'views/account_tax.xml',

View File

@@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:eb36005cad5a80be7fad1bfb83a2214419a8cae472545cc920545e6168d10231
!! source digest: sha256:dbf367e7cf8330c803622d0c171cd10e128344d318466d6e37ad7b0fc812e152
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/akretion/odoo-usability/tree/18.0/account_usability_akretion"><img alt="akretion/odoo-usability" src="https://img.shields.io/badge/github-akretion%2Fodoo--usability-lightgray.png?logo=github" /></a></p>
<p>This modules adds the following functions:</p>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 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).
-->
<odoo>
<record id="view_account_payment_form" model="ir.ui.view">
<field name="model">account.payment</field>
<field name="inherit_id" ref="account.view_account_payment_form"/>
<field name="arch" type="xml">
<group name="group2" position="inside">
<field name="move_id" readonly="1"/>
</group>
</field>
</record>
</odoo>

View File

@@ -2,10 +2,13 @@
Base Company Extension
======================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:075f72950033a5c6f57ecfa5c2d101bd874dd2ae29adcecdc4905b378e89a3a2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
@@ -14,25 +17,29 @@ Base Company Extension
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-akretion%2Fodoo--usability-lightgray.png?logo=github
:target: https://github.com/akretion/odoo-usability/tree/12.0/base_company_extension
:target: https://github.com/akretion/odoo-usability/tree/18.0/base_company_extension
:alt: akretion/odoo-usability
|badge1| |badge2| |badge3|
This module adds the following fields on the company:
|badge1| |badge2| |badge3|
This module adds the following fields to the ResCompany model:
* Capital Amount
* Legal Type
This is useful to display the legal name of the company in reports.
This is useful to display the legal name of the company in reports
**Table of contents**
.. contents::
:local:
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 smashing it by providing a detailed and welcomed
`feedback <https://github.com/akretion/odoo-usability/issues/new?body=module:%20base_company_extension%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/akretion/odoo-usability/issues/new?body=module:%20base_company_extension%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
@@ -52,6 +59,6 @@ Contributors
Maintainers
~~~~~~~~~~~
This module is part of the `akretion/odoo-usability <https://github.com/akretion/odoo-usability/tree/12.0/base_company_extension>`_ project on GitHub.
This module is part of the `akretion/odoo-usability <https://github.com/akretion/odoo-usability/tree/18.0/base_company_extension>`_ project on GitHub.
You are welcome to contribute.

View File

@@ -4,14 +4,14 @@
{
'name': 'Base Company Extension',
'version': '16.0.1.0.0',
'version': '18.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',
# I depend on base_usability only for _report_company_legal_name()
'depends': ['base_usability'],
'depends': ['base_usability_akretion'],
'data': ['views/res_company.xml'],
'installable': False,
'installable': True,
}

View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -1,20 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Base Company Extension</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
@@ -275,7 +275,7 @@ pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
@@ -301,7 +301,7 @@ span.option {
span.pre {
white-space: pre }
span.problematic {
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
@@ -366,8 +366,10 @@ ul.auto-toc {
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:075f72950033a5c6f57ecfa5c2d101bd874dd2ae29adcecdc4905b378e89a3a2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/akretion/odoo-usability/tree/12.0/base_company_extension"><img alt="akretion/odoo-usability" src="https://img.shields.io/badge/github-akretion%2Fodoo--usability-lightgray.png?logo=github" /></a></p>
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/akretion/odoo-usability/tree/18.0/base_company_extension"><img alt="akretion/odoo-usability" src="https://img.shields.io/badge/github-akretion%2Fodoo--usability-lightgray.png?logo=github" /></a></p>
<p>This module adds the following fields to the ResCompany model:
* Capital Amount
* Legal Type</p>
@@ -375,40 +377,40 @@ ul.auto-toc {
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#bug-tracker" id="id1">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id2">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id3">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id4">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id5">Maintainers</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-1">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-2">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-3">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-4">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-5">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id1">Bug Tracker</a></h1>
<h1><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/akretion/odoo-usability/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/akretion/odoo-usability/issues/new?body=module:%20base_company_extension%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/akretion/odoo-usability/issues/new?body=module:%20base_company_extension%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#id2">Credits</a></h1>
<h1><a class="toc-backref" href="#toc-entry-2">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id3">Authors</a></h2>
<h2><a class="toc-backref" href="#toc-entry-3">Authors</a></h2>
<ul class="simple">
<li>Akretion</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id4">Contributors</a></h2>
<h2><a class="toc-backref" href="#toc-entry-4">Contributors</a></h2>
<ul class="simple">
<li>Alexis de Lattre &lt;<a class="reference external" href="mailto:alexis.delattre&#64;akretion.com">alexis.delattre&#64;akretion.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id5">Maintainers</a></h2>
<p>This module is part of the <a class="reference external" href="https://github.com/akretion/odoo-usability/tree/12.0/base_company_extension">akretion/odoo-usability</a> project on GitHub.</p>
<h2><a class="toc-backref" href="#toc-entry-5">Maintainers</a></h2>
<p>This module is part of the <a class="reference external" href="https://github.com/akretion/odoo-usability/tree/18.0/base_company_extension">akretion/odoo-usability</a> project on GitHub.</p>
<p>You are welcome to contribute.</p>
</div>
</div>

View File

View File

@@ -0,0 +1,43 @@
# Copyright 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).
{
'name': 'Base Profile by Akretion',
'version': '18.0.1.0.0',
'category': 'Tools',
'license': 'AGPL-3',
'summary': 'Base module set selected by Alexis de Lattre',
'author': 'Akretion',
'website': 'https://github.com/akretion/odoo-usability',
'depends': [
# PARTNER
'partner_firstname', # OCA/partner-contact
'partner_email_duplicate_warn', # OCA/partner-contact
'partner_mobile_duplicate_warn', # OCA/partner-contact
'contacts', # official addons
# AUTH
'auth_admin_passkey', # OCA/server-auth
# REMOVE or FIX BAD NATIVE STUFF
'disable_odoo_online', # OCA/server-brand
'remove_odoo_enterprise', # OCA/server-brand
'mail_debrand', # OCA/mail
'partner_disable_gravatar', # OCA/partner-contact
'base_technical_features', # OCA/server-ux
### WEB
'web_responsive', # OCA/web
'web_environment_ribbon', # OCA/web
'web_no_bubble', # OCA/web
'web_dialog_size', # OCA/web
'web_chatter_position', # OCA/web
### MISC
'base_usability_akretion', # akretion/odoo-usability
'mail_usability_akretion', # akretion/odoo-usability
'eradicate_quick_create', # akretion/odoo-usability
'base_company_extension', # akretion/odoo-usability
# password_security will be enabled when the move to ir.config_parameter
# will be backported
#'password_security', # OCA/server-auth
],
'installable': True,
}

View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -1,24 +0,0 @@
diff --git a/addons/web/static/src/search/filter_menu/custom_filter_item.js b/addons/web/static/src/search/filter_menu/custom_filter_item.js
index f67f5fb40af..22525b7cbfd 100644
--- a/addons/web/static/src/search/filter_menu/custom_filter_item.js
+++ b/addons/web/static/src/search/filter_menu/custom_filter_item.js
@@ -46,6 +46,8 @@ const FIELD_OPERATORS = {
char: [
{ symbol: "ilike", description: _lt("contains") },
{ symbol: "not ilike", description: _lt("doesn't contain") },
+ { symbol: "startswith", description: _lt("starts with") },
+ { symbol: "endswith", description: _lt("ends with") },
{ symbol: "=", description: _lt("is equal to") },
{ symbol: "!=", description: _lt("is not equal to") },
{ symbol: "!=", description: _lt("is set"), value: false },
@@ -257,6 +259,10 @@ export class CustomFilterItem extends Component {
[field.name, ">=", domainValue[0]],
[field.name, "<=", domainValue[1]]
);
+ } else if (operator.symbol === "startswith") {
+ domainArray.push([field.name, '=ilike', domainValue[0] + '%']);
+ } else if (operator.symbol === "endswith") {
+ domainArray.push([field.name, '=ilike', '%' + domainValue[0]]);
} else {
domainArray.push([field.name, operator.symbol, domainValue[0]]);
}

View File

@@ -4,7 +4,7 @@
{
'name': 'Commission Simple',
'version': '16.0.1.0.0',
'version': '18.0.1.0.0',
'category': 'Sales',
'license': 'AGPL-3',
'summary': 'Compute commissions for salesman',
@@ -44,5 +44,5 @@ This module has been written by Alexis de Lattre from Akretion
'views/res_config_settings.xml',
'wizards/commission_compute_view.xml',
],
'installable': False,
'installable': True,
}

View File

@@ -13,7 +13,7 @@
<field name="inherit_id" ref="account.view_move_line_form"/>
<field name="arch" type="xml">
<notebook position="inside">
<page name="commission" string="Commission" attrs="{'invisible': [('display_type', '!=', 'product')]}">
<page name="commission" string="Commission" invisible="display_type != 'product'">
<group name="commission_grp">
<field name="commission_base"/>
<label for="commission_rate"/>

View File

@@ -1,206 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 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)
-->
<odoo>
<menuitem id="commission_root" name="Commissions" parent="account.menu_finance" sequence="11"/>
<menuitem id="commission_config_root" name="Commissions" parent="account.menu_finance_configuration" sequence="110"/>
<!-- PROFILE -->
<record id="commission_profile_form" model="ir.ui.view">
<field name="name">commission.profile.form</field>
<field name="model">commission.profile</field>
<field name="arch" type="xml">
<form>
<sheet>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<group name="main">
<field name="name"/>
<field name="active" invisible="1"/>
<field name="company_id" invisible="1"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="trigger_type"/>
</group>
<group name="lines" string="Rules">
<field name="line_ids" nolabel="1" colspan="2"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="commission_profile_tree" model="ir.ui.view">
<field name="name">commission.profile.tree</field>
<field name="model">commission.profile</field>
<field name="arch" type="xml">
<tree>
<field name="sequence" widget="handle"/>
<field name="name" decoration-bf="1"/>
<field name="trigger_type" optional="show"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<record id="commission_profile_action" model="ir.actions.act_window">
<field name="name">Commission Profiles</field>
<field name="res_model">commission.profile</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="commission_profile_menu" action="commission_profile_action" parent="commission_config_root" sequence="18"/>
<!-- RULE -->
<record id="commission_rule_form" model="ir.ui.view">
<field name="name">commission.rule.form</field>
<field name="model">commission.rule</field>
<field name="arch" type="xml">
<form>
<sheet>
<group name="main">
<field name="profile_id" invisible="not context.get('commission_rule_main_view')"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="company_id" invisible="1"/>
<field name="applied_on" widget="radio"/>
</group>
<group name="match" string="Match">
<field name="partner_ids" attrs="{'invisible': [('applied_on', 'not in', ('0_customer_product', '1_customer_product_category'))], 'required': [('applied_on', 'in', ('0_customer_product', '1_customer_product_category'))]}"/>
<field name="product_categ_ids" attrs="{'invisible': [('applied_on', 'not in', ('1_customer_product_category', '3_product_category'))], 'required': [('applied_on', 'in', ('1_customer_product_category', '3_product_category'))]}"/>
<field name="product_ids" attrs="{'invisible': [('applied_on', 'not in', ('0_customer_product', '2_product'))], 'required': [('applied_on', 'in', ('0_customer_product', '2_product'))]}"/>
<field name="date_start"/>
<field name="date_end"/>
</group>
<group name="compute" string="Compute">
<label for="rate"/>
<div name="rate">
<field name="rate" class="oe_inline"/> %
</div>
</group>
</sheet>
</form>
</field>
</record>
<record id="commission_rule_tree" model="ir.ui.view">
<field name="name">commission.rule.tree</field>
<field name="model">commission.rule</field>
<field name="arch" type="xml">
<tree>
<field name="profile_id" invisible="not context.get('commission_rule_main_view')"/>
<field name="applied_on"/>
<field name="date_start"/>
<field name="date_end"/>
<field name="rate" string="Rate (%)"/>
</tree>
</field>
</record>
<record id="commission_rule_search" model="ir.ui.view">
<field name="name">commission.rule.search</field>
<field name="model">commission.rule</field>
<field name="arch" type="xml">
<search>
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
<group name="groupby">
<filter name="profile_groupby" string="Profile" context="{'group_by': 'profile_id'}"/>
</group>
</search>
</field>
</record>
<record id="commission_rule_action" model="ir.actions.act_window">
<field name="name">Commission Rules</field>
<field name="res_model">commission.rule</field>
<field name="view_mode">tree,form</field>
<field name="context">{'commission_rule_main_view': True}</field>
</record>
<menuitem id="commission_rule_menu" action="commission_rule_action" parent="commission_config_root" sequence="20"/>
<!-- RESULT -->
<record id="commission_result_form" model="ir.ui.view">
<field name="name">commission.result.form</field>
<field name="model">commission.result</field>
<field name="arch" type="xml">
<form>
<group name="main">
<group name="main-left">
<field name="partner_id"/>
<field name="profile_id" groups="account.group_account_manager"/>
<field name="company_currency_id" invisible="1"/>
<field name="company_id" invisible="1"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="amount_total"/>
</group>
<group name="main-right">
<field name="date_range_id"/>
<field name="date_start"/>
<field name="date_end"/>
</group>
</group>
<group name="lines" string="Commission Lines">
<field nolabel="1" name="line_ids" colspan="2">
<tree>
<field name="move_id"/>
<field name="move_line_id"/>
<field name="base"/>
<field name="rate" string="Rate (%)"/>
<field name="amount" sum="1"/>
<field name="rule_id"/>
<field name="company_currency_id" invisible="1"/>
</tree>
</field>
</group>
</form>
</field>
</record>
<record id="commission_result_tree" model="ir.ui.view">
<field name="name">commission.result.tree</field>
<field name="model">commission.result</field>
<field name="arch" type="xml">
<tree>
<field name="date_range_id" optional="show"/>
<field name="date_start" optional="hide"/>
<field name="date_end" optional="hide"/>
<field name="partner_id"/>
<field name="profile_id" groups="account.group_account_manager"/>
<field name="company_currency_id" invisible="1"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="amount_total" sum="1" optional="show"/>
</tree>
</field>
</record>
<record id="commission_result_search" model="ir.ui.view">
<field name="name">commission.result.search</field>
<field name="model">commission.result</field>
<field name="arch" type="xml">
<search>
<field name="partner_id"/>
<field name="date_range_id"/>
<group name="groupby">
<filter name="partner_groupby" string="Salesman" context="{'group_by': 'partner_id'}"/>
<filter name="date_range_groupby" string="Period" context="{'group_by': 'date_range_id'}"/>
</group>
</search>
</field>
</record>
<record id="commission_result_action" model="ir.actions.act_window">
<field name="name">Commissions</field>
<field name="res_model">commission.result</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="commission_result_menu" action="commission_result_action" parent="commission_root" sequence="10"/>
</odoo>

View File

@@ -16,7 +16,7 @@
<field name="arch" type="xml">
<form>
<sheet>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" invisible="active"/>
<group name="main">
<group name="main-left">
<field name="name"/>
@@ -31,12 +31,12 @@
<notebook>
<page name="assignments" string="Assignments">
<field name="assign_ids">
<tree editable="bottom">
<list editable="bottom">
<field name="assign_type"/>
<field name="user_id" attrs="{'required': [('assign_type', '=', 'user')], 'readonly': [('assign_type', '!=', 'user')]}"/>
<field name="user_id" required="assign_type == 'user'" readonly="assign_type != 'user'"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="company_id" invisible="1"/>
</tree>
</list>
</field>
</page>
<page name="rules" string="Rules">
@@ -48,23 +48,24 @@
</field>
</record>
<record id="commission_profile_tree" model="ir.ui.view">
<field name="name">commission.profile.tree</field>
<record id="commission_profile_list" model="ir.ui.view">
<field name="name">commission.profile.list</field>
<field name="model">commission.profile</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="sequence" widget="handle"/>
<field name="name" decoration-bf="1"/>
<field name="trigger_type" optional="show"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</list>
</field>
</record>
<record id="commission_profile_action" model="ir.actions.act_window">
<field name="name">Commission Profiles</field>
<field name="path">commission-profile</field>
<field name="res_model">commission.profile</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="commission_profile_menu" action="commission_profile_action" parent="commission_config_root" sequence="18"/>

View File

@@ -13,8 +13,8 @@
<field name="arch" type="xml">
<form>
<header>
<button name="draft2done" type="object" states="draft" string="Confirm" class="btn-primary"/>
<button name="backtodraft" type="object" states="done" string="Back to Draft" confirm="Are you sure you want to go back to draft?"/>
<button name="draft2done" type="object" invisible="state != 'draft'" string="Confirm" class="btn-primary"/>
<button name="backtodraft" type="object" invisible="state != 'done'" string="Back to Draft" confirm="Are you sure you want to go back to draft?"/>
<field name="state" widget="statusbar"/>
</header>
<group name="main">
@@ -35,7 +35,7 @@
</group>
<group name="lines" string="Commission Lines">
<field nolabel="1" name="line_ids" colspan="2">
<tree>
<list>
<field name="move_id"/>
<field name="date" optional="hide"/>
<field name="partner_id"/>
@@ -49,23 +49,19 @@
<field name="commission_rule_id" optional="hide"/>
<field name="company_currency_id" invisible="1"/>
<field name="currency_id" invisible="1"/>
</tree>
</list>
</field>
</group>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="activity_ids" widget="mail_activity"/>
<field name="message_ids" widget="mail_thread"/>
</div>
<chatter />
</form>
</field>
</record>
<record id="commission_result_tree" model="ir.ui.view">
<field name="name">commission.result.tree</field>
<record id="commission_result_list" model="ir.ui.view">
<field name="name">commission.result.list</field>
<field name="model">commission.result</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="date_range_id" optional="show"/>
<field name="date_start" optional="hide"/>
<field name="date_end" optional="hide"/>
@@ -76,7 +72,7 @@
<field name="company_id" groups="base.group_multi_company"/>
<field name="amount_total" sum="1" optional="show"/>
<field name="state" decoration-info="state == 'draft'" decoration-success="state == 'done'" widget="badge"/>
</tree>
</list>
</field>
</record>
@@ -103,8 +99,9 @@
<record id="commission_result_action" model="ir.actions.act_window">
<field name="name">Commissions</field>
<field name="path">commission-result</field>
<field name="res_model">commission.result</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="commission_result_menu" action="commission_result_action" parent="commission_root" sequence="10"/>

View File

@@ -19,9 +19,9 @@
<field name="company_id" invisible="1"/>
</group>
<group name="match" string="Match">
<field name="partner_ids" attrs="{'invisible': [('applied_on', 'not in', ('0_customer_product', '1_customer_product_category'))], 'required': [('applied_on', 'in', ('0_customer_product', '1_customer_product_category'))]}"/>
<field name="product_categ_ids" attrs="{'invisible': [('applied_on', 'not in', ('1_customer_product_category', '3_product_category'))], 'required': [('applied_on', 'in', ('1_customer_product_category', '3_product_category'))]}"/>
<field name="product_ids" attrs="{'invisible': [('applied_on', 'not in', ('0_customer_product', '2_product'))], 'required': [('applied_on', 'in', ('0_customer_product', '2_product'))]}"/>
<field name="partner_ids" invisible="applied_on not in ('0_customer_product', '1_customer_product_category')" required="applied_on in ('0_customer_product', '1_customer_product_category')"/>
<field name="product_categ_ids" invisible="applied_on not in ('1_customer_product_category', '3_product_category')" required="applied_on in ('1_customer_product_category', '3_product_category')"/>
<field name="product_ids" invisible="applied_on not in ('0_customer_product', '2_product')" required="applied_on in ('0_customer_product', '2_product')"/>
<field name="date_start"/>
<field name="date_end"/>
</group>
@@ -37,18 +37,18 @@
</field>
</record>
<record id="commission_rule_tree" model="ir.ui.view">
<field name="name">commission.rule.tree</field>
<record id="commission_rule_list" model="ir.ui.view">
<field name="name">commission.rule.list</field>
<field name="model">commission.rule</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="profile_id" invisible="not context.get('commission_rule_main_view')"/>
<field name="applied_on"/>
<field name="date_start"/>
<field name="date_end"/>
<field name="rate" string="Rate (%)"/>
<field name="base"/>
</tree>
</list>
</field>
</record>
@@ -68,8 +68,9 @@
<record id="commission_rule_action" model="ir.actions.act_window">
<field name="name">Commission Rules</field>
<field name="path">commission-rule</field>
<field name="res_model">commission.rule</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
<field name="context">{'commission_rule_main_view': True}</field>
</record>

View File

@@ -13,22 +13,12 @@
<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='storno']" position="after">
<h2>Commissions</h2>
<div class="row mt16 o_settings_container" id="commission_simple">
<div class="col-12 col-lg-12 o_setting_box" id="commission_simple-settings">
<div class="o_setting_left_pane" />
<div class="o_setting_right_pane">
<div class="row" id="commission_date_range_type_id">
<label
for="commission_date_range_type_id"
class="col-md-5"
/>
<field name="commission_date_range_type_id" />
</div>
</div>
</div>
</div>
<xpath expr="//block[@id='storno']" position="after">
<block title="Commissions" id="commission_simple">
<setting id="commission_date_range_type" title="Date range type">
<field name="commission_date_range_type_id"/>
</setting>
</block>
</xpath>
</field>
</record>

View File

@@ -4,7 +4,7 @@
{
'name': 'Commission Simple Agent',
'version': '16.0.1.0.0',
'version': '18.0.1.0.0',
'category': 'Sales',
'license': 'AGPL-3',
'summary': 'Glue module between commission_simple and sale_agent',
@@ -18,5 +18,5 @@
'views/commission_profile.xml',
'views/commission_result.xml',
],
'installable': False,
'installable': True,
}

View File

@@ -11,8 +11,8 @@
<field name="model">commission.profile</field>
<field name="inherit_id" ref="commission_simple.commission_profile_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='assign_ids']/tree/field[@name='user_id']" position="after">
<field name="agent_id" attrs="{'required': [('assign_type', '=', 'agent')], 'readonly': [('assign_type', '!=', 'agent')]}"/>
<xpath expr="//field[@name='assign_ids']/list/field[@name='user_id']" position="after">
<field name="agent_id" required="assign_type == 'agent'" readonly="assign_type != 'agent'" context="{'default_agent': True}"/>
</xpath>
</field>
</record>

View File

@@ -7,9 +7,9 @@
<odoo>
<record id="commission_result_tree" model="ir.ui.view">
<record id="commission_result_list" model="ir.ui.view">
<field name="model">commission.result</field>
<field name="inherit_id" ref="commission_simple.commission_result_tree"/>
<field name="inherit_id" ref="commission_simple.commission_result_list"/>
<field name="arch" type="xml">
<field name="assign_type" position="attributes">
<attribute name="decoration-danger">assign_type == 'agent'</attribute>

View File

@@ -4,7 +4,7 @@
{
'name': 'Commission Simple Agent Purchase',
'version': '16.0.1.0.0',
'version': '18.0.1.0.0',
'category': 'Sales',
'license': 'AGPL-3',
'summary': 'Glue module between commission_simple_agent and purchase',
@@ -18,5 +18,5 @@
'views/commission_result.xml',
'wizards/res_config_settings.xml',
],
'installable': False,
'installable': True,
}

View File

@@ -12,7 +12,7 @@
<field name="inherit_id" ref="commission_simple.commission_result_form"/>
<field name="arch" type="xml">
<group name="main-right" position="inside">
<field name="purchase_id" attrs="{'invisible': [('assign_type', '!=', 'agent')]}"/>
<field name="purchase_id" invisible="assign_type != 'agent'"/>
</group>
</field>
</record>

View File

@@ -13,11 +13,10 @@
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="commission_simple.res_config_settings_view_form" />
<field name="arch" type="xml">
<xpath expr="//div[@id='commission_simple-settings']/div[hasclass('o_setting_right_pane')]" position="inside">
<div class="row" id="commission_product_id">
<label for="commission_product_id" class="col-md-5" />
<field name="commission_product_id" context="{'default_detailed_type': 'service', 'default_purchase_ok': True, 'default_sale_ok': False, 'default_available_in_pos': False, 'default_purchase_method': 'purchase'}"/>
</div>
<xpath expr="//block[@id='commission_simple']" position="inside">
<setting id="commission_product" title="Commission Product">
<field name="commission_product_id" context="{'default_type': 'service', 'default_purchase_ok': True, 'default_sale_ok': False, 'default_available_in_pos': False, 'default_purchase_method': 'purchase'}"/>
</setting>
</xpath>
</field>
</record>

View File

@@ -3,7 +3,7 @@
{
'name': 'Eradicate Quick Create',
'version': '16.0.1.0.0',
'version': '18.0.1.0.0',
'category': 'Tools',
'license': 'AGPL-3',
'summary': 'Disable quick create on all objects',
@@ -18,8 +18,8 @@ This module uses the module *web_m2x_options* from the OCA *web* project (in v10
This module has been written by Alexis de Lattre from Akretion <alexis.delattre@akretion.com>.
""",
'author': 'Akretion',
'website': 'http://www.akretion.com',
'website': 'https://github.com/akretion/odoo-usability',
'depends': ['web_m2x_options'],
'post_init_hook': 'web_m2x_options_create',
'installable': False,
'installable': True,
}

View File

@@ -2,12 +2,8 @@
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import SUPERUSER_ID
from odoo.api import Environment
def web_m2x_options_create(cr, registry):
env = Environment(cr, SUPERUSER_ID, {})
def web_m2x_options_create(env):
config_parameter = env['ir.config_parameter'].search(
[('key', '=', 'web_m2x_options.create')])
if config_parameter and config_parameter.value != 'False':

View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

View File

@@ -0,0 +1,97 @@
# Copyright 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).
{
'name': 'Account Profile for France',
'version': '18.0.1.0.0',
'category': 'Accounting & Finance',
'license': 'AGPL-3',
'summary': 'Module set for accounting for a French company',
'author': 'Akretion',
'website': 'https://github.com/akretion/odoo-usability',
'depends': [
### MISC
'date_range_account', # OCA/server-ux
'account_usability_akretion', # akretion/odoo-usability
'account_usability', # OCA/account-financial-tools
'l10n_fr_siret_lookup', # OCA/l10n-france
'account_payment_base_oca', # OCA/bank-payment-alternative
'account_move_name_sequence', # OCA/account-financial-tools
'account_lock_date_update', # OCA/account-financial-tools
'account_move_csv_import', # akretion/account-move-import
'account_move_line_reconcile_manual', # OCA/account-reconcile
'account_dashboard_banner', # OCA/account-financial-tools
### INVOICING
'account_invoice_fiscal_position_update', # OCA/account-invoicing
'account_fiscal_position_vat_check', # OCA/account-financial-tools
'account_invoice_facturx', # OCA/edi
### FINANCIAL REPORTS
'account_financial_report', # OCA/account-financial-reporting
'account_balance_ebp_csv_export', # OCA/l10n-france
# 'l10n_fr_mis_reports', # OCA/l10n-france
# 'l10n_fr_fec_oca', # OCA/l10n-france
### BANK STATEMENTS
'account_statement_completion_label_simple', # akretion/bank-statement-reconcile-simple
#'account_statement_completion_label_simple_sale', # akretion/bank-statement-reconcile-simple
'account_statement_import_file_reconcile_oca', # OCA/bank-statement-import
'account_statement_import_ofx', # OCA/bank-statement-import
'account_statement_import_fr_cfonb', # OCA/l10n-france
'account_reconcile_oca', # OCA/account-reconcile
### CURRENCY RATES
'currency_rate_update', # OCA/currency
'currency_old_rate_notify', # OCA/currency
### INVOICE IMPORT
#'account_invoice_import_simple_pdf', # OCA/edi
#'account_invoice_import_facturx', # OCA/edi
#'l10n_fr_account_invoice_import_facturx', # OCA/l10n-france
### OVERDUE
'account_invoice_overdue_warn', # OCA/credit-control
#'account_invoice_overdue_warn_sale', # OCA/credit-control
'account_invoice_overdue_reminder', # OCA/credit-control
### FRENCH DECLARATIONS
'l10n_fr_account_vat_return_teledec', # OCA/l10n-france
'l10n_fr_account_vat_return_einvoice_generate', # OCA/l10n-france
# Warning: intrastat_product depends on sale_stock and purchase_stock !
'l10n_fr_intrastat_product', # OCA/l10n-france
'product_net_weight', # OCA/product-attribute
'l10n_fr_intrastat_service', # OCA/l10n-france
'l10n_fr_das2', # OCA/l10n-france
# ANALYTIC
#'account_analytic_distribution_manual', # OCA/account-analytic
### INVOICE IMPORT
#'account_invoice_download_ovh', # OCA/edi
#'account_invoice_download_scaleway', # OCA/edi
### PAYMENT ORDERS and DEBIT ORDERS
#'partner_bank_acc_type_constraint', # OCA/partner-contact
#'account_payment_base_oca_sale', # OCA/bank-payment-alternative
#'account_payment_sepa_credit_transfer', # OCA/bank-payment-alternative
#'account_payment_sepa_direct_debit', # OCA/bank-payment-alternative
#'account_payment_fr_lcr', # OCA/l10n-france
#'l10n_fr_account_payment_intl_credit_transfer', # OCA/l10n-france
### PY3O
#'account_invoice_facturx_py3o', # OCA/edi
### CHORUS
#'l10n_fr_chorus_account', # OCA/l10n-france
#'l10n_fr_chorus_sale', # OCA/l10n-france
#'l10n_fr_chorus_facturx', # OCA/l10n-france
### CUTOFF
#'account_cutoff_start_end_dates', # OCA/account-closing
#'account_cutoff_picking', # OCA/account-closing
#'account_cutoff_accrual_subscription', # OCA/account-closing
### MISC
#'account_check_deposit', # OCA/account-financial-tools
#'account_cash_deposit', # OCA/account-financial-tools
#'account_invoice_pricelist', # OCA/account-invoicing
#'account_asset_management', # OCA/account-financial-tools
### MOONCARD
#'mooncard_payment_card', # akretion/odoo-mooncard-connector
#'l10n_fr_base_newgen_payment_card', # akretion/odoo-mooncard-connector
#'base_newgen_payment_card_start_end_dates', # akretion/odoo-mooncard-connector
],
'excludes': [
#'l10n_fr_fec',
'account_edi_ubl_cii',
],
'installable': True,
}

View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -5,7 +5,7 @@
{
'name': 'Mail Usability',
'version': '16.0.1.0.0',
'version': '18.0.1.0.0',
'category': 'Productivity/Discuss',
'license': 'AGPL-3',
'summary': 'Usability improvements on mails',
@@ -20,13 +20,8 @@ Small usability improvements on mails:
* remove 'sent by' in notification footer (TODO mig v14)
""",
'author': 'Akretion',
'website': 'http://www.akretion.com',
'website': 'https://github.com/akretion/odoo-usability',
'depends': ['mail'],
'data': [
#'views/mail_view.xml',
#'data/mail_data.xml',
#'wizard/email_template_preview_view.xml',
#'wizard/mail_compose_message_view.xml',
],
'installable': False,
'data': [],
'installable': True,
}

View File

@@ -9,8 +9,7 @@ class ResPartner(models.Model):
_inherit = 'res.partner'
# tracking=True is handled in the 'mail' module, so it's better
# to have this in mail_usability than in base_usability
name = fields.Char(tracking=True)
# to have this in mail_usability than in base_usability_akretion
ref = fields.Char(tracking=True)
lang = fields.Selection(tracking=True)
street = fields.Char(tracking=True)

View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -14,7 +14,7 @@
<field name="inherit_id" ref="product.product_template_search_view" />
<field name="arch" type="xml">
<field name="categ_id" position="after">
<field name="seller_id" string="Main Supplier"/>
<field name="seller_id" domain="[('parent_id', '=', False)]"/>
</field>
</field>
</record>

View File

@@ -4,7 +4,7 @@
{
'name': 'Sale Agent',
'version': '16.0.1.0.0',
'version': '18.0.1.0.0',
'category': 'Sales',
'license': 'AGPL-3',
'summary': 'Add agent on partner, sale order and customer invoice/refund',
@@ -19,5 +19,5 @@
"views/account_invoice_report.xml",
],
'demo': ['demo/demo.xml'],
'installable': False,
'installable': True,
}

View File

@@ -3,6 +3,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
from odoo.tools import SQL
class AccountInvoiceReport(models.Model):
@@ -11,5 +12,4 @@ class AccountInvoiceReport(models.Model):
invoice_agent_id = fields.Many2one("res.partner", string="Agent", readonly=True)
def _select(self):
select_str = super()._select()
return f"{select_str}, move.invoice_agent_id AS invoice_agent_id"
return SQL("%s, move.invoice_agent_id AS invoice_agent_id", super()._select())

View File

@@ -14,7 +14,7 @@
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='sales_purchases']//group[@name='sale']/field[@name='user_id']" name="user_id" position="after">
<field name="agent_id" attrs="{'invisible': [('parent_id', '!=', False)]}"/>
<field name="agent_id" invisible="parent_id"/>
</xpath>
<group name="misc" position="inside">
<field name="agent"/>

View File

@@ -1,10 +1,15 @@
[project]
name = "odoo-addons-akretion-odoo-usability"
version = "18.0.20250130.0"
version = "18.0.20250526.1"
dependencies = [
"odoo-addon-account_usability_akretion==18.0.*",
"odoo-addon-base_company_extension==18.0.*",
"odoo-addon-base_partner_ref==18.0.*",
"odoo-addon-base_profile_akretion==18.0.*",
"odoo-addon-base_usability_akretion==18.0.*",
"odoo-addon-eradicate_quick_create==18.0.*",
"odoo-addon-l10n_fr_account_profile_akretion==18.0.*",
"odoo-addon-mail_usability_akretion==18.0.*",
"odoo-addon-mrp_usability_akretion==18.0.*",
"odoo-addon-partner_tree_default_account==18.0.*",
"odoo-addon-partner_tree_default_base==18.0.*",

View File

@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-02-13 21:59+0000\n"
"PO-Revision-Date: 2023-02-13 21:59+0000\n"
"POT-Creation-Date: 2025-06-23 09:19+0000\n"
"PO-Revision-Date: 2025-06-23 09:19+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -109,6 +109,11 @@ msgstr "Lot/numéro de série"
msgid "Move"
msgstr "Déplacer"
#. module: stock_quant_package_move_wizard
#: model_terms:ir.ui.view,arch_db:stock_quant_package_move_wizard.stock_quant_move_wizard_form
msgid "Move and Show Picking"
msgstr "Déplacer et afficher le bon de transfert"
#. module: stock_quant_package_move_wizard
#: model:ir.actions.act_window,name:stock_quant_package_move_wizard.stock_quant_move_wizard_action
msgid "Move to Another Location"
@@ -137,7 +142,7 @@ msgstr "Qté à déplacer"
#. module: stock_quant_package_move_wizard
#: model:ir.model.fields,field_description:stock_quant_package_move_wizard.field_stock_quant_move_wizard_line__quant_id
msgid "Quant"
msgstr "Quant"
msgstr ""
#. module: stock_quant_package_move_wizard
#: model:ir.model.fields,field_description:stock_quant_package_move_wizard.field_stock_quant_move_wizard_line__wizard_id
@@ -154,7 +159,7 @@ msgstr ""
#. module: stock_quant_package_move_wizard
#: model:ir.model,name:stock_quant_package_move_wizard.model_stock_quant
msgid "Quants"
msgstr "Quants"
msgstr ""
#. module: stock_quant_package_move_wizard
#: model:ir.model.fields,field_description:stock_quant_package_move_wizard.field_stock_quant_move_wizard__origin
@@ -196,7 +201,8 @@ msgid ""
"%(product_name)s to %(dest_location)s, but it is already on that location!"
msgstr ""
"Vous essayez de déplacer %(qty)s %(uom)s d'un quant de l'article "
"%(product_name)s vers %(dest_location)s, mais il est déjà sur cet emplacement !"
"%(product_name)s vers %(dest_location)s, mais il est déjà sur cet "
"emplacement !"
#. module: stock_quant_package_move_wizard
#. odoo-python

View File

@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-02-13 21:58+0000\n"
"PO-Revision-Date: 2023-02-13 21:58+0000\n"
"POT-Creation-Date: 2025-06-23 09:19+0000\n"
"PO-Revision-Date: 2025-06-23 09:19+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -109,6 +109,11 @@ msgstr ""
msgid "Move"
msgstr ""
#. module: stock_quant_package_move_wizard
#: model_terms:ir.ui.view,arch_db:stock_quant_package_move_wizard.stock_quant_move_wizard_form
msgid "Move and Show Picking"
msgstr ""
#. module: stock_quant_package_move_wizard
#: model:ir.actions.act_window,name:stock_quant_package_move_wizard.stock_quant_move_wizard_action
msgid "Move to Another Location"

View File

@@ -100,6 +100,11 @@ class StockQuant(models.Model):
"location_dest_id": dest_location.id,
"origin": origin,
}
source_loc_ids = set()
for quant in self:
source_loc_ids.add(quant.location_id.id)
if len(source_loc_ids) == 1:
vals['location_id'] = list(source_loc_ids)[0]
return vals
def move_full_quant_to(self, dest_location, picking_type=False, origin=False):

View File

@@ -60,22 +60,9 @@ class StockQuantMoveWizard(models.TransientModel):
def run(self):
self.ensure_one()
picking_id = False
if self.picking_type_id:
picking_vals = self.env["stock.quant"]._prepare_move_to_stock_picking(
self.location_dest_id, self.picking_type_id, origin=self.origin
)
picking_id = self.env["stock.picking"].create(picking_vals).id
smo = self.env["stock.move"]
for line in self.line_ids:
quant = line.quant_id
assert not quant.package_id
vals = quant._prepare_move_to_stock_move(
line.quantity, self.location_dest_id, picking_id, origin=self.origin
)
new_move = smo.create(vals)
new_move._action_done()
assert new_move.state == "done"
res = self.line_ids.quant_id.move_full_quant_to(
self.location_dest_id, self.picking_type_id, origin=self.origin)
picking_id = res['picking_id']
action = {}
if picking_id and self._context.get("run_show_picking"):
action = self.env["ir.actions.actions"]._for_xml_id(

View File

@@ -35,7 +35,8 @@
</field>
</group>
<footer>
<button name="run" string="Move" type="object" class="btn-primary" />
<button name="run" string="Move and Show Picking" type="object" class="btn-primary" context="{'run_show_picking': True}" />
<button name="run" string="Move" type="object" />
<button string="Cancel" special="cancel" />
</footer>
</form>

View File

@@ -15,6 +15,23 @@ class StockWarehouseOrderpoint(models.Model):
# but all the Odoo deployments I've seen so far need 'manual' by default
trigger = fields.Selection(default='manual')
product_barcode = fields.Char(related='product_id.barcode', string="Product Barcode")
seller_id = fields.Many2one(
"res.partner",
compute="_compute_seller_id",
search="_search_seller_id",
string="Main Supplier")
def _search_seller_id(self, operator, value):
# searching on the first line of a o2m is not that easy
# So we search all potential matching products
# Then we filter on the seller_id
records = self.search([("product_id.seller_ids.partner_id", operator, value)])
records = records.filtered_domain([("seller_id", operator, value)])
return [("id", "in", records.ids)]
def _compute_seller_id(self):
for orderpoint in self:
orderpoint.seller_id = fields.first(orderpoint.product_id.seller_ids).partner_id
def _procure_orderpoint_confirm(
self, use_new_cursor=False, company_id=None, raise_user_error=True):

View File

@@ -47,6 +47,19 @@
</field>
</record>
<!-- View used by menu Inventory > Analysis > Locations -->
<!--
<record id="view_stock_quant_tree_editable" model="ir.ui.view">
<field name="model">stock.quant</field>
<field name="inherit_id" ref="stock.view_stock_quant_tree_editable"/>
<field name="arch" type="xml">
<field name="reserved_quantity" position="after">
<button type="object" name="action_stock_move_lines_reserved" string="Reservations" attrs="{'invisible': [('reserved_quantity', '=', 0)]}"/>
</field>
</field>
</record>
-->
<record id="quant_search_view" model="ir.ui.view">
<field name="model">stock.quant</field>
<field name="inherit_id" ref="stock.quant_search_view"/>

View File

@@ -28,8 +28,20 @@
<field name="product_id" position="after">
<field name="product_barcode" optional="hide"/>
</field>
<field name="route_id" position="after">
<field name="seller_id" optional="show"/>
</field>
</field>
</record>
<record id="stock_reorder_report_search" model="ir.ui.view">
<field name="model">stock.warehouse.orderpoint</field>
<field name="inherit_id" ref="stock.stock_reorder_report_search"/>
<field name="arch" type="xml">
<field name="product_category_id" position="after">
<field name="seller_id" domain="[('parent_id', '=', False)]"/>
</field>
</field>
</record>
</odoo>