- 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.
233 lines
9.6 KiB
XML
233 lines
9.6 KiB
XML
<?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>
|