David
7 years ago
committed by
Pierrick Brun
16 changed files with 204 additions and 244 deletions
-
112pos_ticket_logo/README.rst
-
24pos_ticket_logo/__init__.py
-
21pos_ticket_logo/__manifest__.py
-
43pos_ticket_logo/__openerp__.py
-
24pos_ticket_logo/i18n/es.po
-
24pos_ticket_logo/i18n/sl.po
-
11pos_ticket_logo/readme/CONFIGURE.rst
-
6pos_ticket_logo/readme/CONTRIBUTORS.rst
-
11pos_ticket_logo/readme/DESCRIPTION.rst
-
3pos_ticket_logo/readme/USAGE.rst
-
73pos_ticket_logo/static/src/js/main.js
-
49pos_ticket_logo/static/src/js/models.js
-
5pos_ticket_logo/static/src/xml/pos.xml
-
13pos_ticket_logo/templates/assets.xml
-
12pos_ticket_logo/views/pos_template.xml
-
17pos_ticket_logo/views/pos_ticket_logo_report_receipt_report.xml
@ -1,50 +1,110 @@ |
|||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg |
|||
:alt: AGPLv3 License |
|||
|
|||
POS Ticket logo |
|||
=============== |
|||
Pos Ticket Logo |
|||
=============== |
|||
|
|||
Add company logo in POS ticket |
|||
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|||
!! This file is generated by oca-gen-addon-readme !! |
|||
!! changes will be overwritten. !! |
|||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|||
|
|||
.. |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/licence-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%2Fpos-lightgray.png?logo=github |
|||
:target: https://github.com/OCA/pos/tree/11.0/pos_ticket_logo |
|||
:alt: OCA/pos |
|||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png |
|||
:target: https://translation.odoo-community.org/projects/pos-11-0/pos-11-0-pos_ticket_logo |
|||
:alt: Translate me on Weblate |
|||
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png |
|||
:target: https://runbot.odoo-community.org/runbot/184/11.0 |
|||
:alt: Try me on Runbot |
|||
|
|||
|badge1| |badge2| |badge3| |badge4| |badge5| |
|||
|
|||
A different receipt template is used if the PoS ticket is printed via web or |
|||
via proxy. In the case the ticket is printed via web (through the browser) the |
|||
company logo isn't printed. This module adds it. |
|||
|
|||
In other hand, company_logo is loaded using `/web/binary/company_logo` |
|||
controller `that returns a 150px wide logo <https://github.com/odoo/odoo/blob/11.0/addons/point_of_sale/static/src/js/models.js#L481>`_: |
|||
|
|||
but after that logo is resized to 300px width, so a pixelled logo appears even |
|||
original logo is 300px wide. |
|||
That's why we override how company_logo is loaded. We also resized it to 260px |
|||
(not 300px) wide because appears cut in PDF. |
|||
|
|||
Motivation |
|||
========== |
|||
**Table of contents** |
|||
|
|||
```XmlReceipt``` Qweb report is used when ```iface_print_via_proxy``` config is **True**: |
|||
https://github.com/odoo/odoo/blob/8.0/addons/point_of_sale/static/src/js/screens.js#L1341 |
|||
.. contents:: |
|||
:local: |
|||
|
|||
But in the case ```iface_print_via_proxy``` config is **False**, ```PosTicket``` |
|||
Qweb report is used, and company_logo is not used: |
|||
https://github.com/odoo/odoo/blob/8.0/addons/point_of_sale/static/src/js/screens.js#L984 |
|||
Configuration |
|||
============= |
|||
|
|||
In other hand, company_logo is loaded using ```/web/binary/company_logo``` controller that returns a 150px wide logo: |
|||
https://github.com/odoo/odoo/blob/8.0/addons/point_of_sale/static/src/js/models.js#L371 |
|||
but after that logo is resized to 300px width, so a pixelled logo appears even |
|||
original logo is 300px wide. |
|||
That's why we override how company_logo is loaded. We also resized it to 260px |
|||
(not 300px) wide because appears cut in PDF: |
|||
To add a logo to any given company: |
|||
|
|||
#. Go to *Settings > Users & Companies > Companies* |
|||
#. Edit one and add the logo editing the top left corner image. |
|||
|
|||
To configure receipt web print in the PoS (is the default setting): |
|||
|
|||
#. Go to *Point of Sale > Configuration > Point of Sale*. |
|||
#. Edit the one you want to configure. |
|||
#. If the *PosBox* setting is enabled the *Receipt Printer* setting should be |
|||
disabled. |
|||
|
|||
Usage |
|||
===== |
|||
|
|||
#. Open a new PoS session. |
|||
#. Make an order and validate it. |
|||
#. You should see the company logo in the receipt preview. |
|||
|
|||
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 smashing it by providing a detailed and welcomed |
|||
`feedback <https://github.com/OCA/pos/issues/new?body=module:%20pos_ticket_logo%0Aversion:%2011.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 |
|||
~~~~~~~ |
|||
|
|||
* Tecnativa |
|||
|
|||
Contributors |
|||
------------ |
|||
~~~~~~~~~~~~ |
|||
|
|||
* Antonio Espinosa <antonioea@antiun.com> |
|||
* Endika Iglesias <endikaig@antiun.com> |
|||
|
|||
Maintainer |
|||
---------- |
|||
* `Tecnativa <https://www.tecnativa.com>`_: |
|||
|
|||
.. image:: http://odoo-community.org/logo.png |
|||
:alt: Odoo Community Association |
|||
:target: http://odoo-community.org |
|||
* Antonio Espinosa |
|||
* David Vidal |
|||
|
|||
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. |
|||
|
|||
To contribute to this module, please visit http://odoo-community.org. |
|||
This module is part of the `OCA/pos <https://github.com/OCA/pos/tree/11.0/pos_ticket_logo>`_ project on GitHub. |
|||
|
|||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. |
@ -1,24 +0,0 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Python source code encoding : https://www.python.org/dev/peps/pep-0263/ |
|||
############################################################################## |
|||
# |
|||
# OpenERP, Open Source Management Solution |
|||
# This module copyright : |
|||
# (c) 2014 Antiun Ingenieria, SL (Madrid, Spain, http://www.antiun.com) |
|||
# Endika Iglesias <endikaig@antiun.com> |
|||
# Antonio Espinosa <antonioea@antiun.com> |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
@ -0,0 +1,21 @@ |
|||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). |
|||
|
|||
{ |
|||
"name": "Pos Ticket Logo", |
|||
"category": "Point Of Sale", |
|||
"version": "11.0.1.0.0", |
|||
"author": "Tecnativa, " |
|||
"Odoo Community Association (OCA)", |
|||
"website": "https://github.com/OCA/pos", |
|||
"license": "AGPL-3", |
|||
"depends": [ |
|||
"point_of_sale", |
|||
], |
|||
"data": [ |
|||
"templates/assets.xml", |
|||
], |
|||
"qweb": [ |
|||
"static/src/xml/pos.xml", |
|||
], |
|||
"installable": True, |
|||
} |
@ -1,43 +0,0 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Python source code encoding : https://www.python.org/dev/peps/pep-0263/ |
|||
############################################################################## |
|||
# |
|||
# OpenERP, Open Source Management Solution |
|||
# This module copyright : |
|||
# (c) 2014 Antiun Ingenieria, SL (Madrid, Spain, http://www.antiun.com) |
|||
# Endika Iglesias <endikaig@antiun.com> |
|||
# Antonio Espinosa <antonioea@antiun.com> |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
|||
{ |
|||
'name': 'Pos ticket logo', |
|||
'category': 'Point Of Sale', |
|||
'version': '8.0.1.0.0', |
|||
'depends': [ |
|||
'point_of_sale', |
|||
], |
|||
'data': [ |
|||
'views/pos_ticket_logo_report_receipt_report.xml', |
|||
'views/pos_template.xml', |
|||
], |
|||
'qweb': [ |
|||
'static/src/xml/pos.xml', |
|||
], |
|||
'author': 'Antiun Ingeniería S.L.', |
|||
'website': 'http://www.antiun.com', |
|||
'license': 'AGPL-3', |
|||
'installable': True, |
|||
} |
@ -1,24 +0,0 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * pos_ticket_logo |
|||
# |
|||
# Translators: |
|||
# OCA Transbot <transbot@odoo-community.org>, 2017 |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 8.0\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2017-04-29 00:49+0000\n" |
|||
"PO-Revision-Date: 2017-04-29 00:49+0000\n" |
|||
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n" |
|||
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Language: es\n" |
|||
"Plural-Forms: nplurals=2; plural=(n != 1);\n" |
|||
|
|||
#. module: pos_ticket_logo |
|||
#: view:website:point_of_sale.report_receipt |
|||
msgid "display:none;" |
|||
msgstr "display:none;" |
@ -1,24 +0,0 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * pos_ticket_logo |
|||
# |
|||
# Translators: |
|||
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2017 |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 8.0\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2017-04-29 00:49+0000\n" |
|||
"PO-Revision-Date: 2017-04-29 00:49+0000\n" |
|||
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>, 2017\n" |
|||
"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Language: sl\n" |
|||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" |
|||
|
|||
#. module: pos_ticket_logo |
|||
#: view:website:point_of_sale.report_receipt |
|||
msgid "display:none;" |
|||
msgstr "display:none;" |
@ -0,0 +1,11 @@ |
|||
To add a logo to any given company: |
|||
|
|||
#. Go to *Settings > Users & Companies > Companies* |
|||
#. Edit one and add the logo editing the top left corner image. |
|||
|
|||
To configure receipt web print in the PoS (is the default setting): |
|||
|
|||
#. Go to *Point of Sale > Configuration > Point of Sale*. |
|||
#. Edit the one you want to configure. |
|||
#. If the *PosBox* setting is enabled the *Receipt Printer* setting should be |
|||
disabled. |
@ -0,0 +1,6 @@ |
|||
* Endika Iglesias <endikaig@antiun.com> |
|||
|
|||
* `Tecnativa <https://www.tecnativa.com>`_: |
|||
|
|||
* Antonio Espinosa |
|||
* David Vidal |
@ -0,0 +1,11 @@ |
|||
A different receipt template is used if the PoS ticket is printed via web or |
|||
via proxy. In the case the ticket is printed via web (through the browser) the |
|||
company logo isn't printed. This module adds it. |
|||
|
|||
In other hand, company_logo is loaded using `/web/binary/company_logo` |
|||
controller `that returns a 150px wide logo <https://github.com/odoo/odoo/blob/11.0/addons/point_of_sale/static/src/js/models.js#L481>`_: |
|||
|
|||
but after that logo is resized to 300px width, so a pixelled logo appears even |
|||
original logo is 300px wide. |
|||
That's why we override how company_logo is loaded. We also resized it to 260px |
|||
(not 300px) wide because appears cut in PDF. |
@ -0,0 +1,3 @@ |
|||
#. Open a new PoS session. |
|||
#. Make an order and validate it. |
|||
#. You should see the company logo in the receipt preview. |
@ -1,73 +0,0 @@ |
|||
/** |
|||
* # -*- coding: utf-8 -*- |
|||
* ############################################################################## |
|||
* # |
|||
* # OpenERP, Open Source Management Solution |
|||
* # This module copyright : |
|||
* # (c) 2014 Antiun Ingenieria, SL (Madrid, Spain, http://www.antiun.com)
|
|||
* # Endika Iglesias <endikaig@antiun.com> |
|||
* # Antonio Espinosa <antonioea@antiun.com> |
|||
* # |
|||
* # This program is free software: you can redistribute it and/or modify |
|||
* # it under the terms of the GNU Affero General Public License as |
|||
* # published by the Free Software Foundation, either version 3 of the |
|||
* # License, or (at your option) any later version. |
|||
* # |
|||
* # This program is distributed in the hope that it will be useful, |
|||
* # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* # GNU Affero General Public License for more details. |
|||
* # |
|||
* # You should have received a copy of the GNU Affero General Public License |
|||
* # along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* # |
|||
* ############################################################################## |
|||
*/ |
|||
|
|||
// Check jQuery available
|
|||
if (typeof jQuery === 'undefined') { throw new Error('POS Ticket Logo Addon requires jQuery'); } |
|||
|
|||
+function ($) { |
|||
'use strict'; |
|||
|
|||
openerp.pos_ticket_logo = function (instance, module) { |
|||
var _t = instance.web._t, |
|||
_lt = instance.web._lt; |
|||
var QWeb = instance.web.qweb; |
|||
|
|||
var PosModelParent = instance.point_of_sale.PosModel; |
|||
instance.point_of_sale.PosModel = instance.point_of_sale.PosModel.extend({ |
|||
load_server_data: function(){ |
|||
var self = this; |
|||
var loaded = PosModelParent.prototype.load_server_data.apply(this, arguments); |
|||
$.when(loaded).then(function(){ |
|||
self.company_logo.onload = function(){ |
|||
var img = self.company_logo; |
|||
var ratio = 1; |
|||
var targetwidth = 260; |
|||
var maxheight = 120; |
|||
if( img.width !== targetwidth ){ |
|||
ratio = targetwidth / img.width; |
|||
} |
|||
if( img.height * ratio > maxheight ){ |
|||
ratio = maxheight / img.height; |
|||
} |
|||
var width = Math.floor(img.width * ratio); |
|||
var height = Math.floor(img.height * ratio); |
|||
var c = document.createElement('canvas'); |
|||
c.width = width; |
|||
c.height = height; |
|||
var ctx = c.getContext('2d'); |
|||
ctx.drawImage(self.company_logo,0,0, width, height); |
|||
|
|||
self.company_logo_base64 = c.toDataURL(); |
|||
loaded.resolve(); |
|||
}; |
|||
self.company_logo.src = '/web/binary/image?model=res.company&id=' + self.company.id + '&field=logo'; |
|||
}); |
|||
return loaded; |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
}(jQuery); |
@ -0,0 +1,49 @@ |
|||
/* License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). */ |
|||
|
|||
|
|||
odoo.define("pos_ticket_logo.models", function (require) { |
|||
"use strict"; |
|||
|
|||
var models = require("point_of_sale.models"); |
|||
|
|||
var exports = {}; |
|||
|
|||
var _pictures = _.findWhere( |
|||
models.PosModel.prototype.models, |
|||
{label: "pictures"} |
|||
); |
|||
_pictures.loaded = function (self) { |
|||
self.company_logo = new Image(); |
|||
var logo_loaded = new $.Deferred(); |
|||
self.company_logo.onload = function () { |
|||
var img = self.company_logo; |
|||
var ratio = 1; |
|||
var targetwidth = 260; |
|||
var maxheight = 120; |
|||
if (img.width !== targetwidth) { |
|||
ratio = targetwidth / img.width; |
|||
} |
|||
if (img.height * ratio > maxheight) { |
|||
ratio = maxheight / img.height; |
|||
} |
|||
var width = Math.floor(img.width * ratio); |
|||
var height = Math.floor(img.height * ratio); |
|||
var c = document.createElement('canvas'); |
|||
c.width = width; |
|||
c.height = height; |
|||
var ctx = c.getContext('2d'); |
|||
ctx.drawImage(self.company_logo, 0, 0, width, height); |
|||
self.company_logo_base64 = c.toDataURL(); |
|||
logo_loaded.resolve(); |
|||
}; |
|||
self.company_logo.onerror = function () { |
|||
logo_loaded.reject(); |
|||
}; |
|||
self.company_logo.crossOrigin = "anonymous"; |
|||
self.company_logo.src = '/web/binary/image?model=res.company&id=' + |
|||
self.company.id + '&field=logo'; |
|||
return logo_loaded; |
|||
}; |
|||
|
|||
return exports; |
|||
}); |
@ -1,10 +1,13 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
|
|||
<templates id="template" xml:space="preserve"> |
|||
|
|||
<t t-extend="PosTicket"> |
|||
<t t-jquery="[t-esc='widget.pos.company.name']" t-operation="before"> |
|||
<t t-jquery="div[class='pos-sale-ticket']" t-operation="prepend"> |
|||
<div class="pos-center-align"> |
|||
<img t-att-src="widget.pos.company_logo_base64"/><br /> |
|||
</div> |
|||
</t> |
|||
</t> |
|||
|
|||
</templates> |
@ -0,0 +1,13 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
|
|||
<odoo> |
|||
|
|||
<template id="assets" inherit_id="point_of_sale.assets"> |
|||
<xpath expr="."> |
|||
<script |
|||
type="text/javascript" |
|||
src="/pos_ticket_logo/static/src/js/models.js"/> |
|||
</xpath> |
|||
</template> |
|||
|
|||
</odoo> |
@ -1,12 +0,0 @@ |
|||
<openerp> |
|||
<data> |
|||
<template id="pos_ticket_logo_assets_backend" |
|||
name="pos_ticket_logo_assets_backend" |
|||
inherit_id="point_of_sale.assets_backend"> |
|||
<xpath expr="." position="inside"> |
|||
<script src="/pos_ticket_logo/static/src/js/main.js" |
|||
type="text/javascript"></script> |
|||
</xpath> |
|||
</template> |
|||
</data> |
|||
</openerp> |
@ -1,17 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<openerp> |
|||
<data> |
|||
<template id="pos_ticket_logo_report_receipt_report" |
|||
inherit_id="point_of_sale.report_receipt"> |
|||
|
|||
<xpath expr="//div[@class='col-xs-12 text-center']/h2" position="after"> |
|||
<img src="/web/binary/company_logo" /><br /> |
|||
</xpath> |
|||
|
|||
<xpath expr="//div[@class='col-xs-12 text-center']/h2" position="attributes"> |
|||
<attribute name="style">display:none;</attribute> |
|||
</xpath> |
|||
|
|||
</template> |
|||
</data> |
|||
</openerp> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue