Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
1 Trả lời
7009 Lượt xem

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?

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

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
Ảnh đại diện
Huỷ bỏ
Tác giả

Hi Niyas,

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

Tác giả

Hi Niyas,

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

Tác giả

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?

Bài viết liên quan Trả lời Lượt xem Hoạt động
9
thg 6 23
13603
2
thg 1 22
4259
2
thg 12 21
8359
0
thg 6 21
2285
0
thg 2 21
2950