mirror of
https://github.com/Kalenis/kalenislims.git
synced 2023-12-14 07:13:04 +01:00
lims: add configuration for mandatory zone in samples
This commit is contained in:
parent
1334693d5c
commit
beefca95ff
5 changed files with 65 additions and 19 deletions
|
@ -210,6 +210,7 @@ class Configuration(ModelSingleton, ModelSQL, ModelView,
|
|||
('accepted', 'With accepted results'),
|
||||
], 'Samples in progress',
|
||||
help='Samples allowed for preliminary reports')
|
||||
zone_required = fields.Boolean('Zone required')
|
||||
|
||||
@staticmethod
|
||||
def default_brix_digits():
|
||||
|
@ -247,6 +248,10 @@ class Configuration(ModelSingleton, ModelSQL, ModelView,
|
|||
def default_samples_in_progress():
|
||||
return 'result'
|
||||
|
||||
@staticmethod
|
||||
def default_zone_required():
|
||||
return True
|
||||
|
||||
def get_reagents(self):
|
||||
res = []
|
||||
if self.reagents:
|
||||
|
|
|
@ -471,6 +471,10 @@ msgctxt "field:lims.configuration,soluble_solids_digits:"
|
|||
msgid "Soluble solids digits"
|
||||
msgstr "Dígitos de Sólidos solubles"
|
||||
|
||||
msgctxt "field:lims.configuration,zone_required:"
|
||||
msgid "Zone required"
|
||||
msgstr "Zona requerida"
|
||||
|
||||
msgctxt "field:lims.configuration-laboratory,configuration:"
|
||||
msgid "Configuration"
|
||||
msgstr "Configuración"
|
||||
|
@ -1223,6 +1227,10 @@ msgctxt "field:lims.create_sample.start,zone:"
|
|||
msgid "Zone"
|
||||
msgstr "Zona"
|
||||
|
||||
msgctxt "field:lims.create_sample.start,zone_required:"
|
||||
msgid "Zone required"
|
||||
msgstr "Zona requerida"
|
||||
|
||||
msgctxt "field:lims.divide_reports.detail,analysis:"
|
||||
msgid "Analysis"
|
||||
msgstr "Análisis"
|
||||
|
@ -5315,6 +5323,10 @@ msgctxt "field:lims.sample,zone:"
|
|||
msgid "Zone"
|
||||
msgstr "Zona"
|
||||
|
||||
msgctxt "field:lims.sample,zone_required:"
|
||||
msgid "Zone required"
|
||||
msgstr "Zona requerida"
|
||||
|
||||
msgctxt "field:lims.sample.duplicate.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Fecha de ingreso"
|
||||
|
|
|
@ -2500,9 +2500,10 @@ class AddFractionRMBMZ(Wizard):
|
|||
raise UserError(gettext('lims.msg_no_entry_control'))
|
||||
|
||||
entry = Entry(workyear.default_entry_control.id)
|
||||
if not entry.party.entry_zone:
|
||||
if not entry.party.entry_zone and config.zone_required:
|
||||
raise UserError(gettext('lims.msg_no_party_zone',
|
||||
party=entry.party.rec_name))
|
||||
zone_id = entry.party.entry_zone and entry.party.entry_zone.id or None
|
||||
|
||||
laboratory = self.start.planification.laboratory
|
||||
obj_description = self._get_obj_description(self.start)
|
||||
|
@ -2513,7 +2514,7 @@ class AddFractionRMBMZ(Wizard):
|
|||
'date': datetime.now(),
|
||||
'product_type': self.start.product_type.id,
|
||||
'matrix': self.start.matrix.id,
|
||||
'zone': entry.party.entry_zone.id,
|
||||
'zone': zone_id,
|
||||
'label': self.start.label,
|
||||
'obj_description': obj_description,
|
||||
'packages_quantity': 1,
|
||||
|
@ -2938,9 +2939,10 @@ class AddFractionBRE(Wizard):
|
|||
raise UserError(gettext('lims.msg_no_entry_control'))
|
||||
|
||||
entry = Entry(workyear.default_entry_control.id)
|
||||
if not entry.party.entry_zone:
|
||||
if not entry.party.entry_zone and config.zone_required:
|
||||
raise UserError(gettext('lims.msg_no_party_zone',
|
||||
party=entry.party.rec_name))
|
||||
zone_id = entry.party.entry_zone and entry.party.entry_zone.id or None
|
||||
|
||||
laboratory = self.start.planification.laboratory
|
||||
obj_description = self._get_obj_description(self.start)
|
||||
|
@ -2951,7 +2953,7 @@ class AddFractionBRE(Wizard):
|
|||
'date': datetime.now(),
|
||||
'product_type': self.start.product_type.id,
|
||||
'matrix': self.start.matrix.id,
|
||||
'zone': entry.party.entry_zone.id,
|
||||
'zone': zone_id,
|
||||
'label': self.start.label,
|
||||
'obj_description': obj_description,
|
||||
'packages_quantity': 1,
|
||||
|
@ -3301,9 +3303,10 @@ class AddFractionMRT(Wizard):
|
|||
raise UserError(gettext('lims.msg_no_entry_control'))
|
||||
|
||||
entry = Entry(workyear.default_entry_control.id)
|
||||
if not entry.party.entry_zone:
|
||||
if not entry.party.entry_zone and config.zone_required:
|
||||
raise UserError(gettext('lims.msg_no_party_zone',
|
||||
party=entry.party.rec_name))
|
||||
zone_id = entry.party.entry_zone and entry.party.entry_zone.id or None
|
||||
|
||||
laboratory = self.start.planification.laboratory
|
||||
obj_description = self._get_obj_description(self.start)
|
||||
|
@ -3314,7 +3317,7 @@ class AddFractionMRT(Wizard):
|
|||
'date': datetime.now(),
|
||||
'product_type': self.start.product_type.id,
|
||||
'matrix': self.start.matrix.id,
|
||||
'zone': entry.party.entry_zone.id,
|
||||
'zone': zone_id,
|
||||
'label': self.start.label,
|
||||
'obj_description': obj_description,
|
||||
'packages_quantity': 1,
|
||||
|
@ -4521,9 +4524,10 @@ class CreateFractionControl(Wizard):
|
|||
raise UserError(gettext('lims.msg_no_entry_control'))
|
||||
|
||||
entry = Entry(workyear.default_entry_control.id)
|
||||
if not entry.party.entry_zone:
|
||||
if not entry.party.entry_zone and config.zone_required:
|
||||
raise UserError(gettext('lims.msg_no_party_zone',
|
||||
party=entry.party.rec_name))
|
||||
zone_id = entry.party.entry_zone and entry.party.entry_zone.id or None
|
||||
|
||||
laboratory = self.start.laboratory
|
||||
obj_description = self._get_obj_description(self.start)
|
||||
|
@ -4534,7 +4538,7 @@ class CreateFractionControl(Wizard):
|
|||
'date': datetime.now(),
|
||||
'product_type': self.start.product_type.id,
|
||||
'matrix': self.start.matrix.id,
|
||||
'zone': entry.party.entry_zone.id,
|
||||
'zone': zone_id,
|
||||
'label': self.start.label,
|
||||
'obj_description': obj_description,
|
||||
'packages_quantity': 1,
|
||||
|
|
|
@ -2370,7 +2370,11 @@ class Sample(ModelSQL, ModelView):
|
|||
domain=[('category.lims_only_available', '=', True)])
|
||||
restricted_entry = fields.Boolean('Restricted entry',
|
||||
states={'readonly': True})
|
||||
zone = fields.Many2One('lims.zone', 'Zone', required=True)
|
||||
zone = fields.Many2One('lims.zone', 'Zone',
|
||||
states={'required': Bool(Eval('zone_required'))},
|
||||
depends=['zone_required'])
|
||||
zone_required = fields.Function(fields.Boolean('Zone required'),
|
||||
'get_zone_required')
|
||||
trace_report = fields.Boolean('Trace report')
|
||||
fractions = fields.One2Many('lims.fraction', 'sample', 'Fractions',
|
||||
context={
|
||||
|
@ -2701,15 +2705,6 @@ class Sample(ModelSQL, ModelView):
|
|||
return Transaction().context.get('party')
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
def default_zone():
|
||||
Party = Pool().get('party.party')
|
||||
|
||||
if (Transaction().context.get('party', 0) > 0):
|
||||
party = Party(Transaction().context.get('party'))
|
||||
if party.entry_zone:
|
||||
return party.entry_zone.id
|
||||
|
||||
@fields.depends('entry', '_parent_entry.party')
|
||||
def on_change_with_party(self, name=None):
|
||||
if self.entry:
|
||||
|
@ -2717,6 +2712,22 @@ class Sample(ModelSQL, ModelView):
|
|||
return result['party'][self.id]
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
def default_zone_required():
|
||||
Config = Pool().get('lims.configuration')
|
||||
return Config(1).zone_required
|
||||
|
||||
def get_zone_required(self, name=None):
|
||||
return self.default_zone_required()
|
||||
|
||||
@staticmethod
|
||||
def default_zone():
|
||||
Party = Pool().get('party.party')
|
||||
if (Transaction().context.get('party', 0) > 0):
|
||||
party = Party(Transaction().context.get('party'))
|
||||
if party.entry_zone:
|
||||
return party.entry_zone.id
|
||||
|
||||
@classmethod
|
||||
def get_views_field(cls, samples, names):
|
||||
result = {}
|
||||
|
@ -4611,7 +4622,11 @@ class CreateSampleStart(ModelView):
|
|||
domain=[('category.lims_only_available', '=', True)])
|
||||
restricted_entry = fields.Boolean('Restricted entry',
|
||||
states={'readonly': True})
|
||||
zone = fields.Many2One('lims.zone', 'Zone', required=True)
|
||||
zone = fields.Many2One('lims.zone', 'Zone',
|
||||
states={'required': Bool(Eval('zone_required'))},
|
||||
depends=['zone_required'])
|
||||
zone_required = fields.Function(fields.Boolean('Zone required'),
|
||||
'get_zone_required')
|
||||
trace_report = fields.Boolean('Trace report')
|
||||
report_comments = fields.Text('Report comments', translate=True)
|
||||
comments = fields.Text('Comments')
|
||||
|
@ -4649,6 +4664,14 @@ class CreateSampleStart(ModelView):
|
|||
def default_restricted_entry():
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def default_zone_required():
|
||||
Config = Pool().get('lims.configuration')
|
||||
return Config(1).zone_required
|
||||
|
||||
def get_zone_required(self, name=None):
|
||||
return self.default_zone_required()
|
||||
|
||||
@staticmethod
|
||||
def default_zone():
|
||||
Entry = Pool().get('lims.entry')
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
<field name="planification_process_background"/>
|
||||
<label name="samples_in_progress"/>
|
||||
<field name="samples_in_progress"/>
|
||||
<label name="zone_required"/>
|
||||
<field name="zone_required"/>
|
||||
<field name="microbiology_laboratories" colspan="4"/>
|
||||
</page>
|
||||
<page string="Fraction Types" id="fraction_type">
|
||||
|
|
Loading…
Reference in a new issue