From 62fbf9907366dcb67a96113fafd73a179f279cf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nut=2E=E0=B9=84=E0=B8=9B=E0=B9=80=E0=B8=A3=E0=B8=B7?= =?UTF-8?q?=E0=B9=88=E0=B8=AD=E0=B8=A2?= Date: Tue, 8 Sep 2026 13:32:39 +0700 Subject: [PATCH] feat(form_1_2): add New2570 fields to local model, fix report template MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two fixes needed together to make the new 3-page เอกสารแนบ ร.1 template actually render: 1. rmutr_report keeps its own separate copy of the form_1_2 C# model (Models/RoReport/form_1_2.cs), which never got the New2570-spec fields (division_name, request_count, overall_reason, signer_*, approver_*) or the form_1_2_positions child list that rmutr-api's model already has. FastReport's RegisterData binds by reflecting the actual runtime object, so any Dictionary column not present on this local class silently fails to compile ("does not exist in current context") for every field on it. 2. Nested BusinessObjectDataSource fields must be referenced by their full dotted path from the report root ([form_1_2.form_1_2_positions. field]), not the bare child name ([form_1_2_positions.field]) — confirmed against another working report (academic_position.frx) in this same codebase that uses the identical nesting pattern correctly. Verified locally: report now compiles and reaches PDF export (the only remaining local failure is a NullReferenceException in libgdiplus font handling specific to this macOS dev machine, unrelated to the report itself — production runs Linux where this already works for every other report using TH Sarabun New). Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_0153wBt23EjW125ZsADwWVAs --- Models/RoReport/form_1_2.cs | 39 +++++++++++++++++++ .../change_position_offer_request_form.frx | 32 +++++++-------- 2 files changed, 55 insertions(+), 16 deletions(-) diff --git a/Models/RoReport/form_1_2.cs b/Models/RoReport/form_1_2.cs index b695055..2d04a0b 100644 --- a/Models/RoReport/form_1_2.cs +++ b/Models/RoReport/form_1_2.cs @@ -63,6 +63,45 @@ namespace rmutr_report.Models.RoThree public string budget_year_name_th { get; set; } public List form_1_2_images { get; set; } public List form_1_2_images_2 { get; set; } + + // New2570 spec — header-level + public int? request_count { get; set; } + public string division_name { get; set; } + public string overall_reason { get; set; } + + // New2570 spec — signer (ผู้ขอ) + public string signer_type { get; set; } + public string signer_name { get; set; } + public string signer_position { get; set; } + + // New2570 spec — approver (หัวหน้าหน่วยงาน) + public string approver_decision { get; set; } + public string approver_reason { get; set; } + public string approver_name { get; set; } + public string approver_admin_position { get; set; } + + public List form_1_2_positions { get; set; } + } + + public class form_1_2_positions + { + [Key] public Guid? form_1_2_position_uid { get; set; } + public Guid? form_1_2_uid { get; set; } + public int? row { get; set; } + + public string old_position_no { get; set; } + public string old_position_name { get; set; } + public string old_qualification { get; set; } + public string old_division_name { get; set; } + public string old_workload { get; set; } + + public string new_position_no { get; set; } + public string new_position_name { get; set; } + public string new_qualification { get; set; } + public string new_division_name { get; set; } + public string new_workload { get; set; } + + public string reason { get; set; } } public class t_form_1_2_images diff --git a/wwwroot/reports/change_position_offer_request_form.frx b/wwwroot/reports/change_position_offer_request_form.frx index c8675b5..1de16bc 100644 --- a/wwwroot/reports/change_position_offer_request_form.frx +++ b/wwwroot/reports/change_position_offer_request_form.frx @@ -84,22 +84,22 @@ - + - + - + - + - + @@ -113,37 +113,37 @@ - - + + - - + + - - + + - - + + - - + + - +