Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion purchase_isolated_rfq/models/purchase_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,14 @@ def create(self, vals):
if not order_sequence and vals.get("name", "/") == "/":
vals["name"] = self.env["ir.sequence"].next_by_code("purchase.rfq") or "/"
return super().create(vals)

def copy(self, default=None):
"""Allow duplicate PO back to RFQ document"""
self.ensure_one()
if default is None:
default = dict(default or {}, order_sequence=False, name="/")
self = self.with_context(order_sequence=False)
return super().copy(default)

def _prepare_order_from_rfq(self):
return {
Expand All @@ -47,16 +55,22 @@ def _prepare_order_from_rfq(self):
"quote_id": self.id,
"partner_ref": self.partner_ref,
}

def _update_value_order_from_rfq(self, order):
return order

def action_convert_to_order(self):
self.ensure_one()
if self.order_sequence:
raise UserError(_("Only quotation can convert to order"))
purchase_order = self.copy(self._prepare_order_from_rfq())
# Some fields is copy=False.
# This function will hook for add it in PO
purchase_order = self._update_value_order_from_rfq(purchase_order)
purchase_order.button_confirm()
# Reference from this RFQ to Purchase Order
self.purchase_order_id = purchase_order.id
if self.state == "draft":
if self.state in ["draft", "sent"]:
self.button_done()
return self.open_duplicated_purchase_order()

Expand Down
9 changes: 5 additions & 4 deletions purchase_isolated_rfq/views/purchase_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,19 @@
<field name="arch" type="xml">
<xpath expr="/form/header" position="attributes">
<attribute
name="invisible"
>not context.get('order_sequence', False)</attribute>
name="attrs"
>{'invisible': [('order_sequence','=',False)]}</attribute>
</xpath>
<xpath expr="/form/header" position="after">
<header
name="quotation"
attrs="{'invisible': [('order_sequence','=',True)]}"
>
<button name="action_rfq_send" states="draft" string="Send by Email" type="object" context="{'send_rfq':True}" class="oe_highlight" data-hotkey="g"/>
<button name="action_rfq_send" states="sent" string="Re-Send by Email" type="object" context="{'send_rfq':True}" data-hotkey="g"/>
<button
name="action_convert_to_order"
states="draft"
states="draft,sent"
class="oe_highlight"
type="object"
string="Convert to Order"
Expand All @@ -31,7 +33,6 @@
name="rfq_state"
widget="statusbar"
statusbar_visible="draft,done"
invisible="context.get('order_sequence', False)"
/>
</header>
</xpath>
Expand Down