from odoo import api, fields, models class StockRule(models.Model): _inherit = "stock.rule" def create_purchase_request(self, procurement_group): """ Create a purchase request containing procurement order product. """ procurement = procurement_group[0] rule = procurement_group[1] purchase_request_model = self.env["purchase.request"] purchase_request_line_model = self.env["purchase.request.line"] cache = {} pr = self.env["purchase.request"] domain = rule._make_pr_get_domain(procurement.values) if domain in cache: pr = cache[domain] elif domain: pr = self.env["purchase.request"].search([dom for dom in domain]) pr = pr[0] if pr else False cache[domain] = pr if not pr: request_data = rule._prepare_purchase_request( procurement.origin, procurement.values ) request_data.update({'rule_new_add': True}) pr = purchase_request_model.create(request_data) cache[domain] = pr elif ( not pr.origin or procurement.origin not in pr.origin.split(", ") and procurement.origin != "/" ): if pr.origin: if procurement.origin: pr.write({"origin": pr.origin + ", " + procurement.origin}) else: pr.write({"origin": procurement.origin}) # Create Line request_line_data = rule._prepare_purchase_request_line(pr, procurement) request_line_data.update({'origin': procurement.origin}) purchase_request_line_model.create(request_line_data)