lims_diagnosis: show in samples pending reports when ready to diagnose

This commit is contained in:
Adrián Bernardi 2020-07-14 19:50:42 -03:00
parent 6610115f1d
commit e7ddbaa2ab
3 changed files with 42 additions and 0 deletions

View File

@ -46,6 +46,10 @@ msgctxt "field:lims.notebook,diagnostician:"
msgid "Diagnostician"
msgstr "Diagnosticador"
msgctxt "field:lims.notebook,ready_to_diagnose:"
msgid "Ready to diagnose"
msgstr "Lista para diagnosticar"
msgctxt "field:lims.notebook.change_diagnostician.start,diagnostician:"
msgid "Diagnostician"
msgstr "Diagnosticador"

View File

@ -17,6 +17,8 @@ class Notebook(metaclass=PoolMeta):
'Diagnostician'), 'get_sample_field')
diagnosis_warning = fields.Function(fields.Boolean('Diagnosis Warning'),
'get_diagnosis_warning')
ready_to_diagnose = fields.Function(fields.Boolean('Ready to diagnose'),
'get_ready_to_diagnose')
@classmethod
def get_diagnosis_warning(cls, notebooks, name):
@ -33,6 +35,41 @@ class Notebook(metaclass=PoolMeta):
result[n.id] = False
return result
def get_ready_to_diagnose(self, name):
pool = Pool()
ResultsLine = pool.get('lims.results_report.version.detail.line')
NotebookLine = pool.get('lims.notebook.line')
laboratory_id = Transaction().context.get(
'samples_pending_reporting_laboratory', None)
if not laboratory_id:
return False
draft_lines_ids = []
draft_lines = ResultsLine.search([
('detail_sample.notebook', '=', self.id),
('detail_sample.version_detail.laboratory', '=', laboratory_id),
('detail_sample.version_detail.state', 'in', ['draft', 'revised']),
('detail_sample.version_detail.type', '!=', 'preliminary'),
])
if draft_lines:
draft_lines_ids = [dl.notebook_line.id for dl in draft_lines]
clause = [
('notebook', '=', self.id),
('laboratory', '=', laboratory_id),
('notebook.fraction.type.report', '=', True),
('report', '=', True),
('annulled', '=', False),
('results_report', '=', None),
('id', 'not in', draft_lines_ids),
('accepted', '=', False),
('analysis.not_block_diagnosis', '=', False),
]
if NotebookLine.search_count(clause) > 0:
return False
return True
class NotebookLine(metaclass=PoolMeta):
__name__ = 'lims.notebook.line'

View File

@ -3,5 +3,6 @@
<xpath expr="/tree/field[@name='department']" position="after">
<field name="diagnostician"/>
<field name="diagnosis_warning"/>
<field name="ready_to_diagnose"/>
</xpath>
</data>