Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
9f54d66
[REF] sale_quotation: refactor the quotation mechanism.
nicolas-delbovier-acsone May 12, 2025
29ac9b7
[IMP] shopinvader_product_order_mode: use field dependency instead of…
nicolas-delbovier-acsone Jun 3, 2025
00ec810
[FIX] fix typo 'unabled' -> 'enabled'
nicolas-delbovier-acsone Jun 10, 2025
7854521
[ADD] sale_typology: extract the concept of "typology" in sale.order …
nicolas-delbovier-acsone May 16, 2025
c98917d
[IMP] sale_quotation: use the "typology" field to delcare the sale or…
nicolas-delbovier-acsone May 19, 2025
1f6b2b2
[ADD] sale_cart_quotation: introduce module to decouple sale_quotatio…
nicolas-delbovier-acsone May 19, 2025
6617ad0
[IMP] shopinvader_api_quotation: remove sale_cart dependency and enha…
nicolas-delbovier-acsone May 20, 2025
3ddb868
[ADD] shopinvader_api_cart_quotation: add a module to isolate the log…
nicolas-delbovier-acsone May 21, 2025
db27aed
[IMP] sale_cart: add ondelete strategy on typology field
nicolas-delbovier-acsone Jun 3, 2025
e31c7ee
[IMP] sale_cart_quotation: add a button to trigger the "request quota…
nicolas-delbovier-acsone Jun 3, 2025
cecbd62
[IMP] sale_quotation: add ondelete strategy to typology field in sale…
nicolas-delbovier-acsone Jun 3, 2025
2f0ba4c
[IMP] shopinvader_api_quotation: improve update logic + small fixes.
nicolas-delbovier-acsone Jun 3, 2025
6876549
[IMP] fix typo 'unabled' -> 'enabled'
nicolas-delbovier-acsone Jun 16, 2025
3f03277
[FIX] sale_quotation: Remove redundant unit test
nicolas-delbovier-acsone Jul 1, 2025
f029df5
[FIX] sale_quotation: Restore standard SO confirmation; introduce opt…
nicolas-delbovier-acsone Jul 2, 2025
596a5b2
[IMP] sale_quotation: improve UI of the sale_order form.
nicolas-delbovier-acsone Jul 8, 2025
b4e5b7b
[IMP] sale_quotation: rename method for clarity.
nicolas-delbovier-acsone Jul 9, 2025
33e5ea7
[IMP] sale_cart: Makes menu more flexible
lmignon Jul 14, 2025
21381bf
[IMP]sale_quotation: Improves menu.
lmignon Jul 14, 2025
b88bf51
[IMP] sale_quotation: Improves UI/UX
lmignon Jul 14, 2025
0f4db12
[IMP] sale_quotation: Defines user's specific actions
lmignon Jul 14, 2025
aa5e3c8
[IMP] sale_cart_quotation: Uses new actions declared for customer use…
lmignon Jul 14, 2025
63b3abb
[IMP] shopinvader_api_cart_quotation: CUses new actions declared for …
lmignon Jul 14, 2025
20ecf7f
[IMP] shopinvader_api_quotation: Improves API
lmignon Jul 14, 2025
af999bb
[IMP] sale_quotation, shopinvader_api_quotation: add FR translations
lmignon Jul 16, 2025
816d1c6
[IMP] sale_quotation: Improves UI
lmignon Jul 16, 2025
d886de5
[IMP] sale_quotation: Improves UI
lmignon Jul 16, 2025
13cae16
[IMP] sale_quotation: Translations
lmignon Jul 16, 2025
e7e9060
[IMP] shopinvader_api_quotation: No download while the quotation is n…
lmignon Jul 23, 2025
8c955ff
[IMP] shopinvader_api_quotation: Quotation name is not editable.
lmignon Jul 23, 2025
f13c5d4
[IMP]shopinvader_api_quotation: Refactor code to split sale and quota…
lmignon Jul 23, 2025
ec07e37
[IMP] shopinvader_api_quotation: Add search params
lmignon Jul 23, 2025
749969a
[IMP] shopinvader_api_quotation: Add the quotation_state into the sal…
lmignon Jul 23, 2025
90c2db6
[IMP] shopinvader_api_quotation: Implement partial update and add note
lmignon Jul 23, 2025
0ea344c
[FIX] sale_quotation, shopinvader_api_quotation: Add pot file
lmignon Jul 29, 2025
bebbcfc
[FIX] sale_quotation: Avoid double call to actions
lmignon Sep 1, 2025
65e34cb
[FIX] shopinvader_api_quotation: Ensure salesperson is auto-subscribe…
nicolas-delbovier-acsone Oct 15, 2025
e2a5577
[REF] sale_quotation: Avoid unnecessary ping pong calls
paradoxxxzero May 27, 2026
55be860
sale_quotation: simplify code by using RedirectWarning
sebastienbeau May 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion sale_cart/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Sale Cart

|badge1| |badge2| |badge3|

This addon add a typology on sale.order to distinguish the sale orders that are
This addon adds a "cart" typology on sale.order to distinguish the sale orders that are
in the process of being written (cart) and those that are quotations
ready to be confirmed.

Expand Down Expand Up @@ -53,6 +53,7 @@ Contributors
~~~~~~~~~~~~

* Laurent Mignon <laurent.mignon@acsone.eu>
* Nicolas DELBOVIER <nicolas.delbovier@acsone.eu>

Maintainers
~~~~~~~~~~~
Expand Down
2 changes: 1 addition & 1 deletion sale_cart/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"license": "AGPL-3",
"author": "ACSONE SA/NV",
"website": "https://github.com/shopinvader/odoo-shopinvader",
"depends": ["sale", "sales_team"],
"depends": ["sale", "sales_team", "sale_typology"],
"data": ["views/sale_order.xml"],
"demo": [],
"external_dependencies": {"python": ["openupgradelib"]},
Expand Down
8 changes: 6 additions & 2 deletions sale_cart/models/sale_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,14 @@


class SaleOrder(models.Model):

_inherit = "sale.order"

typology = fields.Selection([("sale", "Sale"), ("cart", "Cart")], default="sale")
typology = fields.Selection(
selection_add=[("cart", "Cart")],
ondelete={
"cart": "cascade",
},
)

def _confirm_cart(self):
self.ensure_one()
Expand Down
1 change: 1 addition & 0 deletions sale_cart/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
* Laurent Mignon <laurent.mignon@acsone.eu>
* Nicolas DELBOVIER <nicolas.delbovier@acsone.eu>
2 changes: 1 addition & 1 deletion sale_cart/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
This addon add a typology on sale.order to distinguish the sale orders that are
This addon adds a "cart" typology on sale.order to distinguish the sale orders that are
in the process of being written (cart) and those that are quotations
ready to be confirmed.
11 changes: 6 additions & 5 deletions sale_cart/static/description/index.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
<?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>
Expand All @@ -9,10 +8,11 @@

/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z 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 https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
Expand Down Expand Up @@ -275,7 +275,7 @@
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 }
Expand All @@ -301,7 +301,7 @@
span.pre {
white-space: pre }

span.problematic {
span.problematic, pre.problematic {
color: red }

span.section-subtitle {
Expand Down Expand Up @@ -370,7 +370,7 @@ <h1 class="title">Sale Cart</h1>
!! source digest: sha256:669b6f8b598ec1aa67334391cf3183bed210a1af06ea0bce3d1f34fbc6c3ebf8
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/shopinvader/odoo-shopinvader/tree/16.0/sale_cart"><img alt="shopinvader/odoo-shopinvader" src="https://img.shields.io/badge/github-shopinvader%2Fodoo--shopinvader-lightgray.png?logo=github" /></a></p>
<p>This addon add a typology on sale.order to distinguish the sale orders that are
<p>This addon adds a “cart” typology on sale.order to distinguish the sale orders that are
in the process of being written (cart) and those that are quotations
ready to be confirmed.</p>
<p><strong>Table of contents</strong></p>
Expand Down Expand Up @@ -405,6 +405,7 @@ <h2><a class="toc-backref" href="#toc-entry-3">Authors</a></h2>
<h2><a class="toc-backref" href="#toc-entry-4">Contributors</a></h2>
<ul class="simple">
<li>Laurent Mignon &lt;<a class="reference external" href="mailto:laurent.mignon&#64;acsone.eu">laurent.mignon&#64;acsone.eu</a>&gt;</li>
<li>Nicolas DELBOVIER &lt;<a class="reference external" href="mailto:nicolas.delbovier&#64;acsone.eu">nicolas.delbovier&#64;acsone.eu</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
Expand Down
2 changes: 1 addition & 1 deletion sale_cart/views/sale_order.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
</record>

<record id="sale.action_quotations" model="ir.actions.act_window">
<field name="domain">[('typology', '=', 'sale'),
<field name="domain">[('typology', '!=', 'cart'),
('state','in',('draft','sent','cancel'))]
</field>
</record>
Expand Down
60 changes: 60 additions & 0 deletions sale_cart_quotation/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
===================
Sale Cart Quotation
===================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:092764e34a3532b13b87a0b07712f405be8de3df4ce5265a1c4f0640ea1f44f8
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-shopinvader%2Fodoo--shopinvader-lightgray.png?logo=github
:target: https://github.com/shopinvader/odoo-shopinvader/tree/16.0/sale_cart_quotation
:alt: shopinvader/odoo-shopinvader

|badge1| |badge2| |badge3|

Glue module between sale_quotation and sale_cart, allowing users to request a quotation directly from a cart.

**Table of contents**

.. contents::
:local:

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/shopinvader/odoo-shopinvader/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/shopinvader/odoo-shopinvader/issues/new?body=module:%20sale_cart_quotation%0Aversion:%2016.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.

Credits
=======

Authors
~~~~~~~

* ACSONE SA/NV

Contributors
~~~~~~~~~~~~

* Nicolas DELBOVIER <nicolas.delbovier@acsone.eu>

Maintainers
~~~~~~~~~~~

This module is part of the `shopinvader/odoo-shopinvader <https://github.com/shopinvader/odoo-shopinvader/tree/16.0/sale_cart_quotation>`_ project on GitHub.

You are welcome to contribute.
1 change: 1 addition & 0 deletions sale_cart_quotation/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
17 changes: 17 additions & 0 deletions sale_cart_quotation/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2025 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Sale Cart Quotation",
"summary": """Glue module between sale_quotation and sale_cart,
allowing users to request a quotation directly from a cart.""",
"version": "16.0.1.0.0",
"license": "AGPL-3",
"author": "ACSONE SA/NV",
"website": "https://github.com/shopinvader/odoo-shopinvader",
"depends": ["sale_quotation", "sale_cart"],
"data": [
"views/sale_order.xml",
],
"demo": [],
}
1 change: 1 addition & 0 deletions sale_cart_quotation/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import sale_order
21 changes: 21 additions & 0 deletions sale_cart_quotation/models/sale_order.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Copyright 2025 ACSONE SA/NV
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import _, models
from odoo.exceptions import UserError


class SaleOrder(models.Model):
_inherit = "sale.order"

def action_cart_request_quotation(self):
if any(rec.state != "draft" or rec.typology != "cart" for rec in self):
raise UserError(
_(
"Only orders of cart typology in draft state "
"can be converted to quotation"
)
)
self.write({"use_customer_quotation_workflow": True})
self.action_customer_request_quotation()
return True
1 change: 1 addition & 0 deletions sale_cart_quotation/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* Nicolas DELBOVIER <nicolas.delbovier@acsone.eu>
1 change: 1 addition & 0 deletions sale_cart_quotation/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Glue module between sale_quotation and sale_cart, allowing users to request a quotation directly from a cart.
Loading