Skip to Content
Menu
You need to be registered to interact with the community.
This question has been flagged
1 Odgovori
6824 Prikazi

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
Opusti
Best Answer

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
Opusti
Avtor

Hi Niyas,

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

Avtor

Hi Niyas,

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

Avtor

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 Odgovori Prikazi Aktivnost
9
jun. 23
12831
2
jan. 22
3697
2
dec. 21
7631
0
jun. 21
1805
0
feb. 21
2373