changes finished

This commit is contained in:
sinergia 2022-10-10 18:49:56 -05:00
parent a3ef82f4d1
commit 01f3e58c7e
9 changed files with 154 additions and 27 deletions

View File

@ -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

View File

@ -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'],

View File

@ -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
View File

@ -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"

View File

@ -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">

View 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>

View 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>

View File

@ -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>

View 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>