FoodcoopBCN/foodcoopbcn#167 add pos_product_available_link
This commit is contained in:
parent
dab4123379
commit
bf02699b61
6 changed files with 111 additions and 0 deletions
43
pos_product_available_link/README.rst
Normal file
43
pos_product_available_link/README.rst
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
POS Product Available Link
|
||||
=========================
|
||||
|
||||
Automatically disables available_in_pos when sale_ok is unchecked on products.
|
||||
|
||||
Features
|
||||
========
|
||||
|
||||
* When you uncheck "Can be Sold" (sale_ok), the product is also removed from POS (available_in_pos).
|
||||
* Prevents products with sale_ok=False from appearing in POS.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
Install this module as usual via Apps or with odoo-bin.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
No configuration required.
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
1. Go to Products.
|
||||
2. Uncheck "Can be Sold".
|
||||
3. The product will no longer be available in POS.
|
||||
|
||||
Known issues / Roadmap
|
||||
======================
|
||||
|
||||
* Only disables available_in_pos when sale_ok is unchecked. Does not re-enable.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Authors
|
||||
-------
|
||||
* Your Name
|
||||
|
||||
Contributors
|
||||
------------
|
||||
* Odoo Community Association (OCA)
|
||||
1
pos_product_available_link/__init__.py
Normal file
1
pos_product_available_link/__init__.py
Normal file
|
|
@ -0,0 +1 @@
|
|||
from . import models
|
||||
13
pos_product_available_link/__manifest__.py
Normal file
13
pos_product_available_link/__manifest__.py
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"name": "POS Product Available Link",
|
||||
"summary": "Automatically enable/disable available_in_pos when sale_ok is checked/unchecked.",
|
||||
"version": "16.0.1.0.0",
|
||||
"category": "Point of Sale",
|
||||
"license": "AGPL-3",
|
||||
"author": "Criptomart",
|
||||
"website": "https://criptomart.net",
|
||||
"depends": ["point_of_sale", "product"],
|
||||
"data": [],
|
||||
"installable": True,
|
||||
"application": False,
|
||||
}
|
||||
1
pos_product_available_link/models/__init__.py
Normal file
1
pos_product_available_link/models/__init__.py
Normal file
|
|
@ -0,0 +1 @@
|
|||
from . import product
|
||||
32
pos_product_available_link/models/product.py
Normal file
32
pos_product_available_link/models/product.py
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# Copyright 2026 Your Name
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, models
|
||||
|
||||
|
||||
class ProductTemplate(models.Model):
|
||||
_inherit = "product.template"
|
||||
|
||||
@api.onchange("sale_ok")
|
||||
def _onchange_sale_ok_link_available_in_pos(self):
|
||||
for product in self:
|
||||
product.available_in_pos = product.sale_ok
|
||||
|
||||
def write(self, vals):
|
||||
if "sale_ok" in vals:
|
||||
vals["available_in_pos"] = vals["sale_ok"]
|
||||
return super().write(vals)
|
||||
|
||||
|
||||
class ProductProduct(models.Model):
|
||||
_inherit = "product.product"
|
||||
|
||||
@api.onchange("sale_ok")
|
||||
def _onchange_sale_ok_link_available_in_pos(self):
|
||||
for product in self:
|
||||
product.available_in_pos = product.sale_ok
|
||||
|
||||
def write(self, vals):
|
||||
if "sale_ok" in vals:
|
||||
vals["available_in_pos"] = vals["sale_ok"]
|
||||
return super().write(vals)
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
from odoo.tests.common import TransactionCase
|
||||
|
||||
|
||||
class TestProductAvailableLink(TransactionCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.product = self.env["product.product"].create(
|
||||
{
|
||||
"name": "Test Product",
|
||||
"sale_ok": True,
|
||||
"available_in_pos": True,
|
||||
}
|
||||
)
|
||||
|
||||
def test_uncheck_sale_ok_disables_available_in_pos(self):
|
||||
self.product.sale_ok = False
|
||||
self.assertFalse(self.product.available_in_pos)
|
||||
|
||||
def test_write_sale_ok_false_disables_available_in_pos(self):
|
||||
self.product.write({"sale_ok": False})
|
||||
self.assertFalse(self.product.available_in_pos)
|
||||
Loading…
Add table
Add a link
Reference in a new issue