Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
a35f58c
[10.0][ADD] sale_blanket_orders
andreparames Jan 23, 2018
d9ea471
sale_blanket_order: don't copy name nor confirm state
andreparames Feb 13, 2018
5800806
sale_blanket_order: update after review
andreparames Mar 27, 2018
69ebc58
sale_blanket_order: Re-calculate price based on qty
andreparames Mar 30, 2018
82c3558
sale_blanket_order: make prohibition of adding new lines optional
andreparames Apr 26, 2018
27aee24
[FIX] sale_blanket_order: Ondelete cascade on blanket lines
rousseldenis Sep 4, 2018
a7fc715
[11.0][MIG] Migrate module sale_blanket_order
AdriaGForgeFlow May 16, 2019
8fbda58
Added translation using Weblate (German)
marylla Jul 15, 2019
2c11dd3
[MIG] sale_blanket_order: Migration to 12.0
tafaRU Oct 15, 2019
5952f0a
sale_blanket_order: fix the following use case scenario.
tafaRU Nov 4, 2019
d8d242b
sale_blanket_order: correctly display images in both README and index
tafaRU Nov 7, 2019
152c7b5
sale_blanket_order: fix my email address format in CONTRIBUTORS.rst
tafaRU Nov 22, 2019
1bbcadc
Added translation using Weblate (Spanish)
Galoperd Jan 25, 2020
4df8d03
Added translation using Weblate (Portuguese)
pedrocs-exo Aug 7, 2020
639d6f3
Translated using Weblate (German)
AndreVolksdorf Dec 8, 2020
3db4cf4
[MIG]sale_blanker_order: Migration to 13.0
chusamo Feb 13, 2021
aea1e90
[IMP] sale_blanket_order: use default terms and conditions.
LoisRForgeFlow Nov 8, 2021
90c8f67
[FIX] sale_blanket_order: multi-company rules were not migrated prope…
LoisRForgeFlow Nov 8, 2021
3505f69
[IMP] sale_blanket_order: analytic acc and origin
LoisRForgeFlow Nov 9, 2021
e0dc9cf
[IMP] sale_blanket_order: black, isort, prettier
tafaRU Jan 12, 2022
328dda1
[MIG] sale_blanket_order: Migration to 14.0
tafaRU Jan 12, 2022
71aaaf2
[FIX] sale_blanket_order: do not use supplier_taxes_id
tafaRU Jan 13, 2022
c66cd80
[FIX] sale_blanket_order: do not recompute tax_id on SO line if alrea…
tafaRU Feb 3, 2022
321b709
[IMP] sale_blanket_order: black, isort, prettier
JasminSForgeFlow Mar 29, 2022
6ac80cf
[MIG] sale_blanket_order: Migration to 15.0
JasminSForgeFlow Mar 29, 2022
d1d1628
Added translation using Weblate (French (France))
Jun 14, 2022
4a5110c
[FIX] sale_blanket_order: total in pdf report not visible
leemannd Jun 23, 2022
9802227
Translated using Weblate (French (France))
ClementChaumienneC2C Jul 5, 2022
fdeab30
[IMP] sale_blanket_order: Add prepare SO values hook
BernatPForgeFlow Apr 4, 2022
e060a17
Translated using Weblate (French (France))
ClementChaumienneC2C Aug 25, 2022
7f365ae
[IMP] Add section note to sale blanket order
santostelmo Aug 26, 2022
4d8587a
Translated using Weblate (French (France))
ClementChaumienneC2C Sep 6, 2022
d1a6a7a
Added translation using Weblate (French)
leemannd Sep 8, 2022
a63ab92
[16.0][MIG] sale_blanket_order: Migration to 16.0
nguyenminhchien Aug 21, 2023
b524e4a
Added translation using Weblate (Italian)
mymage Jan 24, 2024
f337280
Translated using Weblate (Spanish)
Ivorra78 Jan 27, 2024
eb6ebbe
Translated using Weblate (Italian)
mymage Mar 15, 2024
362c2ce
[IMP] sale_blanket_order: apply pre-commit auto fixes
chrisb-c01 Jul 26, 2024
cf4c30f
[MIG] sale_blanket_order: Migration to 17.0
chrisb-c01 Jul 27, 2024
16f7a33
Update translation files
weblate Aug 20, 2024
c05db18
Translated using Weblate (Italian)
mymage Aug 21, 2024
411b247
[FIX] sale_blanket_order: set analytic distribution on created sale l…
StefanRijnhart Aug 29, 2024
241bd23
[FIX] sale_blanket_order: not require taxes on blanket orders
Saran440 Sep 4, 2024
08aed95
[REF] sale_blanket_order: use fields.Command everywhere
StefanRijnhart Sep 4, 2024
4ebad8f
[IMP] sale_blanket_order: no defaults for related fields
StefanRijnhart Sep 4, 2024
a7abc05
Translated using Weblate (Italian)
mymage Mar 30, 2025
6af0a31
Translated using Weblate (Italian)
mymage Apr 14, 2025
1538f86
[FIX] sale_blanket_order: filter default taxes by company for all users
StefanRijnhart May 12, 2025
54594d8
Translated using Weblate (Italian)
mymage Jun 11, 2025
54670b7
[IMP] sale_blanket_order: context in readme
AaronHForgeFlow Jul 10, 2025
4eb4535
[IMP] sale_blanket_order: lines with price 0
LauraCForgeFlow Jul 22, 2025
ca1e80d
[IMP] sale_blanket_order: add tags and pass info to SO
LauraCForgeFlow Jul 22, 2025
336bb9b
Translated using Weblate (Italian)
mymage Aug 20, 2025
86434e2
[IMP] sale_blanket_order: pre-commit auto fixes
mdurepos Sep 11, 2025
fad7622
[MIG] sale_blanket_order to 18.0
mdurepos Sep 11, 2025
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
188 changes: 188 additions & 0 deletions sale_blanket_order/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
===================
Sale Blanket Orders
===================

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

.. |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-OCA%2Fsale--workflow-lightgray.png?logo=github
:target: https://github.com/OCA/sale-workflow/tree/18.0/sale_blanket_order
:alt: OCA/sale-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/sale-workflow-18-0/sale-workflow-18-0-sale_blanket_order
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/sale-workflow&target_branch=18.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

A blanket order is a pre-agreement to sell a certain number of
quantities of products at a specific price. From a confirmed blanket
order, the users can create new sale orders at such price, until the
blanket order expires, either due to reaching the validity date or
exhausting all the quantities of products.

**Table of contents**

.. contents::
:local:

Use Cases / Context
===================

Others modules provide similar features. The module
(sale_order_blanket_order)[https://pypi.org/project/odoo-addon-sale-order-blanket-order]
also defines the concept of sale blanket order. The main differences
are:

- This module integrates Blanket Orders and Call-Off Orders into the
sale.blanket.order object, whereas the other module extends the
sale.order object. This means that any extensions made to the sale
order model can also apply to blanket orders.

- In the other module, you can deliver and invoice directly from the
blanket order. You can also create a separate call-off order to
partially deliver the blanket order.

Usage
=====

A new menu in the Sales area is created, allowing users to create new
blanket orders.

To create a new Sale Blanket Order go to the sale menu in the Sales
section:

|image1|

Hitting the button create will open the form view in which we can
introduce the following information:

- Vendor

- Salesperson

- Payment Terms

- Validity date

- Order lines:

- Product
- Accorded price
- Original, Ordered, Invoiced, Received and Remaining quantities

- Terms and Conditions of the Blanket Order

|image2|

From the form, once the Blanket Order has been confirmed and its state
is open, the user can create a Sale Order, check the Sale Orders
associated to the Blanket Order and/or see the Blanket Order lines
associated to the BO.

|image3|

Hitting the button Create Sale Order will open a wizard that will ask
for the amount of each product in the BO lines for which the Sale Order
will be created.

|image4|

Installing this module will add an additional menu which will show all
the blanket order lines currently defined in the system. From this list
the user can create customized Sale Orders selecting the lines for which
the PO (or POs if the customers are different) is (are) created.

|image5|

In the Sale Order form one field is added in the PO lines, the Blanket
Order line field. This field keeps track to which Blanket Order line the
PO line is associated. Upon adding a new product in a newly created Sale
Order a blanket order line will be suggested depending on the following
factors:

- Closer Validity date
- Remaining quantity > Quantity introduced in the Sale Order line

|image6|

.. |image1| image:: https://raw.githubusercontent.com/OCA/sale-workflow/18.0/sale_blanket_order/static/description/BO_menu.png
.. |image2| image:: https://raw.githubusercontent.com/OCA/sale-workflow/18.0/sale_blanket_order/static/description/BO_form.png
.. |image3| image:: https://raw.githubusercontent.com/OCA/sale-workflow/18.0/sale_blanket_order/static/description/BO_actions.png
.. |image4| image:: https://raw.githubusercontent.com/OCA/sale-workflow/18.0/sale_blanket_order/static/description/PO_from_BO.png
.. |image5| image:: https://raw.githubusercontent.com/OCA/sale-workflow/18.0/sale_blanket_order/static/description/BO_lines.png
.. |image6| image:: https://raw.githubusercontent.com/OCA/sale-workflow/18.0/sale_blanket_order/static/description/PO_BOLine.png

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

Bugs are tracked on `GitHub Issues <https://github.com/OCA/sale-workflow/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/OCA/sale-workflow/issues/new?body=module:%20sale_blanket_order%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.

Credits
=======

Authors
-------

* Acsone SA/NV

Contributors
------------

- André Pereira <github@andreparames.com> (https://www.acsone.eu/)

- Adrià Gil Sorribes <adria.gil@eficent.com> (https://www.eficent.com/)

- Jordi Ballester Alomar <jordi.ballester@eficent.com>

- Alex Comba <alex.comba@agilebg.com> (https://www.agilebg.com/)

- Codeforward (https://www.codeforward.nl/):

- Jasper Jumelet <jasper.jumelet@codeforward.nl>
- Chris Bergman <chris.bergman@codeforward.nl>

- `Trobz <https://trobz.com>`__:

- Nguyễn Minh Chiến <chien@trobz.com>

Other credits
-------------

The migration of this module from 15.0 to 16.0 was financially supported
by Camptocamp

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/sale-workflow <https://github.com/OCA/sale-workflow/tree/18.0/sale_blanket_order>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
4 changes: 4 additions & 0 deletions sale_blanket_order/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import models
from . import wizard
26 changes: 26 additions & 0 deletions sale_blanket_order/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Copyright 2018 Acsone
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Sale Blanket Orders",
"category": "Sale",
"license": "AGPL-3",
"author": "Acsone SA/NV, Odoo Community Association (OCA)",
"version": "18.0.1.0.0",
"website": "https://github.com/OCA/sale-workflow",
"summary": "Blanket Orders",
"depends": ["uom", "sale_management"],
"data": [
"security/security.xml",
"security/ir.model.access.csv",
"data/sequence.xml",
"data/ir_cron.xml",
"wizard/create_sale_orders.xml",
"views/sale_config_settings.xml",
"views/sale_blanket_order_views.xml",
"views/sale_blanket_order_line_views.xml",
"views/sale_order_views.xml",
"report/templates.xml",
"report/report.xml",
],
"installable": True,
}
17 changes: 17 additions & 0 deletions sale_blanket_order/data/ir_cron.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2018 ACSONE SA/NV
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo noupdate="1">
<record forcecreate="True" id="expired_blanket_orders_cron" model="ir.cron">
<field name="name">Expire Blanket Orders</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field
name="nextcall"
eval="(DateTime.now() + relativedelta(hour=00, minute=1, second=0)).strftime('%Y-%m-%d %H:%M:%S')"
/>
<field name="model_id" ref="model_sale_blanket_order" />
<field name="state">code</field>
<field name="code">model.expire_orders()</field>
</record>
</odoo>
11 changes: 11 additions & 0 deletions sale_blanket_order/data/sequence.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<!-- Sequences for sale.blanket.order -->
<record id="seq_blanket_order" model="ir.sequence">
<field name="name">Blanket Order</field>
<field name="code">sale.blanket.order</field>
<field name="prefix">BO</field>
<field name="padding">3</field>
<field name="company_id" eval="False" />
</record>
</odoo>
Loading