TIP: You can type at any time to perform a new search.
Purchase Return
purchase_return · OCA/purchase-workflow
- Repository
- OCA/purchase-workflow · module folder · Try on Runboat
- Module version
- 1.0.4
- Category
- Purchases
- Folder size
- 0.26 MB
- License
- LGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/purchase-workflow
- Last tracking update
- 2026-08-07 08:09:24
- Authors
- Odoo Community Association (OCA), ForgeFlow
- Maintainers
- Odoo Community Association (OCA), ForgeFlow
- Committers
- Weblate, OCA-git-bot, oca-ci, AlexPForgeFlow, PauBForgeFlow, ChanGuaZzz
Code Analysis ⓘ
Views touched (19)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
product_template_form_view |
product.template.form.inherit | product.template | form | Inherits account.product_template_form_view |
purchase_return_order_form |
purchase.return.order.form | purchase.return.order | form | New |
purchase_return_order_graph |
purchase.return.order.graph | purchase.return.order | graph | New |
purchase_return_order_line_form2 |
purchase.return.order.line.form2 | purchase.return.order.line | form | New |
purchase_return_order_line_search |
purchase.return.order.line.search | purchase.return.order.line | search | New |
purchase_return_order_line_tree |
purchase.return.order.line.tree | purchase.return.order.line | tree | New |
purchase_return_order_pivot |
purchase.return.order.pivot | purchase.return.order | pivot | New |
purchase_return_order_tree |
purchase.return.order.tree | purchase.return.order | tree | New |
purchase_return_order_view_activity |
purchase.return.order.activity | purchase.return.order | activity | New |
purchase_return_order_view_search |
purchase.return.order.select | purchase.return.order | search | New |
purchase_return_order_view_tree |
purchase.return.order.view.tree | purchase.return.order | tree | New |
report_purchasereturnorder |
report_purchasereturnorder | ir.ui.view | qweb | New |
report_purchasereturnorder_document |
report_purchasereturnorder_document | ir.ui.view | qweb | New |
track_po_line_qty_received_template |
track_po_line_qty_received_template | ir.ui.view | qweb | New |
track_po_line_template |
track_po_line_template | ir.ui.view | qweb | New |
view_category_property_form |
product.category.property.form.inherit | product.category | form | Inherits account.view_category_property_form |
view_move_form_inherit_repair_vendor_refund |
account.move.inherit.repair.vendor.refund | account.move | form | Inherits account.view_move_form |
view_purchase_return_order_filter |
purchase.return.draft.select | purchase.return.order | search | New |
view_purchase_return_order_kanban |
purchase.return.order.kanban | purchase.return.order | kanban | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (6)
New fields (1)
-
purchase_return_idMany2one → purchase.return.ordercopy=Falsehelp='Auto-complete from a past purchase return order.'readonly=Truestates={'draft': [('readonly', False)]}store=Falsestring='Purchase Return Order' args: 'purchase.return.order'
-
create(self, vals_list)@api.model_create_multi -
write(self, vals)
New fields (2)
-
purchase_return_line_idMany2one → purchase.return.order.linecopy=Falseindex=Trueondelete='set null' args: 'purchase.return.order.line', 'Purchase Return Order Line' -
purchase_return_order_idMany2one → purchase.return.ordercopy=Falsereadonly=Truerelated='purchase_return_line_id.order_id' args: 'purchase.return.order', 'Purchase Return Order'
No public methods.
New fields (1)
-
property_account_vendor_return_categ_idMany2one → account.accountcompany_dependent=Truedomain=ACCOUNT_DOMAINhelp='Keep this field empty to use the default value from the product category.'string='Purchase Returns Account' args: 'account.account'
No public methods.
New fields (1)
-
property_account_vendor_return_idMany2one → account.accountcompany_dependent=Truedomain=ACCOUNT_DOMAINhelp='Keep this field empty to use the default value from the product category.'string='Purchase Returns Account' args: 'account.account'
No public methods.
New fields (25)
-
amount_taxMonetarycompute='_compute_amount_all'readonly=Truestore=Truestring='Taxes' -
amount_totalMonetarycompute='_compute_amount_all'readonly=Truestore=Truestring='Total' -
amount_untaxedMonetarycompute='_compute_amount_all'readonly=Truestore=Truestring='Untaxed Amount'tracking=True -
company_idMany2one → res.companydefault=<expr>index=Truerequired=Truestates=READONLY_STATES args: 'res.company', 'Company' -
currency_idMany2one → res.currencydefault=<expr>required=Truestates=READONLY_STATES args: 'res.currency', 'Currency' -
currency_rateFloatcompute='_compute_currency_rate'compute_sudo=Truehelp='Ratio between the purchase order currency and the company currency'readonly=Truestore=True args: 'Rate Currency' -
date_approveDatetimecopy=Falseindex=Truereadonly=1 args: 'Confirmation Date' -
date_orderDatetimecopy=Falsedefault=fields.Datetime.nowhelp='Depicts the date within which the Quotation should be confirmed and converted into a purchase order.'index=Truerequired=Truestates=READONLY_STATES args: 'Order Deadline' -
date_plannedDatetimecompute='_compute_date_planned'copy=Falsehelp='Delivery date to return to the vendor. This date is used to determine expected shipment of products.'index=Truereadonly=Falsestore=Truestring='Issue Date' -
dest_address_idMany2one → res.partnerdomain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"help='Put an address if you want to return directly from the customer to the vendor. Otherwise, keep empty to deliver from your own company.'states=READONLY_STATESstring='Drop Ship Address' args: 'res.partner' -
fiscal_position_idMany2one → account.fiscal.positiondomain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"string='Fiscal Position' args: 'account.fiscal.position' -
incoterm_idMany2one → account.incotermshelp='International Commercial Terms are a series of predefined commercial terms used in international transactions.'states={'done': [('readonly', True)]} args: 'account.incoterms', 'Incoterm' -
invoice_countIntegercompute='_compute_invoice'copy=Falsedefault=0store=Truestring='Bill Count' -
invoice_idsMany2many → account.movecompute='_compute_invoice'copy=Falsestore=Truestring='Bills' args: 'account.move' -
invoice_statusSelectioncompute='_compute_get_invoiced'copy=Falsedefault='no'readonly=Truestore=Truestring='Billing Status' args: [('no', 'Nothing to Refund'), ('to invoice', 'Waiting Refunds'), ('invoiced', 'Fully Refunded')] -
nameCharcopy=Falsedefault='New'index=Truerequired=True args: 'Order Reference' -
notesTextargs: 'Terms and Conditions' -
order_lineOne2many → purchase.return.order.linecopy=Truestates={'cancel': [('readonly', True)], 'done': [('readonly', True)]}string='Order Lines' args: 'purchase.return.order.line', 'order_id' -
originCharcopy=Falsehelp='Reference of the document that generated this purchase order request (e.g. a sales order)' args: 'Source Document' -
partner_idMany2one → res.partnerchange_default=Truedomain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"help='You can find a vendor by its Name, TIN, Email or Internal Reference.'required=Truestates=READONLY_STATESstring='Vendor'tracking=True args: 'res.partner' -
partner_refCharcopy=Falsehelp="Reference of the sales order or bid sent by the vendor. It's used to do the matching when you receive the products as this reference is usually written on the delivery order sent by your vendor." args: 'Vendor Reference' -
payment_term_idMany2one → account.payment.termdomain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" args: 'account.payment.term', 'Payment Terms' -
product_idMany2one → product.productreadonly=Falserelated='order_line.product_id'string='Product' args: 'product.product' -
stateSelectioncopy=Falsedefault='draft'index=Truereadonly=Truestring='Status'tracking=True args: [('draft', 'Draft'), ('sent', 'Sent'), ('to approve', 'To Approve'), ('purchase', 'Purchase Order Return'), ('done', 'Locked'), ('cancel', 'Cancelled')] -
user_idMany2one → res.userscheck_company=Truedefault=<expr>index=Truestring='Purchase Representative'tracking=True args: 'res.users'
-
action_create_refund(self)Create the refund associated to the PO. -
action_draft_send(self)This function opens a window to compose an email, with the edi purchase template message loaded by default -
action_view_invoice(self, invoices=False)This function returns an action that display existing vendor bills of given purchase order ids. When only one found, show the vendor bill immediately. -
button_approve(self, force=False) -
button_cancel(self) -
button_confirm(self) -
button_done(self) -
button_draft(self) -
button_unlock(self) -
copy(self, default=None) -
create(self, vals)@api.model -
message_post(self, **kwargs)@api.returns('mail.message', <expr>) -
name_get(self)@api.depends('name', 'partner_ref') -
onchange(self, values, field_name, field_onchange)Override onchange to NOT to update all date_planned on PO lines when date_planned on PO is updated by the change of date_planned on PO lines. -
onchange_date_planned(self)@api.onchange('date_planned') -
onchange_partner_id(self)@api.onchange('partner_id', 'company_id') -
print_return(self) -
unlink(self)
New fields (26)
-
account_analytic_idMany2one → account.analytic.accountreadonly=Falsestore=Truestring='Analytic Account' args: 'account.analytic.account' -
company_idMany2one → res.companyreadonly=Truerelated='order_id.company_id'store=Truestring='Company' args: 'res.company' -
currency_idMany2onereadonly=Truerelated='order_id.currency_id'store=Truestring='Currency' -
date_orderDatetimereadonly=Truerelated='order_id.date_order'string='Order Date' -
date_plannedDatetimehelp="Delivery date expected from vendor. This date respectively defaults to vendor pricelist lead time then today's date."string='Delivery Date' -
display_typeSelectiondefault=Falsehelp='Technical field for UX purpose.' args: [('line_section', 'Section'), ('line_note', 'Note')] -
invoice_linesOne2many → account.move.linecopy=Falsereadonly=Truestring='Bill Lines' args: 'account.move.line', 'purchase_return_line_id' -
nameTextrequired=Truestring='Description' -
order_idMany2one → purchase.return.orderindex=Trueondelete='cascade'required=Truestring='Order Reference' args: 'purchase.return.order' -
partner_idMany2one → res.partnerreadonly=Truerelated='order_id.partner_id'store=Truestring='Partner' args: 'res.partner' -
price_subtotalMonetarycompute='_compute_amount'store=Truestring='Subtotal' -
price_taxFloatcompute='_compute_amount'store=Truestring='Tax' -
price_totalMonetarycompute='_compute_amount'store=Truestring='Total' -
price_unitFloatdigits='Product Price'required=Truestring='Unit Price' -
product_idMany2one → product.productchange_default=Truedomain=[('purchase_ok', '=', True)]string='Product' args: 'product.product' -
product_qtyFloatdigits='Product Unit of Measure'required=Truestring='Quantity' -
product_typeSelectionreadonly=Truerelated='product_id.type' -
product_uomMany2one → uom.uomdomain="[('category_id', '=', product_uom_category_id)]"string='Unit of Measure' args: 'uom.uom' -
product_uom_category_idMany2onerelated='product_id.uom_id.category_id' -
product_uom_qtyFloatcompute='_compute_product_uom_qty'store=Truestring='Total Quantity' -
qty_invoicedFloatcompute='_compute_qty_invoiced'digits='Product Unit of Measure'store=Truestring='Refunded Qty' -
qty_to_invoiceFloatcompute='_compute_qty_invoiced'digits='Product Unit of Measure'readonly=Truestore=Truestring='To Invoice Quantity' -
refund_onlyBooleanstring='Refund only' -
sequenceIntegerdefault=10string='Sequence Line' -
stateSelectionreadonly=Falserelated='order_id.state'store=True -
taxes_idMany2many → account.taxdomain=['|', ('active', '=', False), ('active', '=', True)]string='Taxes' args: 'account.tax'
-
create(self, vals_list)@api.model_create_multi -
onchange_product_id(self)@api.onchange('product_id') -
onchange_product_id_warning(self)@api.onchange('product_id') -
unlink(self) -
write(self, values)
- Status
- Open migration PR — not merged yet for this version
- CI status
- checks failing
- Open since
- 261 days ago
- Last activity
- 234 days ago
- Repository
- OCA/purchase-workflow
- Pull request
- [18.0][MIG] purchase_return: Migration to 18.0 (#2902)