Skip to content

Commit

Permalink
Merge pull request #90 from iledarn/9.0-fleet_booking
Browse files Browse the repository at this point in the history
9.0 fleet booking - svg on documents
  • Loading branch information
Ivan Yelizariev authored Jun 30, 2016
2 parents 714b51f + cb47ee5 commit 04e3637
Show file tree
Hide file tree
Showing 8 changed files with 487 additions and 18 deletions.
3 changes: 2 additions & 1 deletion fleet_rental_document/__openerp__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
"fleet",
"decimal_precision",
"l10n_sa",
"fleet_vehicle_svg",
"fleet_branch",
"web_form_svg",
],
"external_dependencies": {"python": [], "bin": []},
"data": [
Expand All @@ -30,6 +30,7 @@
"views/fleet_rental_check_vehicle.xml",
"views/fleet.xml",
"views/ir_sequence.xml",
"data/svg_vehicle_part.xml",
],
"qweb": [
],
Expand Down
277 changes: 277 additions & 0 deletions fleet_rental_document/data/svg_vehicle_part.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,277 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>

<record id='svg_path_path3070' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3070</field>
</record>
<record id='svg_path_path3846' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3846</field>
</record>
<record id='svg_path_path3850' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3850</field>
</record>
<record id='svg_path_path3852' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3852</field>
</record>
<record id='svg_path_front_left_side_window' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>front_left_side_window</field>
</record>
<record id='svg_path_path3888' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3888</field>
</record>
<record id='svg_path_rear_left_side_window' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>rear_left_side_window</field>
</record>
<record id='svg_path_left_boot_window' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>left_boot_window</field>
</record>
<record id='svg_path_path3900' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3900</field>
</record>
<record id='svg_path_path3900-6' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3900-6</field>
</record>
<record id='svg_path_path3920' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3920</field>
</record>
<record id='svg_path_path3920-5' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3920-5</field>
</record>
<record id='svg_path_path3940' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3940</field>
</record>
<record id='svg_path_path3942' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3942</field>
</record>
<record id='svg_path_path3944' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3944</field>
</record>
<record id='svg_path_path3946' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3946</field>
</record>
<record id='svg_path_path3948' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3948</field>
</record>
<record id='svg_path_path4141' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4141</field>
</record>
<record id='svg_path_path4143' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4143</field>
</record>
<record id='svg_path_path4145' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4145</field>
</record>
<record id='svg_path_windshield' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>windshield</field>
</record>
<record id='svg_path_path4175' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4175</field>
</record>
<record id='svg_path_path4135-9' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4135-9</field>
</record>
<record id='svg_path_path4203' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4203</field>
</record>
<record id='svg_path_rear_window' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>rear_window</field>
</record>
<record id='svg_path_path4207' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4207</field>
</record>
<record id='svg_path_path4209' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4209</field>
</record>
<record id='svg_path_path4209-7' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4209-7</field>
</record>
<record id='svg_path_path4209-76' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4209-76</field>
</record>
<record id='svg_path_path4243' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4243</field>
</record>
<record id='svg_path_path4245' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4245</field>
</record>
<record id='svg_path_path4247' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4247</field>
</record>
<record id='svg_path_path4247-2' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4247-2</field>
</record>
<record id='svg_path_path4247-1' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4247-1</field>
</record>
<record id='svg_path_path4247-0' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4247-0</field>
</record>
<record id='svg_path_path4281-1' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4281-1</field>
</record>
<record id='svg_path_path4281-8' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4281-8</field>
</record>
<record id='svg_path_path3070-9' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3070-9</field>
</record>
<record id='svg_path_path3846-2' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3846-2</field>
</record>
<record id='svg_path_path3850-6' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3850-6</field>
</record>
<record id='svg_path_path3852-6' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3852-6</field>
</record>
<record id='svg_path_front_right_side_window' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>front_right_side_window</field>
</record>
<record id='svg_path_path3888-9' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3888-9</field>
</record>
<record id='svg_path_rear_right_side_window' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>rear_right_side_window</field>
</record>
<record id='svg_path_right_boot_window' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>right_boot_window</field>
</record>
<record id='svg_path_path3900-4' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3900-4</field>
</record>
<record id='svg_path_path3900-6-8' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3900-6-8</field>
</record>
<record id='svg_path_path3920-7' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3920-7</field>
</record>
<record id='svg_path_path3920-5-1' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3920-5-1</field>
</record>
<record id='svg_path_path3940-7' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3940-7</field>
</record>
<record id='svg_path_path3942-2' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3942-2</field>
</record>
<record id='svg_path_path3944-7' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3944-7</field>
</record>
<record id='svg_path_path3946-2' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3946-2</field>
</record>
<record id='svg_path_path3948-2' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3948-2</field>
</record>
<record id='svg_path_path4335' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4335</field>
</record>
<record id='svg_path_path4281-8-0' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4281-8-0</field>
</record>
<record id='svg_path_front_left_headlight' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>front_left_headlight</field>
</record>
<record id='svg_path_front_right_headlight' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>front_right_headlight</field>
</record>
<record id='svg_path_path4377' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4377</field>
</record>
<record id='svg_path_path4381' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4381</field>
</record>
<record id='svg_path_right_rear_light_c' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>right_rear_light_c</field>
</record>
<record id='svg_path_path4501' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4501</field>
</record>
<record id='svg_path_path4503' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4503</field>
</record>
<record id='svg_path_path4505' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4505</field>
</record>
<record id='svg_path_path4536' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4536</field>
</record>
<record id='svg_path_path4536-0' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4536-0</field>
</record>
<record id='svg_path_path4556' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4556</field>
</record>
<record id='svg_path_path4377-2' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4377-2</field>
</record>
<record id='svg_path_path4381-0' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4381-0</field>
</record>
<record id='svg_path_right_rear_light' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>right_rear_light</field>
</record>
<record id='svg_path_left_rear_light' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>left_rear_light</field>
</record>
<record id='svg_path_wheel_front_left' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>wheel_front_left</field>
</record>
<record id='svg_path_path4612' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4612</field>
</record>
<record id='svg_path_wheel_front_right' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>wheel_front_right</field>
</record>
<record id='svg_path_path4612-4' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4612-4</field>
</record>
<record id='svg_path_wheel_back_right' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>wheel_back_right</field>
</record>
<record id='svg_path_path4612-1' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4612-1</field>
</record>
<record id='svg_path_wheel_back_left' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>wheel_back_left</field>
</record>
<record id='svg_path_path4612-3' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path4612-3</field>
</record>
<record id='svg_path_path3083' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3083</field>
</record>
<record id='svg_path_path3853' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3853</field>
</record>
<record id='svg_path_path3855' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3855</field>
</record>
<record id='svg_path_path3857' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3857</field>
</record>
<record id='svg_path_path3857-2' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3857-2</field>
</record>
<record id='svg_path_path3857-3' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3857-3</field>
</record>
<record id='svg_path_path3857-7' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3857-7</field>
</record>
<record id='svg_path_path3857-97' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3857-97</field>
</record>
<record id='svg_path_path3857-2-3' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3857-2-3</field>
</record>
<record id='svg_path_path3857-3-6' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3857-3-6</field>
</record>
<record id='svg_path_path3857-7-1' model='fleet_rental.svg_vehicle_part'>
<field name='path_ID'>path3857-7-1</field>
</record>

</data>
</openerp>
19 changes: 19 additions & 0 deletions fleet_rental_document/models/fleet_rental_check_vehicle.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,22 @@ def write(self, vals):
if vals.get('return_check_no'):
vals.update({'return_check_yes': False})
return super(FleetRentalCheckLine, self).write(vals)


class FleetRentalSVGVehiclePart(models.Model):
_name = 'fleet_rental.svg_vehicle_part'

name = fields.Char(string='Part name')
path_ID = fields.Char(string='svg path id', required=True)


class FleetRentalSVGVehiclePartLine(models.Model):
_name = 'fleet_rental.svg_vehicle_part_line'

part_id = fields.Many2one('fleet_rental.svg_vehicle_part', string='Part', ondelete='restrict', required=True, readonly=True)
path_ID = fields.Char(related="part_id.path_ID")
document_id = fields.Many2one('fleet_rental.document', string='Document', ondelete='cascade', required=True)
state = fields.Selection([('operative', 'Operative'),
('broken', 'Broken')],
string='State',
default='operative')
18 changes: 8 additions & 10 deletions fleet_rental_document/models/fleet_rental_document.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ class FleetRentalDocument(models.Model):
help="Reference of the document that produced this document.",
readonly=True, states={'draft': [('readonly', False)]})

parent_id = fields.Many2one('fleet_rental.document')

partner_id = fields.Many2one('res.partner', string="Customer", domain=[('customer', '=', True)], required=True)

vehicle_id = fields.Many2one('fleet.vehicle', string="Vehicle", required=True)
Expand All @@ -52,14 +50,14 @@ class FleetRentalDocument(models.Model):
balance = fields.Float(string='Balance', compute="_compute_balance", store=True, digits_compute=dp.get_precision('Product Price'), readonly=True)

check_line_ids = fields.One2many('fleet_rental.check_line', 'document_id', string='Vehicle rental check lines')
part_line_ids = fields.One2many('fleet_rental.svg_vehicle_part_line', 'document_id', string='Vehicle part')

invoice_ids = fields.Many2many("account.invoice", string='Invoices', compute="_get_invoiced", readonly=True, copy=False)

invoice_count = fields.Integer(string='# of Invoices', compute='_get_invoiced', readonly=True)

invoice_line_ids = fields.One2many('account.invoice.line', 'fleet_rental_document_id', string='Invoice Lines', copy=False)

part_ids = fields.One2many(related='vehicle_id.part_ids')
png_file = fields.Text('PNG', compute='_compute_png', store=False)

@api.onchange('vehicle_id')
Expand All @@ -69,13 +67,13 @@ def on_change_vehicle_id(self):
@api.multi
def _compute_png(self):
for rec in self:
f = open('/'.join([os.path.dirname(os.path.realpath(__file__+ '//..//..')), # TODO needs better decision
'fleet_vehicle_svg/static/src/img/car-cutout.svg']), 'r')
f = open('/'.join([os.path.dirname(os.path.realpath(__file__)),
'static/src/img/car-cutout.svg']), 'r')
svg_file = f.read()
dom = etree.fromstring(svg_file)
for part in rec.part_ids:
if part.state == 'broken':
for el in dom.xpath('//*[@id="%s"]' % part.part_id):
for line in rec.part_line_ids:
if line.state == 'broken':
for el in dom.xpath('//*[@id="%s"]' % line.part_id.path_ID):
el.attrib['fill'] = 'red'
f.close()
with Image(blob=etree.tostring(dom), format='svg') as img:
Expand Down Expand Up @@ -124,11 +122,11 @@ def _get_invoiced(self):
@api.model
def default_get(self, fields_list):
result = super(FleetRentalDocument, self).default_get(fields_list)
document_id= self._context.get('active_id', False)
items = self.env['fleet_rental.item_to_check'].search([])
check_line_obj = self.env['fleet_rental.check_line']
parts = self.env['fleet_rental.svg_vehicle_part'].search([])

result['check_line_ids'] = [(5, 0, 0)] + [(0, 0, {'item_id': item.id,'exit_check_yes': False, 'exit_check_no': False,'exit_check_yes': False, 'exit_check_no': False,}) for item in items]
result['part_line_ids'] = [(5, 0, 0)] + [(0, 0, {'part_id': part.id}) for part in parts]

return result

Expand Down
Loading

0 comments on commit 04e3637

Please sign in to comment.