##############################################################################
# For copyright and license notices, see __manifest__.py file in module root
# directory
##############################################################################
from odoo import api, models, fields


class StockRule(models.Model):
    _inherit = 'stock.rule'

    @api.model
    def _prepare_purchase_order_line(
            self, product_id, product_qty, product_uom, company_id, values, po):
        res = super()._prepare_purchase_order_line(
            product_id=product_id, product_qty=product_qty,
            product_uom=product_uom, company_id=company_id, values=values,
            po=po)
        # if price was not computed (not seller or seller price = 0.0), then
        # use standar price
        if not res['price_unit']:
            price_unit = product_id.with_context(
                force_company=company_id.id).standard_price
            company_currency = company_id.currency_id
            if (
                    price_unit and po.currency_id != company_currency):
                price_unit = company_currency._convert(
                    price_unit, po.currency_id, company_id,
                    po.date_order or fields.Date.today())
            if (
                    price_unit and res['product_uom'] and
                    product_id.uom_id.id != res['product_uom']):
                product_uom = self.env['uom.uom'].browse(res['product_uom'])
                price_unit = product_id.uom_id._compute_price(price_unit, product_uom)
            res['price_unit'] = price_unit
        return res

    def _update_purchase_order_line(
            self, product_id, product_qty, product_uom, company_id, values, line):
        res = super()._update_purchase_order_line(product_id, product_qty, product_uom, company_id, values, line)

        # if price was not computed (not seller or seller price = 0.0), then
        # use standar price
        if not res['price_unit']:
            price_unit = product_id.with_context(
                force_company=company_id.id).standard_price
            company_currency = company_id.currency_id
            if (price_unit and line.order_id.currency_id != company_currency):
                price_unit = company_currency._convert(
                    price_unit, line.order_id.currency_id,
                    company_id,
                    line.order_id.date_order or fields.Date.today())
            if (
                    price_unit and product_uom and
                    product_id.uom_id != product_uom):
                price_unit = product_id.uom_id._compute_price(price_unit, product_uom)
            res['price_unit'] = price_unit
        return res

@@ -2497,16 +2497,21 @@
 nit and 
+line.
 product_
@@ -2559,16 +2559,21 @@
 m_id != 
+line.
 product_
@@ -2644,32 +2644,37 @@
 ice(price_unit, 
+line.
 product_uom)%0A   

Use line uom to validate the update qty on the run procurement.