i want to dynamically render rfid_balance everytime i complete the order
here is my attempt:
controller:
from odoo import http
from odoo.http import request
class MQPOSController(http.Controller):
@http.route('/get_rfid_balance', auth='public', type='json')
def get_rfid_balance(self):
partner = request.env['res.partner'].sudo().search([('id', '=', request.env.user.partner_id.id)], limit=1)
return {
'rfid_balance': partner.rfid_balance
}
payment_screen JS
/** @odoo-module */
import { jsonrpc } from "@web/core/network/rpc_service";
import { renderToElement } from "@web/core/utils/render";
import publicWidget from '@web/legacy/js/public/public_widget';
let DynamicSnippets = publicWidget.Widget.extend({
selector: '.js_dynamic_snippet',
start: function(){
jsonrpc('/get_rfid_balance', {}).then((res)=>{
if (res){
this.$el.find("#rfid_balance").html(renderToElement('mq_canteen_pos_order.MQPaymentScreenExtension', {res: res}))
}
})
}
});
publicWidget.registry.DynamicSnippets = DynamicSnippets;
payment_screen XML
<?xml version="1.0" encoding="utf-8"?>
<templates id="mq_canteen_pos_order.template" name="mq_canteen_pos_order.template" xml:space="preserve">
<t t-name="mq_canteen_pos_order.MQPaymentScreenExtension"
t-inherit="point_of_sale.PaymentScreenButtons" t-inherit-mode="extension" owl="1">
<!-- Corrected the xpath expression to target the right element -->
<xpath expr="//span[hasclass('partner-name')]" position="replace">
<span class="partner-name">
<t t-if="currentOrder.get_partner()" t-esc="currentOrder.get_partner().name"/>
<t t-else="">Customer</t>
<br/>
<span style="margin-left:18px;">RFID Balance:</span>
<span id="rfid_balance" t-esc="currentOrder.get_partner() ? currentOrder.get_partner().rfid_balance : 'N/A'" />
</span>
</xpath>
</t>
</templates>
Much appreciated if you show me the manifest on how to do it
thanks in advance