changes finished
This commit is contained in:
parent
a3ef82f4d1
commit
01f3e58c7e
30
contract.py
30
contract.py
@ -39,7 +39,7 @@ class Contract(Workflow, ModelSQL, ModelView):
|
|||||||
states={
|
states={
|
||||||
'readonly': (Eval('state') != 'draft') | Eval('party', True),
|
'readonly': (Eval('state') != 'draft') | Eval('party', True),
|
||||||
},help="The party who subscribes.")
|
},help="The party who subscribes.")
|
||||||
contact = fields.Many2One('party.contact_mechanism', "Contact", readonly=True, required=True)
|
contact = fields.Many2One('party.contact_mechanism', "Contact", required=True)
|
||||||
invoice_address = fields.Many2One('party.address', 'Invoice Address',
|
invoice_address = fields.Many2One('party.address', 'Invoice Address',
|
||||||
required=True, domain=[('party', '=', Eval('party'))],
|
required=True, domain=[('party', '=', Eval('party'))],
|
||||||
states={
|
states={
|
||||||
@ -60,7 +60,8 @@ class Contract(Workflow, ModelSQL, ModelView):
|
|||||||
maintenance_services = fields.Many2Many('optical_equipment_maintenance.service-equipment.contract',
|
maintenance_services = fields.Many2Many('optical_equipment_maintenance.service-equipment.contract',
|
||||||
'contract', 'maintenance_services', "Prorogues")
|
'contract', 'maintenance_services', "Prorogues")
|
||||||
equipments = fields.Many2Many('optical_equipment.contract-optical_equipment.equipment', 'contract', 'equipment')
|
equipments = fields.Many2Many('optical_equipment.contract-optical_equipment.equipment', 'contract', 'equipment')
|
||||||
#equipments = fields.One2Many('optical_equipment.equipment', "contract_history", "Equipments")
|
price_contract = Monetary("Price Contract", digits=price_digits, currency='currency', required=True,
|
||||||
|
states={'readonly': Eval('state') != 'draft'})
|
||||||
state = fields.Selection([
|
state = fields.Selection([
|
||||||
('draft', "Draft"),
|
('draft', "Draft"),
|
||||||
('running', "Running"),
|
('running', "Running"),
|
||||||
@ -92,11 +93,34 @@ class Contract(Workflow, ModelSQL, ModelView):
|
|||||||
def default_state():
|
def default_state():
|
||||||
return 'draft'
|
return 'draft'
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_number(cls, contracts):
|
||||||
|
pool = Pool()
|
||||||
|
Config = pool.get('optical_equipment.configuration')
|
||||||
|
config = Config(4)
|
||||||
|
|
||||||
|
if config.contract_sequence != None:
|
||||||
|
if not contracts.number:
|
||||||
|
try:
|
||||||
|
contracts.number = config.contract_sequence.get()
|
||||||
|
cls.save(contracts)
|
||||||
|
except UserError:
|
||||||
|
raise UserError(str('Validation Error'))
|
||||||
|
else:
|
||||||
|
raise UserError(gettext('optical_equipment.msg_not_sequence_equipment'))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ModelView.button
|
@ModelView.button
|
||||||
@Workflow.transition('running')
|
@Workflow.transition('running')
|
||||||
def running(cls, contracts):
|
def running(cls, contracts):
|
||||||
pass
|
contract = contracts[0]
|
||||||
|
for equipment in contract.equipments:
|
||||||
|
equipment.state = "contrated"
|
||||||
|
equipment.save()
|
||||||
|
|
||||||
|
cls.set_number(contracts)
|
||||||
|
contract.state='running'
|
||||||
|
contract.save()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ModelView.button
|
@ModelView.button
|
||||||
|
@ -111,16 +111,15 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
|||||||
def _get_origin_contract(cls):
|
def _get_origin_contract(cls):
|
||||||
'Return list of Model names for origin Reference'
|
'Return list of Model names for origin Reference'
|
||||||
pool = Pool()
|
pool = Pool()
|
||||||
Sale = pool.get('optical_equipment.contract')
|
Contract = pool.get('optical_equipment.contract')
|
||||||
|
return [Contract.__name__]
|
||||||
|
|
||||||
return [Sale.__name__]
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_origin_contract(cls):
|
def get_origin_contract(cls):
|
||||||
Model = Pool().get('ir.model')
|
Model = Pool().get('ir.model')
|
||||||
get_name = Model.get_name
|
get_name = Model.get_name
|
||||||
models = cls._get_origin()
|
models = cls._get_origin_contract()
|
||||||
|
|
||||||
return [(None, '')] + [(m, get_name(m)) for m in models]
|
return [(None, '')] + [(m, get_name(m)) for m in models]
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -211,7 +210,9 @@ class Maintenance(Workflow, ModelSQL, ModelView):
|
|||||||
})
|
})
|
||||||
cls._buttons.update({
|
cls._buttons.update({
|
||||||
'in_progress': {'invisible': Eval('state').in_(['draft', 'in_progress', 'finished'])},
|
'in_progress': {'invisible': Eval('state').in_(['draft', 'in_progress', 'finished'])},
|
||||||
'finished': {'invisible': Eval('state').in_(['finished'])},
|
'finished': {'invisible': (Eval('state').in_(['finished'])) |
|
||||||
|
((Eval('maintenance_type') == 'corrective') & (Eval('maintenance_lines') == ())) |
|
||||||
|
(Eval('calibration_total') == ())},
|
||||||
'calibrate': {'invisible': (Eval('lines_calibration') == ()) | (Eval('state').in_(['finished'])),
|
'calibrate': {'invisible': (Eval('lines_calibration') == ()) | (Eval('state').in_(['finished'])),
|
||||||
'depends': ['state'],}
|
'depends': ['state'],}
|
||||||
})
|
})
|
||||||
@ -610,10 +611,11 @@ class MaintenanceLine(ModelSQL, ModelView):
|
|||||||
depends=['line_replace'])
|
depends=['line_replace'])
|
||||||
maintenance_activity = fields.Many2One('product.product', 'Maintenance activity',
|
maintenance_activity = fields.Many2One('product.product', 'Maintenance activity',
|
||||||
domain=[('maintenance_activity', '=', True)],
|
domain=[('maintenance_activity', '=', True)],
|
||||||
states={'invisible': If(Eval('line_replace') == True, True) | (If(Eval('line_maintenance_activity') == False, True)),
|
states={'invisible': If(Eval('line_replace') == True, True) |
|
||||||
|
(If(Eval('line_maintenance_activity') == False, True)),
|
||||||
'required': If(Eval('line_maintenance_actitvity') == True, True)},
|
'required': If(Eval('line_maintenance_actitvity') == True, True)},
|
||||||
depends=['line_maintenance_activity'])
|
depends=['line_maintenance_activity'])
|
||||||
quantity = fields.Float("Quantity", digits='unit')
|
quantity = fields.Float("Quantity", required=True, digits='unit')
|
||||||
actual_quantity = fields.Float(
|
actual_quantity = fields.Float(
|
||||||
"Actual Quantity", digits='unit', readonly=True,
|
"Actual Quantity", digits='unit', readonly=True,
|
||||||
states={
|
states={
|
||||||
@ -751,6 +753,8 @@ class CreateContract(Wizard):
|
|||||||
end_date=self.start.end_date,
|
end_date=self.start.end_date,
|
||||||
invoice_address=self.start.invoice_address
|
invoice_address=self.start.invoice_address
|
||||||
)
|
)
|
||||||
|
|
||||||
|
"""
|
||||||
def _create_contract_base(self, dates, subscription):
|
def _create_contract_base(self, dates, subscription):
|
||||||
pool = Pool()
|
pool = Pool()
|
||||||
ContractBase = pool.get('optical_equipment.contract')
|
ContractBase = pool.get('optical_equipment.contract')
|
||||||
@ -767,6 +771,7 @@ class CreateContract(Wizard):
|
|||||||
equipments=a['equipments']
|
equipments=a['equipments']
|
||||||
)
|
)
|
||||||
contractBase.save()
|
contractBase.save()
|
||||||
|
"""
|
||||||
|
|
||||||
def do_create_contract(self, action):
|
def do_create_contract(self, action):
|
||||||
maintenance_service = self.records[0]
|
maintenance_service = self.records[0]
|
||||||
@ -775,12 +780,23 @@ class CreateContract(Wizard):
|
|||||||
|
|
||||||
dates = self._subscription_start
|
dates = self._subscription_start
|
||||||
|
|
||||||
|
|
||||||
prorogues = (maintenance_service,)
|
prorogues = (maintenance_service,)
|
||||||
equipments = []
|
equipments = []
|
||||||
for equipment in maintenance_service.lines:
|
for line in maintenance_service.lines:
|
||||||
equipments.append(equipment.id)
|
equipments.append(line.equipment.id)
|
||||||
|
|
||||||
|
if maintenance_service.contract_origin:
|
||||||
|
contract=maintenance_service.contract_origin
|
||||||
|
contract.invoice_address=dates['invoice_address']
|
||||||
|
contract.contact=dates['contact']
|
||||||
|
contract.start_date=dates['start_date']
|
||||||
|
contract.end_date=dates['end_date']
|
||||||
|
contract.maintenance_services+=prorogues
|
||||||
|
contract.equipments=equipments
|
||||||
|
contract.state='draft'
|
||||||
|
contract.price_contract=maintenance_service.sale_origin.sale.total_amount
|
||||||
|
contract.save()
|
||||||
|
else:
|
||||||
contract = Contract(party=dates['party'],
|
contract = Contract(party=dates['party'],
|
||||||
invoice_address=dates['invoice_address'],
|
invoice_address=dates['invoice_address'],
|
||||||
contact=dates['contact'],
|
contact=dates['contact'],
|
||||||
|
@ -160,11 +160,16 @@
|
|||||||
<field name="domain"></field>
|
<field name="domain"></field>
|
||||||
<field name="act_window" ref="act_maintenance_service_form"/>
|
<field name="act_window" ref="act_maintenance_service_form"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.ui.view" id="maintenance_line_view_tree">
|
<record model="ir.ui.view" id="maintenance_line_view_form">
|
||||||
<field name="model">optical_equipment.maintenance.line</field>
|
<field name="model">optical_equipment.maintenance.line</field>
|
||||||
<field name="type">form</field>
|
<field name="type">form</field>
|
||||||
<field name="name">maintenance_line_form</field>
|
<field name="name">maintenance_line_form</field>
|
||||||
</record>
|
</record>
|
||||||
|
<record model="ir.ui.view" id="maintenance_line_view_tree">
|
||||||
|
<field name="model">optical_equipment.maintenance.line</field>
|
||||||
|
<field name="type">tree</field>
|
||||||
|
<field name="name">maintenance_line_tree</field>
|
||||||
|
</record>
|
||||||
<record model="ir.ui.view" id="maintenance_calibration_view_form">
|
<record model="ir.ui.view" id="maintenance_calibration_view_form">
|
||||||
<field name="model">optical_equipment.maintenance.calibration_sample</field>
|
<field name="model">optical_equipment.maintenance.calibration_sample</field>
|
||||||
<field name="type">form</field>
|
<field name="type">form</field>
|
||||||
|
34
sale.py
34
sale.py
@ -22,14 +22,20 @@ class Sale(metaclass=PoolMeta):
|
|||||||
sale_type = fields.Selection([('maintenance', 'Maintenance'),
|
sale_type = fields.Selection([('maintenance', 'Maintenance'),
|
||||||
('equipments', 'Equipments'),
|
('equipments', 'Equipments'),
|
||||||
('replaces', 'Replaces')], "Sale Type", required=True,
|
('replaces', 'Replaces')], "Sale Type", required=True,
|
||||||
states={'readonly': Eval('state') != 'draft'}
|
states={'readonly': Eval('state') != 'draft'})
|
||||||
)
|
maintenance_type = fields.Selection([('preventive', 'Preventive'),
|
||||||
contract_base = fields.Many2One('optical_equipment.contract', "Contract Base",
|
('corrective', 'Corrective')
|
||||||
|
], "Maintenance Type", states={'invisible': Eval('sale_type') != "maintenance",
|
||||||
|
'required': Eval('sale_type') == "maintenance",
|
||||||
|
'readonly': Eval('state') != 'draft'})
|
||||||
|
|
||||||
|
contract_ref = fields.Reference("Contract Base", selection='get_origin_contract',
|
||||||
|
domain=[('party', '=', Eval('party')),
|
||||||
|
('state', '=', 'closed')],
|
||||||
states={'invisible': (Eval('sale_type') != 'maintenance')},
|
states={'invisible': (Eval('sale_type') != 'maintenance')},
|
||||||
search_context={
|
search_context={
|
||||||
'related_party': Eval('party'),
|
'related_party': Eval('party'),
|
||||||
},)
|
},)
|
||||||
|
|
||||||
agended = fields.Boolean("Scheduling",states={
|
agended = fields.Boolean("Scheduling",states={
|
||||||
'invisible': (Eval('sale_type') != 'maintenance'),
|
'invisible': (Eval('sale_type') != 'maintenance'),
|
||||||
'readonly': True})
|
'readonly': True})
|
||||||
@ -41,6 +47,21 @@ class Sale(metaclass=PoolMeta):
|
|||||||
if self.sale_type != "maintenance":
|
if self.sale_type != "maintenance":
|
||||||
self.agended = False
|
self.agended = False
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _get_origin(cls):
|
||||||
|
'Return list of Model names for origin Reference'
|
||||||
|
pool = Pool()
|
||||||
|
Contract = pool.get('optical_equipment.contract')
|
||||||
|
return [Contract.__name__]
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_origin_contract(cls):
|
||||||
|
Model = Pool().get('ir.model')
|
||||||
|
get_name = Model.get_name
|
||||||
|
models = cls._get_origin()
|
||||||
|
return [(None, '')] + [(m, get_name(m)) for m in models]
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ModelView.button
|
@ModelView.button
|
||||||
@Workflow.transition('confirmed')
|
@Workflow.transition('confirmed')
|
||||||
@ -59,11 +80,12 @@ class Sale(metaclass=PoolMeta):
|
|||||||
if sale.sale_type == 'maintenance':
|
if sale.sale_type == 'maintenance':
|
||||||
for line in sale.lines:
|
for line in sale.lines:
|
||||||
maintenanceService = MaintenanceService(
|
maintenanceService = MaintenanceService(
|
||||||
maintenance_type='preventive',
|
description=sale.description,
|
||||||
|
maintenance_type=sale.maintenance_type,
|
||||||
state_agended='no_agenda',
|
state_agended='no_agenda',
|
||||||
propietary=sale.party,
|
propietary=sale.party,
|
||||||
propietary_address=sale.shipment_address,
|
propietary_address=sale.shipment_address,
|
||||||
#contract_origin=sale.contract_base,
|
contract_origin=sale.contract_ref if sale.contract_ref else None,
|
||||||
sale_origin=line,
|
sale_origin=line,
|
||||||
sale_date=sale.sale_date,
|
sale_date=sale.sale_date,
|
||||||
state="draft"
|
state="draft"
|
||||||
|
@ -8,8 +8,10 @@ this repository contains the full copyright notices and license terms. -->
|
|||||||
<field name="invoice_address"/>
|
<field name="invoice_address"/>
|
||||||
<label name="number"/>
|
<label name="number"/>
|
||||||
<field name="number"/>
|
<field name="number"/>
|
||||||
|
<newline/>
|
||||||
<label name="contact"/>
|
<label name="contact"/>
|
||||||
<field name="contact"/>
|
<field name="contact"/>
|
||||||
|
<newline/>
|
||||||
<label name="description"/>
|
<label name="description"/>
|
||||||
<field name="description" colspan="3"/>
|
<field name="description" colspan="3"/>
|
||||||
<label name="reference"/>
|
<label name="reference"/>
|
||||||
@ -31,8 +33,10 @@ this repository contains the full copyright notices and license terms. -->
|
|||||||
<label name="company"/>
|
<label name="company"/>
|
||||||
<field name="company"/>
|
<field name="company"/>
|
||||||
</page>
|
</page>
|
||||||
|
|
||||||
</notebook>
|
</notebook>
|
||||||
|
<label name="price_contract"/>
|
||||||
|
<field name="price_contract"/>
|
||||||
|
<newline/>
|
||||||
<label name="state"/>
|
<label name="state"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<group col="2" colspan="2" id="button">
|
<group col="2" colspan="2" id="button">
|
||||||
|
22
view/maintenance_line_form.xml
Normal file
22
view/maintenance_line_form.xml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
|
this repository contains the full copyright notices and license terms. -->
|
||||||
|
<form col="6">
|
||||||
|
<label name="line_replace"/>
|
||||||
|
<field name="line_replace"/>
|
||||||
|
<label name="line_maintenance_activity"/>
|
||||||
|
<field name="line_maintenance_activity"/>
|
||||||
|
<label name="maintenance"/>
|
||||||
|
<field name="maintenance"/>
|
||||||
|
<label name="replacement"/>
|
||||||
|
<field name="replacement"/>
|
||||||
|
<newline/>
|
||||||
|
<label name="maintenance_activity"/>
|
||||||
|
<field name="maintenance_activity"/>
|
||||||
|
<newline/>
|
||||||
|
<label name="unit"/>
|
||||||
|
<field name="unit"/>
|
||||||
|
<newline/>
|
||||||
|
<label name="quantity"/>
|
||||||
|
<field name="quantity"/>
|
||||||
|
</form>
|
10
view/maintenance_line_tree.xml
Normal file
10
view/maintenance_line_tree.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
|
this repository contains the full copyright notices and license terms.-->
|
||||||
|
<tree>
|
||||||
|
<field name="line_replace" expand="1"/>
|
||||||
|
<field name="line_maintenance_activity" expand="1"/>
|
||||||
|
<field name="replacement" expand="1"/>
|
||||||
|
<field name="maintenance_activity" expand="1"/>
|
||||||
|
<field name="quantity"/>
|
||||||
|
</tree>
|
@ -6,9 +6,11 @@
|
|||||||
<newline/>
|
<newline/>
|
||||||
<label name="sale_type"/>
|
<label name="sale_type"/>
|
||||||
<field name="sale_type"/>
|
<field name="sale_type"/>
|
||||||
|
<label name="maintenance_type"/>
|
||||||
|
<field name="maintenance_type"/>
|
||||||
<label name="agended"/>
|
<label name="agended"/>
|
||||||
<field name="agended"/>
|
<field name="agended"/>
|
||||||
<label name="contract_base"/>
|
<label name="contract_ref"/>
|
||||||
<field name="contract_base"/>
|
<field name="contract_ref"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</data>
|
</data>
|
||||||
|
22
view/vmaintenance_line_form.xml
Normal file
22
view/vmaintenance_line_form.xml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
|
this repository contains the full copyright notices and license terms. -->
|
||||||
|
<form>
|
||||||
|
<label name="product"/>
|
||||||
|
<field name="product"/>
|
||||||
|
<label name="maintenance"/>
|
||||||
|
<field name="maintenance"/>
|
||||||
|
<label name="maintenance_activity"/>
|
||||||
|
<field name="maintenance_activity"/>
|
||||||
|
</form>
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
|
this repository contains the full copyright notices and license terms. -->
|
||||||
|
<form>
|
||||||
|
<label name="product"/>
|
||||||
|
<field name="product"/>
|
||||||
|
<label name="maintenance"/>
|
||||||
|
<field name="maintenance"/>
|
||||||
|
<label name="maintenance_activity"/>
|
||||||
|
<field name="maintenance_activity"/>
|
||||||
|
</form>
|
Loading…
Reference in New Issue
Block a user