Skip to Content
Menu
This question has been flagged

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

Avatar
Discard
Related Posts Replies Views Activity
1
Aug 23
4079
4
May 25
2298
0
Mar 25
685
5
Mar 25
2209
1
Feb 25
845