Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
96 changes: 96 additions & 0 deletions purchase_order_no_zero_price/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

============================
Purchase Order No Zero Price
============================

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

.. |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/license-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%2Fpurchase--workflow-lightgray.png?logo=github
:target: https://github.com/OCA/purchase-workflow/tree/19.0/purchase_order_no_zero_price
:alt: OCA/purchase-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/purchase-workflow-19-0/purchase-workflow-19-0-purchase_order_no_zero_price
: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/purchase-workflow&target_branch=19.0
:alt: Try me on Runboat

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

Prevent zero prices on confirmed POs to help ensure proper Stock
Valuation when receiving the products.

Also supports purchase_triple_discount module, if installed.

**Table of contents**

.. contents::
:local:

Usage
=====

To use:

- Create an RFQ, and add a line with zero price.
- Confirm the RFQ, an error message will prevent that and ask you to
enter the missing prices.
- A zero subtotal line can still be entered by setting a 100% discount.

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

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

* Open Source Integrators

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

- Daniel Reis <dreis@opensourceintegrators.com>
- Nikul Chaudhary <nchaudhary@opensourceintegrators.com>
- Dhara Solanki <dhara.solanki@initos.com>
- Elliott Bristow <elliott@glo.systems>

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/purchase-workflow <https://github.com/OCA/purchase-workflow/tree/19.0/purchase_order_no_zero_price>`_ 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 purchase_order_no_zero_price/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Copyright (C) 2022 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from . import models
17 changes: 17 additions & 0 deletions purchase_order_no_zero_price/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright (C) 2022 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "Purchase Order No Zero Price",
"version": "19.0.1.0.0",
"author": "Open Source Integrators, Odoo Community Association (OCA)",
"summary": "Prevent zero price lines on Purchase Orders",
"website": "https://github.com/OCA/purchase-workflow",
"license": "AGPL-3",
"depends": ["purchase"],
"category": "Purchase",
"data": [],
"installable": True,
"maintainer": ["dreispt"],
"development_status": "Beta",
}
29 changes: 29 additions & 0 deletions purchase_order_no_zero_price/i18n/es.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_order_no_zero_price
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-01-11 17:35+0000\n"
"Last-Translator: kikopeiro <francisco.peiro@factorlibre.com>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"

#. module: purchase_order_no_zero_price
#. odoo-python
#: code:addons/purchase_order_no_zero_price/models/purchase_order_line.py:0
#, python-format
msgid "Missing unit price for Products: %s"
msgstr "Precio unitario sin establecer en los siguientes productos: %s"

#. module: purchase_order_no_zero_price
#: model:ir.model,name:purchase_order_no_zero_price.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Linea de pedido de compra"
29 changes: 29 additions & 0 deletions purchase_order_no_zero_price/i18n/it.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_order_no_zero_price
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-12-22 19:33+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"

#. module: purchase_order_no_zero_price
#. odoo-python
#: code:addons/purchase_order_no_zero_price/models/purchase_order_line.py:0
#, python-format
msgid "Missing unit price for Products: %s"
msgstr "Prezzo unitario mancante per prodotti: %s"

#. module: purchase_order_no_zero_price
#: model:ir.model,name:purchase_order_no_zero_price.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Riga ordine di acquisto"
26 changes: 26 additions & 0 deletions purchase_order_no_zero_price/i18n/purchase_order_no_zero_price.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_order_no_zero_price
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.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: purchase_order_no_zero_price
#. odoo-python
#: code:addons/purchase_order_no_zero_price/models/purchase_order_line.py:0
#, python-format
msgid "Missing unit price for Products: %s"
msgstr ""

#. module: purchase_order_no_zero_price
#: model:ir.model,name:purchase_order_no_zero_price.model_purchase_order_line
msgid "Purchase Order Line"
msgstr ""
4 changes: 4 additions & 0 deletions purchase_order_no_zero_price/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Copyright (C) 2022 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from . import purchase_order_line, purchase_order
10 changes: 10 additions & 0 deletions purchase_order_no_zero_price/models/purchase_order.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from odoo import models


class PurchaseOrder(models.Model):
_inherit = "purchase.order"

def button_confirm(self):
res = super().button_confirm()
self.order_line._check_price_unit_zero()
return res
33 changes: 33 additions & 0 deletions purchase_order_no_zero_price/models/purchase_order_line.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Copyright (C) 2022 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import api, exceptions, models


class PurchaseOrderLine(models.Model):
_inherit = "purchase.order.line"

@api.constrains("price_unit", "display_type")
def _check_price_unit_zero(self):
# Prevent zero prices on confirmed POs
# to help ensure proper Stock Valuation
# when receiving the products
# Also supports `purchase_triple_discount` module
no_price_lines = self.filtered(
lambda x: (
not x.display_type
and x.state not in ["draft", "cancel"]
and not x.price_unit
# Allow zero price for 100% discounts:
and getattr(x, "discount", 0.0) != 100.0
and getattr(x, "discount2", 0.0) != 100.0
and getattr(x, "discount3", 0.0) != 100.0
)
)
if no_price_lines:
raise exceptions.UserError(
self.env._(
"Missing unit price for Products: %s",
", ".join(no_price_lines.product_id.mapped("display_name")),
)
)
3 changes: 3 additions & 0 deletions purchase_order_no_zero_price/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
4 changes: 4 additions & 0 deletions purchase_order_no_zero_price/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- Daniel Reis \<dreis@opensourceintegrators.com\>
- Nikul Chaudhary \<nchaudhary@opensourceintegrators.com\>
- Dhara Solanki \<dhara.solanki@initos.com\>
- Elliott Bristow \<elliott@glo.systems\>
4 changes: 4 additions & 0 deletions purchase_order_no_zero_price/readme/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Prevent zero prices on confirmed POs to help ensure proper Stock
Valuation when receiving the products.

Also supports purchase_triple_discount module, if installed.
6 changes: 6 additions & 0 deletions purchase_order_no_zero_price/readme/USAGE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
To use:

- Create an RFQ, and add a line with zero price.
- Confirm the RFQ, an error message will prevent that and ask you to
enter the missing prices.
- A zero subtotal line can still be entered by setting a 100% discount.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading