فهرست منبع

commit inicial

Rodney Enciso Arias 7 سال پیش
کامیت
0807449405

+ 2 - 0
__init__.py

@@ -0,0 +1,2 @@
+# -*- encoding: utf-8 -*-
+from . import model

BIN
__init__.pyc


+ 18 - 0
__openerp__.py

@@ -0,0 +1,18 @@
+# -*- encoding: utf-8 -*-
+{
+    'name': 'Eiru Car Service',
+    'version': '8.0.0.1.0',
+    'category': 'Product',
+    'summary': 'Car services for odoo',
+    'author': 'Eiru',
+    'license': 'AGPL-3',
+    'depends': ['product','eiru_base_for_services'],
+    'data': [
+        'views/car_services_view.xml',
+        'views/car_brand_view.xml',
+        'views/project.xml',
+        'views/res_partner_view.xml',
+        # 'security/ir.model.access.csv'
+    ],
+    'installable': True,
+}

+ 4 - 0
model/__init__.py

@@ -0,0 +1,4 @@
+# -*- encoding: utf-8 -*-
+from . import car_services
+from . import proyect_car
+from . import res_partner

BIN
model/__init__.pyc


+ 2 - 0
model/__init__0.py

@@ -0,0 +1,2 @@
+# -*- encoding: utf-8 -*-
+from . import model

+ 58 - 0
model/car_services.py

@@ -0,0 +1,58 @@
+# -*- encoding: utf-8 -*-
+from openerp import models, fields, api
+
+class CarService(models.Model):
+    _name = 'car.service'
+
+    name=fields.Char('Modelo y Número de chapa', required=True)
+    logo = fields.Binary('Logo File')
+    # license_plate = fields.Char('Numero de chapa', required=True)
+    partner_id = fields.Many2one(
+        'res.partner',
+        string='Cliente',
+        ondelete='restrict'
+    )
+    description = fields.Text('Description', translate=True)
+    policy = fields.Boolean()
+    agent_id = fields.Many2one(
+        'res.partner',
+        string='Agente',
+        ondelete='restrict'
+    )
+    secure_id = fields.Many2one(
+        'res.partner',
+        string='Aseguradora',
+        ondelete='restrict'
+    )
+    odometer = fields.Float('Odometro')
+    car_value = fields.Float('Valor del vehiculo')
+    transmission = fields.Selection([('manual','Manual'), ('automatic','Automatico')], string="Tipo de transmision")
+    fuel_type = fields.Selection([('gasoline','Gasolina'), ('diesel','Diesel'), ('electric','Electrico'), ('hybrid','Hibrido')], string="Tipo de combustible")
+    seats = fields.Integer('Nro. de asientos')
+    doors = fields.Integer('Nro. de puertas')
+    car_brand_id = fields.Many2one(
+        'car.brand',
+        string='Marca'
+    )
+
+
+class CarBrand(models.Model):
+    _name = 'car.brand'
+
+    name = fields.Char('Brand Name', required=True)
+    description = fields.Text('Description', translate=True)
+    logo = fields.Binary('Logo File')
+    car_ids = fields.One2many(
+        'car.service',
+        'car_brand_id',
+        string='Marcas de autos',
+    )
+    car_count = fields.Integer(
+        string='Numero de autos',
+        compute='_get_car_count',
+    )
+
+    @api.one
+    @api.depends('car_ids')
+    def _get_car_count(self):
+        self.car_count = len(self.car_ids)

BIN
model/car_services.pyc


+ 50 - 0
model/proyect_car.py

@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+
+from openerp import models, fields, api
+from openerp.exceptions import except_orm, Warning, RedirectWarning
+
+class CarCarModify(models.Model):
+    _inherit = 'car.car'
+
+    name = fields.Many2one('car.service', string='Nombre del vehiculo', required=True)
+    agent_id = fields.Many2one('res.partner', string='Agente de Seguro')
+    policy = fields.Boolean()
+
+    @api.one
+    @api.onchange('name')
+    def onchange_name(self):
+        self.partner_id = self.name.partner_id.id
+        self.agent_id = self.name.agent_id.id
+        self.policy = self.name.policy
+
+    date_in = fields.Date('Fecha de entrada', default=fields.Date.today())
+    date_out = fields.Date('Fecha de Salida')
+
+    image_medium = fields.Binary('Binary File', related="name.logo")
+
+    @api.multi
+    def unlink(self):
+        for project in self:
+            if project.state in ('close'):
+                raise Warning('No puedes borrar un proyecto en estado cerrado')
+        return super(car_car, self).unlink()
+
+    def on_change_vehicle(self):
+        if not self.name:
+            return {}
+        model = self.pool.get('car.service').browse(self.name)
+        return {
+            'value': {
+                'image_medium': model.logo,
+            }
+        }
+
+class CarWorkshopModify(models.Model):
+    _inherit = 'car.workshop'
+
+    @api.multi
+    def unlink(self):
+        for task in self:
+            if task.state in ('workshop_create_invoices'):
+                raise Warning('No puedes borrar una tarea ya facturada')
+        return super(car_workshop, self).unlink()

BIN
model/proyect_car.pyc


+ 38 - 0
model/res_partner.py

@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+
+from openerp import models, fields, api
+
+class ResPartnerCar(models.Model):
+    _inherit = 'res.partner'
+
+    is_insurer = fields.Boolean()
+    is_agent = fields.Boolean()
+
+    car_ids = fields.One2many(
+        'car.service',
+        'partner_id',
+    )
+    car_count = fields.Integer(
+        string='Numero de autos',
+        compute='_get_car_count',
+    )
+
+    @api.one
+    @api.depends('car_ids')
+    def _get_car_count(self):
+        self.car_count = len(self.car_ids)
+
+
+    car_secure_ids = fields.One2many(
+        'car.service',
+        'secure_id',
+    )
+    car_secure_count = fields.Integer(
+        string='Asegurados',
+        compute='_get_car_secure_count',
+    )
+
+    @api.one
+    @api.depends('car_secure_ids')
+    def _get_car_secure_count(self):
+        self.car_secure_count = len(self.car_secure_ids)

BIN
model/res_partner.pyc


+ 86 - 0
views/car_brand_view.xml

@@ -0,0 +1,86 @@
+<openerp>
+    <data>
+        <record id="product_car_search_form_view" model="ir.ui.view">
+            <field name="name">car.brand.search.form</field>
+            <field name="model">car.brand</field>
+            <field name="arch" type="xml">
+                <search string="Car Brand">
+                    <field name="name"/>
+                </search>
+            </field>
+        </record>
+
+        <act_window
+            id="action_open_brand_cars"
+            name="Car Products"
+            res_model="car.service"
+            view_type="form"
+            view_mode="tree,form"
+            domain="[('car_brand_id', '=', active_id)]"/>
+
+        <act_window
+            id="action_open_single_car_brand"
+            name="Car Brand"
+            res_model="car.brand"
+            view_type="form"
+            view_mode="tree,form"
+            target="current"
+            domain="[('car_ids', 'in', active_id)]"/>
+
+        <record id="view_car_brand_form" model="ir.ui.view">
+            <field name="name">car.brand.form</field>
+            <field name="model">car.brand</field>
+            <field name="arch" type="xml">
+                <form string="Car Brand" version="7.0">
+                    <sheet>
+                        <field name="logo" widget="image" class="oe_avatar oe_left"/>
+                        <div class="oe_title">
+                            <div class="oe_edit_only">
+                                <label for="name" string="Marca"/>
+                            </div>
+                            <h1>
+                                <field name="name"/>
+                            </h1>
+                        </div>
+                        <div class="oe_right oe_button_box">
+                            <button
+                                class="oe_inline oe_stat_button"
+                                type="action"
+                                name="%(action_open_brand_cars)d"
+                                icon="fa-cubes">
+                                <field name="car_count" string="Vehiculos" widget="statinfo" />
+                            </button>
+                        </div>
+                        <group string="Descripción">
+                            <field name="description" nolabel="1"/>
+                        </group>
+                    </sheet>
+                </form>
+            </field>
+        </record>
+
+        <record id="view_car_brand_tree" model="ir.ui.view">
+            <field name="name">car.brand.tree</field>
+            <field name="model">car.brand</field>
+            <field name="arch" type="xml">
+                <tree string="car.brand">
+                    <field name="name" string="Marca"/>
+                    <field name="description" string="Descripción"/>
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="action_car_brand">
+            <field name="name">Marcas</field>
+            <field name="res_model">car.brand</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+        </record>
+
+        <menuitem
+            name="Marcas de vehiculos"
+            id="menu_car_brand"
+            action="action_car_brand"
+            parent="eiru_base_for_services.menu_worksheet_config"/>
+    </data>
+</openerp>

+ 79 - 0
views/car_services_view.xml

@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+        <record id="view_car_form" model="ir.ui.view">
+            <field name="name">view.car.form</field>
+            <field name="model">car.service</field>
+            <field name="arch" type="xml">
+                <form string="Vehiculo">
+                    <sheet>
+                        <field name="logo" widget="image" class="oe_avatar oe_left"/>
+                        <div class="oe_title">
+                            <div class="oe_edit_only">
+                                <label for="name" string="Modelo y Número de chapa"/>
+                            </div>
+                            <h1>
+                                <field name="name"/>
+                            </h1>
+                            <h2>
+                                <field name="car_brand_id" placeholder="Marca"/>
+                            </h2>
+                        </div>
+                        <notebook>
+                            <page string="Configuración">
+                                <group>
+                                    <group string="Información legal">
+                                        <field name="partner_id" string="Propietario" required="1" domain="[('customer','=',True)]"/>
+                                        <field name="policy" string="¿Tiene seguro?"/>
+                                        <field name="secure_id" string="Aseguradora" attrs="{'invisible': [('policy','=', False)],'required': [('policy','=', True)]}" domain="[('is_insurer','=',True)]"/>
+                                        <field name="agent_id" string="Agente" attrs="{'invisible': [('policy','=', False)],'required': [('policy','=', True)]}" domain="[('is_agent','=', True),('parent_id','=', secure_id)]"/>
+                                        <field name="car_value" string="Valor del vehiculo"/>
+                                    </group>
+                                    <group string="Información técnica">
+                                        <field name="odometer" string="Odometro"/>
+                                        <field name="transmission" string="Tipo de transmisión"/>
+                                        <field name="fuel_type" string="Tipo de combustible"/>
+                                    </group>
+                                </group>
+                                <group>
+                                    <group string="Descripción">
+                                        <field name="description" nolabel="1"/>
+                                    </group>
+                                    <group string="Información Adicional">
+                                        <field name="seats" string="Número de asientos"/>
+                                        <field name="doors" string="Número de puertas"/>
+                                    </group>
+                                </group>
+                            </page>
+                        </notebook>
+                    </sheet>
+                </form>
+            </field>
+        </record>
+
+        <record id="view_car_tree" model="ir.ui.view">
+            <field name="name">view.car.tree</field>
+            <field name="model">car.service</field>
+            <field name="arch" type="xml">
+                <tree string="Vehiculo">
+                    <field name="name"/>
+                    <field name="car_brand_id"/>
+                    <field name="partner_id"/>
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="action_car">
+            <field name="name">Vehiculos</field>
+            <field name="res_model">car.service</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+        </record>
+
+        <menuitem
+            name="Registro de vehiculos"
+            id="menu_car"
+            action="action_car"
+            parent="eiru_base_for_services.menu_worksheet_config"/>
+    </data>
+</openerp>

+ 25 - 0
views/project.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<openerp>
+    <data>
+        <record id="project_car_form_view" model="ir.ui.view">
+            <field name="name">project.car.form.view</field>
+            <field name="model">car.car</field>
+            <field name="inherit_id" ref="eiru_base_for_services.car_car_form"/>
+            <field name="arch" type="xml">
+                <group name="extra_info" position="inside">
+                    <field name="date_in" string="Fecha de entrada" attrs="{'required': [('state','!=', 'draft')],'readonly': [('state','=', 'close')]}"/>
+                    <field name="date_out" string="Fecha de salida" attrs="{'readonly': [('state','=', 'close')]}"/>
+                </group>
+                <field name="name" position="replace">
+                    <field name="name" placeholder="Vehiculo" attrs="{'readonly': [('state','=', 'close')]}"/>
+                </field>
+                <field name="partner_id" position="before">
+                    <field name="policy" string="¿Entra por medio de seguro?" attrs="{'readonly': [('state','=', 'close')]}"/>
+                </field>
+                <field name="partner_id" position="after">
+                    <field name="agent_id" string="Agente de seguro" attrs="{'invisible': [('policy','=', False)],'readonly': [('state','=', 'close')]}"/>
+                </field>
+            </field>
+        </record>
+    </data>
+</openerp>

+ 57 - 0
views/res_partner_view.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<openerp>
+    <data>
+
+        <act_window
+            id="action_open_cars"
+            name="Vehiculos"
+            res_model="car.service"
+            view_type="form"
+            view_mode="tree,form"
+            domain="[('partner_id', '=', active_id)]"/>
+
+            <act_window
+                id="action_open_secure_cars"
+                name="Vehiculos Asegurados"
+                res_model="car.service"
+                view_type="form"
+                view_mode="tree,form"
+                domain="[('secure_id', '=', active_id)]"/>
+
+        <record id="res_partner_secure_form_view" model="ir.ui.view">
+            <field name="name">partner.secure.form.view</field>
+            <field name="model">res.partner</field>
+            <field name="inherit_id" ref="base.view_partner_form"/>
+            <field name="arch" type="xml">
+                <field name="category_id" position="after">
+                    <field name="is_insurer" class="oe_inline" attrs="{'invisible': [('is_company','=', False)]}"/><label for="is_insurer" string="¿Es un Aseguradora?" attrs="{'invisible': [('is_company','=', False)]}"/>
+                    <field name="is_agent" class="oe_inline" attrs="{'invisible': [('is_company','!=', False)]}"/><label for="is_agent" string="¿Es un Agente?" attrs="{'invisible': [('is_company','!=', False)]}"/>
+                </field>
+                <field name="parent_id" position="replace">
+                     <field name="parent_id" placeholder="Company" domain="[('is_company', '=', True),('is_insurer', '=', True)]" context="{'default_is_company': True, 'default_supplier': supplier, 'default_customer': customer}" attrs="{'invisible': [('is_company','=', True),('parent_id', '=', False)],'required': [('is_agent','=', True)]}" on_change="onchange_address(use_parent_address, parent_id)"/>
+                </field>
+                <div name="buttons" position="after">
+                    <div class="oe_right oe_button_box">
+                        <button
+                            class="oe_inline oe_stat_button"
+                            type="action"
+                            name="%(action_open_cars)d"
+                            icon="fa fa-car"
+                            attrs="{'invisible': [('customer', '=', False)]}">
+                            <field name="car_count" string="Vehiculos" widget="statinfo" />
+                        </button>
+                        <button
+                            class="oe_inline oe_stat_button"
+                            type="action"
+                            name="%(action_open_secure_cars)d"
+                            icon="fa fa-folder-open"
+                            attrs="{'invisible': [('is_insurer', '=', False)]}">
+                            <field name="car_secure_count" string="Asegurados" widget="statinfo" />
+                        </button>
+                    </div>
+                </div>
+            </field>
+        </record>
+
+    </data>
+</openerp>