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={
|
||||
'readonly': (Eval('state') != 'draft') | Eval('party', True),
|
||||
},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',
|
||||
required=True, domain=[('party', '=', Eval('party'))],
|
||||
states={
|
||||
@ -60,7 +60,8 @@ class Contract(Workflow, ModelSQL, ModelView):
|
||||
maintenance_services = fields.Many2Many('optical_equipment_maintenance.service-equipment.contract',
|
||||
'contract', 'maintenance_services', "Prorogues")
|
||||
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([
|
||||
('draft', "Draft"),
|
||||
('running', "Running"),
|
||||
@ -92,11 +93,34 @@ class Contract(Workflow, ModelSQL, ModelView):
|
||||
def default_state():
|
||||
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
|
||||
@ModelView.button
|
||||
@Workflow.transition('running')
|
||||
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
|
||||
@ModelView.button
|
||||
|
@ -111,16 +111,15 @@ class MaintenanceService(Workflow, ModelSQL, ModelView):
|
||||
def _get_origin_contract(cls):
|
||||
'Return list of Model names for origin Reference'
|
||||
pool = Pool()
|
||||
Sale = pool.get('optical_equipment.contract')
|
||||
Contract = pool.get('optical_equipment.contract')
|
||||
return [Contract.__name__]
|
||||
|
||||
|
||||
return [Sale.__name__]
|
||||
|
||||
@classmethod
|
||||
def get_origin_contract(cls):
|
||||
Model = Pool().get('ir.model')
|
||||
get_name = Model.get_name
|
||||
models = cls._get_origin()
|
||||
|
||||
models = cls._get_origin_contract()
|
||||
return [(None, '')] + [(m, get_name(m)) for m in models]
|
||||
|
||||
@classmethod
|
||||
@ -211,7 +210,9 @@ class Maintenance(Workflow, ModelSQL, ModelView):
|
||||
})
|
||||
cls._buttons.update({
|
||||
'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'])),
|
||||
'depends': ['state'],}
|
||||
})
|
||||
@ -610,10 +611,11 @@ class MaintenanceLine(ModelSQL, ModelView):
|
||||
depends=['line_replace'])
|
||||
maintenance_activity = fields.Many2One('product.product', 'Maintenance activity',
|
||||
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)},
|
||||
depends=['line_maintenance_activity'])
|
||||
quantity = fields.Float("Quantity", digits='unit')
|
||||
quantity = fields.Float("Quantity", required=True, digits='unit')
|
||||
actual_quantity = fields.Float(
|
||||
"Actual Quantity", digits='unit', readonly=True,
|
||||
states={
|
||||
@ -751,6 +753,8 @@ class CreateContract(Wizard):
|
||||
end_date=self.start.end_date,
|
||||
invoice_address=self.start.invoice_address
|
||||
)
|
||||
|
||||
"""
|
||||
def _create_contract_base(self, dates, subscription):
|
||||
pool = Pool()
|
||||
ContractBase = pool.get('optical_equipment.contract')
|
||||
@ -767,7 +771,8 @@ class CreateContract(Wizard):
|
||||
equipments=a['equipments']
|
||||
)
|
||||
contractBase.save()
|
||||
|
||||
"""
|
||||
|
||||
def do_create_contract(self, action):
|
||||
maintenance_service = self.records[0]
|
||||
pool = Pool()
|
||||
@ -775,13 +780,24 @@ class CreateContract(Wizard):
|
||||
|
||||
dates = self._subscription_start
|
||||
|
||||
|
||||
prorogues = (maintenance_service,)
|
||||
equipments = []
|
||||
for equipment in maintenance_service.lines:
|
||||
equipments.append(equipment.id)
|
||||
for line in maintenance_service.lines:
|
||||
equipments.append(line.equipment.id)
|
||||
|
||||
contract = Contract(party=dates['party'],
|
||||
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'],
|
||||
invoice_address=dates['invoice_address'],
|
||||
contact=dates['contact'],
|
||||
start_date=dates['start_date'],
|
||||
@ -789,4 +805,4 @@ class CreateContract(Wizard):
|
||||
maintenance_services=prorogues,
|
||||
equipments=equipments
|
||||
)
|
||||
contract.save()
|
||||
contract.save()
|
||||
|
@ -160,11 +160,16 @@
|
||||
<field name="domain"></field>
|
||||
<field name="act_window" ref="act_maintenance_service_form"/>
|
||||
</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="type">form</field>
|
||||
<field name="name">maintenance_line_form</field>
|
||||
</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">
|
||||
<field name="model">optical_equipment.maintenance.calibration_sample</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'),
|
||||
('equipments', 'Equipments'),
|
||||
('replaces', 'Replaces')], "Sale Type", required=True,
|
||||
states={'readonly': Eval('state') != 'draft'}
|
||||
)
|
||||
contract_base = fields.Many2One('optical_equipment.contract', "Contract Base",
|
||||
states={'readonly': Eval('state') != 'draft'})
|
||||
maintenance_type = fields.Selection([('preventive', 'Preventive'),
|
||||
('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')},
|
||||
search_context={
|
||||
'related_party': Eval('party'),
|
||||
},)
|
||||
|
||||
agended = fields.Boolean("Scheduling",states={
|
||||
'invisible': (Eval('sale_type') != 'maintenance'),
|
||||
'readonly': True})
|
||||
@ -40,6 +46,21 @@ class Sale(metaclass=PoolMeta):
|
||||
self.lines= []
|
||||
if self.sale_type != "maintenance":
|
||||
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
|
||||
@ModelView.button
|
||||
@ -59,11 +80,12 @@ class Sale(metaclass=PoolMeta):
|
||||
if sale.sale_type == 'maintenance':
|
||||
for line in sale.lines:
|
||||
maintenanceService = MaintenanceService(
|
||||
maintenance_type='preventive',
|
||||
description=sale.description,
|
||||
maintenance_type=sale.maintenance_type,
|
||||
state_agended='no_agenda',
|
||||
propietary=sale.party,
|
||||
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_date=sale.sale_date,
|
||||
state="draft"
|
||||
|
@ -8,8 +8,10 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="invoice_address"/>
|
||||
<label name="number"/>
|
||||
<field name="number"/>
|
||||
<newline/>
|
||||
<label name="contact"/>
|
||||
<field name="contact"/>
|
||||
<newline/>
|
||||
<label name="description"/>
|
||||
<field name="description" colspan="3"/>
|
||||
<label name="reference"/>
|
||||
@ -31,8 +33,10 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<label name="company"/>
|
||||
<field name="company"/>
|
||||
</page>
|
||||
|
||||
</notebook>
|
||||
<label name="price_contract"/>
|
||||
<field name="price_contract"/>
|
||||
<newline/>
|
||||
<label name="state"/>
|
||||
<field name="state"/>
|
||||
<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/>
|
||||
<label name="sale_type"/>
|
||||
<field name="sale_type"/>
|
||||
<label name="maintenance_type"/>
|
||||
<field name="maintenance_type"/>
|
||||
<label name="agended"/>
|
||||
<field name="agended"/>
|
||||
<label name="contract_base"/>
|
||||
<field name="contract_base"/>
|
||||
<label name="contract_ref"/>
|
||||
<field name="contract_ref"/>
|
||||
</xpath>
|
||||
</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