# -*- coding: utf-8 -*- # Copyright 2024-2025 Nexa Systems Inc. # License OPL-1 (Odoo Proprietary License v1.0) from odoo import models, fields, api, _ from odoo.exceptions import UserError from markupsafe import Markup import logging _logger = logging.getLogger(__name__) class AssessmentCompletedWizard(models.TransientModel): """Wizard to record assessment completion date.""" _name = 'fusion_claims.assessment.completed.wizard' _description = 'Assessment Completed Wizard' sale_order_id = fields.Many2one( 'sale.order', string='Sale Order', required=True, readonly=True, ) completion_date = fields.Date( string='Assessment Completion Date', required=True, default=fields.Date.context_today, ) notes = fields.Text( string='Assessment Notes', help='Any notes from the assessment', ) @api.model def default_get(self, fields_list): res = super().default_get(fields_list) active_id = self._context.get('active_id') if active_id: order = self.env['sale.order'].browse(active_id) res['sale_order_id'] = order.id return res def action_complete(self): """Mark assessment as completed.""" self.ensure_one() order = self.sale_order_id if order.x_fc_adp_application_status != 'assessment_scheduled': raise UserError("Can only complete assessment from 'Assessment Scheduled' status.") # Validate completion date is not before start date if order.x_fc_assessment_start_date and self.completion_date < order.x_fc_assessment_start_date: raise UserError( f"Completion date ({self.completion_date}) cannot be before " f"assessment start date ({order.x_fc_assessment_start_date})." ) # Update sale order order.with_context(skip_status_validation=True).write({ 'x_fc_adp_application_status': 'assessment_completed', 'x_fc_assessment_end_date': self.completion_date, }) # Post to chatter notes_html = f'
Notes: {self.notes}
' if self.notes else '' order.message_post( body=Markup( 'Completion Date: {self.completion_date.strftime("%B %d, %Y")}
' f'{notes_html}' '