feat: comprehensive cross-file support and performance optimization (v3.3.0)
- Implemented cross-file completion, references, and validation for .frml files. - Optimized resource discovery using IntelliJ indexing (ReferencesSearch) to fix IDE freeze. - Refactored shared search logic into DynFormPathUtils. - Excluded <ROW> tags from field definition requirements. - Updated plugin version to 3.3.0.
This commit is contained in:
@@ -0,0 +1,322 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<FORMS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dynf/dynf-form-def.xsd">
|
||||
<INCLUDES>
|
||||
<INCLUDE FILE="#grids/grid-construct-budget.frml"></INCLUDE>
|
||||
</INCLUDES>
|
||||
|
||||
<DATASETS>
|
||||
<DATASET ID="DS-MASTER">
|
||||
<SCHEMA>APP</SCHEMA>
|
||||
<TABLENAME>PROJECTS</TABLENAME>
|
||||
<KEYFIELDS>PROJ_ID</KEYFIELDS>
|
||||
<SQL>
|
||||
<SELECT>SELECT PROJ_ID
|
||||
, PROJ_TYPE
|
||||
, PROJ_YEAR
|
||||
, PJM_CODE
|
||||
, STM_CODE
|
||||
, BTM_CODE
|
||||
, ACM_CODE
|
||||
, BUD.GET_ACTIVITY(ACM_CODE) ACM_NAME
|
||||
, PLAN_TYPE
|
||||
, PROJ_DURATION
|
||||
, PROJ_INST_COUNT
|
||||
, PROJ_START_YEAR
|
||||
, PROJ_END_YEAR
|
||||
, PROJ_FOR_STAFF
|
||||
, PROJ_FROM_YEAR
|
||||
</SELECT>
|
||||
<FROM>FROM PROJECTS</FROM>
|
||||
<FILTER>WHERE PROJ_ID = :PROJ_ID</FILTER>
|
||||
<ORDER>ORDER BY PROJ_ID</ORDER>
|
||||
</SQL>
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="รหัสอ้างอิงโครงการ" WIDTH="32"/>
|
||||
<FIELD NAME="PROJ_TYPE" TYPE="TEXT" LABEL="ประเภทโครงการ" WIDTH="25"/>
|
||||
<FIELD NAME="PROJ_YEAR" TYPE="NUMBER" LABEL="ปีงบประมาณ" WIDTH="15"/>
|
||||
<FIELD NAME="PJM_CODE" TYPE="TEXT" LABEL="รหัสโครงการ (BUD)" WIDTH="20"/>
|
||||
<FIELD NAME="STM_CODE" TYPE="TEXT" LABEL="รหัสหน่วยงาน" WIDTH="10"/>
|
||||
<FIELD NAME="BTM_CODE" TYPE="TEXT" LABEL="รหัสประเภทงบประมาณ" WIDTH="10"/>
|
||||
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="รหัสกิจกรรม" WIDTH="20"/>
|
||||
<FIELD NAME="PLAN_TYPE" TYPE="TEXT" LABEL="ประเภทแผน" WIDTH="15"/>
|
||||
<FIELD NAME="PROJ_DURATION" TYPE="NUMBER" LABEL="ระยะเวลาดำเนินการ (วัน)" WIDTH="15"/>
|
||||
<FIELD NAME="PROJ_INST_COUNT" TYPE="NUMBER" LABEL="ระยะเวลาดำเนินการ (วัน)" WIDTH="15"/>
|
||||
<FIELD NAME="PROJ_START_YEAR" TYPE="NUMBER" LABEL="ปีที่เริ่มโครงการ (ก่อสร้าง)" WIDTH="15"/>
|
||||
<FIELD NAME="PROJ_END_YEAR" TYPE="NUMBER" LABEL="ปีที่สิ้นสุดโครงการ (ก่อสร้าง)" WIDTH="15"/>
|
||||
<FIELD NAME="PROJ_FOR_STAFF" TYPE="NUMBER" LABEL="จำนวนบุคลากรที่รองรับ" WIDTH="15"/>
|
||||
<FIELD NAME="PROJ_FROM_YEAR" TYPE="NUMBER" LABEL="ต่อเนื่องจากปี" WIDTH="15"/>
|
||||
</FIELDS>
|
||||
</DATASET>
|
||||
|
||||
<DATASET ID="DS-PROJECT-CONST">
|
||||
<SCHEMA>APP</SCHEMA>
|
||||
<TABLENAME>PROJECT_CONST_INFO</TABLENAME>
|
||||
<KEYFIELDS>PROJ_ID,ACM_CODE</KEYFIELDS>
|
||||
<SQL>
|
||||
<SELECT>
|
||||
SELECT PROJ_ID
|
||||
, ACM_CODE
|
||||
, PCTI_ADDRESS
|
||||
, PCTI_TUMBON
|
||||
, PCTI_AMPUR
|
||||
, PCTI_PROVINCE
|
||||
, PCTI_ADDR_NOTE
|
||||
, PCTI_AREA
|
||||
, PCTI_EMP_COUNT
|
||||
, PCTI_CHK_LOCATION
|
||||
, PCTI_CHK_DOCUMENT
|
||||
, PCTI_REMARK
|
||||
</SELECT>
|
||||
<FROM>FROM PROJECT_CONST_INFO</FROM>
|
||||
<ORDER>ORDER BY PROJ_ID, ACM_CODE</ORDER>
|
||||
</SQL>
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="project.id" WIDTH="50"/>
|
||||
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="project.acm_code" WIDTH="20"/>
|
||||
<FIELD NAME="PCTI_ADDRESS" TYPE="TEXT" LABEL="pcti.address" WIDTH="200"/>
|
||||
<FIELD NAME="PCTI_TUMBON" TYPE="TEXT" LABEL="pcti.tumbon" WIDTH="200"/>
|
||||
<FIELD NAME="PCTI_AMPUR" TYPE="TEXT" LABEL="pcti.ampur" WIDTH="200"/>
|
||||
<FIELD NAME="PCTI_PROVINCE" TYPE="TEXT" LABEL="pcti.province" WIDTH="200"/>
|
||||
<FIELD NAME="PCTI_ADDR_NOTE" TYPE="TEXT" LABEL="pcti.addr_note" WIDTH="1000"/>
|
||||
<FIELD NAME="PCTI_AREA" TYPE="NUMBER" LABEL="pcti.area" WIDTH="15"/>
|
||||
<FIELD NAME="PCTI_EMP_COUNT" TYPE="NUMBER" LABEL="pcti.emp_count" WIDTH="15"/>
|
||||
<FIELD NAME="PCTI_CHK_LOCATION" TYPE="TEXT" LABEL="pcti.chk_location" WIDTH="500"/>
|
||||
<FIELD NAME="PCTI_CHK_DOCUMENT" TYPE="TEXT" LABEL="pcti.chk_document" WIDTH="500"/>
|
||||
<FIELD NAME="PCTI_REMARK" TYPE="TEXT" LABEL="pcti.remark" WIDTH="2000"/>
|
||||
</FIELDS>
|
||||
<MASTER-DATA DATASET-ID="DS-MASTER" MASTER-FIELDS="PROJ_ID,ACM_CODE" DETAIL-FIELDS="PROJ_ID,ACM_CODE"/>
|
||||
</DATASET>
|
||||
</DATASETS>
|
||||
|
||||
<FORM>
|
||||
<FORM_ENTRY DATAID="DS-MASTER" SAVE="Y" RESET="Y" RETURN="Y">
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PROJ_TYPE" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PJM_CODE" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="STM_CODE" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="BTM_CODE" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PLAN_TYPE" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PROJ_DURATION" INPUTTYPE="HIDDEN"/>
|
||||
|
||||
<FIELD NAME="PROJ_YEAR" CAPTION="project.year" INPUTTYPE="TEXT" REQUIRE="Y" READONLY="Y"/>
|
||||
<FIELD NAME="ACM_CODE" CAPTION="project.const_code" INPUTTYPE="TEXT" REQUIRE="Y" READONLY="Y"/>
|
||||
<FIELD NAME="ACM_NAME" CAPTION="project.const_name" INPUTTYPE="TEXT" REQUIRE="Y" READONLY="Y"/>
|
||||
<FIELD NAME="PROJ_START_YEAR" CAPTION="project.start_year" INPUTTYPE="TEXT" DATATYPE="NUMTEXT" ALIGN="center"/>
|
||||
<FIELD NAME="PROJ_END_YEAR" CAPTION="project.end_year" INPUTTYPE="TEXT" DATATYPE="NUMTEXT" ALIGN="center"/>
|
||||
<FIELD NAME="PROJ_DURATION" CAPTION="project.duration" INPUTTYPE="TEXT" DATATYPE="NUMBER" ALIGN="center" DECIMAL="0" SUFFIX="day"/>
|
||||
<FIELD NAME="PROJ_INST_COUNT" CAPTION="project.inst_count" INPUTTYPE="TEXT" DATATYPE="NUMTEXT" ALIGN="center"/>
|
||||
|
||||
<FIELD NAME="BUDGET_YEAR_01" CAPTION="2567" INPUTTYPE="TEXT" DATATYPE="NUMBER"/>
|
||||
<FIELD NAME="BUDGET_YEAR_02" CAPTION="2568" INPUTTYPE="TEXT" DATATYPE="NUMBER"/>
|
||||
<FIELD NAME="BUDGET_YEAR_03" CAPTION="2569" INPUTTYPE="TEXT" DATATYPE="NUMBER"/>
|
||||
<FIELD NAME="BUDGET_YEAR_04" CAPTION="2570" INPUTTYPE="TEXT" DATATYPE="NUMBER"/>
|
||||
<FIELD NAME="BUDGET_YEAR_05" CAPTION="2571" INPUTTYPE="TEXT" DATATYPE="NUMBER"/>
|
||||
|
||||
<SECTION ID="SECT-PROJECT-CONST">
|
||||
<FIELD NAME="PCTI_ADDRESS" CAPTION="pcti.address" INPUTTYPE="TEXT"/>
|
||||
<FIELD NAME="PCTI_TUMBON" CAPTION="pcti.tumbon" INPUTTYPE="TEXT"/>
|
||||
<FIELD NAME="PCTI_AMPUR" CAPTION="pcti.ampur" INPUTTYPE="TEXT"/>
|
||||
<FIELD NAME="PCTI_PROVINCE" CAPTION="pcti.province" INPUTTYPE="TEXT"/>
|
||||
<FIELD NAME="PCTI_ADDR_NOTE" CAPTION="pcti.addr_note" INPUTTYPE="TEXT"/>
|
||||
<FIELD NAME="PCTI_AREA" CAPTION="pcti.area" INPUTTYPE="TEXT" DATATYPE="NUMBER" SUFFIX="segtor"/>
|
||||
<FIELD NAME="PCTI_EMP_COUNT" CAPTION="pcti.emp_count" INPUTTYPE="TEXT" DATATYPE="NUMBER"/>
|
||||
<FIELD NAME="PCTI_CHK_LOCATION" CAPTION="pcti.chk_location" INPUTTYPE="CHECKBOXGROUP">
|
||||
<LIST-OPTION TABLE="REFER_CODE" VALUE="RFC_CODE" TEXT="RFC_DESC" FILTER="RFG_GRP='CNT-PAREA'" COLUMN="4" ORDER="RFC_ORDER"/>
|
||||
</FIELD>
|
||||
<FIELD NAME="PCTI_CHK_DOCUMENT" CAPTION="pcti.chk_document" INPUTTYPE="CHECKBOXGROUP">
|
||||
<LIST-OPTION TABLE="REFER_CODE" VALUE="RFC_CODE" TEXT="RFC_DESC" FILTER="RFG_GRP='CNT-PDOC'" COLUMN="4" ORDER="RFC_ORDER"/>
|
||||
</FIELD>
|
||||
<FIELD NAME="PCTI_REMARK" CAPTION="pcti.remark" INPUTTYPE="TEXTAREA" ROWS="3"/>
|
||||
</SECTION>
|
||||
|
||||
<FIELD NAME="GRID-BUDGET" INPUTTYPE="DATA-GRID" GRID-ID="GRID-CONST-BUDGET" ROWS="5" CAPTION="project.budget"/>
|
||||
<SECTION ID="SEC-ATTATCH-FILE">
|
||||
<FIELD NAME="FILE_BOX_01" CAPTION="แบบ/ประมาณการราคาอาคารสำนักงาน" INPUTTYPE="FILE-BOX" DATATYPE="TEXT">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-01"/>
|
||||
</FIELD>
|
||||
<FIELD NAME="FILE_BOX_02" CAPTION="หนังสืออนุญาตให้ใช้ที่ดิน ได้มาซึ่งกรรมสิทธิ์ในที่ดิน" INPUTTYPE="FILE-BOX" DATATYPE="TEXT">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-01"/>
|
||||
</FIELD>
|
||||
<FIELD NAME="FILE_BOX_03" CAPTION="ผังบริเวณ ประมาณราคาผังบริเวณ สิ่งก่อสร้างประกอบ" INPUTTYPE="FILE-BOX" DATATYPE="TEXT">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-01"/>
|
||||
</FIELD>
|
||||
<FIELD NAME="FILE_BOX_04" CAPTION="ประมาณการถมดิน/รื้อถอนอาคาร/กำแพงกันดิน ฯลฯ (ถ้ามี)" INPUTTYPE="FILE-BOX" DATATYPE="TEXT">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-01"/>
|
||||
</FIELD>
|
||||
<FIELD NAME="FILE_BOX_05" CAPTION="ประมาณการขยายเขตไฟฟ้า ขยายเขตประปา" INPUTTYPE="FILE-BOX" DATATYPE="TEXT">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-01"/>
|
||||
</FIELD>
|
||||
</SECTION>
|
||||
|
||||
</FIELDS>
|
||||
<LAYOUT CLASS="block-layout-form">
|
||||
<SECTION ID="SECT-MAIN">
|
||||
<ROW>
|
||||
<FIELD NAME="PROJ_YEAR" LAYOUT_WIDTH="6" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="ACM_CODE" LAYOUT_WIDTH="4"/>
|
||||
<FIELD NAME="ACM_NAME" LAYOUT_WIDTH="18"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="PCTI_EMP_COUNT" LAYOUT_WIDTH="4" OFFSET="4"/>
|
||||
<FIELD NAME="PROJ_DURATION" LAYOUT_WIDTH="4"/>
|
||||
<FIELD NAME="PROJ_INST_COUNT" LAYOUT_WIDTH="4"/>
|
||||
<FIELD NAME="PROJ_START_YEAR" LAYOUT_WIDTH="4"/>
|
||||
<FIELD NAME="PROJ_END_YEAR" LAYOUT_WIDTH="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
<SECTION ID="SECT-PROJECT-CONST" DATASET="DS-PROJECT-CONST" AUTO-INSERT="Y" TYPE="DATA-SECTION">
|
||||
<HEADER CLASS="col-24 mg-b-n30 mg-t-16 border-top-1">
|
||||
<![CDATA[<h4 class="ml-3 col-24">@M{project.year_budgets}</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="BUDGET_YEAR_01" LAYOUT_WIDTH="4" OFFSET="4"/>
|
||||
<FIELD NAME="BUDGET_YEAR_02" LAYOUT_WIDTH="4"/>
|
||||
<FIELD NAME="BUDGET_YEAR_03" LAYOUT_WIDTH="4"/>
|
||||
<FIELD NAME="BUDGET_YEAR_04" LAYOUT_WIDTH="4"/>
|
||||
<FIELD NAME="BUDGET_YEAR_05" LAYOUT_WIDTH="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-PROJECT-CONST" DATASET="DS-PROJECT-CONST" AUTO-INSERT="Y" TYPE="DATA-SECTION">
|
||||
<HEADER CLASS="col-24 mg-b-n30 mg-t-16 border-top-1">
|
||||
<![CDATA[
|
||||
<h4 class="ml-3 col-24">@M{pcti.location_info}</h4>
|
||||
]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="PCTI_ADDRESS" LAYOUT_WIDTH="18" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="PCTI_TUMBON" LAYOUT_WIDTH="4" OFFSET="4"/>
|
||||
<FIELD NAME="PCTI_AMPUR" LAYOUT_WIDTH="4"/>
|
||||
<FIELD NAME="PCTI_PROVINCE" LAYOUT_WIDTH="4"/>
|
||||
<FIELD NAME="PCTI_AREA" LAYOUT_WIDTH="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="PCTI_ADDR_NOTE" LAYOUT_WIDTH="18" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="PCTI_CHK_LOCATION" LAYOUT_WIDTH="18" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="PCTI_CHK_DOCUMENT" LAYOUT_WIDTH="18" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="PCTI_REMARK" LAYOUT_WIDTH="18" OFFSET="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-PROJECT-BUTGET">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">@M{project.budget}</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="GRID-BUDGET" LAYOUT_WIDTH="24" OFFSET=""/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-ATTATCH-FILE">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">@M{project.constructor_attatchment}</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_01" LAYOUT_WIDTH="10" OFFSET="4"/>
|
||||
<FIELD NAME="FILE_BOX_02" LAYOUT_WIDTH="10"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_03" LAYOUT_WIDTH="10" OFFSET="4"/>
|
||||
<FIELD NAME="FILE_BOX_04" LAYOUT_WIDTH="10"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_05" LAYOUT_WIDTH="10" OFFSET="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-REVISE-COMMENT">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">การส่งกลับแก้ไข</h4>]]></HEADER>
|
||||
<ROW TYPE="CONTENT">
|
||||
<![CDATA[
|
||||
<div class="mg-b-16">
|
||||
<div id="FIELD-REVISE_COMMENT" class="form-group col-24 offset-0">
|
||||
<label id="lbREVISE_COMMENT" for="REVISE_COMMENT" class="col-form-label form-label col-sm-10">รายการแก้ไข</label>
|
||||
<div class="form-col col-24 col-sm-14" data-field="REVISE_COMMENT">
|
||||
<input type="text" name="REVISE_COMMENT" id="REVISE_COMMENT" value="" input-type="TEXT" charcase="NORMAL" class="form-control dyn-form-control text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>ประวัติการแก้ไข</div>
|
||||
<ul>
|
||||
<li>แก้ครั้งที่ 1 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
<li>แก้ครั้งที่ 2 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
<li>แก้ครั้งที่ 3 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
<li>แก้ครั้งที่ 4 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
</ul>
|
||||
</div>
|
||||
]]>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-FILE-UPLOAD">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">เอกสารประกอบการพิจารณา</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_01" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_02" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_03" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
</LAYOUT>
|
||||
<SCRIPT>
|
||||
<EVENTS>
|
||||
<BEFORE-SAVE>
|
||||
<![CDATA[
|
||||
({form, data}) => {
|
||||
console.log("before save data ...");
|
||||
if ($PageCtx.$action === "add") {
|
||||
let projYear = $$("PROJ_YEAR").val();
|
||||
let projType = "CNST";
|
||||
let stmCode = $user.deptCode;
|
||||
let pjmCode = "B.2.01";
|
||||
let btmCode = "01";
|
||||
let acmCode = $$("ACM_CODE").val();
|
||||
|
||||
let projId = `${projYear}x${projType}x${stmCode}x${pjmCode}x${btmCode}x${acmCode}`;
|
||||
|
||||
$$("PROJ_ID").val(projId);
|
||||
$$("PROJ_TYPE").val("CONST");
|
||||
$$("STM_CODE").val(stmCode);
|
||||
$$("PJM_CODE").val(pjmCode);
|
||||
$$("BTM_CODE").val(btmCode);
|
||||
$$("AC_CODE").val(acmCode);
|
||||
}
|
||||
//update data to save
|
||||
Object.assign(data, $PageCtx.$form.jsonData());
|
||||
}
|
||||
]]>
|
||||
</BEFORE-SAVE>
|
||||
</EVENTS>
|
||||
</SCRIPT>
|
||||
</FORM_ENTRY>
|
||||
</FORM>
|
||||
</FORMS>
|
||||
@@ -0,0 +1,348 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<FORMS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dynf/dynf-form-def.xsd">
|
||||
<DATASETS>
|
||||
<DATASET ID="DS-MASTER">
|
||||
<SCHEMA>APP</SCHEMA>
|
||||
<TABLENAME>PROJECT_BUDGETS</TABLENAME>
|
||||
<KEYFIELDS>PROJ_ID,ACM_CODE</KEYFIELDS>
|
||||
<SQL>
|
||||
<SELECT>SELECT PBDG.PROJ_ID
|
||||
, PBDG.PBDG_ID
|
||||
, PBDG.ACM_CODE
|
||||
, BUD.GET_ACTIVITY(PBDG.ACM_CODE) ACM_NAME
|
||||
, PBDG.PBDG_TOTAL
|
||||
, PBDG.PBDG_COUNT
|
||||
, PBDG.PBDG_ASSET_TYPE
|
||||
, PBDG.PBDG_REASON
|
||||
, PMAS.PROJ_YEAR
|
||||
, PMAS.STM_CODE
|
||||
, PMAS.PROJ_YEAR||'/'||PMAS.STM_CODE||'/'||PBDG.PROJ_ID FILEPATH
|
||||
</SELECT>
|
||||
<FROM>FROM PROJECT_BUDGETS PBDG
|
||||
INNER JOIN PROJECTS PMAS ON PMAS.PROJ_ID = PBDG.PROJ_ID
|
||||
</FROM>
|
||||
<ORDER>ORDER BY PROJ_ID,PBDG_ID</ORDER>
|
||||
</SQL>
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="รหัสอ้างอิงโครงการ" WIDTH="32" ORIGIN="PBDG.PROJ_ID"/>
|
||||
<FIELD NAME="PBDG_ID" TYPE="TEXT" LABEL="รหัสงบประมาณโครงการ" WIDTH="32" ORIGIN="PBDG.PROJ_ID"/>
|
||||
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="รหัสกิจกรรม" WIDTH="20" ORIGIN="PBDG.ACM_CODE"/>
|
||||
<FIELD NAME="PBDG_TOTAL" TYPE="NUMBER" LABEL="ยอดรวม" WIDTH="15"/>
|
||||
<FIELD NAME="PBDG_COUNT" TYPE="NUMBER" LABEL="จำนวนกิจกรรม" WIDTH="15"/>
|
||||
<FIELD NAME="PBDG_ASSET_TYPE" TYPE="TEXT" LABEL="ประเภทครุภัณฑ์" WIDTH="25"/>
|
||||
<FIELD NAME="PBDG_REASON" TYPE="TEXT" LABEL="เหตุผลในการจัดหา" WIDTH="2000"/>
|
||||
</FIELDS>
|
||||
</DATASET>
|
||||
|
||||
<DATASET ID="DS-PROJECT-TARGETS">
|
||||
<SCHEMA>APP</SCHEMA>
|
||||
<TABLENAME>PROJECT_TARGETS</TABLENAME>
|
||||
<KEYFIELDS>PROJ_ID,ACM_CODE</KEYFIELDS>
|
||||
<SQL>
|
||||
<SELECT>SELECT PROJ_ID
|
||||
, ACM_CODE
|
||||
, PWMT_UNIT
|
||||
, PTGT_QT_0101
|
||||
, PTGT_QT_0102
|
||||
, PTGT_QT_0201
|
||||
, PTGT_QT_0202
|
||||
, PTGT_QT_0301
|
||||
, PTGT_QT_0302
|
||||
, PTGT_QT_0401
|
||||
, PTGT_QT_0402
|
||||
</SELECT>
|
||||
<FROM>FROM PROJECT_TARGETS</FROM>
|
||||
<ORDER>ORDER BY PROJ_ID,ACM_CODE</ORDER>
|
||||
</SQL>
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="รหัสอ้างอิงโครงการ" WIDTH="32"/>
|
||||
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="รหัสกิจกรรม" WIDTH="33"/>
|
||||
<FIELD NAME="PWMT_UNIT" TYPE="TEXT" LABEL="หน่วยนับ" WIDTH="32"/>
|
||||
<FIELD NAME="PTGT_QT_0101" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 1 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0102" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 1 (ผล)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0201" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 2 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0202" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 2 (ผล)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0301" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 3 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0302" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 3 (ผล)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0401" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 4 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0402" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 4 (ผล)" WIDTH="15"/>
|
||||
</FIELDS>
|
||||
<MASTER-DATA DATASET-ID="DS-MASTER" MASTER-FIELDS="PROJ_ID,ACM_CODE" DETAIL-FIELDS="PROJ_ID,ACM_CODE"/>
|
||||
</DATASET>
|
||||
|
||||
<DATASET ID="DS-BUDGET-ITEMS">
|
||||
<SCHEMA>APP</SCHEMA>
|
||||
<TABLENAME>PROJECT_BUDGET_ITEMS</TABLENAME>
|
||||
<KEYFIELDS>PROJ_ID,BGM_CODE,PBDG_ID</KEYFIELDS>
|
||||
<SQL>
|
||||
<SELECT>SELECT PROJ_ID
|
||||
, PBDG_ID
|
||||
, BGM_CODE
|
||||
, PBGI_QT_01
|
||||
, PBGI_QT_02
|
||||
, PBGI_QT_03
|
||||
, PBGI_QT_04
|
||||
, PBGI_QTY
|
||||
, PBGI_COST
|
||||
, PBGI_FREQ
|
||||
, PBGI_ASSET_TYPE
|
||||
, PBGI_REPLACE
|
||||
, PBGI_ADDITION
|
||||
, PBGI_ACQUIRE
|
||||
, PBGI_TOTAL
|
||||
, PBGI_REASON
|
||||
</SELECT>
|
||||
<FROM>FROM PROJECT_BUDGET_ITEMS</FROM>
|
||||
<ORDER>ORDER BY PROJ_ID,BGM_CODE,PBDG_ID</ORDER>
|
||||
</SQL>
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="pbgi.id" WIDTH="32"/>
|
||||
<FIELD NAME="PBDG_ID" TYPE="TEXT" LABEL="pbgi.pbdg_id" WIDTH="32"/>
|
||||
<FIELD NAME="BGM_CODE" TYPE="TEXT" LABEL="pbgi.bgm_code" WIDTH="20"/>
|
||||
<FIELD NAME="PBGI_QT_01" TYPE="NUMBER" LABEL="pwbg.quotr_01" WIDTH="15"/>
|
||||
<FIELD NAME="PBGI_QT_02" TYPE="NUMBER" LABEL="pwbg.quotr_02" WIDTH="15"/>
|
||||
<FIELD NAME="PBGI_QT_03" TYPE="NUMBER" LABEL="pwbg.quotr_03" WIDTH="15"/>
|
||||
<FIELD NAME="PBGI_QT_04" TYPE="NUMBER" LABEL="pwbg.quotr_04" WIDTH="15"/>
|
||||
<FIELD NAME="PBGI_QTY" TYPE="NUMBER" LABEL="pbgi.qty" WIDTH="10"/>
|
||||
<FIELD NAME="PBGI_COST" TYPE="NUMBER" LABEL="pbgi.cost" WIDTH="15"/>
|
||||
<FIELD NAME="PBGI_FREQ" TYPE="NUMBER" LABEL="pbgi.freq" WIDTH="10"/>
|
||||
<FIELD NAME="PBGI_ASSET_TYPE" TYPE="TEXT" LABEL="pbgi.asset_type" WIDTH="10"/>
|
||||
<FIELD NAME="PBGI_REPLACE" TYPE="NUMBER" LABEL="pbgi.replace" WIDTH="10"/>
|
||||
<FIELD NAME="PBGI_ADDITION" TYPE="NUMBER" LABEL="pbgi.addition" WIDTH="10"/>
|
||||
<FIELD NAME="PBGI_ACQUIRE" TYPE="NUMBER" LABEL="pbgi.acquire" WIDTH="10"/>
|
||||
<FIELD NAME="PBGI_TOTAL" TYPE="NUMBER" LABEL="pbgi.total" WIDTH="15"/>
|
||||
<FIELD NAME="PBGI_REASON" TYPE="TEXT" LABEL="pbgi.reason" WIDTH="4000"/>
|
||||
</FIELDS>
|
||||
<MASTER-DATA DATASET-ID="DS-MASTER" MASTER-FIELDS="PROJ_ID,PBDG_ID" DETAIL-FIELDS="PROJ_ID,PBDG_ID"/>
|
||||
</DATASET>
|
||||
</DATASETS>
|
||||
|
||||
<FORM>
|
||||
<FORM_ENTRY DATAID="DS-MASTER" SAVE="Y" RETURN="Y">
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PBDG_ID" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="ACM_CODE" CAPTION="project.equipt_code" INPUTTYPE="TEXT" REQUIRE="Y" READONLY="Y"/>
|
||||
<FIELD NAME="ACM_NAME" CAPTION="project.equipt_name" INPUTTYPE="TEXT" REQUIRE="Y" READONLY="Y"/>
|
||||
<FIELD NAME="PROJ_YEAR" CAPTION="project.year" INPUTTYPE="TEXT" REQUIRE="Y" READONLY="Y"/>
|
||||
<FIELD NAME="PBDG_ASSET_TYPE" CAPTION="pbge.asset_type" INPUTTYPE="COMBOBOX" REQUIRE="Y">
|
||||
<LIST-OPTION TABLE="REFER_CODE" TEXT="RFC_DESC" VALUE="RFC_CODE" ORDER="RFC_ORDER" FILTER="RFG_GRP='ASSET-TYPE'" FIRSTLIST="@{CAPTION}"/>
|
||||
</FIELD>
|
||||
<FIELD NAME="PBDG_REASON" CAPTION="pbge.reason" INPUTTYPE="TEXT" />
|
||||
|
||||
<FIELD NAME="FILE_BOX_01" CAPTION="pbge.quotaion_file 1" INPUTTYPE="FILE-BOX" DATATYPE="TEXT">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-01"/>
|
||||
</FIELD>
|
||||
<FIELD NAME="FILE_BOX_02" CAPTION="pbge.quotaion_file 2" INPUTTYPE="FILE-BOX">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-02"/>
|
||||
</FIELD>
|
||||
<FIELD NAME="FILE_BOX_03" CAPTION="pbge.quotaion_file 3" INPUTTYPE="FILE-BOX">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-03"/>
|
||||
</FIELD>
|
||||
|
||||
<SECTION ID="SECT-PROJECT-TARGET">
|
||||
<FIELD NAME="PBDG_TOTAL" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PBDG_COUNT" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PWMT_UNIT" CAPTION="project.unit" INPUTTYPE="TEXT" READONLY="Y"></FIELD>
|
||||
<FIELD NAME="PTGT_QT_0101" INPUTTYPE="TEXT" DATATYPE="NUMBER" CAPTION="project.quoter 1"/>
|
||||
<FIELD NAME="PTGT_QT_0201" INPUTTYPE="TEXT" DATATYPE="NUMBER" CAPTION="project.quoter 2"/>
|
||||
<FIELD NAME="PTGT_QT_0301" INPUTTYPE="TEXT" DATATYPE="NUMBER" CAPTION="project.quoter 3"/>
|
||||
<FIELD NAME="PTGT_QT_0401" INPUTTYPE="TEXT" DATATYPE="NUMBER" CAPTION="project.quoter 4"/>
|
||||
<FIELD NAME="QT_TOTAL_01" INPUTTYPE="TEXT" DATATYPE="NUMBER" CAPTION="project.total" READONLY="Y"/>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-BUDGET-ITEMS">
|
||||
<FIELD NAME="VBGM_CODE" CAPTION="pwbg.bgm_code" INPUTTYPE="TEXT" READONLY="Y"/>
|
||||
<FIELD NAME="BGM_CODE" CAPTION="pwbg.bgm_name" INPUTTYPE="COMBOBOX" REQUIRE="Y">
|
||||
<AJAX-OPTION URL="/api-data.jbx" DATASET="DS-EQUIPT-BUDGET" VALUE-FIELD="BGM_CODE" TEXT-FIELD="BGM_NAME">
|
||||
<UPDATE-FIELDS>
|
||||
<FIELD SRC="BGM_CODE" TARGET="VBGM_CODE"></FIELD>
|
||||
<FIELD SRC="BGM_NAME" TARGET="BGM_NAME"></FIELD>
|
||||
</UPDATE-FIELDS>
|
||||
</AJAX-OPTION>
|
||||
<LIST-OPTION>
|
||||
<FORMATTER><![CDATA[
|
||||
(data) => {
|
||||
console.log("call formater with ", data);
|
||||
return $(`<div><label class="offset-${data.node_level}">[${data.bgm_code}]</label> : <label>${data.bgm_name}</label></div>`);
|
||||
}
|
||||
]]></FORMATTER>
|
||||
</LIST-OPTION>
|
||||
</FIELD>
|
||||
|
||||
<FIELD NAME="PBGI_QT_01" CAPTION="pbge.origin" INPUTTYPE="TEXT" DATATYPE="NUMBER"/>
|
||||
|
||||
<FIELD NAME="PBGI_REPLACE" CAPTION="pbge.replace" INPUTTYPE="TEXT" DATATYPE="NUMBER" CLASS-NAME="equipt-qty equipt-item"/>
|
||||
<FIELD NAME="PBGI_ADDITION" CAPTION="pbge.addition" INPUTTYPE="TEXT" DATATYPE="NUMBER" CLASS-NAME="equipt-qty equipt-item"/>
|
||||
<FIELD NAME="PBGI_ACQUIRE" CAPTION="pbge.acquire" INPUTTYPE="TEXT" DATATYPE="NUMBER" CLASS-NAME="equipt-qty equipt-item"/>
|
||||
<FIELD NAME="PBGI_QTY" CAPTION="pbge.qty" INPUTTYPE="TEXT" DATATYPE="NUMBER" READONLY="Y" CLASS-NAME="equipt-item"/>
|
||||
|
||||
<FIELD NAME="PBGI_COST" CAPTION="pbge.cost" INPUTTYPE="TEXT" DATATYPE="NUMBER" CLASS-NAME=" equipt-item"/>
|
||||
<FIELD NAME="PBGI_TOTAL" CAPTION="pbge.total" INPUTTYPE="TEXT" DATATYPE="NUMBER" READONLY="Y"/>
|
||||
</SECTION>
|
||||
|
||||
|
||||
</FIELDS>
|
||||
|
||||
<LAYOUT CLASS="block-layout-form">
|
||||
<SECTION ID="SECT-MAIN">
|
||||
<ROW>
|
||||
<FIELD NAME="PROJ_YEAR" LAYOUT_WIDTH="6" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="ACM_CODE" LAYOUT_WIDTH="4"/>
|
||||
<FIELD NAME="ACM_NAME" LAYOUT_WIDTH="18"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="PBDG_ASSET_TYPE" LAYOUT_WIDTH="4"/>
|
||||
<FIELD NAME="PBDG_REASON" LAYOUT_WIDTH="18"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-PROJECT-BUTGET" TYPE="DATA-SECTION" DATASET="DS-BUDGET-ITEMS">
|
||||
<ROW ID="ROW-BUDGET-DATA">
|
||||
<FIELD NAME="PBGI_QT_01" LAYOUT_WIDTH="4"/>
|
||||
<FIELD NAME="PBGI_REPLACE" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="PBGI_ADDITION" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="PBGI_ACQUIRE" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="PBGI_QTY" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="PBGI_COST" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="PBGI_TOTAL" LAYOUT_WIDTH="3"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="VBGM_CODE" LAYOUT_WIDTH="4" OFFSET="4"/>
|
||||
<FIELD NAME="BGM_CODE" LAYOUT_WIDTH="14"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-PROJECT-TARGET" TYPE="DATA-SECTION" DATASET="DS-PROJECT-TARGETS">
|
||||
<HEADER CLASS="col-24 mg-b-n30 mg-t-16 border-top-1">
|
||||
<![CDATA[<h4 class="ml-3 col-24">@M{project.target}</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="PTGT_QT_0101" LAYOUT_WIDTH="3" OFFSET="4"/>
|
||||
<FIELD NAME="PTGT_QT_0201" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="PTGT_QT_0301" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="PTGT_QT_0401" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="QT_TOTAL_01" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="PWMT_UNIT" LAYOUT_WIDTH="3"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-QUOTATION-FILE">
|
||||
<HEADER CLASS="col-24 mg-b-n30 mg-t-16 border-top-1">
|
||||
<![CDATA[<h4 class="ml-3 col-24">@M{pbge.quotaion_file}</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_01" LAYOUT_WIDTH="12" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_02" LAYOUT_WIDTH="12" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_03" LAYOUT_WIDTH="12" OFFSET="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-REVISE-COMMENT">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">การส่งกลับแก้ไข</h4>]]></HEADER>
|
||||
<ROW TYPE="CONTENT">
|
||||
<![CDATA[
|
||||
<div class="mg-b-16">
|
||||
<div id="FIELD-REVISE_COMMENT" class="form-group col-24 offset-0">
|
||||
<label id="lbREVISE_COMMENT" for="REVISE_COMMENT" class="col-form-label form-label col-sm-10">รายการแก้ไข</label>
|
||||
<div class="form-col col-24 col-sm-14" data-field="REVISE_COMMENT">
|
||||
<input type="text" name="REVISE_COMMENT" id="REVISE_COMMENT" value="" input-type="TEXT" charcase="NORMAL" class="form-control dyn-form-control text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>ประวัติการแก้ไข</div>
|
||||
<ul>
|
||||
<li>แก้ครั้งที่ 1 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
<li>แก้ครั้งที่ 2 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
<li>แก้ครั้งที่ 3 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
<li>แก้ครั้งที่ 4 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
</ul>
|
||||
</div>
|
||||
]]>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-FILE-UPLOAD">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">เอกสารประกอบการพิจารณา</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_01" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_02" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_03" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
</LAYOUT>
|
||||
|
||||
<SCRIPT>
|
||||
<DECLARATION>
|
||||
const equiptQty = $$(".equipt-qty");
|
||||
const equiptItem = $$(".equipt-item");
|
||||
const txtEquiptQty = $$("PBGI_QTY");
|
||||
const txtEquiptCost = $$("PBGI_COST");
|
||||
const txtEquiptTotal = $$("PBGI_TOTAL");
|
||||
</DECLARATION>
|
||||
|
||||
<EVENTS>
|
||||
<BEFORE-SAVE><![CDATA[
|
||||
({form, data}) => {
|
||||
console.log("before save data");
|
||||
if ($PageCtx.$action === "add") {
|
||||
let $data = $PageCtx.main.pageData;
|
||||
let budgetId = $$("VACM_CODE").val();
|
||||
$$("PBDG_ID").val(budgetId);
|
||||
}
|
||||
|
||||
$$("PBDG_COUNT").val(txtEquiptQty.number());
|
||||
$$("PBDG_TOTAL").val(txtEquiptTotal.number());
|
||||
|
||||
Object.assign(data, form.mainForm.jsonData());
|
||||
}
|
||||
]]></BEFORE-SAVE>
|
||||
</EVENTS>
|
||||
|
||||
<INITIALIZE>
|
||||
<![CDATA[
|
||||
const quoterSum = () => {
|
||||
let summary = 0;
|
||||
for (let qt = 1; qt <= 4; qt++) {
|
||||
summary += $$(`PTGT_QT_0${qt}01`).number();
|
||||
}
|
||||
$$(`QT_TOTAL_01`).val(formatNumber(summary));
|
||||
}
|
||||
|
||||
$$("^PTGT_QT_").on("change", quoterSum);
|
||||
|
||||
const equiptSum = ()=>{
|
||||
let sumEquipt = equiptQty.sum();
|
||||
txtEquiptQty.val(formatNumber(sumEquipt));
|
||||
let equiptCost = txtEquiptCost.number();
|
||||
txtEquiptTotal.val(formatNumber(sumEquipt*equiptCost));
|
||||
}
|
||||
equiptItem.on("change",equiptSum);
|
||||
|
||||
]]>
|
||||
</INITIALIZE>
|
||||
</SCRIPT>
|
||||
</FORM_ENTRY>
|
||||
</FORM>
|
||||
</FORMS>
|
||||
@@ -0,0 +1,259 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<FORMS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dynf/dynf-form-def.xsd">
|
||||
<DATASETS>
|
||||
<DATASET ID="DS-MASTER">
|
||||
<SCHEMA>APP</SCHEMA>
|
||||
<TABLENAME>PROPS_PROJECTS</TABLENAME>
|
||||
<KEYFIELDS>PROP_ID</KEYFIELDS>
|
||||
<SQL>
|
||||
<SELECT>SELECT PPROJ.PROP_ID
|
||||
, PROJ.PROJ_ID
|
||||
, PROJ.PROJ_TYPE
|
||||
, PROJ.PROJ_YEAR
|
||||
, PROJ.PJM_CODE
|
||||
, PROJ.STM_CODE
|
||||
, PROJ.BTM_CODE
|
||||
, PROJ.ACM_CODE
|
||||
, BUD.GET_ACTIVITY(PROJ.ACM_CODE) ACM_NAME
|
||||
, PROJ.PLAN_TYPE
|
||||
, PROJ.PROJ_DURATION
|
||||
, PROJ.PROJ_START_YEAR
|
||||
, PROJ.PROJ_END_YEAR
|
||||
, PROJ.PROJ_FOR_STAFF
|
||||
, PROJ.PROJ_FROM_YEAR
|
||||
, VPSTT.PROJ_ORDER
|
||||
, VPSTT.FLOW_LEVEL
|
||||
, 0 BDGT_TOTAL
|
||||
</SELECT>
|
||||
<FROM>FROM PROPS_PROJECTS PROJ
|
||||
INNER JOIN PROPOSALS_PROJECTS PPROJ ON PROJ.PROJ_ID=PPROJ.PROJ_ID
|
||||
INNER JOIN V_PROJECT_STATE VPSTT ON VPSTT.PROJ_ID=PPROJ.PROJ_ID
|
||||
</FROM>
|
||||
<FILTER>WHERE PPROJ.PROP_ID = :PROP_ID</FILTER>
|
||||
<ORDER>ORDER BY VPSTT.PROJ_ORDER</ORDER>
|
||||
</SQL>
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="รหัสอ้างอิงโครงการ" WIDTH="32"/>
|
||||
<FIELD NAME="PROJ_TYPE" TYPE="TEXT" LABEL="ประเภทโครงการ" WIDTH="25"/>
|
||||
<FIELD NAME="PROJ_YEAR" TYPE="NUMBER" LABEL="ปีงบประมาณ" WIDTH="15"/>
|
||||
<FIELD NAME="PJM_CODE" TYPE="TEXT" LABEL="รหัสโครงการ (BUD)" WIDTH="20"/>
|
||||
<FIELD NAME="STM_CODE" TYPE="TEXT" LABEL="รหัสหน่วยงาน" WIDTH="10"/>
|
||||
<FIELD NAME="BTM_CODE" TYPE="TEXT" LABEL="รหัสประเภทงบประมาณ" WIDTH="10"/>
|
||||
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="รหัสกิจกรรม" WIDTH="20"/>
|
||||
<FIELD NAME="PLAN_TYPE" TYPE="TEXT" LABEL="ประเภทแผน" WIDTH="15"/>
|
||||
<FIELD NAME="PROJ_DURATION" TYPE="NUMBER" LABEL="ระยะเวลาดำเนินการ (วัน)" WIDTH="15"/>
|
||||
<FIELD NAME="PROJ_START_YEAR" TYPE="NUMBER" LABEL="ปีที่เริ่มโครงการ (ก่อสร้าง)" WIDTH="15"/>
|
||||
<FIELD NAME="PROJ_END_YEAR" TYPE="NUMBER" LABEL="ปีที่สิ้นสุดโครงการ (ก่อสร้าง)" WIDTH="15"/>
|
||||
<FIELD NAME="PROJ_FOR_STAFF" TYPE="NUMBER" LABEL="จำนวนบุคลากรที่รองรับ" WIDTH="15"/>
|
||||
|
||||
<FIELD NAME="PROJ_FROM_YEAR" TYPE="NUMBER" LABEL="ต่อเนื่องจากปี" WIDTH="15"/>
|
||||
</FIELDS>
|
||||
<SUBDATASETS>
|
||||
<SUBDATASET NAME="ACTIVITIES" DATASET-ID="DS-ACTIVITY-TREE" LINK-FIELDS="PROJ_ID"/>
|
||||
</SUBDATASETS>
|
||||
</DATASET>
|
||||
<DATASET ID="DS-ACTIVITY-TREE">
|
||||
<SCHEMA>APP</SCHEMA>
|
||||
<TABLENAME>V_ACTIVITY_TREE</TABLENAME>
|
||||
<SQL>
|
||||
<SELECT>
|
||||
SELECT PACT.PROJ_ID
|
||||
, PACT.PROJ_YEAR
|
||||
, PACT.PROJ_TYPE
|
||||
, PACT.PROJ_GROUP
|
||||
, ACTT.ACM_CODE
|
||||
, ACTT.ACM_NAME
|
||||
, ACTT.ACM_SEQ
|
||||
, ACTT.NODE_LEVEL+1 NODE_LEVEL
|
||||
, ACTT.MAIN_NODE
|
||||
, ACTT.ACM_UNIT
|
||||
, ACTT.ACM_START_YEAR
|
||||
, ACTT.ACM_END_YEAR
|
||||
, ACTT.NODE_TYPE
|
||||
, PACT.BDGT_COUNT
|
||||
, PACT.BDGT_TOTAL
|
||||
</SELECT>
|
||||
<FROM>
|
||||
FROM BGT.V_ACTIVITY_TREE ACTT
|
||||
INNER JOIN (SELECT DISTINCT ACM.ACM_CODE
|
||||
FROM BUD.ACTIVITY_M ACM
|
||||
INNER JOIN BUD.ACTIVITY_CTRL_H ACH ON ACM.ACM_CODE = ACH.ACH_CODE
|
||||
START WITH ACM.ACM_CODE IN (SELECT ACM_CODE FROM V_PROJECT_ACTIVITY PACT WHERE PACT.PROJ_ID = :PROJ_ID)
|
||||
CONNECT BY PRIOR ACH.ACH_CTRL_CODE = ACH.ACH_CODE) FLTR ON FLTR.ACM_CODE = ACTT.ACM_CODE
|
||||
LEFT OUTER JOIN V_PROJECT_ACTIVITY PACT ON PACT.ACM_CODE = ACTT.ACM_CODE AND PACT.PROJ_ID = :PROJ_ID
|
||||
</FROM>
|
||||
<ORDER>
|
||||
ORDER BY ACTT.ACM_SEQ
|
||||
</ORDER>
|
||||
</SQL>
|
||||
</DATASET>
|
||||
</DATASETS>
|
||||
|
||||
<FORM>
|
||||
<FORM_BROWSE DATAID="DS-MASTER">
|
||||
<HEADER NAVI="N" EDIT="N" ADD="N" DELETE="N" VIEW="N"/>
|
||||
<PAGESIZE>0</PAGESIZE>
|
||||
<FIELDS>
|
||||
<FIELD NAME="$itemno" LABEL="no" ALIGN="right" WIDTH="5em"/>
|
||||
<FIELD NAME="ACM_CODE" LABEL="project.const_code" ALIGN="left">
|
||||
<DATA-FORMATTER>
|
||||
<![CDATA[(value,row,idx)=>{return $(`<div class="col-24 row text-nowrap"><div class="col offset-${+(row.node_level)-1}">${value}</div></div>`);}]]>
|
||||
</DATA-FORMATTER>
|
||||
</FIELD>
|
||||
<FIELD NAME="ACM_NAME" LABEL="project.const_name" ALIGN="left">
|
||||
<DATA-FORMATTER>
|
||||
<![CDATA[(value,row,idx)=>{return $(`<div class="col-24 row text-nowrap"><div class="col offset-${+(row.node_level)-1}">${value}</div></div>`);}]]>
|
||||
</DATA-FORMATTER>
|
||||
</FIELD>
|
||||
<FIELD NAME="BDGT_COUNT" LABEL="pbdg.acm_count" ALIGN="right" WIDTH="10em">
|
||||
<DATA-FORMATTER>
|
||||
<![CDATA[(value, row, idx) => {
|
||||
if (row["node_type"] === "D") {
|
||||
return `<div class="col-24 text-nowrap">${formatNumber(value,"#,##0")} ${row["acm_unit"]}</div>`;
|
||||
} else {
|
||||
return ""
|
||||
}
|
||||
}]]>
|
||||
</DATA-FORMATTER>
|
||||
</FIELD>
|
||||
<FIELD NAME="BDGT_TOTAL" LABEL="project.bgt_amount" ALIGN="right" WIDTH="10em"/>
|
||||
|
||||
<COMMAND-BUTTONS>
|
||||
<BUTTON NAME="btnTracking" CLASS="btn btn-primary btn-tracking" ICON-CLASS="bi bi-distribute-vertical white">
|
||||
<FILTER><![CDATA[({$ctx,row})=>{return ["D"].includes(row["node_type"]);}]]></FILTER>
|
||||
<EVENT ON="click"><![CDATA[
|
||||
({ev, row}) => {
|
||||
console.log(row);
|
||||
$PageCtx.saveSessionData("general", row);
|
||||
$PageCtx.saveStorageData("general#search", {PROP_ID: row.prop_id});
|
||||
let $data = {proj_id : row.proj_id,type : row.proj_type,acm_code : row.acm_code,}
|
||||
$WebNavi.goto("/bdgt05/bgt0501010-general?data="+SdkXUtils.jsonBase64($data));
|
||||
}
|
||||
]]></EVENT>
|
||||
</BUTTON>
|
||||
</COMMAND-BUTTONS>
|
||||
</FIELDS>
|
||||
<FILTERS AUTO-APPLY="N" ALLOW-NO-FILTER="Y">
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROP_YEAR" CAPTION="project.year" INPUTTYPE="TEXT" READONLY="Y"/>
|
||||
</FIELDS>
|
||||
<LAYOUT>
|
||||
<ROW>
|
||||
<FIELD NAME="PROP_YEAR" LAYOUT_WIDTH="12" VAL_WIDTH="5" CAPT_WIDTH="14"/>
|
||||
</ROW>
|
||||
</LAYOUT>
|
||||
</FILTERS>
|
||||
<FOOTER SHOW="Y"/>
|
||||
<BUTTONS>
|
||||
<BUTTON NAME="btnRevise" CAPTION="send||send.revise" CLASS="btn btn-outline-warning" SECTION="RIGHT"/>
|
||||
<BUTTON NAME="btnSend" CAPTION="" CLASS="btn btn-warning" SECTION="RIGHT"/>
|
||||
</BUTTONS>
|
||||
<SCRIPT>
|
||||
<EVENTS>
|
||||
<AFTER-LOAD>
|
||||
<![CDATA[
|
||||
({$ctx,data})=>{
|
||||
let src = [...data]; // clone data to src
|
||||
data.splice(0); // clear data element
|
||||
|
||||
let id = 1;
|
||||
let lastItem = {};
|
||||
let itemCount = 0;
|
||||
let projType = "";
|
||||
for (let item of src) {
|
||||
item["node_type"] = "P";
|
||||
item["node_level"] = "0";
|
||||
if (item["node_type"] === "P") {
|
||||
projType = ProjType.$(item["proj_type"]);
|
||||
}
|
||||
if (lastItem["node_type"] !== "P") {
|
||||
id = 1;
|
||||
item["$itemno"] = "";
|
||||
item["acm_code"] = "";
|
||||
item["acm_name"] = "";
|
||||
item["projType"] = projType;
|
||||
data.push(item);
|
||||
}
|
||||
lastItem = item;
|
||||
if (isArray(item.activities)) {
|
||||
for (let sitem of item.activities) {
|
||||
sitem["$itemno"] = id++;
|
||||
sitem["projType"] = projType;
|
||||
data.push(sitem);
|
||||
lastItem = sitem;
|
||||
itemCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</AFTER-LOAD>
|
||||
</EVENTS>
|
||||
|
||||
<INITIALIZE>
|
||||
<![CDATA[
|
||||
{
|
||||
// console.log("init activity grid");
|
||||
const fieldFormat = (value,row) => {
|
||||
let projType = row.projType;
|
||||
if (row["node_type"] === "P" || projType.is(ProjType.RUTN)) {
|
||||
return "";
|
||||
}
|
||||
return formatNumber(value, 0);
|
||||
}
|
||||
const summary = (field, data) => {
|
||||
let total = 0;
|
||||
for (let id=0; id < data.length; id++) {
|
||||
let row = data[id];
|
||||
if (row["node_type"] === "D") {
|
||||
total += (+row[field]) || 0;
|
||||
}
|
||||
}
|
||||
if ($PageCtx.$dataGrid.load && !$PageCtx.$dataGrid.reload) {
|
||||
$PageCtx.$dataGrid.reload = true;
|
||||
for (let id=data.length-1; id>=0; id--) {
|
||||
let row = data[id];
|
||||
if (row["node_type"] === "C") {
|
||||
let grpTotal = 0;
|
||||
let mainNode = row["acm_code"];
|
||||
let nodes = [];
|
||||
nodes.push($$("main_node="+mainNode,data));
|
||||
for (let node of nodes.flat()) {
|
||||
grpTotal += +node[field];
|
||||
}
|
||||
data[id][field] = grpTotal;
|
||||
}
|
||||
}
|
||||
$PageCtx.$dataGrid.load(data);
|
||||
$PageCtx.$dataGrid.reload = false;
|
||||
}
|
||||
return formatNumber(total, 0);
|
||||
}
|
||||
|
||||
const $ctx = $PageCtx;
|
||||
const gridFields = [$$("field=bdgt_total", $ctx.gridColumn.flat())].flat();
|
||||
for (let field of gridFields) {
|
||||
field.formatter = fieldFormat;
|
||||
field.footerFormatter = function (data) {
|
||||
return summary(this.field, data);
|
||||
}
|
||||
}
|
||||
|
||||
$ctx.rowStyle = function (row, index) {
|
||||
if (row["node_type"] === "C") {
|
||||
return {classes : `group-level-${row["node_level"]}`};
|
||||
}
|
||||
if (row["node_type"] === "P") {
|
||||
return {classes : `group-level-0`};
|
||||
}
|
||||
return {}; // Default style for other rows
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</INITIALIZE>
|
||||
</SCRIPT>
|
||||
|
||||
|
||||
</FORM_BROWSE>
|
||||
</FORM>
|
||||
</FORMS>
|
||||
@@ -0,0 +1,264 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<FORMS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dynf/dynf-form-def.xsd">
|
||||
<INCLUDES>
|
||||
<INCLUDE FILE="#grids/grid-manage-budget.frml"></INCLUDE>
|
||||
</INCLUDES>
|
||||
<DATASETS>
|
||||
<DATASET ID="DS-MASTER">
|
||||
<SCHEMA>APP</SCHEMA>
|
||||
<TABLENAME>PROJECT_BUDGETS</TABLENAME>
|
||||
<KEYFIELDS>PROJ_ID,ACM_CODE</KEYFIELDS>
|
||||
<SQL>
|
||||
<SELECT>SELECT PBDG.PROJ_ID
|
||||
, PROJ.PROJ_YEAR
|
||||
, PBDG.PBDG_ID
|
||||
, PBDG.ACM_CODE
|
||||
, BUD.GET_ACTIVITY(PBDG.ACM_CODE) ACM_NAME
|
||||
, PBDG.PBDG_TOTAL
|
||||
, PBDG.PBDG_COUNT
|
||||
</SELECT>
|
||||
<FROM>FROM PROJECT_BUDGETS PBDG
|
||||
INNER JOIN PROJECTS PROJ ON PROJ.PROJ_ID=PBDG.PROJ_ID
|
||||
</FROM>
|
||||
<ORDER>ORDER BY PBDG.PROJ_ID,PBDG.PBDG_ID</ORDER>
|
||||
</SQL>
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="รหัสอ้างอิงโครงการ" WIDTH="32" ORIGIN="PBDG.PROJ_ID"/>
|
||||
<FIELD NAME="PBDG_ID" TYPE="TEXT" LABEL="รหัสงบประมาณโครงการ" WIDTH="32"/>
|
||||
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="รหัสกิจกรรม" WIDTH="20" ORIGIN="PBDG.ACM_CODE"/>
|
||||
<FIELD NAME="PBDG_TOTAL" TYPE="NUMBER" LABEL="ยอดรวม" WIDTH="15"/>
|
||||
<FIELD NAME="PBDG_COUNT" TYPE="NUMBER" LABEL="จำนวนกิจกรรม" WIDTH="15"/>
|
||||
</FIELDS>
|
||||
</DATASET>
|
||||
<DATASET ID="DS-PROJECT-TARGETS">
|
||||
<SCHEMA>APP</SCHEMA>
|
||||
<TABLENAME>PROJECT_TARGETS</TABLENAME>
|
||||
<KEYFIELDS>PROJ_ID,ACM_CODE</KEYFIELDS>
|
||||
<SQL>
|
||||
<SELECT>SELECT PROJ_ID
|
||||
, ACM_CODE
|
||||
, PWMT_UNIT
|
||||
, PTGT_QT_0101
|
||||
, PTGT_QT_0102
|
||||
, PTGT_QT_0201
|
||||
, PTGT_QT_0202
|
||||
, PTGT_QT_0301
|
||||
, PTGT_QT_0302
|
||||
, PTGT_QT_0401
|
||||
, PTGT_QT_0402
|
||||
</SELECT>
|
||||
<FROM>FROM PROJECT_TARGETS</FROM>
|
||||
<ORDER>ORDER BY PROJ_ID,ACM_CODE</ORDER>
|
||||
</SQL>
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="รหัสอ้างอิงโครงการ" WIDTH="32"/>
|
||||
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="รหัสกิจกรรม" WIDTH="33"/>
|
||||
<FIELD NAME="PWMT_UNIT" TYPE="TEXT" LABEL="หน่วยนับ" WIDTH="32"/>
|
||||
<FIELD NAME="PTGT_QT_0101" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 1 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0102" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 1 (ผล)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0201" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 2 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0202" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 2 (ผล)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0301" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 3 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0302" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 3 (ผล)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0401" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 4 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0402" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 4 (ผล)" WIDTH="15"/>
|
||||
</FIELDS>
|
||||
<MASTER-DATA DATASET-ID="DS-MASTER" MASTER-FIELDS="PROJ_ID,ACM_CODE" DETAIL-FIELDS="PROJ_ID,ACM_CODE"/>
|
||||
</DATASET>
|
||||
</DATASETS>
|
||||
<FORM>
|
||||
<FORM_ENTRY DATAID="DS-MASTER" SAVE="Y" RETURN="Y">
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PBDG_ID" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="ACM_CODE" CAPTION="project.acm_code" INPUTTYPE="TEXT" READONLY="Y"/>
|
||||
<FIELD NAME="PROJ_YEAR" CAPTION="project.year" INPUTTYPE="TEXT" REQUIRE="Y" READONLY="Y"/>
|
||||
<FIELD NAME="PROJ_PRINCIPLES" CAPTION="project.remak" INPUTTYPE="TEXT" ROWS="3"/>
|
||||
<FIELD NAME="ACM_NAME" CAPTION="project.acm_name" INPUTTYPE="TEXT" EDIT-READONLY="Y"/>
|
||||
|
||||
<SECTION ID="SECT-PROJECT-TARGET">
|
||||
<FIELD NAME="PBDG_TOTAL" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PBDG_COUNT" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PWMT_UNIT" CAPTION="project.target" INPUTTYPE="TEXT" READONLY="Y"></FIELD>
|
||||
<FIELD NAME="QUOTER_1" INPUTTYPE="MULTI-FIELD" CAPTION="project.quoter 1" FIELD-SEPARATOR="/">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="PTGT_QT_0101" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="PTGT_QT_0102" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
<FIELD NAME="QUOTER_2" INPUTTYPE="MULTI-FIELD" CAPTION="project.quoter 2" FIELD-SEPARATOR="/">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="PTGT_QT_0201" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="PTGT_QT_0202" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
<FIELD NAME="QUOTER_3" INPUTTYPE="MULTI-FIELD" CAPTION="project.quoter 3" FIELD-SEPARATOR="/">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="PTGT_QT_0301" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="PTGT_QT_0302" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
<FIELD NAME="QUOTER_4" INPUTTYPE="MULTI-FIELD" CAPTION="project.quoter 4" FIELD-SEPARATOR="/">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="PTGT_QT_0401" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="PTGT_QT_0402" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
<FIELD NAME="TOTAL_QT" INPUTTYPE="MULTI-FIELD" CAPTION="project.total" FIELD-SEPARATOR="/" READONLY="Y">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="QT_TOTAL_01" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="QT_TOTAL_02" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
</SECTION>
|
||||
|
||||
<FIELD NAME="GRID-BUDGET" INPUTTYPE="DATA-GRID" GRID-ID="GRID-WORK-BUDGET" ROWS="5" CAPTION="project.budget"/>
|
||||
|
||||
<SECTION ID="SEC-ATTATCH-FILE">
|
||||
<FIELD NAME="FILE_BOX_01" CAPTION="file.upload 1" INPUTTYPE="FILE-BOX" DATATYPE="TEXT">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-01"/>
|
||||
</FIELD>
|
||||
<FIELD NAME="FILE_BOX_02" CAPTION="file.upload 2" INPUTTYPE="FILE-BOX" DATATYPE="TEXT">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-01"/>
|
||||
</FIELD>
|
||||
<FIELD NAME="FILE_BOX_03" CAPTION="file.upload 3" INPUTTYPE="FILE-BOX" DATATYPE="TEXT">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-01"/>
|
||||
</FIELD>
|
||||
</SECTION>
|
||||
</FIELDS>
|
||||
|
||||
<LAYOUT CLASS="block-layout-form">
|
||||
<SECTION ID="SECT-MAIN">
|
||||
<ROW>
|
||||
<FIELD NAME="PROJ_YEAR" LAYOUT_WIDTH="6" OFFSET="6"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="ACM_CODE" LAYOUT_WIDTH="6"/>
|
||||
<FIELD NAME="ACM_NAME" LAYOUT_WIDTH="18"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="PROJ_PRINCIPLES" LAYOUT_WIDTH="18" OFFSET="6"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
<SECTION ID="SECT-PROJECT-TARGET" TYPE="DATA-SECTION" DATASET="DS-PROJECT-TARGETS">
|
||||
<ROW>
|
||||
<FIELD NAME="PWMT_UNIT" LAYOUT_WIDTH="6"/>
|
||||
<FIELD NAME="QUOTER_1" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="QUOTER_2" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="QUOTER_3" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="QUOTER_4" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="TOTAL_QT" LAYOUT_WIDTH="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
<SECTION ID="SECT-PROJECT-BUTGET">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[
|
||||
<h4 class="ml-3 border-bottom-1 col-24">@M{project.budget}</h4>
|
||||
]]></HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="GRID-BUDGET" LAYOUT_WIDTH="24" OFFSET=""/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
<SECTION ID="SECT-FILE-UPLOAD">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">@M{project.constructor_attatchment}</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_01" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_02" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_03" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-REVISE-COMMENT">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">การส่งกลับแก้ไข</h4>]]></HEADER>
|
||||
<ROW TYPE="CONTENT">
|
||||
<![CDATA[
|
||||
<div class="mg-b-16">
|
||||
<div id="FIELD-REVISE_COMMENT" class="form-group col-24 offset-0">
|
||||
<label id="lbREVISE_COMMENT" for="REVISE_COMMENT" class="col-form-label form-label col-sm-10">รายการแก้ไข</label>
|
||||
<div class="form-col col-24 col-sm-14" data-field="REVISE_COMMENT">
|
||||
<input type="text" name="REVISE_COMMENT" id="REVISE_COMMENT" value="" input-type="TEXT" charcase="NORMAL" class="form-control dyn-form-control text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>ประวัติการแก้ไข</div>
|
||||
<ul>
|
||||
<li>แก้ครั้งที่ 1 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
<li>แก้ครั้งที่ 2 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
<li>แก้ครั้งที่ 3 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
<li>แก้ครั้งที่ 4 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
</ul>
|
||||
</div>
|
||||
]]>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-FILE-UPLOAD">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">เอกสารประกอบการพิจารณา</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_01" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_02" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_03" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
</LAYOUT>
|
||||
<SCRIPT>
|
||||
<EVENTS>
|
||||
<BEFORE-SAVE><![CDATA[
|
||||
({form, data}) => {
|
||||
console.log("before save data");
|
||||
if ($PageCtx.$action === "add") {
|
||||
let $data = $PageCtx.main.pageData;
|
||||
let budgetId = $$("VACM_CODE").val();
|
||||
$$("PBDG_ID").val(budgetId);
|
||||
}
|
||||
|
||||
let acmCount = $$("^QT_TOTAL_0").sum();
|
||||
$$("PBDG_COUNT").val(acmCount);
|
||||
let gridCtx = ($PageCtx.widgets["GRID-BUDGET"]||{})["$GridCtx"];
|
||||
if (gridCtx) {
|
||||
let bdgTotal = gridCtx.sumOf["pbgi_total"];
|
||||
$$("PBDG_TOTAL").val(bdgTotal);
|
||||
}
|
||||
Object.assign(data,form.mainForm.jsonData());
|
||||
}
|
||||
]]></BEFORE-SAVE>
|
||||
</EVENTS>
|
||||
<INITIALIZE>
|
||||
<![CDATA[
|
||||
const quoterSum = ()=>{
|
||||
for (let sect=1; sect <=2; sect++) {
|
||||
let summary = 0;
|
||||
for (let qt = 1; qt <= 4; qt++) {
|
||||
summary += $$(`PTGT_QT_0${qt}0${sect}`).number();
|
||||
}
|
||||
$$(`QT_TOTAL_0${sect}`).val(formatNumber(summary));
|
||||
}
|
||||
}
|
||||
$$("^PTGT_QT_").on("change",quoterSum);
|
||||
]]>
|
||||
</INITIALIZE>
|
||||
</SCRIPT>
|
||||
</FORM_ENTRY>
|
||||
</FORM>
|
||||
</FORMS>
|
||||
@@ -0,0 +1,267 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<FORMS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dynf/dynf-form-def.xsd">
|
||||
<INCLUDES>
|
||||
<INCLUDE FILE="#grids/grid-routine-budget.frml"></INCLUDE>
|
||||
</INCLUDES>
|
||||
<DATASETS>
|
||||
<DATASET ID="DS-MASTER">
|
||||
<SCHEMA>APP</SCHEMA>
|
||||
<TABLENAME>PROJECT_BUDGETS</TABLENAME>
|
||||
<KEYFIELDS>PROJ_ID,ACM_CODE</KEYFIELDS>
|
||||
<SQL>
|
||||
<SELECT>SELECT PBDG.PROJ_ID
|
||||
, PROJ.PROJ_YEAR
|
||||
, PBDG.PBDG_ID
|
||||
, PBDG.ACM_CODE
|
||||
, BUD.GET_ACTIVITY(PBDG.ACM_CODE) ACM_NAME
|
||||
, PBDG.PBDG_TOTAL
|
||||
, PBDG.PBDG_COUNT
|
||||
</SELECT>
|
||||
<FROM>FROM PROJECT_BUDGETS PBDG
|
||||
INNER JOIN PROJECTS PROJ ON PROJ.PROJ_ID=PBDG.PROJ_ID
|
||||
</FROM>
|
||||
<ORDER>ORDER BY PBDG.PROJ_ID,PBDG.PBDG_ID</ORDER>
|
||||
</SQL>
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="รหัสอ้างอิงโครงการ" WIDTH="32" ORIGIN="PBDG.PROJ_ID"/>
|
||||
<FIELD NAME="PBDG_ID" TYPE="TEXT" LABEL="รหัสงบประมาณโครงการ" WIDTH="32"/>
|
||||
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="รหัสกิจกรรม" WIDTH="20" ORIGIN="PBDG.ACM_CODE"/>
|
||||
<FIELD NAME="PBDG_TOTAL" TYPE="NUMBER" LABEL="ยอดรวม" WIDTH="15"/>
|
||||
<FIELD NAME="PBDG_COUNT" TYPE="NUMBER" LABEL="จำนวนกิจกรรม" WIDTH="15"/>
|
||||
</FIELDS>
|
||||
</DATASET>
|
||||
|
||||
<DATASET ID="DS-PROJECT-TARGETS">
|
||||
<SCHEMA>APP</SCHEMA>
|
||||
<TABLENAME>PROJECT_TARGETS</TABLENAME>
|
||||
<KEYFIELDS>PROJ_ID,ACM_CODE</KEYFIELDS>
|
||||
<SQL>
|
||||
<SELECT>SELECT PROJ_ID
|
||||
, ACM_CODE
|
||||
, PWMT_UNIT
|
||||
, PTGT_QT_0101
|
||||
, PTGT_QT_0102
|
||||
, PTGT_QT_0201
|
||||
, PTGT_QT_0202
|
||||
, PTGT_QT_0301
|
||||
, PTGT_QT_0302
|
||||
, PTGT_QT_0401
|
||||
, PTGT_QT_0402
|
||||
</SELECT>
|
||||
<FROM>FROM PROJECT_TARGETS</FROM>
|
||||
<ORDER>ORDER BY PROJ_ID,ACM_CODE</ORDER>
|
||||
</SQL>
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="รหัสอ้างอิงโครงการ" WIDTH="32"/>
|
||||
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="รหัสกิจกรรม" WIDTH="33"/>
|
||||
<FIELD NAME="PWMT_UNIT" TYPE="TEXT" LABEL="หน่วยนับ" WIDTH="32"/>
|
||||
<FIELD NAME="PTGT_QT_0101" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 1 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0102" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 1 (ผล)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0201" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 2 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0202" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 2 (ผล)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0301" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 3 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0302" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 3 (ผล)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0401" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 4 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0402" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 4 (ผล)" WIDTH="15"/>
|
||||
</FIELDS>
|
||||
<MASTER-DATA DATASET-ID="DS-MASTER" MASTER-FIELDS="PROJ_ID,ACM_CODE" DETAIL-FIELDS="PROJ_ID,ACM_CODE"/>
|
||||
</DATASET>
|
||||
</DATASETS>
|
||||
|
||||
<FORM>
|
||||
<FORM_ENTRY DATAID="DS-MASTER" SAVE="Y" RETURN="Y">
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PBDG_ID" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="ACM_CODE" CAPTION="project.acm_code" INPUTTYPE="TEXT" READONLY="Y"/>
|
||||
<FIELD NAME="PROJ_YEAR" CAPTION="project.year" INPUTTYPE="TEXT" REQUIRE="Y" READONLY="Y"/>
|
||||
<FIELD NAME="PROJ_PRINCIPLES" CAPTION="project.remak" INPUTTYPE="TEXT" ROWS="3"/>
|
||||
<FIELD NAME="ACM_NAME" CAPTION="project.acm_name" INPUTTYPE="TEXT" EDIT-READONLY="Y"/>
|
||||
|
||||
<SECTION ID="SECT-PROJECT-TARGET">
|
||||
<FIELD NAME="PBDG_TOTAL" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PBDG_COUNT" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PWMT_UNIT" CAPTION="project.target" INPUTTYPE="TEXT" READONLY="Y"></FIELD>
|
||||
<FIELD NAME="QUOTER_1" INPUTTYPE="MULTI-FIELD" CAPTION="project.quoter 1" FIELD-SEPARATOR="/">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="PTGT_QT_0101" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="PTGT_QT_0102" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
<FIELD NAME="QUOTER_2" INPUTTYPE="MULTI-FIELD" CAPTION="project.quoter 2" FIELD-SEPARATOR="/">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="PTGT_QT_0201" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="PTGT_QT_0202" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
<FIELD NAME="QUOTER_3" INPUTTYPE="MULTI-FIELD" CAPTION="project.quoter 3" FIELD-SEPARATOR="/">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="PTGT_QT_0301" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="PTGT_QT_0302" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
<FIELD NAME="QUOTER_4" INPUTTYPE="MULTI-FIELD" CAPTION="project.quoter 4" FIELD-SEPARATOR="/">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="PTGT_QT_0401" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="PTGT_QT_0402" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
<FIELD NAME="TOTAL_QT" INPUTTYPE="MULTI-FIELD" CAPTION="project.total" FIELD-SEPARATOR="/" READONLY="Y">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="QT_TOTAL_01" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="QT_TOTAL_02" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
</SECTION>
|
||||
|
||||
<FIELD NAME="GRID-BUDGET" INPUTTYPE="DATA-GRID" GRID-ID="GRID-WORK-BUDGET" ROWS="5" CAPTION="project.budget"/>
|
||||
|
||||
<SECTION ID="SEC-ATTATCH-FILE">
|
||||
<FIELD NAME="FILE_BOX_01" CAPTION="file.upload 1" INPUTTYPE="FILE-BOX" DATATYPE="TEXT">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-01"/>
|
||||
</FIELD>
|
||||
<FIELD NAME="FILE_BOX_02" CAPTION="file.upload 2" INPUTTYPE="FILE-BOX" DATATYPE="TEXT">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-01"/>
|
||||
</FIELD>
|
||||
<FIELD NAME="FILE_BOX_03" CAPTION="file.upload 3" INPUTTYPE="FILE-BOX" DATATYPE="TEXT">
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{filepath}/@{acm_code}/file-01"/>
|
||||
</FIELD>
|
||||
</SECTION>
|
||||
</FIELDS>
|
||||
|
||||
<LAYOUT CLASS="block-layout-form">
|
||||
<SECTION ID="SECT-MAIN">
|
||||
<ROW>
|
||||
<FIELD NAME="PROJ_YEAR" LAYOUT_WIDTH="6" OFFSET="6"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="ACM_CODE" LAYOUT_WIDTH="6"/>
|
||||
<FIELD NAME="ACM_NAME" LAYOUT_WIDTH="18"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="PROJ_PRINCIPLES" LAYOUT_WIDTH="18" OFFSET="6"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
<SECTION ID="SECT-PROJECT-TARGET" TYPE="DATA-SECTION" DATASET="DS-PROJECT-TARGETS">
|
||||
<ROW>
|
||||
<FIELD NAME="PWMT_UNIT" LAYOUT_WIDTH="6"/>
|
||||
<FIELD NAME="QUOTER_1" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="QUOTER_2" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="QUOTER_3" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="QUOTER_4" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="TOTAL_QT" LAYOUT_WIDTH="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
<SECTION ID="SECT-PROJECT-BUTGET">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[
|
||||
<h4 class="ml-3 border-bottom-1 col-24">@M{project.budget}</h4>
|
||||
]]></HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="GRID-BUDGET" LAYOUT_WIDTH="24" OFFSET=""/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-ATTATCH-FILES">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">@M{project.constructor_attatchment}</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_01" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_02" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_03" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-REVISE-COMMENT">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">การส่งกลับแก้ไข</h4>]]></HEADER>
|
||||
<ROW TYPE="CONTENT">
|
||||
<![CDATA[
|
||||
<div class="mg-b-16">
|
||||
<div id="FIELD-REVISE_COMMENT" class="form-group col-24 offset-0">
|
||||
<label id="lbREVISE_COMMENT" for="REVISE_COMMENT" class="col-form-label form-label col-sm-10">รายการแก้ไข</label>
|
||||
<div class="form-col col-24 col-sm-14" data-field="REVISE_COMMENT">
|
||||
<input type="text" name="REVISE_COMMENT" id="REVISE_COMMENT" value="" input-type="TEXT" charcase="NORMAL" class="form-control dyn-form-control text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>ประวัติการแก้ไข</div>
|
||||
<ul>
|
||||
<li>แก้ครั้งที่ 1 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
<li>แก้ครั้งที่ 2 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
<li>แก้ครั้งที่ 3 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
<li>แก้ครั้งที่ 4 วันที่ xx/xx/xxxx : ...................................</li>
|
||||
</ul>
|
||||
</div>
|
||||
]]>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-FILE-UPLOAD">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">เอกสารประกอบการพิจารณา</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_01" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_02" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="FILE_BOX_03" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
</LAYOUT>
|
||||
|
||||
<SCRIPT>
|
||||
<EVENTS>
|
||||
<BEFORE-SAVE><![CDATA[
|
||||
({form, data}) => {
|
||||
console.log("before save data");
|
||||
if ($PageCtx.$action === "add") {
|
||||
let $data = $PageCtx.main.pageData;
|
||||
let budgetId = $$("VACM_CODE").val();
|
||||
$$("PBDG_ID").val(budgetId);
|
||||
}
|
||||
|
||||
let acmCount = $$("^QT_TOTAL_0").sum();
|
||||
$$("PBDG_COUNT").val(acmCount);
|
||||
let gridCtx = ($PageCtx.widgets["GRID-BUDGET"]||{})["$GridCtx"];
|
||||
if (gridCtx) {
|
||||
let bdgTotal = gridCtx.sumOf["pbgi_total"];
|
||||
$$("PBDG_TOTAL").val(bdgTotal);
|
||||
}
|
||||
Object.assign(data,form.mainForm.jsonData());
|
||||
}
|
||||
]]></BEFORE-SAVE>
|
||||
</EVENTS>
|
||||
<INITIALIZE>
|
||||
<![CDATA[
|
||||
const quoterSum = ()=>{
|
||||
for (let sect=1; sect <=2; sect++) {
|
||||
let summary = 0;
|
||||
for (let qt = 1; qt <= 4; qt++) {
|
||||
summary += $$(`PTGT_QT_0${qt}0${sect}`).number();
|
||||
}
|
||||
$$(`QT_TOTAL_0${sect}`).val(formatNumber(summary));
|
||||
}
|
||||
}
|
||||
$$("^PTGT_QT_").on("change",quoterSum);
|
||||
]]>
|
||||
</INITIALIZE>
|
||||
</SCRIPT>
|
||||
</FORM_ENTRY>
|
||||
</FORM>
|
||||
</FORMS>
|
||||
@@ -0,0 +1,232 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<FORMS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dynf/dynf-form-def.xsd">
|
||||
<INCLUDES>
|
||||
<INCLUDE FILE="#datasets/attatch-files.frml"></INCLUDE>
|
||||
<INCLUDE FILE="#sections/sect-approve.frml"></INCLUDE>
|
||||
<INCLUDE FILE="#grids/grid-routine-budget.frml"></INCLUDE>
|
||||
</INCLUDES>
|
||||
<DATASETS>
|
||||
<DATASET ID="DS-MASTER">
|
||||
<SCHEMA>APP</SCHEMA>
|
||||
<TABLENAME>PROJECT_BUDGETS</TABLENAME>
|
||||
<KEYFIELDS>PROJ_ID,ACM_CODE</KEYFIELDS>
|
||||
<SQL>
|
||||
<SELECT>SELECT PROPS.PROP_ID, PROPS.PROP_YEAR,PROPS.STM_CODE,PROPS.PROP_VERSION
|
||||
, PBDG.PROJ_ID
|
||||
, PROJ.PROJ_YEAR
|
||||
, PBDG.PBDG_ID
|
||||
, PBDG.ACM_CODE
|
||||
, BUD.GET_ACTIVITY(PBDG.ACM_CODE) ACM_NAME
|
||||
, PBDG.PBDG_TOTAL
|
||||
, PBDG.PBDG_COUNT
|
||||
, 'budget' FILE_TYPE
|
||||
, 'budget-apvs' APPROVE_TYPE
|
||||
</SELECT>
|
||||
<FROM>FROM PROPS_BUDGETS PBDG
|
||||
INNER JOIN PROPS_PROJECTS PROJ ON PROJ.PROJ_ID=PBDG.PROJ_ID
|
||||
INNER JOIN PROPOSALS_PROJECTS PPROJ ON PPROJ.PROJ_ID=PROJ.PROJ_ID
|
||||
INNER JOIN PROPOSALS PROPS ON PROPS.PROP_ID=PPROJ.PROP_ID
|
||||
</FROM>
|
||||
<ORDER>ORDER BY PBDG.PROJ_ID,PBDG.PBDG_ID</ORDER>
|
||||
</SQL>
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="รหัสอ้างอิงโครงการ" WIDTH="32" ORIGIN="PBDG.PROJ_ID"/>
|
||||
<FIELD NAME="PBDG_ID" TYPE="TEXT" LABEL="รหัสงบประมาณโครงการ" WIDTH="32"/>
|
||||
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="รหัสกิจกรรม" WIDTH="20" ORIGIN="PBDG.ACM_CODE"/>
|
||||
<FIELD NAME="PBDG_TOTAL" TYPE="NUMBER" LABEL="ยอดรวม" WIDTH="15"/>
|
||||
<FIELD NAME="PBDG_COUNT" TYPE="NUMBER" LABEL="จำนวนกิจกรรม" WIDTH="15"/>
|
||||
</FIELDS>
|
||||
</DATASET>
|
||||
|
||||
<DATASET ID="DS-PROJECT-TARGETS">
|
||||
<SCHEMA>APP</SCHEMA>
|
||||
<TABLENAME>PROJECT_TARGETS</TABLENAME>
|
||||
<KEYFIELDS>PROJ_ID,ACM_CODE</KEYFIELDS>
|
||||
<SQL>
|
||||
<SELECT>SELECT PROJ_ID
|
||||
, ACM_CODE
|
||||
, PWMT_UNIT
|
||||
, PTGT_QT_0101
|
||||
, PTGT_QT_0102
|
||||
, PTGT_QT_0201
|
||||
, PTGT_QT_0202
|
||||
, PTGT_QT_0301
|
||||
, PTGT_QT_0302
|
||||
, PTGT_QT_0401
|
||||
, PTGT_QT_0402
|
||||
</SELECT>
|
||||
<FROM>FROM PROJECT_TARGETS</FROM>
|
||||
<ORDER>ORDER BY PROJ_ID,ACM_CODE</ORDER>
|
||||
</SQL>
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROJ_ID" TYPE="TEXT" LABEL="รหัสอ้างอิงโครงการ" WIDTH="32"/>
|
||||
<FIELD NAME="ACM_CODE" TYPE="TEXT" LABEL="รหัสกิจกรรม" WIDTH="33"/>
|
||||
<FIELD NAME="PWMT_UNIT" TYPE="TEXT" LABEL="หน่วยนับ" WIDTH="32"/>
|
||||
<FIELD NAME="PTGT_QT_0101" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 1 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0102" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 1 (ผล)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0201" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 2 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0202" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 2 (ผล)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0301" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 3 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0302" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 3 (ผล)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0401" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 4 (แผน)" WIDTH="15"/>
|
||||
<FIELD NAME="PTGT_QT_0402" TYPE="NUMBER" LABEL="เป้าหมายไตรมาส 4 (ผล)" WIDTH="15"/>
|
||||
</FIELDS>
|
||||
<MASTER-DATA DATASET-ID="DS-MASTER" MASTER-FIELDS="PROJ_ID,ACM_CODE" DETAIL-FIELDS="PROJ_ID,ACM_CODE"/>
|
||||
</DATASET>
|
||||
</DATASETS>
|
||||
|
||||
<FORM>
|
||||
<FORM_ENTRY DATAID="DS-MASTER" SAVE="Y" RETURN="Y">
|
||||
<FIELDS>
|
||||
<FIELD NAME="PROP_ID" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PROJ_ID" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PBDG_ID" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="STM_CODE" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PROP_VERSION" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="ACM_CODE" CAPTION="project.acm_code" INPUTTYPE="TEXT" READONLY="Y"/>
|
||||
<FIELD NAME="PROJ_YEAR" CAPTION="project.year" INPUTTYPE="TEXT" READONLY="Y"/>
|
||||
<FIELD NAME="ACM_NAME" CAPTION="project.acm_name" INPUTTYPE="TEXT" READONLY="Y"/>
|
||||
<FIELD NAME="PBDG_REASON" CAPTION="project.remark" INPUTTYPE="TEXTAREA" ROWS="2" MAX-LENGTH="2000"/>
|
||||
|
||||
<SECTION ID="SECT-PROJECT-TARGET">
|
||||
<FIELD NAME="PBDG_TOTAL" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PBDG_COUNT" INPUTTYPE="HIDDEN"/>
|
||||
<FIELD NAME="PWMT_UNIT" CAPTION="project.target" INPUTTYPE="TEXT" READONLY="Y"></FIELD>
|
||||
<FIELD NAME="QUOTER_1" INPUTTYPE="MULTI-FIELD" CAPTION="project.quoter 1" FIELD-SEPARATOR="/" REQUIRE="Y">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="PTGT_QT_0101" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="PTGT_QT_0102" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
<FIELD NAME="QUOTER_2" INPUTTYPE="MULTI-FIELD" CAPTION="project.quoter 2" FIELD-SEPARATOR="/" REQUIRE="Y">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="PTGT_QT_0201" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="PTGT_QT_0202" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
<FIELD NAME="QUOTER_3" INPUTTYPE="MULTI-FIELD" CAPTION="project.quoter 3" FIELD-SEPARATOR="/" REQUIRE="Y">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="PTGT_QT_0301" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="PTGT_QT_0302" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
<FIELD NAME="QUOTER_4" INPUTTYPE="MULTI-FIELD" CAPTION="project.quoter 4" FIELD-SEPARATOR="/" REQUIRE="Y">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="PTGT_QT_0401" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="PTGT_QT_0402" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
<FIELD NAME="TOTAL_QT" INPUTTYPE="MULTI-FIELD" CAPTION="project.total" FIELD-SEPARATOR="/" READONLY="Y">
|
||||
<FIELD-LIST>
|
||||
<FIELD NAME="QT_TOTAL_01" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
<FIELD NAME="QT_TOTAL_02" INPUTTYPE="TEXT" DATATYPE="NUMBER" DECIMAL="0"></FIELD>
|
||||
</FIELD-LIST>
|
||||
</FIELD>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SEC-ATTATCH-FILE">
|
||||
<FIELD NAME="BUDGET_FILES" CAPTION="file.upload" INPUTTYPE="FILE-LIST-BOX">
|
||||
<FILE-LIST-BOX DATASET="DS-ATTACH_FILES" FILE-TYPE="ATFI_TYPE" FILE-PATH="ATFI_FILE" FILE-DESC="ATFI_DESC" FILE-MIME="ATFI_MIME"/>
|
||||
<FILE-BOX FILE-TYPE="budget" FILE-ACCEPTS="pdf,docx,xlsx,jpeg,jpg,png"
|
||||
UPLOAD-URL="/file-upload.jbx" FILE-URL="/get-file.jbx"
|
||||
DEFAULT-NAME="@{stm_code}/@{proj_year}/@{-uuid-}"/>
|
||||
</FIELD>
|
||||
</SECTION>
|
||||
|
||||
</FIELDS>
|
||||
|
||||
<LAYOUT CLASS="block-layout-form">
|
||||
<SECTION ID="SECT-MAIN">
|
||||
<ROW>
|
||||
<FIELD NAME="PROJ_YEAR" LAYOUT_WIDTH="6" OFFSET="6"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="ACM_CODE" LAYOUT_WIDTH="6"/>
|
||||
<FIELD NAME="ACM_NAME" LAYOUT_WIDTH="18"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="PBDG_REASON" LAYOUT_WIDTH="18" OFFSET="6"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
<SECTION ID="SECT-PROJECT-TARGET" TYPE="DATA-SECTION" DATASET="DS-PROJECT-TARGETS">
|
||||
<ROW>
|
||||
<FIELD NAME="PWMT_UNIT" LAYOUT_WIDTH="3" OFFSET="3"/>
|
||||
<FIELD NAME="QUOTER_1" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="QUOTER_2" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="QUOTER_3" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="QUOTER_4" LAYOUT_WIDTH="3"/>
|
||||
<FIELD NAME="TOTAL_QT" LAYOUT_WIDTH="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-FILE-UPLOAD">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">@M{project.file_attatchment}</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="BUDGET_FILES" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-APPROVE-DATA" TYPE="DATA-SECTION" DATASET="DS-ACM-COMMENT">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">@M{revise.title}</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="PPSC_COMMENT" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
<ROW>
|
||||
<FIELD NAME="COMMENT-HISTORY" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
|
||||
<SECTION ID="SECT-APPROVE-FILE-UPLOAD">
|
||||
<HEADER CLASS="col-24 pd-t-16">
|
||||
<![CDATA[<h4 class="ml-3 border-bottom-1 col-24">@M{approve.file_attatchment}</h4>]]>
|
||||
</HEADER>
|
||||
<ROW>
|
||||
<FIELD NAME="APPROVE_FILES" LAYOUT_WIDTH="16" OFFSET="4"/>
|
||||
</ROW>
|
||||
</SECTION>
|
||||
</LAYOUT>
|
||||
|
||||
<SCRIPT>
|
||||
<EVENTS>
|
||||
<BEFORE-SAVE><![CDATA[
|
||||
({$ctx, data}) => {
|
||||
console.log("before save data");
|
||||
if ($PageCtx.$action === "add") {
|
||||
let $data = $PageCtx.main.pageData;
|
||||
let budgetId = $$("VACM_CODE").val();
|
||||
$$("PBDG_ID").val(budgetId);
|
||||
}
|
||||
|
||||
let acmCount = $$("^QT_TOTAL_0").sum();
|
||||
$$("PBDG_COUNT").val(acmCount);
|
||||
let gridCtx = ($PageCtx.widgets["GRID-BUDGET"] || {})["$GridCtx"];
|
||||
if (gridCtx) {
|
||||
let bdgTotal = gridCtx.sumOf["pbgi_total"];
|
||||
$$("PBDG_TOTAL").val(bdgTotal);
|
||||
}
|
||||
Object.assign(data, $ctx.mainForm.jsonData());
|
||||
}
|
||||
]]></BEFORE-SAVE>
|
||||
</EVENTS>
|
||||
<INITIALIZE>
|
||||
<![CDATA[
|
||||
const quoterSum = () => {
|
||||
for (let sect = 1; sect <= 2; sect++) {
|
||||
let summary = 0;
|
||||
for (let qt = 1; qt <= 4; qt++) {
|
||||
summary += $$(`PTGT_QT_0${qt}0${sect}`).number();
|
||||
}
|
||||
$$(`QT_TOTAL_0${sect}`).val(formatNumber(summary));
|
||||
}
|
||||
}
|
||||
$$("^PTGT_QT_").on("change", quoterSum);
|
||||
]]>
|
||||
</INITIALIZE>
|
||||
</SCRIPT>
|
||||
</FORM_ENTRY>
|
||||
</FORM>
|
||||
</FORMS>
|
||||
Reference in New Issue
Block a user