diff --git a/lims/__init__.py b/lims/__init__.py
index 86d411a..72f580c 100644
--- a/lims/__init__.py
+++ b/lims/__init__.py
@@ -186,6 +186,7 @@ def register():
certification.DuplicateAnalysisFamilyStart,
results_report.ResultsReportAnnulationStart,
results_report.NewResultsReportVersionStart,
+ results_report.ResultsReportWaitingStart,
sample.CountersampleStorageStart,
sample.CountersampleStorageEmpty,
sample.CountersampleStorageResult,
@@ -351,6 +352,7 @@ def register():
results_report.ResultsReportRelease,
results_report.ResultsReportAnnulation,
results_report.NewResultsReportVersion,
+ results_report.ResultsReportWaiting,
sample.CountersampleStorage,
sample.CountersampleStorageRevert,
sample.CountersampleDischarge,
diff --git a/lims/locale/es.po b/lims/locale/es.po
index 482bec6..1cc15d3 100644
--- a/lims/locale/es.po
+++ b/lims/locale/es.po
@@ -5120,6 +5120,10 @@ msgctxt "field:lims.results_report.version.detail,valid:"
msgid "Active"
msgstr "Activo"
+msgctxt "field:lims.results_report.version.detail,waiting_reason:"
+msgid "Waiting reason"
+msgstr "Motivo de espera"
+
msgctxt "field:lims.results_report.version.detail,write_date2:"
msgid "Write Date"
msgstr "Fecha de modificación"
@@ -5285,6 +5289,10 @@ msgctxt "field:lims.results_report_annulation.start,annulment_reason_print:"
msgid "Print annulment reason in next version"
msgstr "Imprimir motivo de anulación en próxima versión"
+msgctxt "field:lims.results_report_waiting.start,waiting_reason:"
+msgid "Waiting reason"
+msgstr "Motivo de espera"
+
msgctxt "field:lims.rule,action:"
msgid "Action"
msgstr "Acción"
@@ -7335,6 +7343,10 @@ msgctxt "model:ir.action,name:wiz_lims_results_report_annulation"
msgid "Report Annulation"
msgstr "Anulación de Informe"
+msgctxt "model:ir.action,name:wiz_lims_results_report_waiting"
+msgid "Report Waiting"
+msgstr "Informe en espera"
+
msgctxt "model:ir.action,name:wiz_lims_sample_results_report"
msgid "Sample Results Reports"
msgstr "Informes de resultados de la Muestra"
@@ -7550,6 +7562,11 @@ msgctxt ""
msgid "Revised"
msgstr "Revisado"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_lims_results_report_version_detail_domain_waiting"
+msgid "Waiting"
+msgstr "En espera"
+
msgctxt ""
"model:ir.action.act_window.domain,name:act_lims_samples_pending_reporting_domain_complete"
msgid "Complete"
@@ -9718,6 +9735,10 @@ msgctxt "model:lims.results_report_annulation.start,name:"
msgid "Report Annulation"
msgstr "Anulación de Informe"
+msgctxt "model:lims.results_report_waiting.start,name:"
+msgid "Results Report Waiting"
+msgstr "Informe de resultados en espera"
+
msgctxt "model:lims.rule,name:"
msgid "Notebook Rule"
msgstr "Regla de cuaderno"
@@ -13106,6 +13127,10 @@ msgctxt "selection:lims.results_report.version.detail,state:"
msgid "Revised"
msgstr "Revisado"
+msgctxt "selection:lims.results_report.version.detail,state:"
+msgid "Waiting"
+msgstr "En espera"
+
msgctxt "selection:lims.results_report.version.detail,type:"
msgid "Complementary"
msgstr "Complementario"
@@ -14402,6 +14427,10 @@ msgctxt "view:lims.results_report.version.detail:"
msgid "Time"
msgstr "Hora"
+msgctxt "view:lims.results_report.version.detail:"
+msgid "Waiting"
+msgstr "En espera"
+
msgctxt "view:lims.results_report.version:"
msgid "Laboratories"
msgstr "Laboratorios"
@@ -15434,6 +15463,14 @@ msgctxt "wizard_button:lims.results_report_annulation,start,end:"
msgid "Cancel"
msgstr "Cancelar"
+msgctxt "wizard_button:lims.results_report_waiting,start,confirm:"
+msgid "Confirm"
+msgstr "Confirmar"
+
+msgctxt "wizard_button:lims.results_report_waiting,start,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
msgctxt "wizard_button:lims.sample.add_service,send_ack_of_receipt,end:"
msgid "Cancel"
msgstr "Cancelar"
diff --git a/lims/results_report.py b/lims/results_report.py
index e7638ef..f2b4774 100644
--- a/lims/results_report.py
+++ b/lims/results_report.py
@@ -569,6 +569,7 @@ class ResultsReportVersionDetail(Workflow, ModelSQL, ModelView):
valid = fields.Boolean('Active', readonly=True)
state = fields.Selection([
('draft', 'Draft'),
+ ('waiting', 'Waiting'),
('revised', 'Revised'),
('released', 'Released'),
('annulled', 'Annulled'),
@@ -648,6 +649,7 @@ class ResultsReportVersionDetail(Workflow, ModelSQL, ModelView):
states={'readonly': Eval('state') != 'annulled'}, depends=_depends)
annulment_reason_print = fields.Boolean('Print annulment reason',
states={'readonly': Eval('state') != 'annulled'}, depends=_depends)
+ waiting_reason = fields.Text('Waiting reason', readonly=True)
# Report format
report_section = fields.Function(fields.Char('Section'),
@@ -691,6 +693,8 @@ class ResultsReportVersionDetail(Workflow, ModelSQL, ModelView):
cls._order.insert(0, ('report_version', 'DESC'))
cls._order.insert(1, ('number', 'DESC'))
cls._transitions = set((
+ ('draft', 'waiting'),
+ ('waiting', 'draft'),
('draft', 'revised'),
('revised', 'draft'),
('revised', 'released'),
@@ -698,7 +702,7 @@ class ResultsReportVersionDetail(Workflow, ModelSQL, ModelView):
))
cls._buttons.update({
'draft': {
- 'invisible': Eval('state') != 'revised',
+ 'invisible': ~Eval('state').in_(['waiting', 'revised']),
'depends': ['state'],
},
'revise': {
@@ -843,6 +847,14 @@ class ResultsReportVersionDetail(Workflow, ModelSQL, ModelView):
def default_report_result_type_forced():
return 'none'
+ @classmethod
+ def view_attributes(cls):
+ return super().view_attributes() + [
+ ('//page[@id="waiting"]', 'states', {
+ 'invisible': Eval('state') != 'waiting',
+ }),
+ ]
+
@classmethod
def get_next_number(cls, report_version_id, d_count):
detail_number = cls.search_count([
@@ -3000,6 +3012,55 @@ class NewResultsReportVersion(Wizard):
return 'end'
+class ResultsReportWaitingStart(ModelView):
+ 'Results Report Waiting'
+ __name__ = 'lims.results_report_waiting.start'
+
+ waiting_reason = fields.Text('Waiting reason', required=True)
+
+
+class ResultsReportWaiting(Wizard):
+ 'Results Report Waiting'
+ __name__ = 'lims.results_report_waiting'
+
+ start_state = 'check'
+ check = StateTransition()
+ start = StateView('lims.results_report_waiting.start',
+ 'lims.lims_results_report_waiting_start_view_form', [
+ Button('Cancel', 'end', 'tryton-cancel'),
+ Button('Confirm', 'confirm', 'tryton-ok', default=True),
+ ])
+ confirm = StateTransition()
+
+ def transition_check(self):
+ ResultsDetail = Pool().get('lims.results_report.version.detail')
+
+ details = ResultsDetail.search([
+ ('id', 'in', Transaction().context['active_ids']),
+ ('state', '=', 'draft'),
+ ])
+ if details:
+ return 'start'
+ return 'end'
+
+ def transition_confirm(self):
+ ResultsDetail = Pool().get('lims.results_report.version.detail')
+
+ details = ResultsDetail.search([
+ ('id', 'in', Transaction().context['active_ids']),
+ ('state', '=', 'draft'),
+ ])
+ if details:
+ ResultsDetail.write(details, {
+ 'state': 'waiting',
+ 'waiting_reason': self.start.waiting_reason,
+ })
+ return 'end'
+
+ def end(self):
+ return 'reload'
+
+
class PrintResultReport(Wizard):
'Print Results Report'
__name__ = 'lims.print_result_report'
diff --git a/lims/results_report.xml b/lims/results_report.xml
index a03df4d..0ea6814 100644
--- a/lims/results_report.xml
+++ b/lims/results_report.xml
@@ -182,10 +182,19 @@
+
+ Waiting
+
+
+
+
+
Revised
-
+
@@ -194,7 +203,7 @@
Released
-
+
@@ -202,7 +211,7 @@
Annulled
-
+
@@ -693,6 +702,25 @@
lims.results_report.version.detail.new_version
+
+
+
+ lims.results_report_waiting.start
+ form
+ results_report_waiting_form
+
+
+
+ Report Waiting
+ lims.results_report_waiting
+
+
+
+ form_action
+ lims.results_report.version.detail,-1
+
+
+
+
+
+
+
diff --git a/lims/view/results_report_waiting_form.xml b/lims/view/results_report_waiting_form.xml
new file mode 100644
index 0000000..804cdd4
--- /dev/null
+++ b/lims/view/results_report_waiting_form.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/lims_diagnosis/results_report.py b/lims_diagnosis/results_report.py
index 544fdf7..ab32a1f 100644
--- a/lims_diagnosis/results_report.py
+++ b/lims_diagnosis/results_report.py
@@ -28,6 +28,8 @@ class ResultsReportVersionDetail(metaclass=PoolMeta):
if diagnosed_state not in cls.state.selection:
cls.state.selection.append(diagnosed_state)
cls._transitions = set((
+ ('draft', 'waiting'),
+ ('waiting', 'draft'),
('draft', 'diagnosed'),
('diagnosed', 'draft'),
('diagnosed', 'revised'),
diff --git a/lims_diagnosis/results_report.xml b/lims_diagnosis/results_report.xml
index 33f61f1..80607ff 100644
--- a/lims_diagnosis/results_report.xml
+++ b/lims_diagnosis/results_report.xml
@@ -48,7 +48,7 @@
Diagnosed
-
+