Odoo 15 POS multi uom and lot set up

Odoo 15 pos

I was add multi uom that for each product. So I was write multi uom and overwite function _onDoRefund and _fetchSyncedOrders at Ticket Screen.js like this.
async _fetchSyncedOrders() { const domain = this._computeSyncedOrdersDomain(); const limit = this._state.syncedOrders.nPerPage; const offset = (this._state.syncedOrders.currentPage - 1) * this._state.syncedOrders.nPerPage; const { ids, totalCount } = await this.rpc({ model: 'pos.order', method: 'search_paid_order_ids', kwargs: { config_id: this.env.pos.config.id, domain, limit, offset }, context: this.env.session.user_context, }); const idsNotInCache = ids.filter((id) => !(id in this._state.syncedOrders.cache)); if (idsNotInCache.length > 0) { const fetchedOrders = await this.rpc({ model: 'pos.order', method: 'export_for_ui', args: [idsNotInCache], context: this.env.session.user_context, }); // Check for missing products and load them in the PoS await this.env.pos._loadMissingProducts(fetchedOrders); // Cache these fetched orders so that next time, no need to fetch // them again, unless invalidated. See _onInvoiceOrder`.
fetchedOrders.forEach((order) => {
this._state.syncedOrders.cache[order.id] = new models.Order({}, { pos: this.env.pos, json: order });
var cacheOrder = this._state.syncedOrders.cache[order.id];
for(var index=0; index < order.lines.length; index++){
var values = order.lines[index][2];
console.log(‘This is fetching’,cacheOrder.orderlines.models[index])
console.log(‘This is fetching value’,values)
cacheOrder.orderlines.models[index].multi_uom_line_id = values.multi_uom_line_id;
cacheOrder.orderlines.models[index].price_manually_set = values.price_manually_set;
cacheOrder.orderlines.models[index].set_unit_price(values.multi_price_unit);
cacheOrder.orderlines.models[index].set_discount(values.multi_discount);
cacheOrder.orderlines.models[index].refunded_qty = values.refunded_qty;
cacheOrder.orderlines.models[index].refunded_orderline_id = values.refunded_orderline_id;
}
this._state.syncedOrders.cache[order.id] = cacheOrder;
});
}
this._state.syncedOrders.totalCount = totalCount;
this._state.syncedOrders.toShow = ids.map((id) => this._state.syncedOrders.cache[id]);
}

async _onDoRefund() {
    const order = this.getSelectedSyncedOrder();
    if (!order) {
        this._state.ui.highlightHeaderNote = !this._state.ui.highlightHeaderNote;
        return this.render();
    }

    if (this._doesOrderHaveSoleItem(order)) {
        this._prepareAutoRefundOnOrder(order);
    }

    const customer = order.get_client();

    // Select the lines from toRefundLines (can come from different orders)
    // such that:
    //   - the quantity to refund is not zero
    //   - if there is customer in the selected paid order, select the items
    //     with the same orderPartnerId
    //   - it is not yet linked to an active order (no destinationOrderUid)
    const allToRefundDetails = Object.values(this.env.pos.toRefundLines).filter(
        ({ qty, orderline, destinationOrderUid }) =>
            !this.env.pos.isProductQtyZero(qty) &&
            (customer ? orderline.orderPartnerId == customer.id : true) &&
            !destinationOrderUid
    );
    if (allToRefundDetails.length == 0) {
        this._state.ui.highlightHeaderNote = !this._state.ui.highlightHeaderNote;
        return this.render();
    }

    // The order that will contain the refund orderlines.
    // Use the destinationOrder from props if the order to refund has the same
    // customer as the destinationOrder.
    const destinationOrder =
        this.props.destinationOrder && customer === this.props.destinationOrder.get_client()
            ? this.props.destinationOrder
            : this.env.pos.add_new_order({ silent: true });

    // Add orderline for each toRefundDetail to the destinationOrder.
    for (const refundDetail of allToRefundDetails) {
        const { qty, orderline } = refundDetail;
        const syncedOrders = this._state.syncedOrders.cache;
        let uom_line;
        for(var orderId of Object.keys(syncedOrders)){
            for(var line of syncedOrders[orderId].orderlines.models){
                if(line.id === orderline.id){
                    uom_line = line.multi_uom_line_id;
                    break;
                }
            }
        }
        console.log('This is lot',orderline.pack_lot_lines)
        await destinationOrder.add_product(this.env.pos.db.get_product_by_id(orderline.productId), {
            quantity: -qty,  // Refund the correct quantity
            qty: -qty,  // Refund the correct quantity
            price: orderline.price,
            lst_price: orderline.price,
            extras: { price_manually_set: true },
            merge: false,
            refunded_orderline_id: orderline.id,
            tax_ids: orderline.tax_ids,
            discount: orderline.discount,
            multi_uom_line_id: uom_line,
            draftPackLotLines: orderline.pack_lot_lines ? { modifiedPackLotLines: [], newPackLotLines: orderline.pack_lot_lines} : false
        });

        refundDetail.destinationOrderUid = destinationOrder.uid;
    }

    // Set the customer to the destinationOrder.
    if (customer && !destinationOrder.get_client()) {
        destinationOrder.set_client(customer);

// destinationOrder.set_quantity(-qty)
}

    this._onCloseScreen();
}`

At this
`destinationOrder.add_product(this.env.pos.db.get_product_by_id(orderline.productId), {
quantity: -qty, // Refund the correct quantity
qty: -qty, // Refund the correct quantity
price: orderline.price,
lst_price: orderline.price,
extras: { price_manually_set: true },
merge: false,
refunded_orderline_id: orderline.id,
tax_ids: orderline.tax_ids,
discount: orderline.discount,
multi_uom_line_id: uom_line,
draftPackLotLines: orderline.pack_lot_lines ? { modifiedPackLotLines: [], newPackLotLines: orderline.pack_lot_lines} : false
});

        refundDetail.destinationOrderUid = destinationOrder.uid;
    }`

If not including draftPackLotLines, qty is working. But if it contain, How mush return qty, qty change to -1. How to fix?

At this
`destinationOrder.add_product(this.env.pos.db.get_product_by_id(orderline.productId), {
quantity: -qty, // Refund the correct quantity
qty: -qty, // Refund the correct quantity
price: orderline.price,
lst_price: orderline.price,
extras: { price_manually_set: true },
merge: false,
refunded_orderline_id: orderline.id,
tax_ids: orderline.tax_ids,
discount: orderline.discount,
multi_uom_line_id: uom_line,
draftPackLotLines: orderline.pack_lot_lines ? { modifiedPackLotLines: [], newPackLotLines: orderline.pack_lot_lines} : false
});

        refundDetail.destinationOrderUid = destinationOrder.uid;
    }`

If not including draftPackLotLines, qty is working. But if it contain, How mush return qty, qty change to -1. How to fix?