Přejít na obsah
Menu
You need to be registered to interact with the community.
This question has been flagged
1 Odpovědět
6814 Zobrazení

I have problem is, i can't add function for my custom button to print reciept in POS

Here my js code: POS/static/src/js/pos.js

odoo.define('POS.pos', function (require) {

'use strict';
var models = require('point_of_sale.models');
var core = require('web.core');
var Widget = require('web.Widget');

var ajax = require('web.ajax');

var qweb = core.qweb;
ajax.loadXML('/POS/static/src/xml/custom_pos.xml', qweb);
});


And here is my POS/static/src/xml/custom_pos.xml:


<?xml version="1.0" encoding="utf-8"?>
<templates id="template" xml:space="preserve">

<t t-name="PaymentScreenWidget" t-extend="PaymentScreenWidget">
<t t-jquery='.payment-buttons' t-operation='append'>
<span class="control-button">
<i class="fa fa-print"></i>
Custom Button
</span>
</t>
</t>
</templates >

And here my xml in views


<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="demo_example_ext_js" name="Demo Example Ext Js" inherit_id="point_of_sale.assets">
<xpath expr="." position="inside">
<script type="text/javascript" src="/POS/static/src/js/pos.js"></script>
</xpath>
</template>
</odoo>

How can i add function print reciept for my custom button, just like "Print Reciept" have already in POS when you click Validate Button?

Avatar
Zrušit
Nejlepší odpověď

Hi,

You can load XML from  __manifest__.py file

'qweb': ['static/src/xml/*.xml'],


then, custom_pos.xml


<?xml version="1.0" encoding="utf-8"?>
<templates id="template" xml:space="preserve">
<t t-extend="PaymentScreenWidget">
<t t-jquery="t[t-if='widget.pos.config.module_account']" t-operation="after">
<div class='button js_custom_print'>
<i class='fa fa-print' /> Custom Print
</div>
</t>
</t>
</templates>

load JS :-
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="assets" inherit_id="point_of_sale.assets">
<xpath expr="." position="inside">
<script type="text/javascript" src="/POS/static/src/js/pos_test.js"/>
</xpath>
</template>
</data>
</odoo>

JS File:

odoo.define('POS.pos', function (require) {
'use strict';

var models = require('point_of_sale.models');
var core = require('web.core');
var screens = require('point_of_sale.screens');
var Widget = require('web.Widget');

var ajax = require('web.ajax');

var qweb = core.qweb;

screens.PaymentScreenWidget.include({
renderElement: function() {
var self = this;
this._super();
this.$('.js_custom_print').click(function(){
self.click_custom_print();
});
},
click_custom_print: function(){
var order = this.pos.get_order();
console.log("order")
// Render receipt screen and can print function

}
});

});

Thanks
Avatar
Zrušit
Autor

Hi Niyas,

If my custom_pos.xml update like exaclty what you say, my custom button didnt show.

Autor

Hi Niyas,

I solve that problem, can you spend a little time to help me about this?

Autor

My custom button will have exactly what "Print Receipt" button do ( in Validate screens ). So that, Can I write js code the same with that "Print Receipt" button?

Related Posts Odpovědi Zobrazení Aktivita
9
čvn 23
12815
2
led 22
3681
2
pro 21
7607
0
čvn 21
1794
0
úno 21
2353