2023年11月3日 星期五

V80203 – checkbox – 過濾條件加文字輸入欄位 - checkboxgroup

目的: V80203 – checkbox – 加文字輸入欄位  - checkboxgroup

處理說明: 1>checkboxGroup - 內含 checkbox
                       //已完工/未完工
                      var cmp_chk_AMMSTS = get_cmp_chkgrp1('單況', 's_chk_AMMSTS', 50);    
                      var cmp_chk_AMMSTS1 = get_cmp_chk0('已完工', 's_chk_AMMSTS', 50, '1');
                      var cmp_chk_AMMSTS2 = get_cmp_chk0('未完工', 's_chk_AMMSTS', 50, '2');
                      cmp_chk_AMMSTS.items.push(cmp_chk_AMMSTS1, cmp_chk_AMMSTS2);
                 2>單一checkbox 
                     var cmp_ISROOT = get_cmp_chk1('機務工單', 's_ISROOT', 80, 'Y', '0 0 0 50');                                   3>checkbox 後接文字欄位  : 利用 panel 當 fieldcontainer
                        //預估到件率>xx
                       var cmp_RT = get_cmp_panel1(0);
                       var cmp_RT1 = get_cmp_chk1('預估到件率>', 's_RT', 80, 'Y','0 5 0 0');
                       var cmp_RT2 = get_cmp_txt0('s_RT1', 30);
                        cmp_RT.items.push(cmp_RT1,cmp_RT2);

                4>checkboxgroup 必需先 getValue ,再傳入 np 



1>*.js
//單況: 已完工/未完工
var cmp_chk_AMMSTS = get_cmp_chkgrp1('單況', 's_chk_AMMSTS', 50);
var cmp_chk_AMMSTS1 = get_cmp_chk0('已完工', 's_chk_AMMSTS', 50, '1');
var cmp_chk_AMMSTS2 = get_cmp_chk0('未完工', 's_chk_AMMSTS', 50, '2');
cmp_chk_AMMSTS.items.push(cmp_chk_AMMSTS1, cmp_chk_AMMSTS2);

//機務工單
var cmp_ISROOT = get_cmp_chk1('機務工單', 's_ISROOT', 80, 'Y', '0 0 0 50');

//超過xx天
    var cmp_STARTDT = get_cmp_panel1(0);
    var cmp_STARTDT1 = get_cmp_chk1('超過', 's_START', 80, 'Y', '0 5 0 0');
    var cmp_STARTDT2 = get_cmp_txt0('s_STARTDT1', 30);
    var cmp_STARTDT3 = get_cmp_lbl0('天', 30);
    cmp_STARTDT.items.push(cmp_STARTDT1, cmp_STARTDT2, cmp_STARTDT3,);

    var cmp_RT = get_cmp_panel1(0);
    var cmp_RT1 = get_cmp_chk1('預估到件率>', 's_RT', 80, 'Y','0 5 0 0');
    var cmp_RT2 = get_cmp_txt0('s_RT1', 30);
    cmp_RT.items.push(cmp_RT1,cmp_RT2);

      //顯示資料
       var np = s_JSON('s_form'); //TMFunction.js, 組合form上的查詢條件為json參數傳遞             
       //已完工,未完工 //若同時勾選[v]已發工[v]已完工 , 則欄位值 Array of  :  ['1','2']
       np["s_chk_AMMSTS"] = Ext.getCmp('s_chk_AMMSTS').getValue();                            
        var gridstore = Ext.getCmp('grid_M').store;      
        gridstore.getProxy().url = '../api/V80203API/getGridData_M';
        gridstore.getProxy().extraParams = np; //分頁OK,篩選條件OK
        Ext.getCmp('grid_M').reloadGridData();


2>*.cs
              //已完工/未完工 AMMSTS
            if (!myfunc.checkisnull(Tmp_chk_AMMSTS))
            {
                if (Tmp_chk_AMMSTS=="1")  //已完工
                    Tmp_Sql = Tmp_Sql + " AND   AMMSTS  IN ('F','G','H','I')  ";
                if (Tmp_chk_AMMSTS == "2")  //未完工
                    Tmp_Sql = Tmp_Sql + " AND   AMMSTS  < 'F'  ";
            };
            //機務工單 - ISROOT
            if (!myfunc.checkisnull(Tmp_ISROOT))
            {
                if (Tmp_ISROOT== "true" )
                   Tmp_Sql = Tmp_Sql + " AND   ISROOT=" + myfunc.AA("Y");                
            };

             //預估到件率> xx
            if (!myfunc.checkisnull(Tmp_ISRT))
            {
                if (Tmp_ISRT == "true")
                    Tmp_Sql = Tmp_Sql + " AND   RT>= "+myfunc.AA(Tmp_RT1);
            };


2023年11月2日 星期四

V80203 – 過濾條件– checkbox 後接著 text輸入欄位

 目的: V80203 – 工單需求物料查詢 – checkbox 後接著 text輸入欄位

處理說明:  1>利用 panel 當 container , 包含 checkbox + text 欄位


1>*.js
//預估到件率>xx
    var cmp_RT = get_cmp_panel1(0);
    var cmp_RT1 = get_cmp_chk1('預估到件率>', 's_RT', 80, 'Y','0 5 0 0');
    var cmp_RT2 = get_cmp_txt0('s_RT1', 30);
    cmp_RT.items.push(cmp_RT1,cmp_RT2);
    
//超過xx天
    var cmp_STARTDT = get_cmp_panel1(0);
    var cmp_STARTDT1 = get_cmp_chk1('超過', 's_START', 80, 'Y', '0 5 0 0');
    var cmp_STARTDT2 = get_cmp_txt0('s_STARTDT1', 30);
    var cmp_STARTDT3 = get_cmp_lbl0('天', 30);
    cmp_STARTDT.items.push(cmp_STARTDT1, cmp_STARTDT2, cmp_STARTDT3,);




2023年11月1日 星期三

GOCO專案 - WPM(全機模組)和AMM系統的界面關係

 目的: 了解  全機模組(WPM)和 AMM系統的界面關係

處理說明: 1>WPM全機模組,以專案的角度,看整個專案的需求物料
                  2>AMM模組, 以單一張工單的角度,看該工單物料的滿足情況


WPM(全機模組)AMM系統的界面關係: - GOCO專案

.WPM系統

1>R108 – 整機交修單維護

1>>系統件維修(交修單號) – 母工單

-        子工單1

-        子工單2

        2>>全機維修(交修單號)  - 機務工單

-        子工單

 

    2>R201- 缺點單維護  : 機種+機號+年度

      缺點項次/缺點代碼/缺點說明/處理代碼/

        處理代碼02(MDR): AES處理

               04(SOR): SAP處理

               08(代客戶提料) : 只幫客戶提料

 

 3>R207 – 缺點單申料維護由技令BOM挑選需求物料

   依缺點項次 申請物料(1~999)

   [料源批次修訂]

   [物料籌補清冊匯出] 彙整缺點單.項目的申料項目屬於採購件號的項目 綜整匯出

      每一件號編 PK全機彙整管制號碼 (IRCTRL=’Y’)

à 提供給GOCO器材組, 以便器材組人員去 TLS供售模組執行採購作業( SAP系統採購)

   TLS供售模組有[物料管制號碼] vs WPM.[全機彙整管制號碼]

è 第二次專案人員確認缺點單物料時,會再新建申請物料(尚未彙整 IRCTRL=’N’)

è [物料籌補清冊匯出], 只針對新建的申請物料-採購(尚未彙整 IRCTRL=’N’) 匯出

è 每一件號編 PK全機彙整管制號碼 (IRCTRL=’Y’)

所以由WPM.[全機彙整管制號碼] à TLS.[物料管制號碼]

知道[器材組]人員針對該[全機彙整管制號碼]是否已於 TLS 供售模組提供物料申請

 

è PDM系統編輯 OSM(施工步序)

è BM146 à 發工

 

.AMM系統

即時針對 目前工單的需求物料是否滿足進行分析

[物料籌補清冊]的清單沒有關係

à

[物料籌補清冊]的清單 TLS系統的供售模組處理


2023年10月23日 星期一

V120602C - var np = s_JSON('mySubForm',2); - 取得子畫面所有欄位值傳至後端

 目的: V120602C - var np = s_JSON('mySubForm',2);  - 取得子畫面所有欄位(s_xxx)值傳至後端      

處理說明: 1> var np=s_JSON('mySubForm');   --> 只取畫面中, s_開頭的欄位值

                  2> var np=s_JSON('mySubForm',2);-> 取畫面中, 所有欄位值(包含*_ ,Ex s_ACNO_欄位)

var np1 = s_JSON_my('mySubFormA'); //TMFunction.js, 組合form上的查詢條件為json參數傳遞    , type=2, 所有欄位值 , 均傳至後端(不排除_  CaluField)



1>*.js

  var Tmp_Str = "";
                console.log("存檔");
                var Tmp_mySubForm = Ext.getCmp("mySubForm");
                console.log("Tmp_mySubForm:", Tmp_mySubForm);
                //s_JSON : 只取畫面(form_id)中欄位以 s_開頭的欄位值
                var np = s_JSON('mySubForm',2); //取得本子畫面的所有欄位值為np參數傳遞        
                np["sub_QDRNO"] = par_QDRNO;
                var Tmp_url = "../../api/V120602CAPI/UPDATE_AMM_QDR_DNF";
                var rtn = getUrlStr(Tmp_url, np, "存檔");
                if (checkRtnOK(rtn)) {
                    mysuccessalert("存檔完成 !!");





V120602C - DataAdapter - 利用 DataTable(dt1) 更新後端資料庫

 目的: V120602C - DataAdapter -利用 DataTable(dt1) 更新後端資料庫 - DataAdapter - 不透過 SQL

處理說明: 1>利用 Tmp_dt1 來更新資料庫, 不用 INSERT / UPDATE SQL 來更新資料庫
                                   2> 透過   Adapter   來更新後端資料庫    
                              OracleDataAdapter adapter = new OracleDataAdapter(command);
                      3> 由 adapter 取得 Tmp_dt1 的資料
                            adapter.Fill(Tmp_dt1);
                      4> 建立 adapter 相關 Script (Insert/Update/Delete) : OracleCommandBuilder
                           OracleCommandBuilder scb = new OracleCommandBuilder(adapter);   
                      5>將 dt 的資料更新回資料
                           adapter.Update(Tmp_dt1);
                           Tmp_dt1.AcceptChanges(); 
                        

1>*.cs
OracleCommand command = new OracleCommand(Tmp_Sql);
OracleConnection conn = new OracleConnection(DBService.ConnectionString(DBLINK));
command.Connection = conn;
OracleDataAdapter adapter = new OracleDataAdapter(command);
adapter.Fill(Tmp_dt1);
OracleCommandBuilder scb = new OracleCommandBuilder(adapter);
int Tmp_cnt = Tmp_dt1.Rows.Count;
-->
DataRow Tmp_dr = Tmp_dt1.NewRow();
Tmp_dr["QDRNO"] = Tmp_QDRNO;
Tmp_dr["PSAPNO"] = Tmp_PSAPNO;
Tmp_dt1.Rows.Add(Tmp_dr);
adapter.Update(Tmp_dt1);
Tmp_dt1.AcceptChanges();



                    

2023年10月18日 星期三

V120504A - 名牌標籤列印 - SPIRE.XLS -

 目的: V120504A - 名牌標籤列印 - SPIRE.XLS

處理說明: 1>讀取 xls 樣板檔

                  2>填寫 xls 欄位值 

                  3>將 xls 存成檔案, 並download至前端


1>*.js
var cmpA_rdgExp = get_rdogrp_cmp1('rdg_Exp_a', 'rdg_Exp_a', 'rdgExp_a',
              ['(多張)小標籤', '(多張)大標籤', '(單張)小標籤', '(單張)大標籤', '(單張)大標籤+小標籤'],
                                                                        [5, 0], [700], ['標籤', 30],
                                                                        mgT, 50);

    var Panel_Top = new Ext.Panel({
        frame: false, layout: 'hbox', enableTabSrocll: false, labelStyle: "font-size:11pt;",
        items: [ cmpA_SAPNO, cmpA_rdgExp ]
    })

2>*.cs
             string fext = ".xlsx";   // xls 只輸出 200 row
            string fileName = "V120504_小標籤套表";            
            int rdo = Convert.ToInt32(nvc["Rdo"]);
            if (rdo == 1) { fileName = "V120504_大標籤套表"; }
            else if (rdo == 2) { fileName = "V120504_小標籤套表_單張"; }
            else if (rdo == 3) { fileName = "V120504_大標籤套表_單張"; }
            else if (rdo == 4) { fileName = "V120504_小標籤_大標籤_單張";}

                Workbook wk = new Workbook();
                try
                {
                    wk.LoadFromFile(newFileName);
                    //Template樣板檔案 index 可能從1開始
                    Worksheet ws = wk.Worksheets[wk.ActiveSheetIndex];  


2023年10月16日 星期一

AMM.EXE - 建置嘉珍的 Delphi 環境 - 問題排除說明

 目的: AMM.EXE  - 建置嘉珍的 Delphi 環境 - 問題排除說明

處理說明: 1>modrptdl.dcu not found   
                     --> 修改 modrptdl.pas 的Project Source 的目錄 , C:\AIDC\MDP\TLSMDPLib\
                  2>xlsrwii4.bpl 找不到 - 元件 Search 路徑
                      -->  Tools -> Options ->  Library path 
                      --> 加入C:\AIDC\MDP\02_XLSWRITER\Package\DXE2\
                 3> Web改版程式, 由功能選項點選後, 出現錯誤訊息,無 Web畫面
                       --> login.pas &dfm 改成 嘉珍版本的 Login程式


1>    呼叫 Web改版程式 必需先Login , Login畫面必需使用嘉珍.新版程式(2020/07/xx)

è 才可正常執行 Web改版程式, 不然點選Web改版子功能,會有錯誤訊息