TIP: You can type at any time to perform a new search.
Sale Rental
sale_rental · OCA/vertical-rental
- Repository
- OCA/vertical-rental · module folder · Try on Runboat
- Module version
- 1.0.4
- Category
- Sales
- Folder size
- 1.73 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/vertical-rental
- Last tracking update
- 2026-08-07 08:09:33
- Authors
- Akretion, Odoo Community Association (OCA), Sodexis
- Maintainers
- Akretion, Odoo Community Association (OCA), Sodexis
- Committers
- Weblate, OCA-git-bot, oca-ci, pwitte, chaule97
Code Analysis ⓘ
Views touched (12)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
create_rental_product_form |
rental.product.product.form | create.rental.product | form | New |
product_normal_form_view |
rental.product.product.form | product.product | form | Inherits product.product_normal_form_view |
product_template_only_form_view |
rental.product.template.only.form | product.template | form | Inherits product.product_template_only_form_view |
res_config_settings_view_form_sale_rental |
res.config.settings.view.form.inherit.sale.stock.sale | res.config.settings | form | Inherits sale.res_config_settings_view_form |
sale_rental_calendar |
sale.rental.calendar | sale.rental | calendar | New |
sale_rental_form |
sale.rental.form | sale.rental | form | New |
sale_rental_graph |
sale.rental.graph | sale.rental | graph | New |
sale_rental_pivot |
sale.rental.pivot | sale.rental | pivot | New |
sale_rental_search |
sale.rental.search | sale.rental | search | New |
sale_rental_tree |
sale.rental.tree | sale.rental | tree | New |
view_order_form |
sale_rental.view_order_form | sale.order | form | Inherits sale_start_end_dates.view_order_form |
view_warehouse |
rental.stock.warehouse.form | stock.warehouse | form | Inherits stock.view_warehouse |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (10)
New fields (6)
-
categ_idMany2one → product.categoryrequired=Truestring='Product Category' args: 'product.category' -
copy_imageBooleanstring='Copy Product Image' -
default_codeChar -
hw_product_idMany2one → product.productreadonly=Truerequired=Truestring='Product to Rent' args: 'product.product' -
nameCharrequired=Truestring='Rental Service Name' -
sale_price_per_dayFloatdefault=1.0digits='Product Price'required=Truestring='Rental Price per Day'
-
create_rental_product(self) -
default_get(self, fields_list)@api.model
New fields (2)
-
rental_service_idsOne2many → product.productstring='Related Rental Services' args: 'product.product', 'rented_product_id' -
rented_product_idMany2one → product.productdomain=[('type', 'in', ('product', 'consu'))]string='Related Rented Product' args: 'product.product'
No public methods.
New fields (2)
-
rental_service_tmpl_idsOne2many → product.templatestring='Rental Services' args: 'product.template', 'rented_product_tmpl_id' -
rented_product_tmpl_idMany2one → product.templatecompute='_compute_rented_product_tmpl_id'inverse='_inverse_rented_product_tmpl_id'store=Truestring='Rented Product' args: 'product.template'
No public methods.
New fields (2)
-
reminder_daysIntegerconfig_parameter='sale_rental.reminder_days'default=3.0string='Rental Reminder Days' -
send_return_reminderBooleanconfig_parameter='sale_rental.send_return_reminder'string='Send Return Reminders'
No public methods.
New fields (0)
No new fields.
Public methods (1)-
action_cancel(self)When the user cancels a rental extension, Odoo writes the initial end date on the return picking
New fields (6)
-
can_sell_rentalBooleanstring='Can Sell from Rental' -
extension_rental_idMany2one → sale.rentalcheck_company=Truereadonly=Truestates={'draft': [('readonly', False)]}string='Rental to Extend' args: 'sale.rental' -
rentalBooleandefault=False -
rental_qtyFloatdigits='Product Unit of Measure'help='Indicate the number of items that will be rented.'readonly=Truestates={'draft': [('readonly', False)]}string='Rental Quantity' -
rental_typeSelectionreadonly=Truestates={'draft': [('readonly', False)]} args: [('new_rental', 'New Rental'), ('rental_extension', 'Rental Extension')] -
sell_rental_idMany2one → sale.rentalcheck_company=Truereadonly=Truestates={'draft': [('readonly', False)]}string='Rental to Sell' args: 'sale.rental'
-
extension_rental_id_change(self)@api.onchange('extension_rental_id') -
rental_product_id_change(self)@api.onchange('product_id', 'rental_qty') -
rental_qty_number_of_days_change(self)@api.onchange('rental_qty', 'number_of_days', 'product_id') -
rental_type_change(self)@api.onchange('rental_type') -
sell_rental_id_change(self)@api.onchange('sell_rental_id')
New fields (21)
-
company_idMany2one → res.companyreadonly=Truerelated='start_order_line_id.company_id'store=Truestring='Company' args: 'res.company' -
end_dateDatecompute='_compute_end_date'help='End Date of the Rental (extensions included), taking into account all the extensions sold to the customer.'store=True -
extension_order_line_idsOne2many → sale.order.linereadonly=Truestring='Rental Extensions' args: 'sale.order.line', 'extension_rental_id' -
in_move_idMany2one → stock.movecompute='_compute_move_and_state'readonly=Truestore=Truestring='Incoming Move' args: 'stock.move' -
in_picking_idMany2one → stock.pickingreadonly=Truerelated='in_move_id.picking_id'string='Receipt' args: 'stock.picking' -
in_stateSelectionreadonly=Truerelated='in_move_id.state'string='In Move State' -
out_move_idMany2one → stock.movecompute='_compute_move_and_state'readonly=Truestore=Truestring='Outgoing Move' args: 'stock.move' -
out_picking_idMany2one → stock.pickingreadonly=Truerelated='out_move_id.picking_id'string='Delivery Order' args: 'stock.picking' -
out_stateSelectionreadonly=Truerelated='out_move_id.state'string='Out Move State' -
partner_idMany2one → res.partnerreadonly=Truerelated='start_order_line_id.order_id.partner_id'store=Truestring='Customer' args: 'res.partner' -
rental_product_idMany2one → product.productreadonly=Truerelated='start_order_line_id.product_id'store=Truestring='Rental Service' args: 'product.product' -
rental_qtyFloatreadonly=Truerelated='start_order_line_id.rental_qty'store=True -
rented_product_idMany2one → product.productreadonly=Truerelated='start_order_line_id.product_id.rented_product_id'store=Truestring='Rented Product' args: 'product.product' -
sell_move_idMany2one → stock.movecompute='_compute_move_and_state'readonly=Truestore=Truestring='Selling Move' args: 'stock.move' -
sell_order_line_idsOne2many → sale.order.linereadonly=Truestring='Sell Rented Product' args: 'sale.order.line', 'sell_rental_id' -
sell_picking_idMany2one → stock.pickingreadonly=Truerelated='sell_move_id.picking_id'string='Sell Delivery Order' args: 'stock.picking' -
sell_stateSelectionreadonly=Truerelated='sell_move_id.state'string='Sell Move State' -
start_dateDatereadonly=Truerelated='start_order_line_id.start_date'store=True -
start_order_idMany2one → sale.orderreadonly=Truerelated='start_order_line_id.order_id'store=Truestring='Rental SO' args: 'sale.order' -
start_order_line_idMany2one → sale.order.linereadonly=Truestring='Rental SO Line' args: 'sale.order.line' -
stateSelectioncompute='_compute_move_and_state'readonly=Truestore=True args: [('ordered', 'Ordered'), ('out', 'Out'), ('sell_progress', 'Sell in progress'), ('sold', 'Sold'), ('in', 'Back In'), ('cancel', 'Cancelled')]
-
cron_send_return_reminders(self)@api.modelSend reminder emails X days before end_date. -
name_get(self)@api.depends('start_order_line_id', 'extension_order_line_ids.end_date', 'extension_order_line_ids.state', 'start_order_line_id.end_date')
New fields (0)
No new fields.
Public methods (1)-
create_demo_and_validate(self)@api.model
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (6)
-
rental_allowedBoolean -
rental_in_location_idMany2one → stock.locationcheck_company=Truedomain="[('usage', '=', 'internal'), ('company_id', '=', company_id)]" args: 'stock.location', 'Rental In' -
rental_out_location_idMany2one → stock.locationcheck_company=Truedomain="[('usage', '=', 'internal'), ('company_id', '=', company_id)]" args: 'stock.location', 'Rental Out' -
rental_route_idMany2one → stock.routestring='Rental Route' args: 'stock.route' -
rental_view_location_idMany2one → stock.locationcheck_company=Truedomain="[('usage', '=', 'view'), ('company_id', '=', company_id)]" args: 'stock.location', 'Parent Rental' -
sell_rented_product_route_idMany2one → stock.routestring='Sell Rented Product Route' args: 'stock.route'
-
write(self, vals)
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
- Status
- Open migration PR — not merged yet for this version
- CI status
- green — ready to merge
- Open since
- 631 days ago
- Last activity
- 72 days ago
- Repository
- OCA/vertical-rental
- Pull request
- [17.0][MIG] sale_rental (#52)
- Status
- Open migration PR — not merged yet for this version
- CI status
- checks failing
- Open since
- 290 days ago
- Last activity
- 30 days ago
- Repository
- OCA/vertical-rental
- Pull request
- [18.0][MIG] sale_rental (#70)