upgrade review
This commit is contained in:
parent
f6e7bab0a7
commit
116f1dac65
93
maquila.py
93
maquila.py
|
@ -64,24 +64,25 @@ class Maquila(ModelSQL, ModelView):
|
||||||
"Maquila"
|
"Maquila"
|
||||||
__name__ = 'agronomics.maquila'
|
__name__ = 'agronomics.maquila'
|
||||||
company = fields.Many2One(
|
company = fields.Many2One(
|
||||||
'company.company', "Company", required=True, select=True)
|
'company.company', "Company", required=True, select=True, readonly=True)
|
||||||
contract = fields.Many2One('agronomics.maquila.contract', "Contract",
|
contract = fields.Many2One('agronomics.maquila.contract', "Contract",
|
||||||
ondelete='CASCADE', select=True, required=True)
|
ondelete='CASCADE', select=True, required=True, readonly=True)
|
||||||
crop = fields.Many2One('agronomics.crop', "Crop", required=True)
|
crop = fields.Many2One('agronomics.crop', "Crop", required=True, readonly=True)
|
||||||
party = fields.Many2One('party.party', "Party", required=True,
|
party = fields.Many2One('party.party', "Party", required=True, readonly=True,
|
||||||
context={
|
context={
|
||||||
'company': Eval('company', -1),
|
'company': Eval('company', -1),
|
||||||
},
|
},
|
||||||
depends=['company'])
|
depends=['company'])
|
||||||
quantity = fields.Float("Quantity", digits=(16, Eval('unit_digits', 2)), required=True,
|
quantity = fields.Float("Quantity", digits=(16, Eval('unit_digits', 2)),
|
||||||
depends=['unit_digits'])
|
required=True, readonly=True, depends=['unit_digits'])
|
||||||
product = fields.Many2One('product.product', "Product", required=True,
|
product = fields.Many2One('product.product', "Product", required=True,
|
||||||
|
readonly=True,
|
||||||
context={
|
context={
|
||||||
'company': Eval('company', -1),
|
'company': Eval('company', -1),
|
||||||
},
|
},
|
||||||
depends=['company'])
|
depends=['company'])
|
||||||
unit = fields.Many2One('product.uom', "Unit", required=True, ondelete='RESTRICT',
|
unit = fields.Many2One('product.uom', "Unit", required=True, readonly=True,
|
||||||
domain=[
|
ondelete='RESTRICT', domain=[
|
||||||
If(Bool(Eval('product_uom_category')),
|
If(Bool(Eval('product_uom_category')),
|
||||||
('category', '=', Eval('product_uom_category')),
|
('category', '=', Eval('product_uom_category')),
|
||||||
('category', '!=', -1)),
|
('category', '!=', -1)),
|
||||||
|
@ -133,7 +134,9 @@ class Contract(sequence_ordered(), Workflow, ModelSQL, ModelView):
|
||||||
},
|
},
|
||||||
depends=['state', 'company'])
|
depends=['state', 'company'])
|
||||||
product = fields.Many2One('product.product', "Product", required=True,
|
product = fields.Many2One('product.product', "Product", required=True,
|
||||||
states={
|
domain=[
|
||||||
|
('agronomic_type', '=', 'grape'),
|
||||||
|
], states={
|
||||||
'readonly': Eval('state') != 'draft',
|
'readonly': Eval('state') != 'draft',
|
||||||
},
|
},
|
||||||
context={
|
context={
|
||||||
|
@ -174,7 +177,7 @@ class Contract(sequence_ordered(), Workflow, ModelSQL, ModelView):
|
||||||
},
|
},
|
||||||
depends=['state'])
|
depends=['state'])
|
||||||
product_years = fields.One2Many('agronomics.maquila.contract.product_year',
|
product_years = fields.One2Many('agronomics.maquila.contract.product_year',
|
||||||
'contract', "Product Years",
|
'contract', "Product Years", readonly=True,
|
||||||
states={
|
states={
|
||||||
'readonly': Eval('state') != 'draft',
|
'readonly': Eval('state') != 'draft',
|
||||||
},
|
},
|
||||||
|
@ -270,7 +273,9 @@ class Contract(sequence_ordered(), Workflow, ModelSQL, ModelView):
|
||||||
@ModelView.button
|
@ModelView.button
|
||||||
@Workflow.transition('draft')
|
@Workflow.transition('draft')
|
||||||
def draft(cls, contracts):
|
def draft(cls, contracts):
|
||||||
pass
|
for contract in contracts:
|
||||||
|
contract.delete_contract_product_year()
|
||||||
|
contract.delete_maquila()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ModelView.button
|
@ModelView.button
|
||||||
|
@ -278,6 +283,10 @@ class Contract(sequence_ordered(), Workflow, ModelSQL, ModelView):
|
||||||
def active(cls, contracts):
|
def active(cls, contracts):
|
||||||
for contract in contracts:
|
for contract in contracts:
|
||||||
contract.check_quantity()
|
contract.check_quantity()
|
||||||
|
contract.create_contract_product_year()
|
||||||
|
# TDOO si active -> create_contract_product_year
|
||||||
|
# also create_maquila from product_years that create_contract_product_year ?
|
||||||
|
contract.create_maquila()
|
||||||
cls.set_number(contracts)
|
cls.set_number(contracts)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -307,6 +316,56 @@ class Contract(sequence_ordered(), Workflow, ModelSQL, ModelView):
|
||||||
raise UserError(gettext('agronomics.msg_maquila_contract_quantity',
|
raise UserError(gettext('agronomics.msg_maquila_contract_quantity',
|
||||||
contract=self.rec_name))
|
contract=self.rec_name))
|
||||||
|
|
||||||
|
def create_contract_product_year(self):
|
||||||
|
ContractProductYear = Poo().get('agronomics.maquila.contract.product_year')
|
||||||
|
|
||||||
|
product_years = []
|
||||||
|
for crop in self.product_crops:
|
||||||
|
product_year = ContractProductYear()
|
||||||
|
product_year.contract = self
|
||||||
|
product_year.crop = crop.crop
|
||||||
|
product_year.product = contract.product
|
||||||
|
product_year.quantity = contract.quantity # TODO quantity from crop or contract
|
||||||
|
product_year.unit = contract.unit
|
||||||
|
product_year.save()
|
||||||
|
product_years.append(product_year)
|
||||||
|
return product_years
|
||||||
|
|
||||||
|
def delete_contract_product_year(self):
|
||||||
|
ContractProductYear = Poo().get('agronomics.maquila.contract.product_year')
|
||||||
|
|
||||||
|
product_years = ContractProductYear.search([
|
||||||
|
('contract', '=', self),
|
||||||
|
])
|
||||||
|
ContractProductYear.delete(product_years)
|
||||||
|
|
||||||
|
def create_maquila(self):
|
||||||
|
Maquila = Poo().get('agronomics.maquila')
|
||||||
|
|
||||||
|
default_values = Maquila.default_get(Maquila._fields.keys(),
|
||||||
|
with_rec_name=False)
|
||||||
|
|
||||||
|
maquilas = []
|
||||||
|
for crop in self.product_years:
|
||||||
|
maquila = Maquila(**default_values)
|
||||||
|
maquila.contract = self
|
||||||
|
maquila.crop = crop # TODO
|
||||||
|
maquila.party = self.party
|
||||||
|
maquila.product = contract.product
|
||||||
|
maquila.quantity = contract.quantity # TODO quantity from ?
|
||||||
|
maquila.unit = contract.unit
|
||||||
|
maquila.save()
|
||||||
|
maquilas.append(maquila)
|
||||||
|
return maquilas
|
||||||
|
|
||||||
|
def delete_maquila(self):
|
||||||
|
Maquila = Poo().get('agronomics.maquila')
|
||||||
|
|
||||||
|
maquilas = Maquila.search([
|
||||||
|
('contract', '=', self),
|
||||||
|
])
|
||||||
|
Maquila.delete(maquilas)
|
||||||
|
|
||||||
|
|
||||||
class ContractCrop(ModelSQL, ModelView):
|
class ContractCrop(ModelSQL, ModelView):
|
||||||
"Maquila Contract Crop"
|
"Maquila Contract Crop"
|
||||||
|
@ -342,13 +401,15 @@ class ContractProductYear(ModelSQL, ModelView):
|
||||||
"Maquila Contract Product Year"
|
"Maquila Contract Product Year"
|
||||||
__name__ = 'agronomics.maquila.contract.product_year'
|
__name__ = 'agronomics.maquila.contract.product_year'
|
||||||
contract = fields.Many2One('agronomics.maquila.contract', "Contract",
|
contract = fields.Many2One('agronomics.maquila.contract', "Contract",
|
||||||
ondelete='CASCADE', select=True, required=True)
|
ondelete='CASCADE', select=True, required=True, readonly=True)
|
||||||
crop = fields.Many2One('agronomics.crop', "Crop", required=True)
|
crop = fields.Many2One('agronomics.crop', "Crop", required=True,
|
||||||
product = fields.Many2One('product.product', "Product", required=True)
|
readonly=True)
|
||||||
quantity = fields.Float('Quantity', required=True,
|
product = fields.Many2One('product.product', "Product", required=True,
|
||||||
|
readonly=True)
|
||||||
|
quantity = fields.Float('Quantity', required=True, readonly=True,
|
||||||
digits=(16, Eval('unit_digits', 2)),
|
digits=(16, Eval('unit_digits', 2)),
|
||||||
depends=['unit_digits'])
|
depends=['unit_digits'])
|
||||||
unit = fields.Many2One('product.uom', "Unit", required=True,
|
unit = fields.Many2One('product.uom', "Unit", required=True, readonly=True,
|
||||||
ondelete='RESTRICT', domain=[
|
ondelete='RESTRICT', domain=[
|
||||||
If(Bool(Eval('product_uom_category')),
|
If(Bool(Eval('product_uom_category')),
|
||||||
('category', '=', Eval('product_uom_category')),
|
('category', '=', Eval('product_uom_category')),
|
||||||
|
|
1
sale.py
1
sale.py
|
@ -123,6 +123,7 @@ class SaleLine(metaclass=PoolMeta):
|
||||||
ondelete='RESTRICT',
|
ondelete='RESTRICT',
|
||||||
states={
|
states={
|
||||||
'invisible': ~Bool(Eval('_parent_sale', {}).get('is_maquila')),
|
'invisible': ~Bool(Eval('_parent_sale', {}).get('is_maquila')),
|
||||||
|
'required': Bool(Eval('_parent_sale', {}).get('is_maquila')),
|
||||||
'readonly': Eval('sale_state') != 'draft',
|
'readonly': Eval('sale_state') != 'draft',
|
||||||
}, depends=['sale_state'])
|
}, depends=['sale_state'])
|
||||||
maquila = fields.Many2One('agronomics.maquila', "Maquila", readonly=True,
|
maquila = fields.Many2One('agronomics.maquila', "Maquila", readonly=True,
|
||||||
|
|
Loading…
Reference in New Issue