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={
'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

View File

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

View File

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

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

View File

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

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

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>