From 30cc734d41a60eacf2239af20ebf9ef9a8b4de93 Mon Sep 17 00:00:00 2001 From: Tiago Amaral Date: Tue, 3 Dec 2024 05:45:24 -0300 Subject: [PATCH] [ADD] Addons:sale_order_pos_report_plain_text --- sale_order_pos_report_plain_text/README.rst | 35 +++++++ sale_order_pos_report_plain_text/__init__.py | 2 + .../__manifest__.py | 20 ++++ .../controllers/__init__.py | 1 + .../controllers/sale_order_pos_report.py | 19 ++++ .../models/__init__.py | 3 + .../models/res_company.py | 11 +++ .../models/res_config_settings.py | 15 +++ .../models/sale_order.py | 17 ++++ .../report/report_saleorder_compact.xml | 98 +++++++++++++++++++ .../report/sale_report.xml | 53 ++++++++++ .../views/res_config_settings.xml | 31 ++++++ .../views/sale_order.xml | 21 ++++ .../addons/sale_order_pos_report_plain_text | 1 + .../sale_order_pos_report_plain_text/setup.py | 6 ++ 15 files changed, 333 insertions(+) create mode 100644 sale_order_pos_report_plain_text/README.rst create mode 100644 sale_order_pos_report_plain_text/__init__.py create mode 100644 sale_order_pos_report_plain_text/__manifest__.py create mode 100644 sale_order_pos_report_plain_text/controllers/__init__.py create mode 100644 sale_order_pos_report_plain_text/controllers/sale_order_pos_report.py create mode 100644 sale_order_pos_report_plain_text/models/__init__.py create mode 100644 sale_order_pos_report_plain_text/models/res_company.py create mode 100644 sale_order_pos_report_plain_text/models/res_config_settings.py create mode 100644 sale_order_pos_report_plain_text/models/sale_order.py create mode 100644 sale_order_pos_report_plain_text/report/report_saleorder_compact.xml create mode 100644 sale_order_pos_report_plain_text/report/sale_report.xml create mode 100644 sale_order_pos_report_plain_text/views/res_config_settings.xml create mode 100644 sale_order_pos_report_plain_text/views/sale_order.xml create mode 120000 setup/sale_order_pos_report_plain_text/odoo/addons/sale_order_pos_report_plain_text create mode 100644 setup/sale_order_pos_report_plain_text/setup.py diff --git a/sale_order_pos_report_plain_text/README.rst b/sale_order_pos_report_plain_text/README.rst new file mode 100644 index 0000000..38929e8 --- /dev/null +++ b/sale_order_pos_report_plain_text/README.rst @@ -0,0 +1,35 @@ +**This file is going to be generated by oca-gen-addon-readme.** + +*Manual changes will be overwritten.* + +Please provide content in the ``readme`` directory: + +* **DESCRIPTION.rst** (required) +* INSTALL.rst (optional) +* CONFIGURE.rst (optional) +* **USAGE.rst** (optional, highly recommended) +* DEVELOP.rst (optional) +* ROADMAP.rst (optional) +* HISTORY.rst (optional, recommended) +* **CONTRIBUTORS.rst** (optional, highly recommended) +* CREDITS.rst (optional) + +Content of this README will also be drawn from the addon manifest, +from keys such as name, authors, maintainers, development_status, +and license. + +A good, one sentence summary in the manifest is also highly recommended. + + +Automatic changelog generation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +`HISTORY.rst` can be auto generated using `towncrier `_. + +Just put towncrier compatible changelog fragments into `readme/newsfragments` +and the changelog file will be automatically generated and updated when a new fragment is added. + +Please refer to `towncrier` documentation to know more. + +NOTE: the changelog will be automatically generated when using `/ocabot merge $option`. +If you need to run it manually, refer to `OCA/maintainer-tools README `_. diff --git a/sale_order_pos_report_plain_text/__init__.py b/sale_order_pos_report_plain_text/__init__.py new file mode 100644 index 0000000..f7209b1 --- /dev/null +++ b/sale_order_pos_report_plain_text/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import controllers diff --git a/sale_order_pos_report_plain_text/__manifest__.py b/sale_order_pos_report_plain_text/__manifest__.py new file mode 100644 index 0000000..7e479a0 --- /dev/null +++ b/sale_order_pos_report_plain_text/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2024 KMEE +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). + +{ + "name": "Sale Order Pos Report", + "version": "15.0.1.0.0", + "license": "LGPL-3", + "author": "KMEE", + "website": "https://github.com/KMEE/kmee-odoo-addons", + "depends": [ + "sale", + ], + "data": [ + "views/sale_order.xml", + "views/res_config_settings.xml", + "report/report_saleorder_compact.xml", + "report/sale_report.xml", + ], + "demo": [], +} diff --git a/sale_order_pos_report_plain_text/controllers/__init__.py b/sale_order_pos_report_plain_text/controllers/__init__.py new file mode 100644 index 0000000..645d4ea --- /dev/null +++ b/sale_order_pos_report_plain_text/controllers/__init__.py @@ -0,0 +1 @@ +from . import sale_order_pos_report diff --git a/sale_order_pos_report_plain_text/controllers/sale_order_pos_report.py b/sale_order_pos_report_plain_text/controllers/sale_order_pos_report.py new file mode 100644 index 0000000..70c60cd --- /dev/null +++ b/sale_order_pos_report_plain_text/controllers/sale_order_pos_report.py @@ -0,0 +1,19 @@ +from odoo import http +from odoo.http import request + + +class SaleOrderPosController(http.Controller): + @http.route( + "/sale_order_pos_report_plain_text/", + type="http", + auth="user", + ) + def store_ticket_report(self, sale_order_id, **post): + sale_order = request.env["sale.order"].browse(sale_order_id) + if not sale_order.exists(): + return request.not_found() + + pdf = request.env.ref( + "sale_order_pos_report_plain_text.action_report_saleorder_compact" + )._render_qweb_pdf(sale_order.ids)[0] + return request.make_response(pdf) diff --git a/sale_order_pos_report_plain_text/models/__init__.py b/sale_order_pos_report_plain_text/models/__init__.py new file mode 100644 index 0000000..eb28f62 --- /dev/null +++ b/sale_order_pos_report_plain_text/models/__init__.py @@ -0,0 +1,3 @@ +from . import res_config_settings +from . import res_company +from . import sale_order diff --git a/sale_order_pos_report_plain_text/models/res_company.py b/sale_order_pos_report_plain_text/models/res_company.py new file mode 100644 index 0000000..9bac42b --- /dev/null +++ b/sale_order_pos_report_plain_text/models/res_company.py @@ -0,0 +1,11 @@ +# Copyright 2024 KMEE +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResCompany(models.Model): + + _inherit = "res.company" + + logo_order_so_pos_report = fields.Binary(string="Company Logo") diff --git a/sale_order_pos_report_plain_text/models/res_config_settings.py b/sale_order_pos_report_plain_text/models/res_config_settings.py new file mode 100644 index 0000000..ef5898e --- /dev/null +++ b/sale_order_pos_report_plain_text/models/res_config_settings.py @@ -0,0 +1,15 @@ +# Copyright 2024 KMEE +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + + _inherit = "res.config.settings" + + logo_order_so_pos_report = fields.Binary( + string="Company Logo", + related="company_id.logo_order_so_pos_report", + readonly=False, + ) diff --git a/sale_order_pos_report_plain_text/models/sale_order.py b/sale_order_pos_report_plain_text/models/sale_order.py new file mode 100644 index 0000000..4957d2a --- /dev/null +++ b/sale_order_pos_report_plain_text/models/sale_order.py @@ -0,0 +1,17 @@ +# Copyright 2024 KMEE +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class SaleOrder(models.Model): + + _inherit = "sale.order" + + def action_pos_report(self): + self.ensure_one() + return { + "type": "ir.actions.act_url", + "url": f"/sale_order_pos_report_plain_text/{self.id}", + "target": "new", + } diff --git a/sale_order_pos_report_plain_text/report/report_saleorder_compact.xml b/sale_order_pos_report_plain_text/report/report_saleorder_compact.xml new file mode 100644 index 0000000..101458d --- /dev/null +++ b/sale_order_pos_report_plain_text/report/report_saleorder_compact.xml @@ -0,0 +1,98 @@ + + + + + + + + + diff --git a/sale_order_pos_report_plain_text/report/sale_report.xml b/sale_order_pos_report_plain_text/report/sale_report.xml new file mode 100644 index 0000000..48a3647 --- /dev/null +++ b/sale_order_pos_report_plain_text/report/sale_report.xml @@ -0,0 +1,53 @@ + + + + Thermal 80mm + + custom + 300 + 80 + Portrait + 3 + 3 + 3 + 3 + + 3 + 90 + + + + Quotation / Order (80mm) + sale.order + qweb-pdf + sale_order_pos_report_plain_text.store_ticket_report_template + sale_order_pos_report_plain_text.store_ticket_report_template + (object.state in ('draft', 'sent') and 'Quotation - %s' % (object.name)) or 'Order - %s' % (object.name) + + report + + + + + Store Ticket + sale.order + qweb-pdf + sale_order_pos_report_plain_text.store_ticket_report_template + sale_order_pos_report_plain_text.store_ticket_report_template + + report + + + + + diff --git a/sale_order_pos_report_plain_text/views/res_config_settings.xml b/sale_order_pos_report_plain_text/views/res_config_settings.xml new file mode 100644 index 0000000..5eafdec --- /dev/null +++ b/sale_order_pos_report_plain_text/views/res_config_settings.xml @@ -0,0 +1,31 @@ + + + + + + res.config.settings.form (in sale_order_pos_report_plain_text) + res.config.settings + + + +
+
+ +
+
+
+
+
+
+
+ + + +
diff --git a/sale_order_pos_report_plain_text/views/sale_order.xml b/sale_order_pos_report_plain_text/views/sale_order.xml new file mode 100644 index 0000000..6436c90 --- /dev/null +++ b/sale_order_pos_report_plain_text/views/sale_order.xml @@ -0,0 +1,21 @@ + + + + + sale.order.form (sale_order_pos_report_plain_text) + sale.order + + + +