forked from OCA/pos
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ADD] module pos_price_to_weight (OCA#171)
* [ADD] module pos_price_to_weight * [FIX] jslint / pylint / flake8 issues
- Loading branch information
1 parent
e5e751d
commit 9986d9f
Showing
15 changed files
with
293 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg | ||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html | ||
:alt: License: AGPL-3 | ||
|
||
=============================== | ||
Point of Sale - Price to Weight | ||
=============================== | ||
|
||
This module extends Odoo Point Of Sale features, to allow to scan barcode | ||
with price and to compute according quantity. | ||
|
||
In Odoo by default, there are three types of barcode rules for products. | ||
|
||
* 'Unit Product' (type='product'). Scanning a product will add a unit of this | ||
product to the current order. | ||
* 'Priced product' (type='price'). A price is extracted from the barcode, and | ||
a new line with the given price and a quantity = 1 is added to the current | ||
order. | ||
* 'Weighted product' (type='weight). A weight is extracted from the barcode, | ||
and a new line with the given weight, and a computed price | ||
(quantity * Unit price) is added to the current order. | ||
|
||
This module add a new option: | ||
|
||
* 'Priced Product (Computed Weight)' (type='price_to_weight'). A price is | ||
extracted from the barcode, and a new line with the given price, and a | ||
computed quantity (Price / Unit Price) is added to the current order. | ||
|
||
.. image:: /pos_price_to_weight/static/description/barcode_rule.png | ||
:width: 800 px | ||
|
||
This module is usefull in shops with products scaled, to manage correctly | ||
stock quantities. | ||
|
||
Samples | ||
|
||
* Given a product with a unit price of 1,50€ / kg | ||
* The barcode is 0212345{NNNDD}x where: | ||
* 02 is the prefix of the barcode rule | ||
* 12345 is the product number | ||
* {NNNDD} is the price of the scaled product | ||
* x is the control digit | ||
|
||
if {NNNDD} is 00265, the price is so 2,65€ and the according quantity is | ||
2,65€ / 1,5 €/kg = 1,767 kg | ||
|
||
.. image:: /pos_price_to_weight/static/description/pos_test_1.png | ||
:width: 800 px | ||
|
||
if {NNNDD} is 00810, the price is so 8,10€ and the according quantity is | ||
8,10€ / 1,5 €/kg = 5,400 kg | ||
|
||
.. image:: /pos_price_to_weight/static/description/pos_test_2.png | ||
:width: 800 px | ||
|
||
|
||
Configuration | ||
============= | ||
|
||
* Go to 'Point of Sale' / 'Configuration' / 'Barcode Nomenclatures' | ||
* Edit your barcode rules, according to your barcodes settings | ||
|
||
Usage | ||
===== | ||
|
||
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas | ||
:alt: Try me on Runbot | ||
:target: https://runbot.odoo-community.org/runbot/184/9.0 | ||
|
||
Bug Tracker | ||
=========== | ||
|
||
Bugs are tracked on `GitHub Issues | ||
<https://github.com/OCA/pos/issues>`_. In case of trouble, please | ||
check there if your issue has already been reported. If you spotted it first, | ||
help us smash it by providing detailed and welcomed feedback. | ||
|
||
Credits | ||
======= | ||
|
||
Images | ||
------ | ||
|
||
Icon parts come from http://icons8.com | ||
|
||
Contributors | ||
------------ | ||
|
||
* Sylvain LE GAL <https://twitter.com/legalsylvain> | ||
|
||
|
||
Maintainer | ||
---------- | ||
|
||
.. image:: https://odoo-community.org/logo.png | ||
:alt: Odoo Community Association | ||
:target: https://odoo-community.org | ||
|
||
This module is maintained by the OCA. | ||
|
||
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. | ||
|
||
To contribute to this module, please visit https://odoo-community.org. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# -*- coding: utf-8 -*- | ||
from . import models |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# -*- coding: utf-8 -*- | ||
# Copyright (C) 2017-Today: La Louve (<http://www.lalouve.net/>) | ||
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||
|
||
{ | ||
'name': 'Point of Sale - Price to Weight', | ||
'version': '9.0.1.0.0', | ||
'category': 'Point Of Sale', | ||
'summary': 'Compute weight based on barcodes with prices', | ||
'author': 'La Louve, GRAP, Odoo Community Association (OCA)', | ||
'website': 'http://www.lalouve.net/', | ||
'license': 'AGPL-3', | ||
'depends': [ | ||
'point_of_sale', | ||
], | ||
'data': [ | ||
'data/barcode_rule.xml', | ||
'static/src/xml/templates.xml', | ||
], | ||
'demo': [ | ||
'demo/product_product.xml', | ||
], | ||
'installable': True, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!-- | ||
Copyright (C) 2017 - Today: GRAP (http://www.grap.coop) | ||
@author Sylvain LE GAL (https://twitter.com/legalsylvain) | ||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||
--> | ||
|
||
<openerp><data> | ||
|
||
<record id="rule_price_to_weight" model="barcode.rule"> | ||
<field name="name">Price Barcodes (Computed Weight) 2 Decimals</field> | ||
<field name="barcode_nomenclature_id" ref="barcodes.default_barcode_nomenclature"/> | ||
<field name="type">price_to_weight</field> | ||
<field name="pattern">02.....{NNNDD}</field> | ||
<field name="sequence">15</field> | ||
<field name="encoding">ean13</field> | ||
</record> | ||
|
||
</data></openerp> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!-- | ||
Copyright (C) 2017 - Today: GRAP (http://www.grap.coop) | ||
@author Sylvain LE GAL (https://twitter.com/legalsylvain) | ||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||
--> | ||
|
||
<odoo> | ||
|
||
<record id="product_price_to_weight_barcode" model="product.product"> | ||
<field name="name">Apples (with Price To Weight Barcode)</field> | ||
<field name="barcode">0212345000007</field> | ||
<field name="list_price">1.50</field> | ||
<field name="uom_id" ref="product.product_uom_kgm"/> | ||
<field name="uom_po_id" ref="product.product_uom_kgm"/> | ||
</record> | ||
|
||
</odoo> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# Translation of Odoo Server. | ||
# This file contains the translation of the following modules: | ||
# * pos_price_to_weight | ||
# | ||
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: Odoo Server 9.0c\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"POT-Creation-Date: 2017-05-10 01:40+0000\n" | ||
"PO-Revision-Date: 2017-05-10 01:40+0000\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: pos_price_to_weight | ||
#: model:product.product,name:pos_price_to_weight.product_price_to_weight_barcode | ||
#: model:product.template,name:pos_price_to_weight.product_price_to_weight_barcode_product_template | ||
msgid "Apples (with Price To Weight Barcode)" | ||
msgstr "Pommes (Avec un code barre Prix vers Pois)" | ||
|
||
#. module: pos_price_to_weight | ||
#: code:addons/pos_price_to_weight/models/barcode_rule.py:17 | ||
#, python-format | ||
msgid "Priced Product (Computed Weight)" | ||
msgstr "Code Barre Prix (Poid calculé)" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# -*- coding: utf-8 -*- | ||
from . import barcode_rule |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# -*- coding: utf-8 -*- | ||
# Copyright (C) 2017-Today: La Louve (<http://www.lalouve.net/>) | ||
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||
|
||
from openerp import _, api, models | ||
|
||
|
||
class BarcodeRule(models.Model): | ||
_inherit = 'barcode.rule' | ||
|
||
@api.model | ||
def _get_type_selection(self): | ||
res = super(BarcodeRule, self)._get_type_selection() | ||
res.append( | ||
('price_to_weight', _('Priced Product (Computed Weight)'))) | ||
return res |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
///* | ||
// Copyright (C) 2017-Today: La Louve (<http://www.lalouve.net/>) | ||
// @author: Sylvain LE GAL (https://twitter.com/legalsylvain) | ||
// License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||
//*/ | ||
|
||
|
||
odoo.define('pos_price_to_weight.models', function (require) { | ||
"use strict"; | ||
|
||
var models = require('point_of_sale.models'); | ||
|
||
var _super_PosModel = models.PosModel.prototype; | ||
|
||
models.PosModel = models.PosModel.extend({ | ||
|
||
scan_product: function(parsed_code) { | ||
if (! (parsed_code.type === 'price_to_weight')){ | ||
// Normal behaviour | ||
return _super_PosModel.scan_product.apply(this, [parsed_code]); | ||
} | ||
// Compute quantity, based on price and unit price | ||
var selectedOrder = this.get_order(); | ||
var product = this.db.get_product_by_barcode(parsed_code.base_code); | ||
if(!product){ | ||
return false; | ||
} | ||
var quantity = 0; | ||
var price = parseFloat(parsed_code.value) || 0; | ||
if (price !== 0 && product.price !== 0){ | ||
quantity = price / product.price; | ||
} | ||
selectedOrder.add_product(product, {quantity: quantity, merge: false}); | ||
return true; | ||
}, | ||
|
||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
/* | ||
Copyright (C) 2017-Today: La Louve (<http://www.lalouve.net/>) | ||
@author: Sylvain LE GAL (https://twitter.com/legalsylvain) | ||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||
*/ | ||
|
||
|
||
odoo.define('pos_price_to_weight.screens', function (require) { | ||
"use strict"; | ||
|
||
var screens = require('point_of_sale.screens'); | ||
|
||
screens.ScreenWidget.include({ | ||
show: function(){ | ||
this._super(); | ||
var self = this; | ||
this.pos.barcode_reader.set_action_callback({ | ||
'price_to_weight': _.bind(self.barcode_product_action, self), | ||
}); | ||
}, | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<!-- | ||
Copyright (C) 2017-Today: La Louve (<http://www.lalouve.net/>) | ||
@author: Sylvain LE GAL (https://twitter.com/legalsylvain) | ||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||
--> | ||
|
||
<odoo> | ||
<template id="assets_frontend" inherit_id="point_of_sale.assets"> | ||
<xpath expr="." position="inside"> | ||
<script type="text/javascript" src="/pos_price_to_weight/static/src/js/screens.js"/> | ||
<script type="text/javascript" src="/pos_price_to_weight/static/src/js/models.js"/> | ||
</xpath> | ||
</template> | ||
</odoo> | ||
|
||
|