Browse Source

[CHNG]:Changed Some fields

pull/81/head
SHEREEF PT 8 years ago
parent
commit
4767914bd8
  1. 5
      cab_booking_management/__openerp__.py
  2. 47
      cab_booking_management/__openerp__.py~
  3. 11
      cab_booking_management/models/cab_booking.py
  4. 47
      cab_booking_management/models/cab_creation.py
  5. 81
      cab_booking_management/models/cab_log.py
  6. 3
      cab_booking_management/models/cab_timing.py
  7. BIN
      cab_booking_management/static/description/cab_activity.png
  8. BIN
      cab_booking_management/static/description/cab_booking.png
  9. BIN
      cab_booking_management/static/description/cab_cancel.png
  10. BIN
      cab_booking_management/static/description/cab_creation.png
  11. BIN
      cab_booking_management/static/description/cab_maintain.png
  12. 18
      cab_booking_management/static/description/index.html
  13. 161
      cab_booking_management/static/description/index.html~
  14. BIN
      cab_booking_management/static/description/log_details.png
  15. 10
      cab_booking_management/views/cab_booking_view.xml
  16. 4
      cab_booking_management/views/cab_conf_view.xml
  17. 3
      cab_booking_management/views/cab_creation_view.xml
  18. 19
      cab_booking_management/views/cab_log_view.xml
  19. 6
      cab_booking_management/views/cab_timing_view.xml

5
cab_booking_management/__openerp__.py

@ -22,11 +22,11 @@
##############################################################################
{
'name': "Cab Booking Management System",
'version': '9.0.1.0.0',
'summary': """Complete Cab Booking Management and its Related Records""",
'author': "Cybrosys Techno Solutions",
'website': "http://www.cybrosys.com",
'category': 'Tools',
'version': '0.1',
'category': 'Industries',
'depends': ['base', 'mail'],
'data': [
'views/templates.xml',
@ -40,7 +40,6 @@
'security/ir.model.access.csv'
],
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': True,

47
cab_booking_management/__openerp__.py~

@ -1,47 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2008-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nilmar Shereef(<http://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 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 <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': "Cab Booking Management System",
'summary': """Complete Cab Booking Management and its Related Records""",
'author': "Cybrosys",
'website': "http://www.cybrosys.com",
'category': 'Tools',
'version': '0.1',
'depends': ['base', 'mail'],
'data': [
'views/templates.xml',
'views/cab_log_view.xml',
'views/cab_conf_view.xml',
'views/cab_location_view.xml',
'views/cab_timing_view.xml',
'views/cab_booking_view.xml',
'views/cab_creation_view.xml',
'views/cab_maintanence_view.xml',
'security/ir.model.access.csv'
],
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': True,
}

11
cab_booking_management/models/cab_booking.py

@ -21,21 +21,24 @@
#
##############################################################################
from openerp import models, fields, api
from datetime import date
class CabBooking(models.Model):
_name = 'cab.booking'
_rec_name = 'booking_date'
booking_date = fields.Date(string="Booking Date", required=True)
booking_date = fields.Date(string="Booking Date", default=date.today(), required=True)
cab_timing = fields.Many2one('cab.time', string="Timing", required=True)
cab_routes = fields.Many2one('cab.location', string="Route", required=True)
cab_routes = fields.Many2one('cab.location', string="Route From", required=True)
cab_routes_to = fields.Many2one('cab.location', string="Route To", required=True)
seat_available = fields.One2many('cab.timing', compute="scheduled_details")
@api.onchange('cab_routes', 'cab_timing')
@api.onchange('cab_routes', 'cab_timing', 'cab_routes_to')
def scheduled_details(self):
data = self.env['cab.timing'].search([('cab_route.name', '=', self.cab_routes.name),
('cab_time.name', '=', self.cab_timing.name)])
('cab_time.name', '=', self.cab_timing.name),
('cab_route_to.name', '=', self.cab_routes_to.name)])
self.seat_available = data

47
cab_booking_management/models/cab_creation.py

@ -22,12 +22,14 @@
##############################################################################
from openerp import models, fields, api
from openerp.exceptions import UserError,ValidationError
class CabManagement(models.Model):
_name = 'cab.management'
name = fields.Char(string="Cab Name", required=True)
name = fields.Char(compute="complete_name_compute", string="Cab Name")
ref_name = fields.Char(string="Cab Name", required=True)
cab_image = fields.Binary(string='Image', store=True, attachment=True)
licence_plate = fields.Char(string="Licence Plate", required=True)
activity_period_from = fields.Date(string="Activity Period")
@ -45,20 +47,45 @@ class CabManagement(models.Model):
total_log_details = fields.One2many('cab.maintanence', string='Total Expenses', compute="auto_fetch_total_details")
location_log_details = fields.One2many('cab.log', string="Location", compute="auto_fetch_location_details")
@api.onchange('licence_plate')
def check_unique_constraint(self):
for records in self.env['cab.management'].search([]):
if self.licence_plate == records.licence_plate:
raise ValidationError("Record already exists and violates unique field constraint")
@api.one
def complete_name_compute(self):
self.name = self.ref_name
if self.licence_plate:
self.name = str(self.licence_plate) + ' / ' + str(self.ref_name)
@api.onchange('activity_period_from', 'activity_period_to')
def auto_fetch_log_details(self):
data = self.env['cab.log'].search([("cab_log_date", ">=", self.activity_period_from),
("cab_log_date", "<=", self.activity_period_to)])
self.related_log_details = data
if self.activity_period_from and self.activity_period_to:
if self.activity_period_from <= self.activity_period_to:
data = self.env['cab.log'].search([("cab_log_date", ">=", self.activity_period_from),
("cab_log_date", "<=", self.activity_period_to)])
self.related_log_details = data
else:
self.activity_period_to = 0
raise UserError("Enter Valid Dates")
@api.onchange('activity_period_from', 'activity_period_to')
def auto_fetch_total_details(self):
data = self.env['cab.maintanence'].search([("cab_log_date", ">=", self.activity_period_from),
("cab_log_date", "<=", self.activity_period_to)])
self.total_log_details = data
if self.activity_period_from and self.activity_period_to:
if self.activity_period_from <= self.activity_period_to:
data = self.env['cab.maintanence'].search([("cab_log_date", ">=", self.activity_period_from),
("cab_log_date", "<=", self.activity_period_to)])
self.total_log_details = data
else:
raise UserError("Enter Valid Dates")
@api.onchange('activity_period_from', 'activity_period_to')
def auto_fetch_location_details(self):
data = self.env['cab.log'].search([("cab_log_date", ">=", self.activity_period_from),
("cab_log_date", "<=", self.activity_period_to)])
self.location_log_details = data
if self.activity_period_from and self.activity_period_to:
if self.activity_period_from <= self.activity_period_to:
data = self.env['cab.log'].search([("cab_log_date", ">=", self.activity_period_from),
("cab_log_date", "<=", self.activity_period_to)])
self.location_log_details = data
else:
raise UserError("Enter Valid Dates")

81
cab_booking_management/models/cab_log.py

@ -21,9 +21,9 @@
#
##############################################################################
from openerp import models, fields, api
from openerp.tools.translate import _
from openerp.exceptions import UserError
from openerp import models, fields, api, _
from openerp.exceptions import ValidationError
from datetime import date
class CabLog(models.Model):
@ -31,20 +31,20 @@ class CabLog(models.Model):
_inherit = ['mail.thread', 'ir.needaction_mixin']
_description = 'Cab'
name = fields.Many2one('cab.management', string="Name", required=True)
cab_log_date = fields.Date(string="Date", required=True)
fuel_used = fields.Float(string="Fuel Used", required=True)
name = fields.Many2one('cab.management', string="Name", store=True, required=True)
cab_log_date = fields.Date(string="Date", default=date.today(), required=True)
fuel_used = fields.Float(string="Fuel Used", required=True, help="To get total fuel used in Litre")
seat_capacity = fields.Integer(string="Seat Capacity", related="name.seating_capacity")
seat_available = fields.Integer(string="Seat Available")
cab_location = fields.Many2one('cab.location', string="Location", required=True)
seat_booked = fields.Integer(string="Seat Booked", required=True)
odo_metre = fields.Float(string="OdoMetre Reading", required=True)
cab_location = fields.Char(string="Destination Point", required=True)
cab_location_from = fields.Char(string="Starting Point", required=True)
seat_booked = fields.Integer(string="How many seats you need to book?", required=True)
odo_metre = fields.Float(string="OdoMetre Reading", required=True, help="Total distance covered in Km")
cab_expense = fields.Float(string="Expense", required=True)
cab_log_timing = fields.Many2one('cab.time', string="Timing", required=True)
cab_log_timing = fields.Many2one('cab.time', string="Time", required=True)
total_passenger = fields.Integer(string="Total Passenger", required=True)
partner_id = fields.Many2one('res.users', string="User Name", required=True)
partner_id = fields.Many2one('res.users', string="Customer Name", required=True)
cab_image = fields.Binary(string='Image', store=True, attachment=True)
seat_check = fields.Integer(string='Seat Condition Check')
state = fields.Selection([
('draft', 'Draft'),
('approved', 'Approved'),
@ -53,17 +53,32 @@ class CabLog(models.Model):
('done', 'Done')
], default='draft')
@api.onchange('seat_booked')
def auto_fill_passenger_field(self):
if self.seat_available < self.seat_booked:
self.seat_check = 1
@api.onchange('name')
def change_location(self):
for records in self.env['cab.timing'].search([('name.name', '=', self.name.name)]):
if self.name.name == records.name.name:
self.cab_location = records.cab_route_to.name
self.cab_location_from = records.cab_route.name
@api.onchange('total_passenger')
@api.one
@api.constrains('cab_log_timing')
def change_time(self):
for records in self.env['cab.timing'].search([('name.name', '=', self.name.name)]):
if self.cab_log_timing:
if self.cab_log_timing not in records.cab_time:
raise ValidationError("No cabs available at given time")
@api.one
@api.constrains('seat_booked')
def error_message(self):
if self.seat_check == 1:
raise UserError("Sorry,No Available Seats")
if self.seat_available < self.seat_booked:
raise ValidationError("No Available Seats")
elif self.seat_booked != self.total_passenger:
raise UserError("Sorry, No of seat requested for booking and total passenger must be equal")
raise ValidationError("No of seat requested for booking and total passenger must be equal")
@api.onchange('seat_booked')
def change_total_passenger(self):
self.total_passenger = self.seat_booked
@api.one
def action_approve(self):
@ -85,23 +100,22 @@ class CabLog(models.Model):
if user_obj == data.cab_manager:
self.state = 'approved'
@api.onchange('cab_log_date', 'name', 'seat_booked')
@api.onchange('cab_log_date', 'name', 'cab_log_timing')
def change_available_seat(self):
for data in self.env['cab.management'].search([]):
if self.name.name == data.name:
flag = 0
total_seat_booked = 0
for records in self.env['cab.log'].search([]):
if self.cab_log_date == records.cab_log_date:
for data in self.env['cab.management'].search([('name', '=', self.name.name)]):
flag = 0
total_seat_booked = 0
for records in self.env['cab.log'].search([('name.name', '=', data.name)]):
if self.cab_log_date == records.cab_log_date and self.cab_log_timing == records.cab_log_timing:
if self.cab_location == records.cab_location and self.cab_location_from == records.cab_location_from:
total_seat_booked = total_seat_booked+records.seat_booked
flag += 1
if flag > 0:
test_val = self.seat_capacity - total_seat_booked
self.seat_available = test_val
if flag > 0:
test_val = self.seat_capacity - total_seat_booked
self.seat_available = test_val
else:
self.seat_available = self.seat_capacity
else:
self.seat_available = self.seat_capacity
@api.multi
def action_sent(self):
@ -116,7 +130,6 @@ class CabLog(models.Model):
except ValueError:
compose_form_id = False
ctx = dict()
print self.ids[0]
ctx.update({
'default_model': 'cab.log',
'default_res_id': self.ids[0],

3
cab_booking_management/models/cab_timing.py

@ -29,7 +29,8 @@ class CabTiming(models.Model):
name = fields.Many2one('cab.management', string="Cab Name", required=True)
cab_time = fields.Many2many('cab.time', 'cab_name_rel', string="Time", required=True,
help="Use this format 00:00,ex: 01:15")
cab_route = fields.Many2one('cab.location', string='Route', required=True)
cab_route = fields.Many2one('cab.location', string='Starting Place', required=True)
cab_route_to = fields.Many2one('cab.location', string='Destination Place', required=True)
seat = fields.Integer(string="Seating Capacity", related='name.seating_capacity', required=True)
@api.multi

BIN
cab_booking_management/static/description/cab_activity.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 96 KiB

BIN
cab_booking_management/static/description/cab_booking.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 56 KiB

BIN
cab_booking_management/static/description/cab_cancel.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 80 KiB

BIN
cab_booking_management/static/description/cab_creation.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 75 KiB

BIN
cab_booking_management/static/description/cab_maintain.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

18
cab_booking_management/static/description/index.html

@ -86,7 +86,7 @@
</div>
<div class="oe_span6">
<p class='oe_mt32'>
It shows the total expenses for a cab, on daily basis.
It shows the expenses for a cab, on daily basis.
</p>
</div>
</div>
@ -124,6 +124,22 @@
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_space">
<h3 class="oe_slogan"> Cab Maintenance</h3>
<div class="oe_span6">
<p class='oe_mt32'>
It shows the total expenses for a cab, on daily basis.
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="cab_maintain.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row">
<h3 class="oe_slogan">View All Cab Activities with Advanced Filttrations</h3>

161
cab_booking_management/static/description/index.html~

@ -1,161 +0,0 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Cab Booking Management System (CBMS)</h2>
<h3 class="oe_slogan">Manage the cabs with ease</h3>
<h4 class="oe_slogan">Cybrosys Technologies , www.cybrosys.com</h4>
<div>
<h4><p>Major Features:</p></h4>
<ul>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp;Booking the Cab.</li>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp;Auto approval Settings in Configuration.</li>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp;Cab Logs for Every Trip.</li>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp;Record Every Activity Related to CBMS.</li>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp;Email Notification for Successful Booking.</li>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp;Booking Status.</li>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp;View All Cab Activities with Advanced Filttrations.</li>
</ul>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<div class="oe_demo oe_picture oe_screenshot">
<img src="cab_creation.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_space">
<h3 class="oe_slogan">Cab Booking</h3>
<div class="oe_span6">
<p class='oe_mt32'>
<centre>We can book cabs from list of cabs based on your time and location.</centre>
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="cab_booking.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan"> Auto approval</h3>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="cab_conf.png">
</div>
</div>
<div class="oe_span6">
<p class='oe_mt32'>
Approve cab booking automatically.
</p>
</div>
</div>
</section>
<section class="oe_container dark">
<div class="oe_row oe_space">
<h3 class="oe_slogan"> Cab Logs for Every Trip</h3>
<div class="oe_span6">
<p class='oe_mt32'>
It keep the record of all expenses of each cab trips.
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="log_details.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan"> Record Every Activity Related to CBMS</h3>
<div class="oe_span12">
<div class="oe_demo oe_picture oe_screenshot">
<img src="cab_activity.png">
</div>
</div>
<div class="oe_span6">
<p class='oe_mt32'>
It shows the total expenses for a cab, on daily basis.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_space">
<h3 class="oe_slogan"> Email Notification for Successful Booking.</h3>
<div class="oe_span6">
<p class='oe_mt32'>
Email is sent to the user on successful booking of cab.
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="mail.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">Booking Status</h3>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="cab_cancel.png">
</div>
</div>
<div class="oe_span6">
<p class='oe_mt32'>
View your status of booking.You can also cancel your booking.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row">
<h3 class="oe_slogan">View All Cab Activities with Advanced Filttrations</h3>
<div class="oe_span12">
<div class="oe_demo oe_picture oe_screenshot">
<img src="cab_details.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<h2 class="oe_slogan" style="margin-top:20px;" >You Looking for a free Documentation of this Application.?</h2>
<h3 class="oe_slogan">Give a Request Mail to:&nbsp;&nbsp;<i class="fa fa-envelope" aria-hidden="true"></i>&nbsp;&nbsp;<a href="#" style="color:blue;">oddo@cybrosys.com</a></h3>
</section>
<section class="oe_container oe_dark">
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<a class="btn btn-primary btn-lg mt8"
style="color: #FFFFFF !important;" href="http://www.cybrosys.com"><i
class="fa fa-envelope"></i> Email </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;"
href="http://www.cybrosys.com/contact/"><i
class="fa fa-phone"></i> Contact Us </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;"
href="http://www.cybrosys.com/odoo-customization-and-installation/"><i
class="fa fa-check-square"></i> Request Customization </a>
</div>
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
</section>

BIN
cab_booking_management/static/description/log_details.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 76 KiB

10
cab_booking_management/views/cab_booking_view.xml

@ -16,12 +16,18 @@
<group>
<group>
<field name="booking_date"/>
<field name="cab_routes"/>
</group>
<group>
<field name="cab_timing"/>
<field name="cab_timing" style="width:50%%"/>
</group>
</group>
<group>
<label for="cab_routes" class="oe_inline"/>
<div >
<field name="cab_routes" class="oe_inline"/> to
<field name="cab_routes_to" class="oe_inline"/>
</div>
</group>
<field name="seat_available">
<tree name="Cab InformationTree" editable="bottom">
<field name="name"/>

4
cab_booking_management/views/cab_conf_view.xml

@ -1,7 +1,7 @@
<openerp>
<data>
<record id="cab_management_group" model="res.groups">
<record id="cab_booking_management_group" model="res.groups">
<field name="name">Cab Management</field>
<field name="category_id" ref="base.module_category_extra"/>
</record>
@ -47,7 +47,7 @@
</field>
</record>
<menuitem id="main_cab_configuration_menu" name="Configuration" parent="main_cab_management_menu"/>
<menuitem id="main_cab_configuration_menu" name="Configuration" parent="main_cab_management_menu" sequence="80"/>
<menuitem id="cab_configuration_menu" name="Cab Configuration" parent="main_cab_configuration_menu"
action="cab_configuration_action" groups="base.group_user"/>

3
cab_booking_management/views/cab_creation_view.xml

@ -11,7 +11,8 @@
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" placeholder=" Vehicle Name" style="width:50%%"/>
<field name="ref_name" placeholder=" Vehicle Name" style="width:50%%"/>
<field name="name" invisible="1"/>
</h1>
<label for="licence_plate"/>
<h2>

19
cab_booking_management/views/cab_log_view.xml

@ -49,19 +49,19 @@
<group>
<group>
<field name="cab_log_date"/>
<field name="fuel_used"/>
<field name="seat_capacity"/>
<field name="seat_available"/>
<field name="cab_location"/>
<field name="seat_booked" attrs="{'readonly':['|',('seat_available', '==', 0) ] }"/>
<field name="seat_check" invisible="1"/>
<field name="partner_id"/>
<field name="cab_log_timing" style="width:50%%"/>
<field name="cab_location_from" style="width:50%%"/>
<field name="cab_location" style="width:50%%"/>
<field name="seat_capacity" invisible="1"/>
</group>
<group>
<field name="seat_available"/>
<field name="seat_booked" attrs="{'readonly':['|',('seat_available', '==', 0) ] }"/>
<field name="fuel_used"/>
<field name="odo_metre"/>
<field name="cab_expense"/>
<field name="cab_log_timing"/>
<field name="total_passenger"/>
<field name="partner_id" attrs="{'readonly':['|',('seat_check', '==', 1)]}" />
<field name="total_passenger" invisible="1"/>
</group>
</group>
</sheet>
@ -78,6 +78,7 @@
<field name="seat_available"/>
<field name="cab_log_date"/>
<field name="cab_log_timing"/>
<field name="cab_location_from"/>
<field name="cab_location"/>
<field name="odo_metre"/>
<field name="fuel_used"/>

6
cab_booking_management/views/cab_timing_view.xml

@ -18,11 +18,12 @@
<group>
<group>
<field name="name"/>
<field name="cab_route"/>
<field name="cab_route" style="width:50%%"/>
<field name="cab_route_to" style="width:50%%"/>
</group>
<group>
<field name="cab_time" widget="many2many_tags"/>
<field name="seat"/>
<field name="seat" style="width:25%%"/>
</group>
</group>
</sheet>
@ -37,6 +38,7 @@
<tree string="Cab Timing">
<field name="name"/>
<field name="cab_route"/>
<field name="cab_route_to"/>
<field name="cab_time" widget="many2many_tags"/>
<field name="seat"/>
</tree>

Loading…
Cancel
Save