74 lines
2.4 KiB
Python
Executable File
74 lines
2.4 KiB
Python
Executable File
from odoo import models, fields, api
|
|
|
|
class DockAuditPhase(models.TransientModel):
|
|
_name = 'dock.audit.phase'
|
|
_description = 'Phase Options'
|
|
|
|
name = fields.Char("Phase Name")
|
|
|
|
class DockAuditReportWizard(models.TransientModel):
|
|
_name = 'dock.audit.report'
|
|
_description = 'Dock Audit Report Wizard'
|
|
|
|
|
|
phase = fields.Integer(string="Phase", required=True)
|
|
|
|
phaselist_id = fields.Many2one('dock.audit.phase', string="Phase List") #, required=True
|
|
|
|
dock_audit = fields.Many2one('sos_dock_audit', string="Dock Audit")
|
|
dock_audit_id = fields.Char(string="Dock Audit", required=True,readonly=True)
|
|
|
|
|
|
@api.model
|
|
def _get_phase_selection(self):
|
|
phase_count = self.env.context.get('phase', 10) # default 10 if not in context
|
|
return [(str(i), f'Phase {i}') for i in range(1, phase_count + 1)]
|
|
|
|
def action_generate_report(self):
|
|
|
|
if not self.phaselist_id.name:
|
|
# Do something if name is False, None, empty string, etc.
|
|
phase_name = "all"
|
|
else:
|
|
phase_name = self.phaselist_id.name.replace("Phase ", "")
|
|
|
|
#print(" Before generating report ")
|
|
#print(f"phaselist: {self.phaselist_id.name}")
|
|
|
|
try:
|
|
return self.env.ref('sos_inventory.action_report_dock_audit').with_context(
|
|
report_phase=phase_name
|
|
).report_action(self.dock_audit)
|
|
|
|
print("Report action executed")
|
|
|
|
except ValueError as e:
|
|
print(f"Phase Version Not Found: {e}")
|
|
|
|
|
|
|
|
@api.model
|
|
def default_get(self, fields_list):
|
|
res = super().default_get(fields_list)
|
|
phase_count = self.env.context.get('phase', 10)
|
|
res['phase'] = phase_count
|
|
|
|
# Check if phase records already exist
|
|
existing_report = self.env['dock.audit.report'].search([])
|
|
existing_phases = self.env['dock.audit.phase'].search([])
|
|
if not existing_phases or len(existing_phases) != phase_count:
|
|
# Optional: Clear only if mismatch
|
|
existing_report.unlink()
|
|
existing_phases.unlink()
|
|
for i in range(1, phase_count + 1):
|
|
self.env['dock.audit.phase'].create({'name': f'Phase {i}'})
|
|
|
|
# Set default selected
|
|
default_phase = self.env['dock.audit.phase'].search([('name', '=', f'Phase {phase_count}')], limit=1)
|
|
res['phaselist_id'] = default_phase.id
|
|
|
|
return res
|
|
|
|
|
|
|