diff --git a/pw_sale_total_qty/LICENSE b/pw_sale_total_qty/LICENSE new file mode 100644 index 0000000..b01eaf1 --- /dev/null +++ b/pw_sale_total_qty/LICENSE @@ -0,0 +1,27 @@ +Odoo Proprietary License v1.0 + +This software and associated files (the "Software") may only be used (executed, +modified, executed after modifications) if you have purchased a valid license +from the authors, typically via Odoo Apps, or if you have received a written +agreement from the authors of the Software (see the COPYRIGHT file). + +You may develop Odoo modules that use the Software as a library (typically +by depending on it, importing it and using its resources), but without copying +any source code or material from the Software. You may distribute those +modules under the license of your choice, provided that this license is +compatible with the terms of the Odoo Proprietary License (For example: +LGPL, MIT, or proprietary licenses similar to this one). + +It is forbidden to publish, distribute, sublicense, or sell copies of the Software +or modified copies of the Software. + +The above copyright notice and this permission notice must be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/pw_sale_total_qty/__init__.py b/pw_sale_total_qty/__init__.py new file mode 100644 index 0000000..03c48c1 --- /dev/null +++ b/pw_sale_total_qty/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/pw_sale_total_qty/__manifest__.py b/pw_sale_total_qty/__manifest__.py new file mode 100644 index 0000000..eba0aa7 --- /dev/null +++ b/pw_sale_total_qty/__manifest__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +{ + "name": "Sale Order Total Quantity", + 'version': '16.0.1.0.1', + 'author': 'Preway IT Solutions', + 'category': 'Sales', + 'depends': ['sale'], + 'summary': 'This module helps you to show total qty, delivered qty, invoiced qty and remaining qty on sale order | Sale Order Total Quantity | Sale Total Qty | Total Quantity Of Sale Order Line', + 'description': """ +- Sale Order Total Quantity + """, + 'data': [ + "views/sale_order_view.xml", + ], + 'price': 3.0, + 'currency': "EUR", + 'application': True, + 'installable': True, + "license": "LGPL-3", + "images":["static/description/Banner.png"], +} diff --git a/pw_sale_total_qty/i18n/fr.po b/pw_sale_total_qty/i18n/fr.po new file mode 100644 index 0000000..8522be0 --- /dev/null +++ b/pw_sale_total_qty/i18n/fr.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pw_sale_total_qty +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-12-31 13:03+0000\n" +"PO-Revision-Date: 2024-12-31 13:03+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: pw_sale_total_qty +#: model:ir.model.fields,field_description:pw_sale_total_qty.field_sale_order__pw_remaining_delivery +msgid "Pending Delivery Qty" +msgstr "Quantités à livrer" + +#. module: pw_sale_total_qty +#: model:ir.model.fields,field_description:pw_sale_total_qty.field_sale_order__pw_remaining_invoice +msgid "Pending Invoice Qty" +msgstr "Quantités à facturer" + +#. module: pw_sale_total_qty +#: model:ir.model,name:pw_sale_total_qty.model_sale_order +msgid "Sales Order" +msgstr "Bon de commande" + +#. module: pw_sale_total_qty +#: model:ir.model.fields,field_description:pw_sale_total_qty.field_sale_order__pw_total_qty_delivered +msgid "Total Delivered Qty" +msgstr "Total quantités livrées" + +#. module: pw_sale_total_qty +#: model_terms:ir.ui.view,arch_db:pw_sale_total_qty.view_order_form_inherit_pw_total_qty +msgid "Total Deliverted" +msgstr "Total quantités" + +#. module: pw_sale_total_qty +#: model_terms:ir.ui.view,arch_db:pw_sale_total_qty.view_order_form_inherit_pw_total_qty +msgid "Total Demand" +msgstr " Total commandé" + +#. module: pw_sale_total_qty +#: model:ir.model.fields,field_description:pw_sale_total_qty.field_sale_order__pw_total_product_uom_qty +msgid "Total Demand Qty" +msgstr " Total quantités commandées" + +#. module: pw_sale_total_qty +#: model_terms:ir.ui.view,arch_db:pw_sale_total_qty.view_order_form_inherit_pw_total_qty +msgid "Total Invoiced" +msgstr "Total facturé" + +#. module: pw_sale_total_qty +#: model:ir.model.fields,field_description:pw_sale_total_qty.field_sale_order__pw_total_qty_invoiced +msgid "Total Invoiced Qty" +msgstr "Total quantités facturées" diff --git a/pw_sale_total_qty/i18n/pw_sale_total_qty.pot b/pw_sale_total_qty/i18n/pw_sale_total_qty.pot new file mode 100644 index 0000000..9884208 --- /dev/null +++ b/pw_sale_total_qty/i18n/pw_sale_total_qty.pot @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pw_sale_total_qty +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-12-31 13:03+0000\n" +"PO-Revision-Date: 2024-12-31 13:03+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: pw_sale_total_qty +#: model:ir.model.fields,field_description:pw_sale_total_qty.field_sale_order__pw_remaining_delivery +msgid "Pending Delivery Qty" +msgstr "" + +#. module: pw_sale_total_qty +#: model:ir.model.fields,field_description:pw_sale_total_qty.field_sale_order__pw_remaining_invoice +msgid "Pending Invoice Qty" +msgstr "" + +#. module: pw_sale_total_qty +#: model:ir.model,name:pw_sale_total_qty.model_sale_order +msgid "Sales Order" +msgstr "" + +#. module: pw_sale_total_qty +#: model:ir.model.fields,field_description:pw_sale_total_qty.field_sale_order__pw_total_qty_delivered +msgid "Total Delivered Qty" +msgstr "" + +#. module: pw_sale_total_qty +#: model_terms:ir.ui.view,arch_db:pw_sale_total_qty.view_order_form_inherit_pw_total_qty +msgid "Total Deliverted" +msgstr "" + +#. module: pw_sale_total_qty +#: model_terms:ir.ui.view,arch_db:pw_sale_total_qty.view_order_form_inherit_pw_total_qty +msgid "Total Demand" +msgstr "" + +#. module: pw_sale_total_qty +#: model:ir.model.fields,field_description:pw_sale_total_qty.field_sale_order__pw_total_product_uom_qty +msgid "Total Demand Qty" +msgstr "" + +#. module: pw_sale_total_qty +#: model_terms:ir.ui.view,arch_db:pw_sale_total_qty.view_order_form_inherit_pw_total_qty +msgid "Total Invoiced" +msgstr "" + +#. module: pw_sale_total_qty +#: model:ir.model.fields,field_description:pw_sale_total_qty.field_sale_order__pw_total_qty_invoiced +msgid "Total Invoiced Qty" +msgstr "" diff --git a/pw_sale_total_qty/models/__init__.py b/pw_sale_total_qty/models/__init__.py new file mode 100644 index 0000000..0226d76 --- /dev/null +++ b/pw_sale_total_qty/models/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import sale_order diff --git a/pw_sale_total_qty/models/sale_order.py b/pw_sale_total_qty/models/sale_order.py new file mode 100644 index 0000000..9ccfcca --- /dev/null +++ b/pw_sale_total_qty/models/sale_order.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api, _ +from odoo.exceptions import UserError, ValidationError + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + pw_total_product_uom_qty = fields.Float(string="Total Demand Qty", compute='_compute_pw_total_product_uom_qty') + pw_total_qty_delivered = fields.Float(string="Total Delivered Qty", compute='_compute_pw_total_qty_delivered') + pw_total_qty_invoiced = fields.Float(string="Total Invoiced Qty", compute='_compute_pw_total_qty_invoiced') + pw_remaining_delivery = fields.Float(string="Pending Delivery Qty", compute="_compute_pw_remaining_delivery") + pw_remaining_invoice = fields.Float(string="Pending Invoice Qty", compute="_compute_pw_remaining_invoice") + + @api.depends('order_line.product_uom_qty') + def _compute_pw_total_product_uom_qty(self): + for order in self: + order.pw_total_product_uom_qty = sum(order.order_line.mapped('product_uom_qty')) + + @api.depends('order_line.qty_delivered') + def _compute_pw_total_qty_delivered(self): + for order in self: + order.pw_total_qty_delivered = sum(order.order_line.mapped('qty_delivered')) + + @api.depends('order_line.qty_invoiced') + def _compute_pw_total_qty_invoiced(self): + for order in self: + order.pw_total_qty_invoiced = sum(order.order_line.mapped('qty_invoiced')) + + @api.depends('order_line.product_uom_qty', 'order_line.qty_delivered') + def _compute_pw_remaining_delivery(self): + for order in self: + delivery_qty = sum(order.order_line.filtered(lambda x: x.product_id.type != 'service').mapped('product_uom_qty')) + delivered_qty = sum(order.order_line.mapped('qty_delivered')) + order.pw_remaining_delivery = delivery_qty - delivered_qty + + @api.depends('pw_total_product_uom_qty', 'pw_total_qty_invoiced') + def _compute_pw_remaining_invoice(self): + for order in self: + order.pw_remaining_invoice = order.pw_total_product_uom_qty - order.pw_total_qty_invoiced diff --git a/pw_sale_total_qty/static/description/Banner.png b/pw_sale_total_qty/static/description/Banner.png new file mode 100644 index 0000000..372a766 Binary files /dev/null and b/pw_sale_total_qty/static/description/Banner.png differ diff --git a/pw_sale_total_qty/static/description/icon.png b/pw_sale_total_qty/static/description/icon.png new file mode 100644 index 0000000..d1a3fcc Binary files /dev/null and b/pw_sale_total_qty/static/description/icon.png differ diff --git a/pw_sale_total_qty/static/description/index.html b/pw_sale_total_qty/static/description/index.html new file mode 100644 index 0000000..e872605 --- /dev/null +++ b/pw_sale_total_qty/static/description/index.html @@ -0,0 +1,45 @@ +
+
+
+

Sale Order Total Quantity

+

This module helps you to show total qty, delivered qty, invoiced qty and remaining qty on sale order +

+
+
+
+

+ +
+
+ App Features +
+ +
+ Sale Order Total Quantity +
+
Total Demand, Delivered, Invoiced, Pending Delivery and Pending Invoiced Quanatity on sale order. (Service product not count in pending delivery)
+ +
+ +
+
+
+
+

+
+

+ Contact US +

+

Email : prewayit@gmail.com

+
+
+

Note: We give free support incase any bug or issue in our apps (Except data recovery).

+
+
+
diff --git a/pw_sale_total_qty/static/description/pw_logo.png b/pw_sale_total_qty/static/description/pw_logo.png new file mode 100644 index 0000000..3809ff5 Binary files /dev/null and b/pw_sale_total_qty/static/description/pw_logo.png differ diff --git a/pw_sale_total_qty/static/description/sale1.png b/pw_sale_total_qty/static/description/sale1.png new file mode 100644 index 0000000..26fe920 Binary files /dev/null and b/pw_sale_total_qty/static/description/sale1.png differ diff --git a/pw_sale_total_qty/views/sale_order_view.xml b/pw_sale_total_qty/views/sale_order_view.xml new file mode 100644 index 0000000..c4487cd --- /dev/null +++ b/pw_sale_total_qty/views/sale_order_view.xml @@ -0,0 +1,30 @@ + + + + + sale.order.form.inherit.pw.total.qty + sale.order + + + + + + + + + + + + + Total Demand + + + Total Deliverted + + + Total Invoiced + + + + +