Browse Source

[MIG] pos_ticket_logo: Migration to 11.0

pull/335/head
David 6 years ago
committed by Pierrick Brun
parent
commit
49c7e8de35
  1. 112
      pos_ticket_logo/README.rst
  2. 24
      pos_ticket_logo/__init__.py
  3. 21
      pos_ticket_logo/__manifest__.py
  4. 43
      pos_ticket_logo/__openerp__.py
  5. 24
      pos_ticket_logo/i18n/es.po
  6. 24
      pos_ticket_logo/i18n/sl.po
  7. 11
      pos_ticket_logo/readme/CONFIGURE.rst
  8. 6
      pos_ticket_logo/readme/CONTRIBUTORS.rst
  9. 11
      pos_ticket_logo/readme/DESCRIPTION.rst
  10. 3
      pos_ticket_logo/readme/USAGE.rst
  11. 73
      pos_ticket_logo/static/src/js/main.js
  12. 49
      pos_ticket_logo/static/src/js/models.js
  13. 5
      pos_ticket_logo/static/src/xml/pos.xml
  14. 13
      pos_ticket_logo/templates/assets.xml
  15. 12
      pos_ticket_logo/views/pos_template.xml
  16. 17
      pos_ticket_logo/views/pos_ticket_logo_report_receipt_report.xml

112
pos_ticket_logo/README.rst

@ -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.

24
pos_ticket_logo/__init__.py

@ -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/>.
#
##############################################################################

21
pos_ticket_logo/__manifest__.py

@ -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,
}

43
pos_ticket_logo/__openerp__.py

@ -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,
}

24
pos_ticket_logo/i18n/es.po

@ -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;"

24
pos_ticket_logo/i18n/sl.po

@ -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;"

11
pos_ticket_logo/readme/CONFIGURE.rst

@ -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.

6
pos_ticket_logo/readme/CONTRIBUTORS.rst

@ -0,0 +1,6 @@
* Endika Iglesias <endikaig@antiun.com>
* `Tecnativa <https://www.tecnativa.com>`_:
* Antonio Espinosa
* David Vidal

11
pos_ticket_logo/readme/DESCRIPTION.rst

@ -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.

3
pos_ticket_logo/readme/USAGE.rst

@ -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.

73
pos_ticket_logo/static/src/js/main.js

@ -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);

49
pos_ticket_logo/static/src/js/models.js

@ -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;
});

5
pos_ticket_logo/static/src/xml/pos.xml

@ -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>

13
pos_ticket_logo/templates/assets.xml

@ -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>

12
pos_ticket_logo/views/pos_template.xml

@ -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>

17
pos_ticket_logo/views/pos_ticket_logo_report_receipt_report.xml

@ -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>
Loading…
Cancel
Save