Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[11.0] [MIG] sale_rental #819

Closed
wants to merge 51 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
1906c42
Initial check-in of the rental project.
Jan 28, 2014
b0d9daa
We want to have the date_planned of the regular products that are on …
Jan 29, 2014
4a3ca0b
Restrict to "day" UoM in the constraint.
Jan 29, 2014
fd3d398
Add read access on rental to stock user.
Jan 29, 2014
0c2fb4b
Add POT file
Feb 2, 2014
f599101
Add pt_BR translation, contributed by Caio Barros.
Jul 14, 2014
280c503
[FIX] Missing call to super in _invoice_line_hook
Oct 15, 2014
04087af
Better default values in the wizard for the creation of rental servic…
Nov 18, 2014
462b061
Add a note about the fact that you need to have access to the form vi…
Nov 18, 2014
d85635c
FIX my commit revno 9 on the wizard to create the rental service
Nov 26, 2014
dac8fdc
Port to v8 and new API with several enhancements
May 25, 2015
782cda1
Fix typo
May 25, 2015
f5a9786
Inherit of product_id_change on product_id field, for better usabilit…
May 31, 2015
a855585
Fix flake8 warnings
Jun 2, 2015
b403688
Fix spelling mistake notified by @jbeficent
Jun 2, 2015
140f818
Update POT file and FR translation
Jun 2, 2015
7f4e97d
Take into account the remarks of Jordi Ballester
alexis-via Jun 11, 2015
cfc51f0
FIX Tax on sale order lines
alexis-via Jul 19, 2015
c329bde
FIX the "0" qty by default in sale order lines
alexis-via Jul 31, 2015
cefa7b3
Add missing default oca icons
yvaucher Aug 18, 2015
bec2be6
Slovene translations added
sysadminmatmoz Aug 20, 2015
314dd6c
OCA Transbot updated translations from Transifex
oca-transbot Sep 13, 2015
b070c29
OCA Transbot updated translations from Transifex
oca-transbot Oct 5, 2015
c3058a6
[UPD] prefix versions with 8.0
sbidoul Oct 9, 2015
4cc310a
OCA Transbot updated translations from Transifex
oca-transbot Oct 11, 2015
2ace2b1
[MIG] Make modules uninstallable
pedrobaeza Oct 14, 2015
e62f9c0
[MIG] Rename manifest files
pedrobaeza Oct 6, 2016
fd3c47f
Port sale_start_end_dates and sale_rental (#353)
Nov 8, 2016
71c275b
[10.0][MIG] sale_start_end_dates and sale_rental
dvdhinesh Nov 15, 2016
c66f5ad
[FIX] Product qty on rental pickings
alexis-via May 11, 2017
abd79f0
OCA Transbot updated translations from Transifex
oca-transbot May 20, 2017
36a6def
Auto configure sale_rental module via post_install.py script
alexis-via May 24, 2017
1b5a3ed
OCA Transbot updated translations from Transifex
oca-transbot Jun 10, 2017
54c8d94
OCA Transbot updated translations from Transifex
oca-transbot Jul 15, 2017
e7766cc
OCA Transbot updated translations from Transifex
oca-transbot Nov 25, 2017
a5a27c8
OCA Transbot updated translations from Transifex
oca-transbot Jan 27, 2018
9e24a63
[FIX] sale_rental: fix warning @constrains parameter 'must_have_dates…
alexis-via Apr 4, 2018
daee90c
remove obsolete .pot files [ci skip]
sbidoul Jun 15, 2018
4b12563
fix invalid pt_BR.po
sbidoul Jun 20, 2018
2438430
[UPD] Update sale_rental.pot
oca-travis Jun 20, 2018
15afc01
Translated using Weblate (Nederlands (nl_NL))
thomaspot Jun 20, 2018
e082999
[10.0][FIX] pylint
rousseldenis Sep 4, 2018
ae6ac78
[UPD] Update sale_rental.pot
oca-travis Sep 5, 2018
fb04c07
Update translation files
oca-transbot Nov 24, 2018
84202a5
Translated using Weblate (German)
benbrich Dec 7, 2018
0f0c84c
Translated using Weblate (German)
benbrich Jan 11, 2019
3477ea1
Translated using Weblate (German)
benbrich Jan 25, 2019
63907f1
Translated using Weblate (German)
benbrich Feb 8, 2019
2518168
[MIG] sale_rental: Migration to 11.0
Mar 29, 2019
3597c79
[IMP]sale_rental: Migration to 11.0
Nov 12, 2019
7de2579
[IMP]Adjusting for singleton issue
Dec 25, 2019
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
119 changes: 119 additions & 0 deletions sale_rental/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
===========
Sale Rental
===========

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github
:target: https://github.com/OCA/sale-workflow/tree/11.0/sale_rental
:alt: OCA/sale-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/sale-workflow-11-0/sale-workflow-11-0-sale_rental
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/167/11.0
:alt: Try me on Runbot

|badge1| |badge2| |badge3| |badge4| |badge5|

With this module, you can rent products with Odoo. This module supports:

* regular rentals.
* rental extensions.
* sale of rented products.

**Table of contents**

.. contents::
:local:

Configuration
=============

In the menu *Sales > Products > Product Variants*, on the form view of a stockable product or consumable, in the *Rental* tab, there is a button *Create Rental Service* which starts a wizard to generate the corresponding rental service.

In the menu *Warehouse > Configuration > Warehouses*, on the form view of the warehouse, in the *Technical Information* tab, you will see two additional stock locations: *Rental In* (stock of products to rent) and *Rental Out* (products currently rented). In the *Warehouse Configuration* tab, make sure that the option *Rental Allowed* is checked.

To use the module, you need to have access to the form view of sale order lines. For that, you must add your user to one of these groups:

* Manage Product Packaging
* Properties on lines

Upon module installation, all users are automatically added to the group *Manage Product Packaging*.

Usage
=====

In a sale order line (form view, not tree view), if you select a rental service, you can :

* create a new rental with a start date and an end date: when the sale order is confirmed, it will generate a delivery order and an incoming shipment.
* extend an existing rental: the incoming shipment will be postponed to the end date of the extension.

In a sale order line, if you select a product that has a corresponding rental service, you can decide to sell the rented product that the customer already has. If the sale order is confirmed, the incoming shipment will be cancelled and a new delivery order will be created with a stock move from *Rental Out* to *Customers*.

Please refer to this screencast https://www.youtube.com/watch?v=9o0QrGryBn8 to get a demo of the installation, configuration and use of this module (note that this screencast is for Odoo v7).

.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/167/11.0

Known issues / Roadmap
======================

This module has the following limitations:

* No support for planning/agenda of the rented products
* The unit of measure of the rental services must be *Day* (the rental per hours / per week / per month is not supported for the moment)
* In case of selling rented product, the incoming shipment should be created manually

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/sale-workflow/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/sale-workflow/issues/new?body=module:%20sale_rental%0Aversion:%2011.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
~~~~~~~

* Akretion
* Sodexis

Contributors
~~~~~~~~~~~~

* Alexis de Lattre <[email protected]>
* Sodexis <[email protected]>
* Danh Vo <https://github.com/danhvophuong>

Maintainers
~~~~~~~~~~~

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/sale-workflow <https://github.com/OCA/sale-workflow/tree/11.0/sale_rental>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
8 changes: 8 additions & 0 deletions sale_rental/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Copyright 2014-2016 Akretion (http://www.akretion.com)
# @author Alexis de Lattre <[email protected]>
# Copyright 2016 Sodexis (http://sodexis.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from .hooks import post_init_hook
from . import models
from . import wizard
29 changes: 29 additions & 0 deletions sale_rental/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Copyright 2014-2016 Akretion (http://www.akretion.com)
# @author Alexis de Lattre <[email protected]>
# Copyright 2016 Sodexis (http://sodexis.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
'name': 'Sale Rental',
'version': '11.0.1.0.0',
'category': 'Sales Management',
'license': 'AGPL-3',
'summary': 'Manage Rental of Products',
'author': 'Akretion, Sodexis, Odoo Community Association (OCA)',
'website': 'https://github.com/OCA/sale-workflow',
'depends': ['sale_start_end_dates', 'sale_stock', 'sales_team'],
'data': [
'data/rental_data.xml',
'views/sale_order.xml',
'views/stock.xml',
'views/sale_rental.xml',
'wizard/create_rental_product_view.xml',
'views/product.xml',
'menu/menu.xml',
'security/ir.model.access.csv',
'security/sale_rental_security.xml',
],
'post_init_hook': 'post_init_hook',
'demo': ['demo/rental_demo.xml'],
'installable': True,
}
27 changes: 27 additions & 0 deletions sale_rental/data/rental_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
© 2014-2016 Akretion (http://www.akretion.com/)
@author Alexis de Lattre <[email protected]>
Copyright 2016 Sodexis
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-->

<odoo noupdate="1">

<record id="route_warehouse0_rental" model="stock.location.route">
<field name="name">Rent</field>
<field name="sequence">100</field>
<field name="warehouse_selectable" eval="True"/>
<field name="product_selectable" eval="False"/>
</record>

<record id="route_warehouse0_sell_rented_product" model="stock.location.route">
<field name="name">Sell Rented Product</field>
<field name="sequence">100</field>
</record>

<record id="stock.warehouse0" model="stock.warehouse">
<field name="rental_allowed" eval="True"/>
</record>

</odoo>
64 changes: 64 additions & 0 deletions sale_rental/demo/rental_demo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
© 2014-2016 Akretion (http://www.akretion.com/)
@author Alexis de Lattre <[email protected]>
Copyright 2016 Sodexis
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-->


<odoo noupdate="1">

<record id="rent_product_product_6" model="product.product">
<field name="name">Rental of one iPad Mini</field>
<field name="default_code">RENT-A1232</field>
<field name="categ_id" ref="product.product_category_5"/>
<field name="sale_ok" eval="True"/>
<field name="list_price">5</field>
<field name="type">service</field>
<field name="uom_id" ref="product.product_uom_day"/>
<field name="uom_po_id" ref="product.product_uom_day"/>
<field name="must_have_dates" eval="True"/>
<field name="rented_product_id" ref="product.product_product_6"/>
</record>

<record id="rent_product_product_8" model="product.product">
<field name="name">Rental of one iMac</field>
<field name="default_code">RENT-A1090</field>
<field name="categ_id" ref="product.product_category_5"/>
<field name="sale_ok" eval="True"/>
<field name="list_price">4</field>
<field name="type">service</field>
<field name="uom_id" ref="product.product_uom_day"/>
<field name="uom_po_id" ref="product.product_uom_day"/>
<field name="must_have_dates" eval="True"/>
<field name="rented_product_id" ref="product.product_product_8"/>
</record>

<record id="rent_product_product_25" model="product.product">
<field name="name">Rental of one Laptop E5023</field>
<field name="default_code">RENT-LAP-E5</field>
<field name="categ_id" ref="product.product_category_5"/>
<field name="sale_ok" eval="True"/>
<field name="list_price">6</field>
<field name="type">service</field>
<field name="uom_id" ref="product.product_uom_day"/>
<field name="uom_po_id" ref="product.product_uom_day"/>
<field name="must_have_dates" eval="True"/>
<field name="rented_product_id" ref="product.product_product_25"/>
</record>

<!-- Create inventory on Rental In for these products -->
<record id="rental_inventory" model="stock.inventory">
<field name="name">Inventory for rented products</field>
</record>

<function model="stock.inventory" name="create_demo_and_validate">
<function eval="[[('id', '=', ref('rental_inventory'))]]" model="stock.inventory" name="search"/>
</function>

<record id="base.user_demo" model="res.users">
<field name="groups_id" eval="[(4, ref('product.group_product_variant'))]"/>
</record>

</odoo>
14 changes: 14 additions & 0 deletions sale_rental/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# © 2016-2017 Akretion (Alexis de Lattre <[email protected]>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import SUPERUSER_ID
from odoo.api import Environment


# DONE
def post_init_hook(cr, registry):
env = Environment(cr, SUPERUSER_ID, {})
users = env['res.users'].search(
['|', ('active', '=', True), ('active', '=', False)])
users.write({
'groups_id': [(4, env.ref('product.group_stock_packaging').id)]})
Loading