diff --git a/odex25_fleet/odex_fleet/models/form_renew.py b/odex25_fleet/odex_fleet/models/form_renew.py index 869b82c5f..55aee5c21 100644 --- a/odex25_fleet/odex_fleet/models/form_renew.py +++ b/odex25_fleet/odex_fleet/models/form_renew.py @@ -36,26 +36,26 @@ class FormRenew(models.Model): default=lambda self: self.env.user.company_id) vehicle_id = fields.Many2one('fleet.vehicle', string="Vehicle", ) - cost = fields.Float( string="Renew Cost", ) - date = fields.Date(string="Request Date",default=fields.Date.context_today,help="date of current maintenance request") + cost = fields.Float(string="Renew Cost", ) + date = fields.Date(string="Request Date", default=fields.Date.context_today, + help="date of current maintenance request") user_id = fields.Many2one('res.users', string='Responsible', required=False, default=lambda self: self.env.user) end_date = fields.Date(string="End Date") new_date = fields.Date(string="New End Date") - branch_id = fields.Many2one('res.branch', string="Branch", default=lambda self: self.env.user.branch_id) + branch_id = fields.Many2one('hr.department', string="Branch") account_id = fields.Many2one('account.account', string="Account") invoice_id = fields.Many2one('account.move', string="Invoice", copy=False) partner_id = fields.Many2one('res.partner', string="Service Provider") tax_id = fields.Many2one('account.tax', string='Tax', ondelete='restrict') penalty_cost = fields.Float() - edit_access = fields.Boolean(compute="get_access",) + edit_access = fields.Boolean(compute="get_access", ) def get_access(self): for rec in self: rec.edit_access = False - if rec.state == 'confirm' and self.env.user.has_group('odex_fleet.fleet_group_account'): + if rec.state == 'confirm' and self.env.user.has_group('odex_fleet.fleet_group_account'): rec.edit_access = True - @api.onchange('vehicle_id') def get_fleet_data(self): if self.vehicle_id: @@ -67,14 +67,13 @@ class FormRenew(models.Model): invoice = self.env['account.move'].sudo().create({ 'partner_id': self.partner_id.id, 'currency_id': self.env.user.company_id.currency_id.id, - 'name': 'Fleet Service Cost Invoice ', # 'account_id': self.partner_id.property_account_payable_id.id, 'branch_id': self.vehicle_id.branch_id.id, 'move_type': 'in_invoice', 'invoice_date': datetime.now().today(), 'invoice_line_ids': [(0, 0, { 'quantity': 1, - 'price_unit': self.cost+self.penalty_cost, + 'price_unit': self.cost + self.penalty_cost, # 'move_id': invoice.id, 'name': 'Fleet Form Renew Cost', 'account_id': self.account_id.id, @@ -93,6 +92,10 @@ class FormRenew(models.Model): self.invoice_id = invoice.id # invoice.sudo().action_invoice_open() + def set_to_draft(self): + for rec in self: + rec.state = 'draft' + def action_confirm(self): for rec in self: rec.state = 'confirm' @@ -110,4 +113,3 @@ class FormRenew(models.Model): def action_cancel(self): for rec in self: rec.state = 'cancel' - diff --git a/odex25_fleet/odex_fleet/models/maintenance_request.py b/odex25_fleet/odex_fleet/models/maintenance_request.py index 7012e0c8a..13d58e3d3 100644 --- a/odex25_fleet/odex_fleet/models/maintenance_request.py +++ b/odex25_fleet/odex_fleet/models/maintenance_request.py @@ -74,7 +74,7 @@ class FleetMaintenance(models.Model): invoice = self.env['account.move'].sudo().create({ 'partner_id': partner[0].id, 'currency_id': self.env.user.company_id.currency_id.id, - 'name': 'Fleet Service Cost Invoice ', + # 'name': 'Fleet Service Cost Invoice ', # 'account_id': partner[0].property_account_payable_id.id, 'branch_id': self.vehicle_id.branch_id.id, 'move_type': 'in_invoice', @@ -130,6 +130,9 @@ class FleetMaintenance(models.Model): for rec in self: rec.state = 'refused' + def set_to_draft(self): + for rec in self: + rec.state = 'draft' def action_paid(self): for rec in self: diff --git a/odex25_fleet/odex_fleet/models/vehicle.py b/odex25_fleet/odex_fleet/models/vehicle.py index 3061e7664..58172b403 100644 --- a/odex25_fleet/odex_fleet/models/vehicle.py +++ b/odex25_fleet/odex_fleet/models/vehicle.py @@ -18,11 +18,11 @@ class Partner(models.Model): class FleetVehicle(models.Model): _inherit = 'fleet.vehicle' - owner_id = fields.Many2one('res.partner',string="Owner") - insurance_companies_id = fields.Many2one('insurance.companies',string="Insurance Companies") - employee_id = fields.Many2one('hr.employee',string="Driver") - driver_id = fields.Many2one(related='employee_id.user_id.partner_id',store=True,string="Driver") - branch_id = fields.Many2one('res.branch', string="Branch", default=lambda self: self.env.user.branch_id ) + owner_id = fields.Many2one('res.partner', string="Owner") + insurance_companies_id = fields.Many2one('insurance.companies', string="Insurance Companies") + employee_id = fields.Many2one('hr.employee', string="Driver") + driver_id = fields.Many2one(related='employee_id.user_id.partner_id', store=True, string="Driver") + branch_id = fields.Many2one('hr.department', string="Branch",) states = fields.Many2one('res.country.state', string="State", ) old_branch_id = fields.Many2one('res.branch', string="Old Branch", ) license_end = fields.Date(string="License End") @@ -39,25 +39,25 @@ class FleetVehicle(models.Model): insurance_attachment = fields.Binary(string="Insurance Docs") installment_number = fields.Char(string="Installment Number") fuel_consumption = fields.Float(string="Fuel consumption") - installment_ids = fields.One2many('insurance.installment','fleet_id',string="Installment") - service_ids = fields.One2many('fleet.service.line.config','fleet_id',string="Services") + installment_ids = fields.One2many('insurance.installment', 'fleet_id', string="Installment") + service_ids = fields.One2many('fleet.service.line.config', 'fleet_id', string="Services") next_request_date = fields.Date(string="Next Maintenance Date") - fuel_type = fields.Many2one('fuel.price','Fuel Type', help='Fuel Used by the vehicle') + fuel_type = fields.Many2one('fuel.price', 'Fuel Type', help='Fuel Used by the vehicle') model_id = fields.Many2one('fleet.vehicle.model', string="Model Type", required=True, help='Model of the vehicle') - location = fields.Char(string="Work Location" ,help='Location of the vehicle (garage, ...)') + location = fields.Char(string="Work Location", help='Location of the vehicle (garage, ...)') car_category = fields.Many2one('car.category', 'Car Category') # man_company = fields.Many2one('manufacture.company', 'Manufacture Company') man_company = fields.Many2one(related='model_id.man_company_id') fleet_type_id = fields.Many2one(related='model_id.fleet_type_id', string="Fleet Type", ) - form_renew_cost = fields.Float(related='model_id.fleet_type_id.amount',string="Form Renew Cost") - transmission_id = fields.Many2one('transmission.setting',string="Transmission") - insurance_cost = fields.Float(string="Insurance Cost" ,compute ="get_insurance_cost",store = True,readonly = False) - department_id = fields.Many2one('hr.department',string="Department",compute = "get_department_id" , store = True) + form_renew_cost = fields.Float(related='model_id.fleet_type_id.amount', string="Form Renew Cost") + transmission_id = fields.Many2one('transmission.setting', string="Transmission") + insurance_cost = fields.Float(string="Insurance Cost", compute="get_insurance_cost", store=True, readonly=False) + department_id = fields.Many2one('hr.department', string="Department", compute="get_department_id", store=True) project_id = fields.Many2one('project.project', string='Project') @api.depends('employee_id') def get_department_id(self): - for rec in self : + for rec in self: if rec.employee_id: rec.department_id = rec.employee_id.department_id @@ -78,66 +78,68 @@ class FleetVehicle(models.Model): form = self.company_id.form check = self.company_id.check installment = self.company_id.installment - if car_license >0: + if car_license > 0: date = date + relativedelta(days=car_license) - fleet = self.env['fleet.vehicle'].sudo().search([('license_end','<=',str(date))]) + fleet = self.env['fleet.vehicle'].sudo().search([('license_end', '<=', str(date))]) for f in fleet: template = self.env.ref('odex_fleet.car_expiration_email_template', False) template.send_mail(f.id) - if insurance>0: + if insurance > 0: date = date + relativedelta(days=+int(insurance)) fleet = self.env['fleet.vehicle'].sudo().search([('insurance_end_date', '>=', str(date))]) for f in fleet: template = self.env.ref('odex_fleet.insurance_expiration_email_template', False) template.send_mail(f.id) - if form>0: + if form > 0: date = date + relativedelta(days=+int(form)) fleet = self.env['fleet.vehicle'].sudo().search([('form_end', '>=', str(date))]) for f in fleet: template = self.env.ref('odex_fleet.form_expiration_email_template', False) template.send_mail(f.id) - if check>0: + if check > 0: date = date + relativedelta(days=+int(check)) fleet = self.env['fleet.vehicle'].sudo().search([('check_end', '>=', str(date))]) for f in fleet: template = self.env.ref('odex_fleet.check_expiration_email_template', False) template.send_mail(f.id) - if operation>0: + if operation > 0: date = date + relativedelta(days=+int(operation)) fleet = self.env['fleet.vehicle'].sudo().search([('operation_card_end', '>=', str(date))]) for f in fleet: template = self.env.ref('odex_fleet.operation_expiration_email_template', False) template.send_mail(f.id) - if installment >0: + if installment > 0: date = date + relativedelta(days=car_license) - fleet = self.env['insurance.installment'].sudo().search([('date','<=',str(date))]) + fleet = self.env['insurance.installment'].sudo().search([('date', '<=', str(date))]) for f in fleet: template = self.env.ref('odex_fleet.installment_expiration_email_template', False) template.send_mail(f.id) - @api.onchange('insurance_start_date','insurance_end_date') - @api.constrains('insurance_start_date','insurance_end_date') + @api.onchange('insurance_start_date', 'insurance_end_date') + @api.constrains('insurance_start_date', 'insurance_end_date') def check_data(self): if self.insurance_start_date and self.insurance_end_date and self.insurance_start_date > self.insurance_end_date: raise UserError(_('Insurance Start Date must be less than or equal Insurance End Date ')) + class FleetType(models.Model): _name = 'fleet.type' _description = 'Fleet Type' - name = fields.Char(string="Name") amount = fields.Float(string="Renew Amount") + class FuelPrice(models.Model): _name = 'fuel.price' _description = 'Fuel Price' _rec_name = 'fuel_type' - fuel_type = fields.Many2one('product.product', string='Fuel Type',help='Fuel Used by the vehicle') + fuel_type = fields.Many2one('product.product', string='Fuel Type', help='Fuel Used by the vehicle') price = fields.Float(string="Price") - uom_id = fields.Many2one(related='fuel_type.uom_id',string='Unit of Measure', readonly=True) + uom_id = fields.Many2one(related='fuel_type.uom_id', string='Unit of Measure', readonly=True) + class CarCtegory(models.Model): _name = 'car.category' @@ -146,10 +148,12 @@ class CarCtegory(models.Model): car_category = fields.Char('Car Category') + class FleetVehicleModelBrand(models.Model): _inherit = 'fleet.vehicle.model.brand' man_company_id = fields.Many2one('manufacture.company') + class FleetVehicleModel(models.Model): _inherit = 'fleet.vehicle.model' @@ -165,6 +169,7 @@ class ManufactureCompany(models.Model): man_company = fields.Char('Manufacture Company') brand_ids = fields.Many2many('fleet.vehicle.model.brand') + class TransmissionType(models.Model): _name = 'transmission.setting' _description = 'Trnsmission Setting' @@ -172,6 +177,7 @@ class TransmissionType(models.Model): transmission = fields.Char('Transmission') + class InsuranceInstallment(models.Model): _name = 'insurance.installment' _description = 'Insurance Installment' @@ -180,14 +186,13 @@ class InsuranceInstallment(models.Model): date = fields.Date(string="Date") amount = fields.Float(string="Amount") paid = fields.Date(string="Paid") - fleet_id = fields.Many2one('fleet.vehicle',string="Fleet") - + fleet_id = fields.Many2one('fleet.vehicle', string="Fleet") + + # class FleetVehicleCost(models.Model): # _inherit = 'fleet.vehicle.cost' - - # branch_id = fields.Many2one('res.branch', string="Branch", default=lambda self: self.env.user.branch_id) # number = fields.Float(string="Number") # total = fields.Float(string="Total", compute='_compute_total',readonly=True) @@ -198,7 +203,6 @@ class InsuranceInstallment(models.Model): # r.total = r.number * r.amount - # @api.onchange('vehicle_id') # def get_branch(self): # if self.vehicle_id: @@ -218,35 +222,32 @@ class FleetVehicleCost(models.Model): ('services', 'Services'), ('fuel', 'Fuel'), ('other', 'Other') - ], 'Category of the cost', default="other", help='For internal purpose only', required=True) + ], 'Category of the cost', default="other", help='For internal purpose only', required=True) parent_id = fields.Many2one('fleet.vehicle.cost', 'Parent', help='Parent cost to this current cost') service_id = fields.Many2one('fleet.vehicle.log.services', 'Service', help='Service cost to this current cost') cost_ids = fields.One2many('fleet.vehicle.cost', 'parent_id', 'Included Services', copy=True) - odometer_id = fields.Many2one('fleet.vehicle.odometer', 'Odometer', help='Odometer measure of the vehicle at the moment of this log') + odometer_id = fields.Many2one('fleet.vehicle.odometer', 'Odometer', + help='Odometer measure of the vehicle at the moment of this log') odometer = fields.Float(compute="_get_odometer", inverse='_set_odometer', string='Odometer Value', - help='Odometer measure of the vehicle at the moment of this log') + help='Odometer measure of the vehicle at the moment of this log') odometer_unit = fields.Selection(related='vehicle_id.odometer_unit', string="Unit", readonly=True) date = fields.Date(help='Date when the cost has been executed') contract_id = fields.Many2one('fleet.vehicle.log.contract', 'Contract', help='Contract attached to this cost') auto_generated = fields.Boolean('Automatically Generated', readonly=True) description = fields.Char("Cost Description") - branch_id = fields.Many2one('res.branch', string="Branch", default=lambda self: self.env.user.branch_id) + branch_id = fields.Many2one('hr.department', string="Branch", default=lambda self: self.env.user.branch_id) number = fields.Float(string="Number") - total = fields.Float(string="Total", compute='_compute_total',readonly=True) + total = fields.Float(string="Total", compute='_compute_total', readonly=True) - @api.onchange('number','amount') + @api.onchange('number', 'amount') def _compute_total(self): for r in self: r.total = r.number * r.amount - - @api.onchange('vehicle_id') def get_branch(self): if self.vehicle_id: - self.branch_id = self.vehicle_id.branch_id.id if self.vehicle_id.branch_id else False - - + self.branch_id = self.vehicle_id.branch_id.id if self.vehicle_id.branch_id else False def _get_odometer(self): for record in self: @@ -285,7 +286,6 @@ class FleetVehicleCost(models.Model): return super(FleetVehicleCost, self).create(data) - class FleetVehicleLogServices(models.Model): _inherit = 'fleet.vehicle.log.services' @@ -303,7 +303,7 @@ class FleetVehicleLogServices(models.Model): raise ValidationError(_("You Need To Configurate Account Details")) return res - branch_id = fields.Many2one('res.branch', string="Branch", default=lambda self: self.env.user.branch_id ) + branch_id = fields.Many2one('hr.department', string="Branch") account_id = fields.Many2one('account.account', string="Account") tax_id = fields.Many2one('account.tax', string='Tax', ondelete='restrict') invoice_id = fields.Many2one('account.move', string="Invoice", copy=False) @@ -311,42 +311,47 @@ class FleetVehicleLogServices(models.Model): request_id = fields.Many2one('fleet.maintenance', string="Maintenance Request") state = fields.Selection([ ('draft', 'Draft'), - ('confirm', 'Confirm'), - ('approve', 'Approved'), - ('invoiced', 'Invoiced'), - ('refused', 'Refused'), - ('cancel', 'Cancel'), - - ], default='draft',related="status") - + ('confirm', 'Confirm'), + ('approve', 'Approved'), + ('invoiced', 'Invoiced'), + ('refused', 'Refused'), + ('cancel', 'Cancel'), + + ], default='draft', related="status") + status = fields.Selection([('draft', 'Draft'), - ('confirm', 'Confirm'), - ('approve', 'Approved'), - ('invoiced', 'Invoiced'), - ('refused', 'Refused'), - ('cancel', 'Cancel'), - ], default='draft') - edit_access = fields.Boolean(compute="get_access",) + ('confirm', 'Confirm'), + ('approve', 'Approved'), + ('invoiced', 'Invoiced'), + ('refused', 'Refused'), + ('cancel', 'Cancel'), + ], default='draft') + edit_access = fields.Boolean(compute="get_access", ) user_id = fields.Many2one('res.users', string='Responsible', required=False, default=lambda self: self.env.user) cost_subtype_id = fields.Many2one('fleet.service.type', 'Type', help='Cost type purchased with this cost') cost_ids = fields.One2many('fleet.vehicle.cost', 'service_id', 'Included Services', copy=True) - employee_id = fields.Many2one('hr.employee',string="Driver") + employee_id = fields.Many2one('hr.employee', string="Driver") service_type_id = fields.Many2one( 'fleet.service.type', 'Service Type', required=False, default=lambda self: self.env.ref('fleet.type_service_service_8', raise_if_not_found=False), ) + @api.onchange('odometer') def onchange_odometer(self): - for rec in self : - if rec.odometer < rec.vehicle_id.odometer : + for rec in self: + if rec.odometer < rec.vehicle_id.odometer: raise ValidationError(_("odometer should be more than current odometer")) def get_access(self): for rec in self: rec.edit_access = False - if rec.status == 'approve' and self.env.user.has_group('odex_fleet.fleet_group_account'): + if rec.status == 'approve' and self.env.user.has_group('odex_fleet.fleet_group_account'): rec.edit_access = True + def set_to_draft(self): + for rec in self: + rec.state = 'draft' + def action_confirm(self): self.sudo().status = 'confirm' @@ -363,7 +368,7 @@ class FleetVehicleLogServices(models.Model): @api.onchange('vehicle_id') def get_branch(self): if self.vehicle_id: - self.branch_id = self.vehicle_id.branch_id.id if self.vehicle_id.branch_id else False + self.branch_id = self.vehicle_id.branch_id.id if self.vehicle_id.branch_id else False self.odometer = self.vehicle_id.odometer self.employee_id = self.vehicle_id.employee_id @@ -371,7 +376,7 @@ class FleetVehicleLogServices(models.Model): invoice = self.env['account.move'].sudo().create({ 'partner_id': self.partner_id.id, 'currency_id': self.env.user.company_id.currency_id.id, - 'name': 'Fleet Service Cost Invoice ', + # 'name': 'Fleet Service Cost Invoice ', # 'account_id': self.partner_id.property_account_payable_id.id, 'branch_id': self.vehicle_id.branch_id.id, 'move_type': 'in_invoice', @@ -398,21 +403,22 @@ class FleetVehicleLogServices(models.Model): # invoice.sudo().action_invoice_open() self.sudo().status = 'invoiced' - @api.onchange('cost_ids') def get_amount_total(self): for rec in self: rec.amount = sum(rec.cost_ids.mapped('total')) + class FleetVehicleLogContract(models.Model): _inherit = 'fleet.vehicle.log.contract' - branch_id = fields.Many2one('res.branch', string="Branch", default=lambda self: self.env.user.branch_id ) + branch_id = fields.Many2one('hr.department', string="Branch") @api.onchange('vehicle_id') def get_branch(self): if self.vehicle_id: - self.branch_id = self.vehicle_id.branch_id.id if self.vehicle_id.branch_id else False + self.branch_id = self.vehicle_id.branch_id.id if self.vehicle_id.branch_id else False + class FleetVehicleLogFuel(models.Model): _name = 'fleet.vehicle.log.fuel' @@ -428,7 +434,8 @@ class FleetVehicleLogFuel(models.Model): 'cost_subtype_id': service and service.id or False, 'cost_type': 'fuel' }) - rec = self.env['fleet.account.config'].sudo().search([('type','=','fuel'),('state','=','confirm')],limit=1) + rec = self.env['fleet.account.config'].sudo().search([('type', '=', 'fuel'), ('state', '=', 'confirm')], + limit=1) if rec and self.env.user.has_group("odex25_fleet_account_custom.integration_with_account"): res['account_id'] = rec.account_id.id res['tax_id'] = rec.tax_id.id @@ -439,18 +446,18 @@ class FleetVehicleLogFuel(models.Model): raise ValidationError(_("You Need To Configurate Account Details")) return res - liter = fields.Float() price_per_liter = fields.Float() - purchaser_id = fields.Many2one('res.partner', 'Purchaser', domain="['|',('customer_rank','>',0),('employee','=',True)]") + purchaser_id = fields.Many2one('res.partner', 'Purchaser', + domain="['|',('customer_rank','>',0),('employee','=',True)]") inv_ref = fields.Char('Invoice Reference', size=64) vendor_id = fields.Many2one('res.partner', 'Vendor', domain="[('supplier_rank','=',True)]") notes = fields.Text() cost_id = fields.Many2one('fleet.vehicle.cost', 'Cost', required=True, ondelete='cascade') - branch_id = fields.Many2one('res.branch', string="Branch", default=lambda self: self.env.user.branch_id) + branch_id = fields.Many2one('hr.department', string="Branch") account_id = fields.Many2one('account.account', string="Account") tax_id = fields.Many2one('account.tax', string='Tax', ondelete='restrict') - invoice_id = fields.Many2one('account.move', string="Invoice",copy=False) + invoice_id = fields.Many2one('account.move', string="Invoice", copy=False) partner_id = fields.Many2one('res.partner', string="Service Provider") fuel_type = fields.Many2one(related='vehicle_id.fuel_type') state = fields.Selection(selection=[('draft', 'Draft'), @@ -459,23 +466,23 @@ class FleetVehicleLogFuel(models.Model): ('invoiced', 'Invoiced'), ('refused', 'Refused'), ('cancel', 'Cancel'), - ], default='draft') + ], default='draft') amount = fields.Float('Total Untax') liter = fields.Float() price_tax = fields.Float(string='Tax') total_price_tax = fields.Float(string='Total', ) price_per_liter = fields.Float() - cal_type = fields.Selection(selection=[('total', 'Total'),('liter','Liter')],string="Calculation Type",default='liter') - edit_access = fields.Boolean(compute="get_access",) + cal_type = fields.Selection(selection=[('total', 'Total'), ('liter', 'Liter')], string="Calculation Type", + default='liter') + edit_access = fields.Boolean(compute="get_access", ) user_id = fields.Many2one('res.users', string='Responsible', required=False, default=lambda self: self.env.user) - employee_id = fields.Many2one('hr.employee',string="Driver") + employee_id = fields.Many2one('hr.employee', string="Driver") # we need to keep this field as a related with store=True because the graph view doesn't support # (1) to address fields from inherited table # (2) fields that aren't stored in database cost_amount = fields.Float(related='cost_id.amount', string='Amount', store=True) - @api.onchange('liter', 'price_per_liter', 'amount') def _onchange_liter_price_amount(self): # need to cast in float because the value receveid from web client maybe an integer (Javascript and JSON do not @@ -495,40 +502,40 @@ class FleetVehicleLogFuel(models.Model): elif amount > 0 and price_per_liter > 0 and round(amount / price_per_liter, 2) != liter: self.liter = round(amount / price_per_liter, 2) - - def get_access(self): for rec in self: rec.edit_access = False - if rec.state == 'approve' and self.env.user.has_group('odex_fleet.fleet_group_account'): + if rec.state == 'approve' and self.env.user.has_group('odex_fleet.fleet_group_account'): rec.edit_access = True - @api.onchange('cal_type','price_per_liter','liter','total_price_tax') + def set_to_draft(self): + for rec in self: + rec.state = 'draft' + + @api.onchange('cal_type', 'price_per_liter', 'liter', 'total_price_tax') def _get_total(self): for rec in self: - + if rec.cal_type == 'total': - taxes = rec.tax_id.compute_all(rec.price_per_liter, None, 1, product=None, - partner=None) - val = round(sum(t.get('amount', 0.0) for t in taxes.get('taxes', [])),2) + taxes = rec.tax_id.compute_all(rec.price_per_liter, None, 1, product=None, + partner=None) + val = round(sum(t.get('amount', 0.0) for t in taxes.get('taxes', [])), 2) pice_tax = rec.price_per_liter + val liter = rec.total_price_tax / pice_tax if val and rec.price_per_liter > 0 else 0 new_taxes = rec.tax_id.compute_all(rec.price_per_liter, None, liter, product=None, - partner=None) + partner=None) tax = sum(t.get('amount', 0.0) for t in new_taxes.get('taxes', [])) rec.price_tax = tax amount = rec.total_price_tax - rec.price_tax - rec.liter = liter if liter>0 else 0 - rec.amount = amount if amount>0 else 0 + rec.liter = liter if liter > 0 else 0 + rec.amount = amount if amount > 0 else 0 else: - taxes = rec.tax_id.compute_all(rec.price_per_liter, None,rec.liter, product=None, + taxes = rec.tax_id.compute_all(rec.price_per_liter, None, rec.liter, product=None, partner=None) - tax = round(sum(t.get('amount', 0.0) for t in taxes.get('taxes', [])),2) - rec.price_tax = tax if tax>0 else 0 + tax = round(sum(t.get('amount', 0.0) for t in taxes.get('taxes', [])), 2) + rec.price_tax = tax if tax > 0 else 0 rec.amount = rec.liter * rec.price_per_liter - rec.total_price_tax = round(rec.amount+ rec.price_tax,2) - - + rec.total_price_tax = round(rec.amount + rec.price_tax, 2) # def get_account_data(self): # print("in herere============") @@ -539,7 +546,7 @@ class FleetVehicleLogFuel(models.Model): # else: # raise ValidationError(_("You Need To Configurate Account Details")) - @api.constrains('odometer','price_per_liter') + @api.constrains('odometer', 'price_per_liter') def odometer_check(self): for rec in self: if rec.odometer <= 0: @@ -570,30 +577,27 @@ class FleetVehicleLogFuel(models.Model): self.purchaser_id = self.vehicle_id.driver_id.id self.price_per_liter = self.vehicle_id.fuel_type.price or 0 - self.branch_id = self.vehicle_id.branch_id.id if self.vehicle_id.branch_id else False + self.branch_id = self.vehicle_id.branch_id.id if self.vehicle_id.branch_id else False self.odometer_unit = self.vehicle_id.odometer_unit self.employee_id = self.vehicle_id.employee_id - - - def create_invoice(self): invoice = self.env['account.move'].sudo().create({ 'partner_id': self.partner_id.id, - 'currency_id':self.env.user.company_id.currency_id.id, + 'currency_id': self.env.user.company_id.currency_id.id, 'name': 'Fuel Cost Invoice ', - 'journal_id':2, + 'journal_id': 2, # 'account_id': self.partner_id.property_account_payable_id.id, 'branch_id': self.vehicle_id.branch_id.id, 'move_type': 'in_invoice', - 'invoice_date':datetime.now().today(), + 'invoice_date': datetime.now().today(), 'invoice_line_ids': [(0, 0, { - 'quantity': self.liter if self.cal_type== 'liter' else 1, - 'price_unit': self.price_per_liter if self.cal_type== 'liter' else self.amount, + 'quantity': self.liter if self.cal_type == 'liter' else 1, + 'price_unit': self.price_per_liter if self.cal_type == 'liter' else self.amount, # 'move_id': invoice.id, 'name': 'Fuel Cost', 'account_id': self.account_id.id, - 'tax_ids': [(6, 0, [self.tax_id.id])], + 'tax_ids': [(6, 0, [self.tax_id.id])], 'product_id': self.fuel_type.fuel_type.id, })] }) @@ -609,7 +613,7 @@ class FleetVehicleLogFuel(models.Model): # }) self.sudo().invoice_id = invoice.id invoice.sudo()._compute_amount() -# invoice.sudo().action_invoice_open() + # invoice.sudo().action_invoice_open() self.sudo().state = 'invoiced' date = fields.Date.context_today(self) data = {'value': self.odometer, 'date': date, 'vehicle_id': self.vehicle_id.id} @@ -621,46 +625,47 @@ class FleetServiceConfig(models.Model): _description = 'Fleet Serive Line' fleet_id = fields.Many2one('fleet.vehicle') - service_ids = fields.Many2many('fleet.service.type',string="Service") - date = fields.Date(string="Next Request Date",help="Next Request Date Of Maintenance Request") + service_ids = fields.Many2many('fleet.service.type', string="Service") + date = fields.Date(string="Next Request Date", help="Next Request Date Of Maintenance Request") next_odometer = fields.Float(string="Next Odometer") - odometer = fields.Float(string="Next Odometer",help="Determine the current mileage value to submit a maintenance request") + odometer = fields.Float(string="Next Odometer", + help="Determine the current mileage value to submit a maintenance request") type = fields.Selection(selection=[('date', 'Date'), ('odometer', 'Odometer')], - string="Type") + string="Type") - @api.onchange('type','odometer') + @api.onchange('type', 'odometer') def get_vals(self): for rec in self: if rec.type == 'odometer': rec.get_next_odometer() - + def get_next_odometer(self): for rec in self: rec.next_odometer = rec.fleet_id.odometer + rec.odometer @api.model def fleet_maintenance_cron(self): - date = self.env['fleet.service.line.config'].sudo().search([('type','=','date'),('date','=',str(datetime.now().date()))]) + date = self.env['fleet.service.line.config'].sudo().search( + [('type', '=', 'date'), ('date', '=', str(datetime.now().date()))]) odo = self.env['fleet.service.line.config'].sudo().search([('type', '=', 'odometer'), - ]) - odo = odo.filtered(lambda r:r.fleet_id.odometer >= r.next_odometer) - print("FDDDDDDDDDDDDDDDDDDDDd",str(datetime.now().date()),date,odo.mapped('fleet_id.odometer')) + ]) + odo = odo.filtered(lambda r: r.fleet_id.odometer >= r.next_odometer) + print("FDDDDDDDDDDDDDDDDDDDDd", str(datetime.now().date()), date, odo.mapped('fleet_id.odometer')) self.create_request(date) self.create_request(odo) - def create_request(self,data): + def create_request(self, data): for d in data: self.env['fleet.maintenance'].sudo().create({ - 'name':"Preventive Maintenance", - 'type':'preventive', - 'vehicle_id':d.fleet_id.id, - 'branch_id':d.fleet_id.branch_id.id, - 'odometer':d.fleet_id.odometer, - 'license_plate':d.fleet_id.license_plate, - 'line_id':d.id, - 'employee_id':d.fleet_id.employee_id.id if d.fleet_id.employee_id else False, - 'service_ids':[(0,0,{'service_id':l.id}) for l in d.service_ids] + 'name': "Preventive Maintenance", + 'type': 'preventive', + 'vehicle_id': d.fleet_id.id, + 'branch_id': d.fleet_id.branch_id.id, + 'odometer': d.fleet_id.odometer, + 'license_plate': d.fleet_id.license_plate, + 'line_id': d.id, + 'employee_id': d.fleet_id.employee_id.id if d.fleet_id.employee_id else False, + 'service_ids': [(0, 0, {'service_id': l.id}) for l in d.service_ids] }) if d.type == 'odometer': d.get_next_odometer() - diff --git a/odex25_fleet/odex_fleet/security/security_view.xml b/odex25_fleet/odex_fleet/security/security_view.xml index 4c02cda54..ddb581d35 100644 --- a/odex25_fleet/odex_fleet/security/security_view.xml +++ b/odex25_fleet/odex_fleet/security/security_view.xml @@ -41,6 +41,11 @@ + + + Set To Draft + + GM diff --git a/odex25_fleet/odex_fleet/views/maintenance_request_view.xml b/odex25_fleet/odex_fleet/views/maintenance_request_view.xml index 9d4c8955c..3e82ee601 100644 --- a/odex25_fleet/odex_fleet/views/maintenance_request_view.xml +++ b/odex25_fleet/odex_fleet/views/maintenance_request_view.xml @@ -12,6 +12,7 @@ - - - - - - -
-
+ +
+ + + + +
+ + +
+
- + - - - + + + - + - + - - - - + + + + - - + + - - - + + + @@ -284,20 +296,23 @@ - -