Browse Source

[ADD] POS ticket logo addon

pull/300/head
Antonio Espinosa 10 years ago
committed by David
parent
commit
9e941795da
  1. 50
      pos_ticket_logo/README.rst
  2. 24
      pos_ticket_logo/__init__.py
  3. 43
      pos_ticket_logo/__openerp__.py
  4. BIN
      pos_ticket_logo/static/description/icon.png
  5. 73
      pos_ticket_logo/static/src/js/main.js
  6. 10
      pos_ticket_logo/static/src/xml/pos.xml
  7. 12
      pos_ticket_logo/views/pos_template.xml
  8. 17
      pos_ticket_logo/views/pos_ticket_logo_report_receipt_report.xml

50
pos_ticket_logo/README.rst

@ -0,0 +1,50 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:alt: AGPLv3 License
POS Ticket logo
===============
Add company logo in POS ticket
Motivation
==========
```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
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
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:
Credits
=======
Contributors
------------
* Antonio Espinosa <antonioea@antiun.com>
* Endika Iglesias <endikaig@antiun.com>
Maintainer
----------
.. image:: http://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: http://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 http://odoo-community.org.

24
pos_ticket_logo/__init__.py

@ -0,0 +1,24 @@
# -*- 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/>.
#
##############################################################################

43
pos_ticket_logo/__openerp__.py

@ -0,0 +1,43 @@
# -*- 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': '1.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,
}

BIN
pos_ticket_logo/static/description/icon.png

After

Width: 128  |  Height: 128  |  Size: 9.3 KiB

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

@ -0,0 +1,73 @@
/**
* # -*- 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);

10
pos_ticket_logo/static/src/xml/pos.xml

@ -0,0 +1,10 @@
<?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">
<div class="pos-center-align">
<img t-att-src="widget.pos.company_logo_base64"/><br />
</div>
</t>
</t>
</templates>

12
pos_ticket_logo/views/pos_template.xml

@ -0,0 +1,12 @@
<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

@ -0,0 +1,17 @@
<?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