diff --git a/fleet_rental/__init__.py b/fleet_rental/__init__.py index 0a58443d4..76afd6b4c 100644 --- a/fleet_rental/__init__.py +++ b/fleet_rental/__init__.py @@ -2,10 +2,10 @@ ############################################################################## # # Cybrosys Technologies Pvt. Ltd. -# Copyright (C) 2016-TODAY Cybrosys Technologies(). -# Author: Cybrosys() -# you can modify it under the terms of the GNU LESSER -# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Cybrosys() +# you can modify it under the terms of the GNU AGPL (v3), Version 3. # # It is forbidden to publish, distribute, sublicense, or sell copies # of the Software or modified copies of the Software. @@ -13,11 +13,7 @@ # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. -# -# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE -# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. -# If not, see . +# GNU AGPL (AGPL v3) for more details. # ############################################################################## import models diff --git a/fleet_rental/__openerp__.py b/fleet_rental/__openerp__.py index d317453a1..daa39a81e 100644 --- a/fleet_rental/__openerp__.py +++ b/fleet_rental/__openerp__.py @@ -2,10 +2,10 @@ ############################################################################## # # Cybrosys Technologies Pvt. Ltd. -# Copyright (C) 2016-TODAY Cybrosys Technologies(). -# Author: Cybrosys() -# you can modify it under the terms of the GNU LESSER -# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Cybrosys() +# you can modify it under the terms of the GNU AGPL (v3), Version 3. # # It is forbidden to publish, distribute, sublicense, or sell copies # of the Software or modified copies of the Software. @@ -13,22 +13,19 @@ # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. -# -# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE -# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. -# If not, see . +# GNU AGPL (AGPL v3) for more details. # ############################################################################## { 'name': 'Fleet Rental Management', + 'version': '9.0.2.0.0', 'summary': """The Complete Solution for a Car/Vehicle Rental System""", - 'version': '9.0.1.0.0', + 'description': "Module Helps You To Manage Rental Contracts", + 'category': "Industries", 'author': 'Cybrosys Techno Solutions', - 'website': "http://www.cybrosys.com", 'company': 'Cybrosys Techno Solutions', - "category": "Industries", - 'depends': ['base', 'account', 'fleet', 'mail'], + 'website': "http://www.cybrosys.com", + 'depends': ['base', 'account', 'fleet', 'mail', 'web_widget_color'], 'data': ['security/rental_security.xml', 'security/ir.model.access.csv', 'views/car_rental_view.xml', @@ -40,7 +37,7 @@ 'demo': [ ], 'images': ['static/description/banner.jpg'], - 'license': 'LGPL-3', + 'license': 'AGPL-3', 'installable': True, - 'application': False, + 'application': True, } diff --git a/fleet_rental/data/fleet_rental_data.xml b/fleet_rental/data/fleet_rental_data.xml index f7e2e553a..7bd7e7f35 100644 --- a/fleet_rental/data/fleet_rental_data.xml +++ b/fleet_rental/data/fleet_rental_data.xml @@ -5,10 +5,12 @@ Fleet Rental Service service + Rent 3 + User can only see his/her vehicle @@ -17,7 +19,720 @@ - [] + [] + + + + + iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABHNCSVQICAgIfAhkiAAAAF96VFh0 +UmF3IHByb2ZpbGUgdHlwZSBBUFAxAAAImeNKT81LLcpMVigoyk/LzEnlUgADYxMuE0sTS6NEAwMD +CwMIMDQwMDYEkkZAtjlUKNEABZiYm6UBoblZspkpiM8FAE+6FWgbLdiMAAAgAElEQVR4nOy9ebQd +x3kf+Kvq7rvf+1asBEiQBAHuokhKokyQFLiYki3JUiLJSywfy0kc2c4Z2Y493o8zJ1GOk+NJ4jlj +j8exfEZOvESSY8uxFMtaQIoiAXAVKQIQse/b2++7++2qb/6opav7Lu89EKQewP4OLrq7ul93VXV9 +3/f7lqoGUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRS +SimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkop +pZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWU +UkoppZRSSiklh9j3ugIpXRoREXvhhRf8kZERPj09zWu1WmbNmjW3ZzKZO4Ig2Mo538w5X+d53gTn +vMI5L3iel+WcB5xzHwDnnDMiAikSQohQStkVQrSklHUhxIIQYlpKea7b7Z5otVqvNZvN71Sr1WNj +Y2PdyclJefr0afGe97xHMMboe90nKa2cUgFwhdCuXbv8XC4X1Gq1TLFY3FAoFB7K5XL3+L5/M+f8 +2mw2uyaTyRQ8z7N/wxiLbZP7/YiIevbNVkqJTqeDTqdT63a75zudzrFOp7NvcXFxb6PReN7zvKlS +qdRptVrdnTt3hpet8Sm9YZQKgFVKRMS/+tWv5oMgyGez2W2VSuUD2Wz23iAItudyuQ1BEPiMMZgf +sDJGv4T6xPZd4RCGIRqNRrfdbp9st9uv1uv1Z+r1+lc9zzvV7Xabjz32WJMxJi9rhVK6LJQKgFVE +n/vc57w1a9aUAUyOjo6+P5/PP5rL5e7M5XLXZDIZ7jK6u09EfRn+cgkBl/ndMvNsc2x+QgjU63XR +bDaPNxqN5+r1+lc6nc43Pc+bnZqaWvzYxz4mLkvFUnrdlAqAVUBPPfXUGIAN5XL5RwqFwsOFQuH2 +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 + diff --git a/fleet_rental/data/fleet_rental_data.xml~ b/fleet_rental/data/fleet_rental_data.xml~ deleted file mode 100644 index 9a086c072..000000000 --- a/fleet_rental/data/fleet_rental_data.xml~ +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Fleet Rental Service - service - - - Rent - 3 - - - User can only see his/her vehicle - - - - - - - - - \ No newline at end of file diff --git a/fleet_rental/doc/changelog.rst b/fleet_rental/doc/changelog.rst new file mode 100644 index 000000000..7f1b2ec68 --- /dev/null +++ b/fleet_rental/doc/changelog.rst @@ -0,0 +1,22 @@ +Changelog +========= +* Nilmar Shereef contact: shereef@cybrosys.in +* Jesni Banu contact: jesni@cybrosys.in + +`9.0.2.0.0` +----------- +- Pre Invoices Feature Added: Contract may be past record. +- Smart Buttons: Related invoices in Rental Contracts. +- Image of Vehicle in Rental Contract. +- Date Validations in rental record. +- Pending Invoice validations added. +- Reporting on Rental Management. +- Coloured Tree View for Rentals. +- Coloured Tree View for Rentals. +- Changed Menus: accessories/tools. +- Security changed. +- Checking list invoicing changed. +- Field changed in recurrent invoice line. +- Company Image added. +- Colour picker widget added. + diff --git a/fleet_rental/models/__init__.py b/fleet_rental/models/__init__.py index 8280b8335..b4c2922d4 100644 --- a/fleet_rental/models/__init__.py +++ b/fleet_rental/models/__init__.py @@ -2,10 +2,10 @@ ############################################################################## # # Cybrosys Technologies Pvt. Ltd. -# Copyright (C) 2016-TODAY Cybrosys Technologies(). -# Author: Cybrosys() -# you can modify it under the terms of the GNU LESSER -# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Cybrosys() +# you can modify it under the terms of the GNU AGPL (v3), Version 3. # # It is forbidden to publish, distribute, sublicense, or sell copies # of the Software or modified copies of the Software. @@ -13,12 +13,10 @@ # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. -# -# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE -# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. -# If not, see . +# GNU AGPL (AGPL v3) for more details. # ############################################################################## import car_rental +import fleet + diff --git a/fleet_rental/models/car_rental.py b/fleet_rental/models/car_rental.py index 25428d9c7..1903e7657 100644 --- a/fleet_rental/models/car_rental.py +++ b/fleet_rental/models/car_rental.py @@ -2,10 +2,10 @@ ############################################################################## # # Cybrosys Technologies Pvt. Ltd. -# Copyright (C) 2016-TODAY Cybrosys Technologies(). -# Author: Cybrosys() -# you can modify it under the terms of the GNU LESSER -# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Cybrosys() +# you can modify it under the terms of the GNU AGPL (v3), Version 3. # # It is forbidden to publish, distribute, sublicense, or sell copies # of the Software or modified copies of the Software. @@ -13,14 +13,10 @@ # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. -# -# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE -# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. -# If not, see . +# GNU AGPL (AGPL v3) for more details. # ############################################################################## -from datetime import datetime, date +from datetime import datetime, date, timedelta from openerp import models, fields, api, _ from openerp.exceptions import UserError, Warning @@ -30,24 +26,48 @@ class CarRentalContract(models.Model): _description = 'Fleet Rental Management' _inherit = ['mail.thread', 'ir.needaction_mixin'] - image = fields.Binary(related='vehicle_id.image', string="Logo") + @api.onchange('rent_start_date', 'rent_end_date') + def check_availability(self): + self.vehicle_id = '' + fleet_obj = self.env['fleet.vehicle'].search([]) + for i in fleet_obj: + for each in i.rental_reserved_time: + if each.date_from <= self.rent_start_date <= each.date_to: + i.write({'rental_check_availability': False}) + elif self.rent_start_date < each.date_from: + if each.date_from <= self.rent_end_date <= each.date_to: + i.write({'rental_check_availability': False}) + elif self.rent_end_date > each.date_to: + i.write({'rental_check_availability': False}) + else: + i.write({'rental_check_availability': True}) + else: + i.write({'rental_check_availability': True}) + + image = fields.Binary(related='vehicle_id.image', string="Image of Vehicle") + reserved_fleet_id = fields.Many2one('rental.fleet.reserved', invisible=True, copy=False) image_medium = fields.Binary(related='vehicle_id.image_medium', string="Logo (medium)") image_small = fields.Binary(related='vehicle_id.image_small', string="Logo (small)") name = fields.Char(string="Name", default="Draft Contract", readonly=True, copy=False) - customer_id = fields.Many2one('res.partner', required=True, help="Customer") - vehicle_id = fields.Many2one('fleet.vehicle', string="Vehicle", required=True, help="Vehicle", copy=False) - car_brand = fields.Char(string="Fleet Brand", size=50) - car_color = fields.Char(string="Fleet Color", size=50) - cost = fields.Float(string="Rent Cost", help="This fields is to determine the cost of rent per hour", required=True) + customer_id = fields.Many2one('res.partner', required=True, string='Customer', help="Customer") + vehicle_id = fields.Many2one('fleet.vehicle', string="Vehicle", required=True, help="Vehicle", + readonly=True, + states={'draft': [('readonly', False)]} + ) + car_brand = fields.Many2one('fleet.vehicle.model.brand', string="Fleet Brand", size=50, + related='vehicle_id.model_id.brand_id', store=True, readonly=True) + car_color = fields.Char(string="Fleet Color", size=50, related='vehicle_id.color', store=True, copy=False, + default='#FFFFFF', readonly=True) + cost = fields.Float(string="Rent Cost", help="This fields is to determine the cost of rent", required=True) rent_start_date = fields.Date(string="Rent Start Date", required=True, default=datetime.today(), - help="Starting date of your contract", track_visibility='onchange') - rent_end_date = fields.Date(string="Rent End Date", required=True, help="Ending date of your contract", + help="Start date of contract", track_visibility='onchange') + rent_end_date = fields.Date(string="Rent End Date", required=True, help="End date of contract", track_visibility='onchange') - state = fields.Selection([('draft', 'Draft'), ('running', 'Running'), ('cancel', 'Cancel'), + state = fields.Selection([('draft', 'Draft'), ('reserved', 'Reserved'), ('running', 'Running'), ('cancel', 'Cancel'), ('checking', 'Checking'), ('invoice', 'Invoice'), ('done', 'Done')], string="State", default="draft", copy=False, track_visibility='onchange') - notes = fields.Text(string="Details") - cost_generated = fields.Float('Recurring Cost', + notes = fields.Text(string="Details & Notes") + cost_generated = fields.Float(string='Recurring Cost', help="Costs paid at regular intervals, depending on the cost frequency") cost_frequency = fields.Selection([('no', 'No'), ('daily', 'Daily'), ('weekly', 'Weekly'), ('monthly', 'Monthly'), ('yearly', 'Yearly')], string="Recurring Cost Frequency", @@ -58,22 +78,51 @@ class CarRentalContract(models.Model): default=lambda self: self.env['account.account'].search([('id', '=', 17)])) recurring_line = fields.One2many('fleet.rental.line', 'rental_number', readonly=True, help="Recurring Invoices", copy=False) - first_payment = fields.Float(string='First Payment', help="Advance Payment", track_visibility='onchange') + first_payment = fields.Float(string='First Payment', + help="Transaction/Office/Contract charge amount, must paid by customer side other " + "than recurrent payments", + track_visibility='onchange', + required=True) first_payment_inv = fields.Many2one('account.invoice', copy=False) first_invoice_created = fields.Boolean(string="First Invoice Created", invisible=True, copy=False) attachment_ids = fields.Many2many('ir.attachment', 'car_rent_checklist_ir_attachments_rel', 'rental_id', 'attachment_id', string="Attachments", help="Images of the vehicle before contract/any attachments") - checklist_line = fields.One2many('car.rental.checklist', 'checklist_number', string="Checklist", help="Check List") - total = fields.Float(string="Total(Tools)", readonly=True, copy=False) - tools_missing_cost = fields.Float(string="Tools missing cost", readonly=True, copy=False) - damage_cost = fields.Float(string="Damage cost", copy=False) - damage_cost_sub = fields.Float(string="Damage cost", readonly=True, copy=False) - total_cost = fields.Float(string="Total cost", readonly=True, copy=False) + checklist_line = fields.One2many('car.rental.checklist', 'checklist_number', string="Checklist", + help="Facilities/Accessories, That should verify when closing the contract.", + states={'invoice': [('readonly', True)], + 'done': [('readonly', True)], + 'cancel': [('readonly', True)]}) + total = fields.Float(string="Total (Accessories/Tools)", readonly=True, copy=False) + tools_missing_cost = fields.Float(string="Missing Cost", readonly=True, copy=False, + help='This is the total amount of missing tools/accessories') + damage_cost = fields.Float(string="Damage Cost", copy=False) + damage_cost_sub = fields.Float(string="Damage Cost", readonly=True, copy=False) + total_cost = fields.Float(string="Total", readonly=True, copy=False) invoice_count = fields.Integer(compute='_invoice_count', string='# Invoice', copy=False) + check_verify = fields.Boolean(compute='check_action_verify', copy=False) sales_person = fields.Many2one('res.users', string='Sales Person', default=lambda self: self.env.uid, track_visibility='always') + @api.multi + def action_run(self): + self.state = 'running' + + @api.multi + @api.depends('checklist_line.checklist_active') + def check_action_verify(self): + flag = 0 + for each in self: + for i in each.checklist_line: + if i.checklist_active: + continue + else: + flag = 1 + if flag == 1: + each.check_verify = False + else: + each.check_verify = True + @api.constrains('rent_start_date', 'rent_end_date') def validate_dates(self): if self.rent_end_date < self.rent_start_date: @@ -100,10 +149,14 @@ class CarRentalContract(models.Model): @api.constrains('state') def state_changer(self): if self.state == "running": - state_id = self.env['fleet.vehicle.state'].search([('name', '=', "Rent")]).id + state_id = self.env.ref('fleet_rental.vehicle_state_rent').id self.vehicle_id.write({'state_id': state_id}) - elif self.state == "done": - state_id = self.env['fleet.vehicle.state'].search([('name', '=', "Active")]).id + elif self.state == "cancel": + state_id = self.env.ref('fleet.vehicle_state_active').id + self.vehicle_id.write({'state_id': state_id}) + elif self.state == "invoice": + self.rent_end_date = fields.datetime.now() + state_id = self.env.ref('fleet.vehicle_state_active').id self.vehicle_id.write({'state_id': state_id}) @api.constrains('checklist_line', 'damage_cost') @@ -119,6 +172,76 @@ class CarRentalContract(models.Model): self.damage_cost_sub = self.damage_cost self.total_cost = tools_missing_cost + self.damage_cost + @api.multi + def fleet_scheduler1(self, rent_date): + inv_obj = self.env['account.invoice'] + inv_line_obj = self.env['account.invoice.line'] + recurring_obj = self.env['fleet.rental.line'] + start_date = datetime.strptime(self.rent_start_date, '%Y-%m-%d').date() + end_date = datetime.strptime(self.rent_end_date, '%Y-%m-%d').date() + supplier = self.customer_id + inv_data = { + 'name': supplier.name, + 'reference': supplier.name, + 'account_id': supplier.property_account_payable_id.id, + 'partner_id': supplier.id, + 'currency_id': self.account_type.company_id.currency_id.id, + 'journal_id': self.journal_type.id, + 'origin': self.name, + 'company_id': self.account_type.company_id.id, + 'date_due': self.rent_end_date, + } + inv_id = inv_obj.create(inv_data) + product_id = self.env['product.product'].search([("name", "=", "Fleet Rental Service")]) + if product_id.property_account_income_id.id: + income_account = product_id.property_account_income_id + elif product_id.categ_id.property_account_income_categ_id.id: + income_account = product_id.categ_id.property_account_income_categ_id + else: + raise UserError( + _('Please define income account for this product: "%s" (id:%d).') % (product_id.name, + product_id.id)) + recurring_data = { + 'name': self.vehicle_id.name, + 'date_today': rent_date, + 'account_info': income_account.name, + 'rental_number': self.id, + 'recurring_amount': self.cost_generated, + 'invoice_number': inv_id.id, + 'invoice_ref': inv_id.id, + } + recurring_obj.create(recurring_data) + inv_line_data = { + 'name': self.vehicle_id.name, + 'account_id': income_account.id, + 'price_unit': self.cost_generated, + 'quantity': 1, + 'product_id': product_id.id, + 'invoice_id': inv_id.id, + } + inv_line_obj.create(inv_line_data) + mail_content = _( + '

Reminder Recurrent Payment!


Hi %s,
This is to remind you that the ' + 'recurrent payment for the ' + 'rental contract has to be done.' + 'Please make the payment at the earliest.' + '

' + 'Please find the details below:

' + '' + '' + '' + '
Contract Ref %s
Amount %s
Due Date %s
Responsible Person %s, %s
') % \ + (self.customer_id.name, self.name, inv_id.amount_total, inv_id.date_due, + inv_id.user_id.name, + inv_id.user_id.mobile) + main_content = { + 'subject': "Reminder Recurrent Payment!", + 'author_id': self.env.user.partner_id.id, + 'body_html': mail_content, + 'email_to': self.customer_id.email, + } + self.env['mail.mail'].create(main_content).send() + @api.model def fleet_scheduler(self): inv_obj = self.env['account.invoice'] @@ -172,7 +295,8 @@ class CarRentalContract(models.Model): 'account_info': income_account.name, 'rental_number': records.id, 'recurring_amount': records.cost_generated, - 'invoice_number': inv_id.id + 'invoice_number': inv_id.id, + 'invoice_ref': inv_id.id, } recurring_obj.create(recurring_data) inv_line_data = { @@ -182,6 +306,7 @@ class CarRentalContract(models.Model): 'quantity': 1, 'product_id': product_id.id, 'invoice_id': inv_id.id, + } inv_line_obj.create(inv_line_data) mail_content = _( @@ -195,22 +320,25 @@ class CarRentalContract(models.Model): '' '' '
Amount %s
Due Date %s
Responsible Person %s, %s
') % \ - (self.customer_id.name, self.name, inv_id.amount_total, inv_id.date_due, inv_id.user_id.name, + (self.customer_id.name, self.name, inv_id.amount_total, inv_id.date_due, + inv_id.user_id.name, inv_id.user_id.mobile) main_content = { 'subject': "Reminder Recurrent Payment!", 'author_id': self.env.user.partner_id.id, 'body_html': mail_content, 'email_to': self.customer_id.email, - } self.env['mail.mail'].create(main_content).send() else: - records.state = "checking" + if self.state == 'running': + records.state = "checking" @api.multi def action_verify(self): self.state = "invoice" + self.reserved_fleet_id.unlink() + self.rent_end_date = fields.datetime.now() if self.total_cost != 0: inv_obj = self.env['account.invoice'] inv_line_obj = self.env['account.invoice.line'] @@ -270,11 +398,33 @@ class CarRentalContract(models.Model): @api.multi def action_confirm(self): - self.state = "running" + check_availability = 0 + for each in self.vehicle_id.rental_reserved_time: + if each.date_from <= self.rent_start_date <= each.date_to: + check_availability = 1 + elif self.rent_start_date < each.date_from: + if each.date_from <= self.rent_end_date <= each.date_to: + check_availability = 1 + elif self.rent_end_date > each.date_to: + check_availability = 1 + else: + check_availability = 0 + else: + check_availability = 0 + if check_availability == 0: + reserved_id = self.vehicle_id.rental_reserved_time.create({'customer_id': self.customer_id.id, + 'date_from': self.rent_start_date, + 'date_to': self.rent_end_date, + 'reserved_obj': self.vehicle_id.id + }) + self.write({'reserved_fleet_id': reserved_id.id}) + else: + raise Warning('Sorry This vehicle is already booked by another customer') + self.state = "reserved" sequence_code = 'car.rental.sequence' order_date = self.create_date order_date = order_date[0:10] - self.name = self.env['ir.sequence']\ + self.name = self.env['ir.sequence'] \ .with_context(ir_sequence_date=order_date).next_by_code(sequence_code) mail_content = _('

Order Confirmed!


Hi %s,
This is to notify that your rental contract has ' 'been confirmed.

' @@ -282,21 +432,22 @@ class CarRentalContract(models.Model): '
' '' '
Reference Number %s
Time Range %s to %s
Vehicle %s
Point Of Contact %s , %s
') % \ - (self.customer_id.name, self.name, self.rent_start_date, self.rent_end_date, - self.vehicle_id.name, self.sales_person.name, self.sales_person.mobile) + (self.customer_id.name, self.name, self.rent_start_date, self.rent_end_date, + self.vehicle_id.name, self.sales_person.name, self.sales_person.mobile) main_content = { 'subject': _('Confirmed: %s - %s') % (self.name, self.vehicle_id.name), 'author_id': self.env.user.partner_id.id, 'body_html': mail_content, 'email_to': self.customer_id.email, - } self.env['mail.mail'].create(main_content).send() @api.multi def action_cancel(self): self.state = "cancel" + if self.reserved_fleet_id: + self.reserved_fleet_id.unlink() @api.multi def force_checking(self): @@ -340,11 +491,20 @@ class CarRentalContract(models.Model): rent_date = datetime.strptime(each.rent_start_date, "%Y-%m-%d").date() if each.cost_frequency != 'no' and rent_date < date.today(): rental_days = (date.today() - rent_date).days - for each1 in range(1, rental_days): - each.fleet_scheduler() - recurrent_obj = self.env.ref('fleet_rental.cron_scheduler_for_fleet') - if datetime.today() > datetime.strptime(recurrent_obj.nextcall, "%Y-%m-%d %H:%M:%S"): - each.fleet_scheduler() + if each.cost_frequency == 'weekly': + rental_days = int(rental_days / 7) + if each.cost_frequency == 'monthly': + rental_days = int(rental_days / 30) + for each1 in range(0, rental_days + 1): + if rent_date > datetime.strptime(each.rent_end_date, "%Y-%m-%d").date(): + break + each.fleet_scheduler1(rent_date) + if each.cost_frequency == 'daily': + rent_date = rent_date + timedelta(days=1) + if each.cost_frequency == 'weekly': + rent_date = rent_date + timedelta(days=7) + if each.cost_frequency == 'monthly': + rent_date = rent_date + timedelta(days=30) if self.first_payment != 0: self.first_invoice_created = True @@ -386,9 +546,9 @@ class CarRentalContract(models.Model): '

First Payment Received!


Hi %s,
This is to notify that your first payment has ' 'been received.

' 'Please find the details below:

' - '
' - '
Contract Ref %s
Amount %s
') % \ - (self.customer_id.name, self.name, inv_id.amount_total) + '
' + '
Invoice Number %s
Date %s
Amount %s
') % \ + (self.customer_id.name, inv_id.number, inv_id.date_invoice, inv_id.amount_total) main_content = { 'subject': _('Payment Received: %s') % inv_id.number, 'author_id': self.env.user.partner_id.id, @@ -421,13 +581,6 @@ class CarRentalContract(models.Model): else: raise Warning("Please enter advance amount to make first payment") - @api.onchange('vehicle_id') - def update_fields(self): - if self.vehicle_id: - obj = self.env['fleet.vehicle'].search([('name', '=', self.vehicle_id.name)]) - self.car_brand = obj.model_id.brand_id.name - self.car_color = obj.color - class FleetRentalLine(models.Model): _name = 'fleet.rental.line' @@ -437,8 +590,10 @@ class FleetRentalLine(models.Model): account_info = fields.Char('Account') recurring_amount = fields.Float('Amount') rental_number = fields.Many2one('car.rental.contract', string='Rental Number') - payment_info = fields.Char(string='Payment Stage', compute='paid_info') + payment_info = fields.Char(compute='paid_info', string='Payment Stage', default='draft') invoice_number = fields.Integer(string='Invoice ID') + invoice_ref = fields.Many2one('account.invoice', string='Invoice Ref') + date_due = fields.Date(string='Due Date', related='invoice_ref.date_due') @api.multi @api.depends('payment_info') @@ -454,8 +609,8 @@ class CarRentalChecklist(models.Model): _name = 'car.rental.checklist' name = fields.Many2one('car.tools', string="Name") - checklist_active = fields.Boolean(string="Active", default=False) - checklist_number = fields.Many2one('car.rental.contract', string="Checklist number") + checklist_active = fields.Boolean(string="Available", default=True) + checklist_number = fields.Many2one('car.rental.contract', string="Checklist Number") price = fields.Float(string="Price") @api.onchange('name') diff --git a/fleet_rental/models/fleet.py b/fleet_rental/models/fleet.py new file mode 100644 index 000000000..ff31d0165 --- /dev/null +++ b/fleet_rental/models/fleet.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Cybrosys() +# you can modify it under the terms of the GNU AGPL (v3), Version 3. +# +# It is forbidden to publish, distribute, sublicense, or sell copies +# of the Software or modified copies of the Software. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AGPL (AGPL v3) for more details. +# +############################################################################## +from openerp import models, fields + + +class FleetReservedTime(models.Model): + _name = "rental.fleet.reserved" + _description = "Reserved Time" + + customer_id = fields.Many2one('res.partner', string='Customer') + date_from = fields.Date(string='Reserved Date From') + date_to = fields.Date(string='Reserved Date To') + reserved_obj = fields.Many2one('fleet.vehicle') + + +class EmployeeFleet(models.Model): + _inherit = 'fleet.vehicle' + + rental_check_availability = fields.Boolean(default=True, copy=False) + color = fields.Char(default='#FFFFFF', string='Color') + rental_reserved_time = fields.One2many('rental.fleet.reserved', 'reserved_obj', String='Reserved Time', readonly=1, + ondelete='cascade') + fuel_type = fields.Selection([('gasoline', 'Gasoline'), + ('diesel', 'Diesel'), + ('electric', 'Electric'), + ('hybrid', 'Hybrid'), + ('petrol', 'Petrol')], + 'Fuel Type', help='Fuel Used by the vehicle') + + _sql_constraints = [('vin_sn_unique', 'unique (vin_sn)', "Chassis Number already exists !"), + ('license_plate_unique', 'unique (license_plate)', "License plate already exists !")] diff --git a/fleet_rental/reports/rental_report.py b/fleet_rental/reports/rental_report.py index 640403e1f..5822a0e80 100644 --- a/fleet_rental/reports/rental_report.py +++ b/fleet_rental/reports/rental_report.py @@ -1,4 +1,21 @@ # -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Cybrosys() +# you can modify it under the terms of the GNU AGPL (v3), Version 3. +# +# It is forbidden to publish, distribute, sublicense, or sell copies +# of the Software or modified copies of the Software. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AGPL (AGPL v3) for more details. +# +############################################################################## from openerp import models, fields, tools diff --git a/fleet_rental/security/ir.model.access.csv b/fleet_rental/security/ir.model.access.csv index 3f29f9968..61947573c 100644 --- a/fleet_rental/security/ir.model.access.csv +++ b/fleet_rental/security/ir.model.access.csv @@ -9,12 +9,25 @@ fleet_car_tools_access_right_user,fleet_car_tools_access_right,model_car_tools,r fleet_car_tools_contract_access_right_manager,fleet_car_tools_access_right1,model_car_tools,fleet.group_fleet_manager,1,1,1,1 fleet_report_fleet_rental_access_right_user,fleet_report_fleet_rental_access_right,model_report_fleet_rental,rental_group_user,1,1,1,0 fleet_report_fleet_rental_access_right_manager,fleet_report_fleet_rental_access_right1,model_report_fleet_rental,fleet.group_fleet_manager,1,1,1,1 -fleet_vehicle_model_access_right_user,fleet_vehicle_model_access_right,fleet.model_fleet_vehicle_model,rental_group_user,1,1,1,0 -fleet_vehicle_model_brand_access_right_user,fleet_vehicle_model_brand_access_right,fleet.model_fleet_vehicle_model_brand,rental_group_user,1,1,1,0 -fleet_vehicle_access_right_user1,fleet_vehicle_access_right,fleet.model_fleet_vehicle,rental_group_user,1,1,1,0 -fleet_vehicle_access_right_user,fleet_vehicle_access_right",fleet.model_fleet_vehicle,fleet.group_fleet_user,1,1,1,0 fleet_cron_right_user,fleet_vehicle_access_right1,base.model_ir_cron,rental_group_user,1,1,1,0 fleet_cron_right_user1,fleet_vehicle_access_right11,base.model_ir_cron,fleet.group_fleet_manager,1,1,1,0 +fleet_vehicle_model_access_right_user,fleet_vehicle_model_access_right,fleet.model_fleet_vehicle_model,rental_group_user,1,1,1,0 +fleet_vehicle_model_brand_access_right_user,fleet_vehicle_model_brand_access_right,fleet.model_fleet_vehicle_model_brand,rental_group_user,1,1,1,0 +fleet_vehicle_access_right_user,fleet_vehicle_access_right,fleet.model_fleet_vehicle,rental_group_user,1,1,1,0 +fleet_vehicle_log_fuel_access_right_rental_user,fleet_vehicle_log_fuel_access_right_rental_user,fleet.model_fleet_vehicle_log_fuel,rental_group_user,1,1,1,1 +fleet_vehicle_odometer_access_right_rental_user,fleet_vehicle_odometer_access_right_rental_user,fleet.model_fleet_vehicle_odometer,rental_group_user,1,1,1,1 +fleet_vehicle_log_services_access_right_rental_user,fleet_vehicle_log_services_access_right_rental_user,fleet.model_fleet_vehicle_log_services,fleet.group_fleet_manager,1,1,1,1 +fleet_rental_fleet_reserved_access_right_user,fleet_rental_fleet_reserved_access_right,model_rental_fleet_reserved,rental_group_user,1,1,1,0 +fleet_rental_fleet_reserved_access_right_manager,fleet_rental_fleet_reserved_access_right1,model_rental_fleet_reserved,fleet.group_fleet_manager,1,1,1,1 + + + + + + + + + diff --git a/fleet_rental/static/description/check_list_form.png b/fleet_rental/static/description/check_list_form.png index e52026090..d1162803a 100644 Binary files a/fleet_rental/static/description/check_list_form.png and b/fleet_rental/static/description/check_list_form.png differ diff --git a/fleet_rental/static/description/check_list_tree.png b/fleet_rental/static/description/check_list_tree.png index febc4704b..68084e73a 100644 Binary files a/fleet_rental/static/description/check_list_tree.png and b/fleet_rental/static/description/check_list_tree.png differ diff --git a/fleet_rental/static/description/checklist_contract.png b/fleet_rental/static/description/checklist_contract.png index ead008916..d6b2a4e25 100644 Binary files a/fleet_rental/static/description/checklist_contract.png and b/fleet_rental/static/description/checklist_contract.png differ diff --git a/fleet_rental/static/description/contract_menu.png b/fleet_rental/static/description/contract_menu.png index cb80cbea7..ad7c238dd 100644 Binary files a/fleet_rental/static/description/contract_menu.png and b/fleet_rental/static/description/contract_menu.png differ diff --git a/fleet_rental/static/description/index.html b/fleet_rental/static/description/index.html index 54eb37c98..9a50c8ce6 100644 --- a/fleet_rental/static/description/index.html +++ b/fleet_rental/static/description/index.html @@ -1,7 +1,7 @@

Fleet/Vehicle Rental Management

-

This module helps with an opportunity to give the vehicles for Rent.

+

This module helps with an opportunity to give the vehicles like car,van,bike,jeep etc.. for Rent.

Cybrosys Technologies

@@ -18,6 +18,7 @@ Contract Payment Validations.
Detailed Fleet Rental Analysis Report.
Access Rights From Multiple Level.
+ Flexible for further customization.
@@ -27,7 +28,7 @@

Overview

- This module is an application for Vehicle Rental System by Cybrosys Technologies which helps in managing the rental of fleet/vehicle. + This module is an application for Vehicle Rental System which helps in managing the rental of vehicles like car,van,bike, jeep etc... It manages fleet/vehicle property by extending the basic fleet module of Odoo. Currently fleet module does not have any connection with accounting module. But in this module, we integrate the module with accounting also. @@ -198,30 +199,35 @@

+
+
You Looking for a Documentation of this Application.?
+
Give a Request Mail to:    odoo@cybrosys.com
+
+
-

Need Any Help?

- +

Need Any Help?

+
diff --git a/fleet_rental/static/description/menu_items.png b/fleet_rental/static/description/menu_items.png index c80ff0a07..bec6e5c16 100644 Binary files a/fleet_rental/static/description/menu_items.png and b/fleet_rental/static/description/menu_items.png differ diff --git a/fleet_rental/static/description/rental_inv.png b/fleet_rental/static/description/rental_inv.png index def84f9bb..d8cb870d2 100644 Binary files a/fleet_rental/static/description/rental_inv.png and b/fleet_rental/static/description/rental_inv.png differ diff --git a/fleet_rental/static/description/rental_validation.png b/fleet_rental/static/description/rental_validation.png index 665b0acbe..b94d451bd 100644 Binary files a/fleet_rental/static/description/rental_validation.png and b/fleet_rental/static/description/rental_validation.png differ diff --git a/fleet_rental/static/description/report.png b/fleet_rental/static/description/report.png index f6a4d8ff3..fadbb8d05 100644 Binary files a/fleet_rental/static/description/report.png and b/fleet_rental/static/description/report.png differ diff --git a/fleet_rental/views/car_rental_view.xml b/fleet_rental/views/car_rental_view.xml index eea4a4003..7b6858787 100644 --- a/fleet_rental/views/car_rental_view.xml +++ b/fleet_rental/views/car_rental_view.xml @@ -24,6 +24,21 @@ + + fleet.vehicle.form.inherit.view + fleet.vehicle + + + + + + + + + + + + car.contract.result.form car.rental.contract @@ -33,8 +48,10 @@
- + + + + @@ -53,7 +56,7 @@ - + @@ -64,7 +67,7 @@ car.rental.contract form tree,form - [('state', 'in', ('running', 'checking')), ('sales_person','=', uid)] + [('state', 'in', ('running', 'checking'))]