顯示具有 Detail 標籤的文章。 顯示所有文章
顯示具有 Detail 標籤的文章。 顯示所有文章

2023年3月7日 星期二

V80204 – Detail *2 -[工作中心報工工時] [報工明細]頁 - 工時格式化 - WebService - Tab

 目的: V80204 –  Detail *2  -[工作中心報工工時] [報工明細]頁     -  .工時格式化:   小數2位

處理說明: 1>Master       -   selectionchange event
                                               Ext.getCmp('grid_M').on("selectionchange", function (view, selections, options) {
                                                         if (selections.length == 0) {
                                                                 return;
                                                              }
                                                     //1>>開啟  grid_D
                                                       var Tmp_store = Ext.getCmp('grid_D').store;
                                                       Tmp_store.getProxy().extraParams = np;
                                                      Tmp_store.getProxy().url = "../api/V80204API/getGridData_D";
                                                      Tmp_store.loadPage(1);

                                          2>格式化: 工時小數位2位     -    後端處理[HOUR_WK_][HOUR_OT_]
                                                         DataRow dr = ds.Tables["T1"].Rows[i];
                                                        Tmp_HOUR_WORK = double.Parse(dr["HOUR_WORK"].ToString());
                                                        Tmp_HOUR_OT = double.Parse(dr["HOUR_OT"].ToString());
                                                        dr["HOUR_WORK_"] = Tmp_HOUR_WORK.ToString("0.00");
                                                       dr["HOUR_OT_"] = Tmp_HOUR_OT.ToString("0.00");





1>*.js  - V80204
 //Detail    加入 [報工明細]頁
  var grid_D1 = Ext.create('grid_D', {
        grid_id: 'grid_D1',
        insert_btn_id: 'btn_add_D1',
        columns: J_columns_D1,
        title: '報工明細',
        store: Ext.create('gridstore_D', { model: J_gridmodel_D1 }),
        //form_items: J_formFields_D1,
        //form_id: 'myform_D1'
    });

    Ext.getCmp('tab_D').add(grid_D1); 

Ext.getCmp('grid_M').on("selectionchange", function (view, selections, options) {
        //MD_DB.reloadDetailStore(selections[0]);
        console.log("selections.length: ", selections.length);
        if (selections.length == 0) {
            return;
        }
           
        var Tmp_rec = selections[0];
        console.log("Tmp_rec: ", Tmp_rec);
        var Tmp_SAPNO = Tmp_rec.data["SAPNO"];
        var Tmp_WC = Tmp_rec.data["CURR_ARBPL_"];        
        console.log("Tmp_SAPNO: ", Tmp_SAPNO);
        console.log("Tmp_WC: ", Tmp_WC);
        var np = {};
        np["SAPNO"] = Tmp_SAPNO;
        np["WC"] = Tmp_WC;        

        //2>開啟  grid_D
        var Tmp_store = Ext.getCmp('grid_D').store;
        Tmp_store.getProxy().extraParams = np;
        Tmp_store.getProxy().url = "../api/V80204API/getGridData_D";
        Tmp_store.loadPage(1);

        //2>開啟  grid_D1
        console.log("open grid_D1.. ");
        Tmp_store = Ext.getCmp('grid_D1').store;
        Tmp_store.getProxy().extraParams = np;
        Tmp_store.getProxy().url = "../api/V80204API/getGridData_D1";
        Tmp_store.loadPage(1);
    });



2> *.cs
//Detail - [工作中心報工工時]頁  - WebService 傳回資料  - WS_ALS_WS01
        [HttpPost]
        public dynamic getGridData_D()
        {
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            OracleCommand cmd = new OracleCommand();
            string Tmp_SAPNO = nvc["SAPNO"];
            string Tmp_WC = nvc["WC"];
            //string Tmp_SAPNO = "22569801";
            //string Tmp_WC = "";
            DataSet ds = myfunc.getWS_ALS_WS01(Tmp_SAPNO,Tmp_WC);

            int Tmp_Cnt = ds.Tables["T1"].Rows.Count;
            double Tmp_MIN = 0;
            double Tmp_HOUR_ = 0;
            ds.Tables["T1"].Columns.Add(new DataColumn("HOUR_", typeof(string)));
            for (int i = 0; i < Tmp_Cnt; i++)
            {
                //施工人數/施工工時/施工步序                
                DataRow dr = ds.Tables["T1"].Rows[i];
                Tmp_MIN = double.Parse(dr["HOUR"].ToString());
                Tmp_HOUR_ = (Tmp_MIN / 60);
                dr["HOUR_"] = Tmp_HOUR_.ToString("0.00");                
            }  // end of  for (int i=0
            return ds;
        }


        //Detail1 - [報工明細]頁  - 工時.小數格式化
        [HttpPost]
        public dynamic getGridData_D1(bool par_paging = true)
        {
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            OracleCommand cmd = new OracleCommand();
            string Tmp_SAPNO = nvc["SAPNO"];
            string Tmp_WC = nvc["WC"];            

            string Tmp_Sql = "SELECT RNK, JCN, ACT, WC, CAST(HOUR_WORK as decimal(3, 2)) HOUR_WORK,CAST(HOUR_OT as decimal(3, 2)) HOUR_OT, DATA_DATE, EMPLYNM "
                                       + "FROM   (SELECT  dense_rank()  over(order by  JCN,ACT) as RNK,"
                                                       + "    a.JCN,a.ACT,a.WC,round(a.HOUR_WORK/60,2) HOUR_WORK,  "
                                                       + "     round(a.HOUR_OT / 60, 2) HOUR_OT,a.DATA_DATE,b.EMPLYNM  "
                                                   + " FROM (   SELECT   JCN, ACT, WC, HOUR_WORK, work_ID, HOUR_OT, DATA_DATE  "
                                                                     + "    FROM    HOUR.ALS_HOUR_COMP @ALS_HOUR  "
                                                                     + "    WHERE  JCN = LPAD(" + myfunc.AA(Tmp_SAPNO) + ", 12, 0)  "
                                                                     + "  union all   "
                                                                 + "   SELECT    JCN, ACT, WC, HOUR_WORK, work_ID, HOUR_OT, DATA_DATE  "
                                                                     + "   FROM     HOUR.ALS_HOUR_COMP_HISTORY @ALS_HOUR  "
                                                                     + "   WHERE   JCN = LPAD(" + myfunc.AA(Tmp_SAPNO) + ", 12, 0)  "
                                                                     + "    ORDER  BY   ACT, WC  "
                                                                     + " ) a, HR_EMPLYM b   "
                                                      + " WHERE   a.WORK_ID = b.EMPLYID(+)  "
                                                      + "  ORDER   BY  a.ACT  ";
            Tmp_Sql = Tmp_Sql + "   )   ";
            cmd.CommandText = Tmp_Sql;
            string countSql = " SELECT COUNT(*) as total FROM (" + Tmp_Sql + ")";
            //匯出時 ,取全部資料, par_paging =true            
            DataSet ds = getDataTable(cmd, countSql, par_paging);

            //將[工時] 轉換成小數2位
            int Tmp_Cnt = ds.Tables["T1"].Rows.Count;
            double Tmp_HOUR_OT = 0;
            double Tmp_HOUR_WORK = 0;
            ds.Tables["T1"].Columns.Add(new DataColumn("HOUR_WORK_", typeof(string)));
            ds.Tables["T1"].Columns.Add(new DataColumn("HOUR_OT_", typeof(string)));
            for (int i = 0; i < Tmp_Cnt; i++)
            {
                //施工人數/施工工時/施工步序                
                DataRow dr = ds.Tables["T1"].Rows[i];
                Tmp_HOUR_WORK = double.Parse(dr["HOUR_WORK"].ToString());
                Tmp_HOUR_OT = double.Parse(dr["HOUR_OT"].ToString());
                dr["HOUR_WORK_"] = Tmp_HOUR_WORK.ToString("0.00");
                dr["HOUR_OT_"] = Tmp_HOUR_OT.ToString("0.00");
            }  // end of  for (int i=0

            return ds;
        }




2022年11月30日 星期三

V80209 – MD畫面 – 顯示 Detail 資料 - grid.on("selectionchange",function(){}.. ) - Grid 選擇資料改變

 目的: V80209 – MD畫面 – 顯示 Detail 資料

處理說明:1> Ext.getCmp('grid_M').on("selectionchange", function (view, selections, options) {
                      1>>取得目前畫面的過濾條件
                          var np = s_JSON('s_form'); //TMFunction.js, 組合form上的查詢條件為json參數傳遞 
                      2>>取得目前 Master PK欄位值
                             var cur_recs = Ext.getCmp('grid_M').selModel.getSelection();
                              var cur_rec = cur_recs[0];
                              np["RVNO"] = cur_rec.data["RVNO"];
                       3>設定 Detail .store.proxy
                           gridstore.getProxy().url = '../api/V80209API/getGridData_D';
                           gridstore.getProxy().extraParams = np; //分頁OK,篩選條件OK
                       Ext.getCmp('grid_D').reloadGridData(false);  //若Detail資料空白時,不顯示無資料訊息



1>*.js
Ext.getCmp('grid_M').on("selectionchange", function (view, selections, options) {
        var np = s_JSON('s_form'); //TMFunction.js, 組合form上的查詢條件為json參數傳遞
        //console.log("Ext.getCmp('s_STAT') : ", Ext.getCmp('s_STAT'));
        var gridstore = Ext.getCmp('grid_D').store;        
        var cur_recs = Ext.getCmp('grid_M').selModel.getSelection();
        if (cur_recs.length == 0) {
            //Tmp_Str = "請先選擇要查詢的資料<br>";
            //mywarnalert(Tmp_Str);
            return;
        }
        var cur_rec = cur_recs[0];
        np["RVNO"] = cur_rec.data["RVNO"];
        np["s_VRCODE"] = Ext.getCmp('s_VRCODE').getValue();        
        np["s_UPDREC"] = Ext.getCmp('s_UPDREC').getValue();        
        np["s_UPDDT1"] = Ext.getCmp('s_UPDDT1').getValue();        
        np["s_UPDDT2"] = Ext.getCmp('s_UPDDT2').getValue();        
        console.log(" np[s_VRCODE]  : ", np["s_VRCODE"]);
        console.log(" np[s_UPDDT1]  : ", np["s_UPDDT1"]);
        console.log(" np[s_UPDDT2]  : ", np["s_UPDDT2"]);
        gridstore.getProxy().url = '../api/V80209API/getGridData_D';
        gridstore.getProxy().extraParams = np; //分頁OK,篩選條件OK
        Ext.getCmp('grid_D').reloadGridData(false); //若Detail資料空白時,不顯示無資料訊息
    });


2>*.cs   - getGridData_D()
[HttpPost]
        public dynamic getGridData_D()
        {
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            OracleCommand cmd = new OracleCommand();

            setDBTable("AMM_FRO3F16D");
            string Tmp_RVNO = nvc["RVNO"];
            string Tmp_VRCODE = nvc["s_VRCODE"];
            string Tmp_UPDREC = nvc["s_UPDREC"];
            string Tmp_UPDDT1 = nvc["s_UPDDT1"];
            string Tmp_UPDDT2 = nvc["s_UPDDT2"];
            //string csSQL = " AND RVNO = :RVNO ";
            //cmd.CommandText = csSQL;
            //cmd.Parameters.Add(":RVNO", RVNO);
            //setDBTable("AMM_FRO3F16D");
            //DataSet ds = getGridDataPage(cmd);

            string Tmp_Sql1 = "", Tmp_Sql2 = "";  //for 日期起迄
string Tmp_Sql = "  SELECT  RNK,RVNO,ITM,REER,INDDT,OUTDDT,NOTE,VRCODE,PN,SN,QDRNO,DIRNO,ACNO,MKTM "
                        + "  FROM   ( SELECT  dense_rank()  over(order by  RVNO,ITM) as RNK,"
                                       + "  RVNO,ITM,REER,INDDT,OUTDDT,NOTE,VRCODE,PN,SN,QDRNO,DIRNO,ACNO,MKTM "
                                      + "   FROM     AMM_FRO3F16D "
                                       + "   WHERE  1=1 ";
            //拆移編號
            if (!myfunc.checkisnull(Tmp_RVNO))
            {
                Tmp_Sql = Tmp_Sql + " AND    RVNO=" + myfunc.AA(Tmp_RVNO);
            };
            //異動原因
            if (!myfunc.checkisnull(Tmp_VRCODE))
            {
                if (Tmp_VRCODE != "ALL")
                   Tmp_Sql = Tmp_Sql + " AND    VRCODE=" + myfunc.AA(Tmp_VRCODE);
            };
            //異動記錄
            if (!myfunc.checkisnull(Tmp_UPDREC))
            {
                if (Tmp_UPDREC != "ALL")
                    Tmp_Sql = Tmp_Sql + " AND    (RVNO,ITM)  IN ( SELECT  RVNO,MAX(ITM)  "
                                                                                                    +" FROM    AMM_FRO3F16D "
                                                                           +" WHERE  RVNO="+myfunc.AA(Tmp_RVNO)
                                                                                                    +" GROUP BY RVNO "
                                                                                                   +" ) ";
            };
            //異動日期

            if (!(myfunc.checkisnull(Tmp_UPDDT1) && myfunc.checkisnull(Tmp_UPDDT2)))
            {                
                if (!myfunc.checkisnull(Tmp_UPDDT1))
               {
                  Tmp_Sql1 = Tmp_Sql1 + " (trunc(INDDT)>= " + myfunc.AA(Tmp_UPDDT1) + ")";
                  Tmp_Sql2 = Tmp_Sql2 + " (trunc(OUTDDT)>= " + myfunc.AA(Tmp_UPDDT1) + ")";
              };
            if (!myfunc.checkisnull(Tmp_UPDDT2))
            {
                if (!myfunc.checkisnull(Tmp_Sql1))
                {
                    Tmp_Sql1 = Tmp_Sql1 + " AND ";
                    Tmp_Sql2 = Tmp_Sql2 + " AND ";
                }
                Tmp_Sql1 = Tmp_Sql1 + "  (trunc(INDDT)<= " + myfunc.AA(Tmp_UPDDT2) + ")";
                Tmp_Sql2 = Tmp_Sql2 + "  (trunc(OUTDDT)<= " + myfunc.AA(Tmp_UPDDT2) + ")";
            }; // end of   if (!myfunc.checkisnull(Tmp_UPDDT2))

            Tmp_Sql = Tmp_Sql 
                            +" AND ( " 
                            + "("+ Tmp_Sql1+")"
                           + " OR " 
                           + "("+Tmp_Sql2 +")"
                           + ") ";
        };  //  if (!(myfunc.checkisnull(Tmp_UPDDT1) || myfunc.checkisnull(Tmp_UPDDT2)))
        Tmp_Sql = Tmp_Sql + " ) ";
            cmd.CommandText = Tmp_Sql;
            string countSql = " SELECT COUNT(*) as total FROM (" + Tmp_Sql + ")";
            DataSet ds = getDataTable(cmd, countSql);            

            //新增  CaluField 欄位  - [異動碼]            
            getKeyCode("VRCODE", ref ds);
            //新增  CaluField 欄位  - [處理人員姓名]            
            Tmp_Sql = " SELECT  EMPLYID AS REER,EMPLYNM "
                           + "  FROM   HR_EMPLYM ";
            getKeyCode("REER", ref ds,Tmp_Sql);

            return ds;
        }

2022年8月9日 星期二

V120402 - 新增/修改/刪除.Disabled 及 新增按鈕 - Detail畫面處理

 目的: 在畫面[新增]/[修改]/[刪除]按鈕Disabled , 並新增其他 [按鈕]

處理說明: 1>將在畫面[新增]/[修改]/[刪除]按鈕Disabled
                  2>Detail畫面新增[按鈕]
                  3>開啟 Detail 資料


1>將在畫面[新增]/[修改]/[刪除]按鈕Disabled 

//新增 , 查詢畫面, 無新增/修改/刪除/..
    Ext.getCmp('btn_add').setDisabled(false);   //[新增]鈕設為 Disabled
    Ext.getCmp('btn_add').setVisible(false);      //[新增]鈕設為 隱藏
    Ext.getCmp('btn_edit').setVisible(false);
    Ext.getCmp('btn_del').setVisible(false);


2>Detail畫面新增[按鈕]
//按鈕 : [借閱登記] [歸還登記][續借登記][查詢借閱記錄][報表]
    var BtnAry = [
        {
            xtype: 'button', text: '借閱登記', id: 'LendBtn',
            listeners: {
                click: function () {
                    //RollPrnBtn_click();
                }
            }
        },
        {
            xtype: 'button', text: '歸還登記', id: 'BackBtn',
            listeners: {
                click: function () {
                    //console.log(" 1 inside 缺勤記錄維護: ");
                    //RollEditBtn_click();
                }
            }
        },
        {
            xtype: 'button', text: '續借登記', id: 'ContBtn',
            listeners: {
                click: function () {
                    //console.log(" 1 inside 缺勤記錄維護: ");
                    //RollEditBtn_click();
                }
            }
        },
        {
            xtype: 'button', text: '查詢借閱記錄', id: 'LookBtn',
            listeners: {
                click: function () {
                    //console.log(" 1 inside 缺勤記錄維護: ");
                    //RollEditBtn_click();
                }
            }
        },
        {
            xtype: 'button', text: '報表', id: 'RtnBtn',
            listeners: {
                click: function () {
                    //console.log(" 1 inside 缺勤記錄維護: ");
                    //RollEditBtn_click();
                }
            }
        },

    ];

    //於單檔下方新增 Button
    Ext.getCmp('grid_D').insertBtn(BtnAry);

3>開啟 Detail 資料
 public dynamic getGridData_D()
        {
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            OracleCommand cmd = new OracleCommand();
            string TMNO = nvc["TMNO"];
            string csSQL = " AND TMNO = :TMNO ";
            cmd.CommandText = csSQL;
            cmd.Parameters.Add(":TMNO", TMNO);
            setDBTable("AMM_TMDWGD");
            DataSet ds = getGridDataPage(cmd);

            return ds;
        }