Esempio n. 1
0
        /// <summary>
        /// 轉檔前檢查日期格式及其他狀態
        /// </summary>
        /// <returns></returns>
        private bool StartExport()
        {
            if (!emDate.IsDate(emDate.Text, "日期輸入錯誤"))
            {
                //is_chk = "Y";
                return(false);
            }

            DataTable dt = (DataTable)gcMain.DataSource;

            if (dt.Rows.Count <= 0)
            {
                MessageDisplay.Warning("下方視窗無資料無法進行存檔,請先執行「讀取/預覽」!");
                ShowMsg("轉檔有誤!");
                return(false);
            }

            if (retrieveChoose == DialogResult.No)
            {
                MessageDisplay.Warning("已重新產置資料,請先執行「儲存」!");
                ShowMsg("轉檔有誤!");
                return(false);
            }

            stMsgTxt.Visible = true;
            stMsgTxt.Text    = "開始轉檔...";
            this.Cursor      = Cursors.WaitCursor;
            this.Refresh();
            Thread.Sleep(5);
            return(true);
        }
Esempio n. 2
0
        protected override ResultStatus Retrieve()
        {
            if (gbDetial.EditValue.Equals("rb_detail"))
            {
                MessageDisplay.Warning("明細資料僅提供「轉出」CSV檔案,請按轉出功能!");
                return(ResultStatus.Fail);
            }
            if (!StartRetrieve())
            {
                return(ResultStatus.Fail);
            }

            if (!GetData())
            {
                return(ResultStatus.Fail);
            }

            List <ReportProp> caption = new List <ReportProp> {
                new ReportProp {
                    DataColumn = "AMM0_YMD", Caption = "日期", CellWidth = gbDetial.EditValue.Equals("rb_gnodate")?120:65, DetailRowFontSize = gbDetial.EditValue.Equals("rb_gnodate")?8:9, HeaderFontSize = 11
                },
                new ReportProp {
                    DataColumn = "AMM0_BRK_NO", Caption = "期貨商        代號", CellWidth = 80, DetailRowFontSize = 10, HeaderFontSize = 11
                },
                new ReportProp {
                    DataColumn = "BRK_ABBR_NAME", Caption = "期貨商名稱", CellWidth = 150, DetailRowFontSize = 9.75f, HeaderFontSize = 11
                },
                new ReportProp {
                    DataColumn = "AMM0_CNT", Caption = "詢價筆數", CellWidth = gbDetial.EditValue.Equals("rb_gnodate")?90:120, textAlignment = TextAlignment.MiddleRight, DetailRowFontSize = 11, HeaderFontSize = 11
                },
                new ReportProp {
                    DataColumn = "CP_RATE_VALID_CNT", Caption = "佔全市場            詢價比例(%)", CellWidth = 100, textAlignment = TextAlignment.MiddleRight, TextFormatString = "{0:##0.0#}", DetailRowFontSize = 11, HeaderFontSize = 11
                },
                new ReportProp {
                    DataColumn = "AMM0_MARKET_R_CNT", Caption = "全市場                詢價筆數", CellWidth = 120, textAlignment = TextAlignment.MiddleRight, DetailRowFontSize = 11, HeaderFontSize = 11
                }
            };

            //商品名稱會根據列印順序有所不同
            ReportProp productName = new ReportProp {
                DataColumn = "AMM0_PROD_ID", Caption = "商品名稱", CellWidth = 120, DetailRowFontSize = 11, HeaderFontSize = 11
            };

            if (_D500Xx.SortType == "P")
            {
                caption.Insert(1, productName);//選擇商品,商品名稱會位於第二欄
            }
            else
            {
                caption.Insert(3, productName);//選擇造勢者,商品名稱會位於第四欄
            }

            _defReport = new defReport(_Data, caption);
            ShowReport(_defReport);

            //WriteLog("查詢資料 " + _D500Xx.LogText, "query", "R");
            return(ResultStatus.Success);
        }
Esempio n. 3
0
        /// <summary>
        /// 只要發生錯誤,而且有勾選email news,則show message box
        /// </summary>
        /// <param name="sendEmail"></param>
        protected ResultStatus showEmailMsg(bool sendEmail)
        {
            if (sendEmail)
            {
                MessageDisplay.Warning("產出檔案有異常資訊,請通知系統負責人!");
            }

            return(ResultStatus.Fail);
        }
Esempio n. 4
0
        protected override ResultStatus CheckShield()
        {
            base.CheckShield();
            string orgPassword     = txtOrgPassword.Text;
            string password        = txtPassword.Text;
            string confirmPassword = txtConfirmPassword.Text;

            if (orgPassword == password)
            {
                MessageDisplay.Warning("「原始舊密碼」與「變更後新密碼」相同");
                txtPassword.Focus();
                return(ResultStatus.Fail);
            }

            if (string.IsNullOrEmpty(confirmPassword))
            {
                MessageDisplay.Warning("請輸入「再次確認新密碼」欄位");
                txtConfirmPassword.Focus();
                return(ResultStatus.Fail);
            }

            if (confirmPassword != password)
            {
                MessageDisplay.Warning("「變更後新密碼」與「再次確認新密碼」不符");
                txtPassword.Focus();
                return(ResultStatus.Fail);
            }

            if (password.Length < 8)
            {
                MessageDisplay.Warning("密碼長度必須大於8位!");
                txtPassword.Focus();
                return(ResultStatus.Fail);
            }

            Regex regx = new Regex(@"^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$");

            if (!regx.IsMatch(password))
            {
                MessageDisplay.Warning("密碼不符規定,至少(大寫英文'A',小字英文'a',數字'1')型態各一!");
                txtPassword.Focus();
                return(ResultStatus.Fail);
            }

            DataTable dt = daoUPF.ListDataByUserIdAndPassword(lblUserId.Text, orgPassword);

            if (dt.Rows.Count == 0)
            {
                MessageDisplay.Warning("原密碼輸入錯誤");
                txtOrgPassword.Focus();
                return(ResultStatus.Fail);
            }

            return(ResultStatus.Success);
        }
Esempio n. 5
0
        protected override ResultStatus RunBefore(PokeBall args)
        {
            string txfServer = gvMain.GetRowCellValue(1, "TXF_SERVER").AsString();

            if (txfServer != GlobalDaoSetting.GetConnectionInfo.ConnectionName)
            {
                MessageDisplay.Warning("作業Server(" + txfServer + ") 不等於連線Server(" + GlobalDaoSetting.GetConnectionInfo.ConnectionName + ")");
                return(ResultStatus.Fail);
            }

            string inputDate = txtOcfDate.Text;
            string nowDate   = DateTime.Now.ToString(txtOcfDate.Properties.EditFormat.FormatString);

            if (OCF_TYPE == "D")
            {
                if (inputDate != nowDate)
                {
                    if (MessageDisplay.Choose("交易日期(" + inputDate + ") 不等於今日(" + nowDate + "),是否要繼續?") == DialogResult.No)
                    {
                        return(ResultStatus.Fail);
                    }
                }
                if (servicePrefix1.HasLogspDone(Convert.ToDateTime(inputDate), _ProgramID))
                {
                    if (MessageDisplay.Choose(_ProgramID + " 作業 " + inputDate + "「曾經」執行過,\n是否要繼續?\n\n★★★建議先執行 [預覽] 確認執行狀態") == DialogResult.No)
                    {
                        return(ResultStatus.Fail);
                    }
                }

                if (!servicePrefix1.setOCF(txtOcfDate.DateTimeValue, _DB_TYPE, GlobalInfo.USER_ID))
                {
                    return(ResultStatus.Fail);
                }
            }
            else if (OCF_TYPE == "M")
            {
                if (inputDate != nowDate)
                {
                    if (MessageDisplay.Choose("月份(" + inputDate + ") 不等於本月(" + nowDate + "),是否要繼續?") == DialogResult.No)
                    {
                        return(ResultStatus.Fail);
                    }
                }
            }


            GridHelper.AcceptText(gcMain);

            return(base.RunBefore(args));
        }
Esempio n. 6
0
        protected override ResultStatus CheckShield()
        {
            base.CheckShield(gcMain);
            if (!IsDataModify(gcMain))
            {
                return(ResultStatus.Fail);
            }
            if (string.IsNullOrEmpty(ddlTxnId.EditValue.AsString()))
            {
                MessageDisplay.Warning("作業代號不可為空白!");
                return(ResultStatus.Fail);
            }

            return(ResultStatus.Success);
        }
Esempio n. 7
0
        protected override ResultStatus Save(PokeBall poke)
        {
            try {
                DataTable dtCurrent = (DataTable)gcMain.DataSource;
                gvMain.CloseEditor();
                gvMain.UpdateCurrentRow();

                DataTable dtChange      = dtCurrent.GetChanges();
                DataTable dtForAdd      = dtCurrent.GetChanges(DataRowState.Added);
                DataTable dtForModified = dtCurrent.GetChanges(DataRowState.Modified);
                DataTable dtForDeleted  = dtCurrent.GetChanges(DataRowState.Deleted);

                if (dtChange == null)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }
                if (dtChange.Rows.Count == 0)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }

                //隱藏欄位賦值
                foreach (DataRow dr in dtCurrent.Rows)
                {
                    if (dr.RowState == DataRowState.Added || dr.RowState == DataRowState.Modified)
                    {
                        dr["MMFO_W_TIME"]    = DateTime.Now;
                        dr["MMFO_W_USER_ID"] = GlobalInfo.USER_ID;
                    }
                }

                dtChange = dtCurrent.GetChanges();
                ResultData result = new MMFO().UpdateData(dtChange);
                if (result.Status == ResultStatus.Fail)
                {
                    MessageDisplay.Error("儲存錯誤", GlobalInfo.ErrorText);
                    return(ResultStatus.Fail);
                }
                PrintOrExportChangedByKen(gcMain, dtForAdd, dtForDeleted, dtForModified);
            } catch (Exception ex) {
                MessageDisplay.Error("儲存錯誤", GlobalInfo.ErrorText);
                WriteLog(ex, "", false);
                return(ResultStatus.FailButNext);
            }
            return(ResultStatus.Success);
        }
Esempio n. 8
0
        private void gvMain_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            GridView gv = sender as GridView;

            switch (e.Column.FieldName)
            {
            //原PB設計[開始交易日期]輸入後檢查日期格式 只跳警示訊息 在按存檔時又會檢查一次
            case "APDK_BEGIN_DATE":
                DateTime dateTime;
                if (DateTime.TryParse(e.Value.ToString(), out dateTime))
                {
                    return;
                }
                else
                {
                    MessageDisplay.Warning(e.Value.ToString() + "日期格式錯誤!");
                    gv.FocusedRowHandle = e.RowHandle;
                    gv.FocusedColumn    = gv.Columns[e.Column.FieldName];
                    gv.ShowEditor();
                }
                return;

            case "APDK_PROD_TYPE":
            case "APDK_PROD_SUBTYPE":
            case "APDK_KIND_ID":
                //[商品子類別]不等於股票類[商品對照類別]自動帶入[商品3碼]的值
                if (gv.GetRowCellValue(e.RowHandle, gv.Columns["APDK_PROD_SUBTYPE"]).AsString() != "S")
                {
                    gv.SetRowCellValue(e.RowHandle, gv.Columns["APDK_PARAM_KEY"], gv.GetRowCellValue(e.RowHandle, gv.Columns["APDK_KIND_ID"]));
                }
                else
                {
                    //[商品子類別]等於股票類[商品對照類別]選擇前先清空
                    gv.SetRowCellValue(e.RowHandle, gv.Columns["APDK_PARAM_KEY"], DBNull.Value);
                }
                return;

            default:
                return;
            }
        }
Esempio n. 9
0
        private void btnSetting_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(ddlUserId.EditValue.AsString()))
            {
                MessageDisplay.Warning("請選擇使用者代號!");
            }
            else
            {
                bool result = daoUPF.UpdatePasswordByUserId(ddlUserId.EditValue.AsString(), txtPassword.Text);

                if (result)
                {
                    _IsPreventFlowPrint = false;
                    base.ProcessSaveFlow();
                    SingletonLogger.Instance.Info(GlobalInfo.USER_ID, _ProgramID, "使用者起始設定", "I");
                }
                else
                {
                    MessageDisplay.Error("密碼變更失敗!");
                }
            }
        }
Esempio n. 10
0
        protected override ResultStatus Save(PokeBall pokeBall)
        {
            try
            {
                DataTable dtCurrent = (DataTable)gcMain.DataSource;
                gvMain.CloseEditor();
                gvMain.UpdateCurrentRow();

                DataTable dtChange      = dtCurrent.GetChanges();
                DataTable dtForAdd      = dtCurrent.GetChanges(DataRowState.Added);
                DataTable dtForModified = dtCurrent.GetChanges(DataRowState.Modified);
                DataTable dtForDeleted  = dtCurrent.GetChanges(DataRowState.Deleted);

                if (dtChange == null)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }
                if (dtChange.Rows.Count == 0)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }

                ResultData result = new RPT().UpdateData(dtChange);


                if (result.Status == ResultStatus.Fail)
                {
                    return(ResultStatus.Fail);
                }
            }
            catch (Exception ex)
            {
                WriteLog(ex);
            }
            return(ResultStatus.Success);
        }
Esempio n. 11
0
        protected override ResultStatus Export()
        {
            try {
                #region 輸入&日期檢核
                if (string.Compare(txtStartYMD.Text, txtEndYMD.Text) > 0)
                {
                    MessageDisplay.Error(CheckDate.Datedif, GlobalInfo.ErrorText);
                    return(ResultStatus.Fail);
                }
                #endregion

                //0. ready
                panFilter.Enabled = false;
                labMsg.Visible    = true;
                labMsg.Text       = "開始轉檔...";
                this.Cursor       = Cursors.WaitCursor;
                this.Refresh();
                Thread.Sleep(5);


                //判斷是否至少勾選一個選項
                if (chkGroup.CheckedItemsCount < 1)
                {
                    MessageDisplay.Warning("請勾選至少一個選項!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }
                else
                {
                    string tempMarketCode;
                    //RadioButton (rbMarket0 = 一般 / rbMarket1 = 盤後 / rbMarketAll = 全部)
                    if (gbMarket.EditValue.ToString() == "rbMarket0")
                    {
                        tempMarketCode = "一般";
                    }
                    else if (gbMarket.EditValue.ToString() == "rbMarket1")
                    {
                        tempMarketCode = "盤後";
                    }
                    else
                    {
                        tempMarketCode = "全部";
                    }

                    //1.複製檔案 & 開啟檔案 (因檔案需因MarketCode更動,所以另外寫)
                    string originalFilePath = Path.Combine(GlobalInfo.DEFAULT_EXCEL_TEMPLATE_DIRECTORY_PATH, _ProgramID + "." + FileType.XLS.ToString().ToLower());

                    string destinationFilePath = Path.Combine(GlobalInfo.DEFAULT_REPORT_DIRECTORY_PATH,
                                                              _ProgramID + "_" + tempMarketCode + "_" + DateTime.Now.ToString("yyyy.MM.dd-HH.mm.ss.") + FileType.XLS.ToString().ToLower());

                    File.Copy(originalFilePath, destinationFilePath, true);

                    Workbook workbook = new Workbook();
                    workbook.LoadDocument(destinationFilePath);
                    Worksheet worksheet = workbook.Worksheets[0];

                    //2.填資料
                    bool result = false;
                    result = wf_Export(workbook, worksheet); //function 30590

                    if (!result)
                    {
                        workbook = null;
                        File.Delete(destinationFilePath);
                        return(ResultStatus.Fail);
                    }

                    //3.存檔
                    workbook.SaveDocument(destinationFilePath);
                    labMsg.Visible = false;
                }

                return(ResultStatus.Success);
            } catch (Exception ex) {
                WriteLog(ex);
            } finally {
                panFilter.Enabled = true;
                labMsg.Text       = "";
                labMsg.Visible    = false;
                this.Cursor       = Cursors.Arrow;
            }

            return(ResultStatus.Fail);
        }
Esempio n. 12
0
        protected override ResultStatus Export()
        {
            try {
                this.Cursor = Cursors.WaitCursor;
                this.Refresh();
                Thread.Sleep(5);
                lblProcessing.Visible = true;
                ShowMsg("開始轉檔...");
                string rptId = "42011", file, rptName = "股票期貨風險價格係數機動評估指標";

                #region ue_export_before
                //判斷資料已轉入
                daoMGR3 = new MGR3();
                int    rtn;
                string ymd = txtSDate.DateTimeValue.ToString("yyyyMMdd");
                rtn = daoMGR3.mgr3Count(ymd);
                if (rtn == 0)
                {
                    DialogResult result = MessageDisplay.Choose(" 當日保證金適用比例資料未轉入完畢,是否要繼續?");
                    if (result == DialogResult.No)
                    {
                        lblProcessing.Visible = false;
                        return(ResultStatus.Fail);
                    }
                }
                //130批次作業做完
                string rtnStr;
                rtnStr = PbFunc.f_chk_130_wf(_ProgramID, txtSDate.DateTimeValue, "5");
                if (rtnStr != "")
                {
                    DialogResult result = MessageDisplay.Choose(txtSDate.Text + "-" + rtnStr + ",是否要繼續?");
                    if (result == DialogResult.No)
                    {
                        lblProcessing.Visible = false;
                        return(ResultStatus.Fail);
                    }
                }

                //是否勾選任一報表
                if (!cbx1.Checked && !cbx2.Checked && !cbx3.Checked)
                {
                    MessageDisplay.Error("未勾選任何報表!");
                    return(ResultStatus.Fail);
                }
                #endregion

                //取前一交易日
                DateTime lastDate = dao42011.GetLastDate(txtSDate.DateTimeValue);
                if (lastDate == DateTime.MinValue)
                {
                    MessageDisplay.Warning(txtSDate.Text + ",讀取前一交易日失敗!");
                    return(ResultStatus.Fail);
                }

                //讀取資料(保證金適用比例級距)
                DataTable dt42011 = dao42011.d_42011_detl(txtSDate.DateTimeValue, lastDate, txtRange.Text.AsDecimal() / 100,
                                                          txtRate2Ref.Text.AsDecimal() / 100, txtRate3Ref.Text.AsDecimal() / 100, txtRate4Ref.Text.AsDecimal() / 100,
                                                          txtRate1.Text.AsDecimal() / 100, txtRate2.Text.AsDecimal() / 100, txtRate3.Text.AsDecimal() / 100, txtRate4.Text.AsDecimal() / 100);
                if (dt42011.Rows.Count == 0)
                {
                    MessageDisplay.Info(txtSDate.Text + "," + rptId + '-' + rptName + ",無任何資料!");
                    lblProcessing.Visible = false;
                    return(ResultStatus.Fail);
                }
                dt42011.Sort("APDK_KIND_GRP2, APDK_KIND_LEVEL, MGR3_KIND_ID");

                //複製檔案
                file = PbFunc.wf_copy_file(rptId, rptId);
                if (file == "")
                {
                    return(ResultStatus.Fail);
                }

                //開啟檔案
                Workbook workbook = new Workbook();
                workbook.LoadDocument(file);

                //切換Sheet
                Worksheet ws = workbook.Worksheets[0];
                ws.Cells[0, 15].Value = txtSDate.DateTimeValue.Year + "年" + txtSDate.DateTimeValue.Month + "月" + txtSDate.DateTimeValue.Day + "日";

                //表1
                ShowMsg(rptId + '-' + rptName + " 轉檔中...");
                int minusRow;
                minusRow = wf_42011_1(ws, dt42011);
                minusRow = wf_42011_2(minusRow, ws, dt42011);
                minusRow = wf_42011_3(minusRow, ws, dt42011);

                //存檔
                ws.ScrollToRow(0);
                workbook.SaveDocument(file);
                ShowMsg("轉檔成功");
            } catch (Exception ex) {
                ShowMsg("轉檔錯誤");
                MessageDisplay.Error("輸出錯誤");
                throw ex;
            } finally {
                this.Cursor = Cursors.Arrow;
                this.Refresh();
                Thread.Sleep(5);
            }
            return(ResultStatus.Success);
        }
Esempio n. 13
0
        protected override ResultStatus Save(PokeBall poke)
        {
            gvMain.CloseEditor();
            gvMain.UpdateCurrentRow();

            DataTable dt             = (DataTable)gcMain.DataSource;
            DataTable dtChange       = dt.GetChanges();
            DataTable dtDeleteChange = dt.GetChanges(DataRowState.Deleted);

            int getDeleteCount = dtDeleteChange != null ? dtDeleteChange.Rows.Count : 0;

            //存檔前檢查
            if (getDeleteCount == 0 && dtChange != null)//無法經由資料列存取已刪除的資料列資訊。
            {
                // 寫入DB
                //轉換原資料表型態
                DataTable insertData = dt;
                DataTable data       = dao20231.ListApdkData().Clone();//dw_1.reset()
                for (int k = 0; k < insertData.Rows.Count; k++)
                {
                    DataRow insertDr = insertData.Rows[k];

                    data.Rows.Add(data.NewRow());
                    foreach (DataColumn col in insertData.Columns)
                    {
                        DataRow dr = data.Rows[k];
                        //APDK_BEGIN_DATE String 轉 Date
                        if (col.ColumnName == "APDK_BEGIN_DATE")
                        {
                            DateTime dateTime;
                            if (!DateTime.TryParse(insertDr["APDK_BEGIN_DATE"].ToString(), out dateTime))
                            {
                                MessageDisplay.Error(insertDr["APDK_BEGIN_DATE"].ToString() + "日期格式錯誤!");
                                SetFocused(insertData, insertDr, "APDK_BEGIN_DATE");
                                return(ResultStatus.FailButNext);
                            }
                            dr[col.ColumnName] = insertDr[col.ColumnName].AsDateTime("yyyy/MM/dd");
                            continue;
                        }
                        //檢查該欄位是否填寫資料 同時確認gvMain.Columns[col.ColumnName]是否有這欄位
                        if ((insertDr[col.ColumnName] == DBNull.Value || string.IsNullOrEmpty(insertDr[col.ColumnName].ToString())) &&
                            gvMain.Columns[col.ColumnName] != null)
                        {
                            MessageDisplay.Warning($"[{gvMain.Columns[col.ColumnName].Caption}]資料未填寫完成,請確認!!");
                            SetFocused(insertData, insertDr, col.ColumnName);
                            return(ResultStatus.FailButNext);
                        }
                        dr[col.ColumnName] = insertDr[col.ColumnName];
                    } //foreach (DataColumn col in insertData.Columns)
                }     //for (int k = 0; k < insertData.Rows.Count; k++

                //填補剩餘必填欄位
                foreach (DataRow dr in data.Rows)
                {
                    string kindidsub2 = dr["APDK_KIND_ID"].AsString().SubStr(0, 2);
                    dr["APDK_KIND_ID_STO"] = kindidsub2;
                    dr["APDK_QUOTE_CODE"]  = "Y";
                    dr["APDK_KIND_ID2"]    = kindidsub2;
                    dr["APDK_KIND_ID_OUT"] = dr["APDK_KIND_ID"].AsString();
                    dr["APDK_EXPIRY_TYPE"] = "S";
                    dr["APDK_NAME_OUT"]    = dr["APDK_NAME"].AsString();
                    dr["APDK_MARKET_CODE"] = "0";
                    dr["APDK_KIND_LEVEL"]  = dr["APDK_REMARK"].AsString() == "M" ? 6 : 1;
                }

                if (dtChange != null)
                {
                    try {
                        //儲存至DB
                        ResultData myResultData = dao20231.UpdateAPDK(data);
                    } catch (Exception ex) {
                        WriteLog(ex);
                    }
                    //存檔完列印結果
                    ReportHelper ReportHelper = new ReportHelper(gcMain, "20231", "[20231] 部位限制個股類標的轉入-新增個股契約基本資料");
                    Print(ReportHelper);
                }
                else
                {
                    MessageBox.Show("沒有變更資料,不需要存檔!", "注意", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
            MessageDisplay.Info(MessageDisplay.MSG_OK);
            return(ResultStatus.Success);
        }
Esempio n. 14
0
        /// <summary>
        /// 按下[匯出]按鈕時
        /// </summary>
        /// <returns></returns>
        protected override ResultStatus Export()
        {
            #region 輸入&日期檢核 (exportbefore)
            if (string.Compare(txtStartMonth.Text, txtEndMonth.Text) > 0)
            {
                MessageDisplay.Error("月份起始年月不可小於迄止年月!", GlobalInfo.ErrorText);
                return(ResultStatus.Fail);
            }
            #endregion

            //0. ready
            panFilter.Enabled = false;
            labMsg.Visible    = true;
            labMsg.Text       = "轉檔中...";
            this.Cursor       = Cursors.WaitCursor;
            this.Refresh();
            Thread.Sleep(5);

            //0.1 將畫面資訊做些轉換
            string startNo = cbxFcmStartNo.EditValue.AsString("");
            string endNo   = cbxFcmEndNo.EditValue.AsString("");


            //1.檢查
            //1.1期貨商後面號碼不能小於前面號碼
            //ken,注意,期貨商代號第一碼為英文,如果要比較字串大小,則要使用string.Compare
            if (startNo.Length > 0)
            {
                if (endNo.Length > 0)
                {
                    if (startNo.CompareTo(endNo) > 0)
                    {
                        MessageDisplay.Warning("造市者代號起始不可大於迄止", GlobalInfo.WarningText);
                        cbxFcmStartNo.Focus();
                        panFilter.Enabled = true;
                        labMsg.Text       = " ";
                        this.Cursor       = Cursors.Arrow;
                        this.Refresh();
                        Thread.Sleep(5);
                        return(ResultStatus.Fail);
                    }
                }
            }

            //2.get data
            DataTable dt;
            if (rgpType.SelectedIndex == 0)//依照期貨商別
            {
                dt = dao55050.ListAll(txtStartMonth.FormatValue,
                                      txtEndMonth.FormatValue,
                                      startNo,
                                      endNo);
            }
            else//依照商品別
            {
                dt = dao55050.ListAll2(txtStartMonth.FormatValue,
                                       txtEndMonth.FormatValue,
                                       startNo,
                                       endNo);
            }

            if (dt.Rows.Count <= 0)
            {
                MessageDisplay.Info(string.Format("{0},{1},無任何資料!", txtStartMonth.Text + "~" + txtEndMonth.Text, this.Text), GlobalInfo.ResultText);
                panFilter.Enabled = true;
                labMsg.Text       = " ";
                this.Cursor       = Cursors.Arrow;
                this.Refresh();
                Thread.Sleep(5);
                return(ResultStatus.Fail);
            }

            try {
                //3.開始轉出資料
                panFilter.Enabled = false;
                labMsg.Visible    = true;
                labMsg.Text       = "訊息:資料轉出中........";

                //3.1 copy template xls to target path
                string excelDestinationPath = PbFunc.wf_copy_file(_ProgramID, _ProgramID);

                //3.2 open xls
                Workbook workbook = new Workbook();
                workbook.LoadDocument(excelDestinationPath);
                int       sheetNo   = rgpType.SelectedIndex;
                Worksheet worksheet = workbook.Worksheets[sheetNo];

                //3.3寫入檔頭
                worksheet.Cells[3, 0].Value += System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
                worksheet.Cells[3, 3].Value += txtStartMonth.Text.Replace("/", "");
                worksheet.Cells[3, 6].Value += txtEndMonth.Text.Replace("/", "");
                //ken,沒撈出此資訊,不用顯示 worksheet.Cells[3, 9].Value = "資料更新時間 : " + dt.Rows[0]["FEETRD_UPD_TIME"].AsDateTime(System.DateTime.Now).ToString("yyyy/MM/dd HH:mm:ss");

                //3.4寫入明細
                //ken,預先做好一堆空白行數,但是如果筆數超過預設空白行數,會把最後的統計那行覆蓋掉
                int rowIndex      = 7;                                                    //起始row index position
                int pos           = 0;
                int rowTotalCount = rowIndex + (rgpType.SelectedIndex == 0 ? 300 : 3500); //總行數(包含空白),每個範本的預設空白行都不一樣
                foreach (DataRow row in dt.Rows)
                {
                    if (pos % 20 == 0)
                    {
                        labMsg.Text = string.Format("資料轉出中......{0} / {1}", pos, dt.Rows.Count);
                        this.Refresh();
                        //Application.DoEvents();
                    }

                    if (rgpType.SelectedIndex == 0)
                    {
                        //依照期貨商別
                        worksheet.Cells[rowIndex, 0].SetValue(row["feetrd_fcm_no"]);    //期貨商代號
                        worksheet.Cells[rowIndex, 1].SetValue(row["brk_abbr_name"]);    //期貨商名稱
                        worksheet.Cells[rowIndex, 2].SetValue(row["feetrd_ar"]);        //交易經手費--應收
                        worksheet.Cells[rowIndex, 3].SetValue(row["feetrd_disc_amt"]);  //交易經手費--折減
                        worksheet.Cells[rowIndex, 4].SetValue(row["feetrd_rec_amt"]);   //交易經手費--實收
                        worksheet.Cells[rowIndex, 5].SetValue(row["feetdcc_ar"]);       //結算服務費--應收
                        worksheet.Cells[rowIndex, 6].SetValue(row["feetdcc_disc_amt"]); //結算服務費--折減
                        worksheet.Cells[rowIndex, 7].SetValue(row["feetdcc_rec_amt"]);  //結算服務費--實收
                    }
                    else
                    {
                        //依照商品別
                        worksheet.Cells[rowIndex, 0].SetValue(row["feetrd_fcm_no"]);    //期貨商代號
                        worksheet.Cells[rowIndex, 1].SetValue(row["brk_abbr_name"]);    //期貨商名稱
                        worksheet.Cells[rowIndex, 2].SetValue(row["feetrd_kind_id"]);   //商品名稱
                        worksheet.Cells[rowIndex, 3].SetValue(row["feetrd_ar"]);        //交易經手費--應收
                        worksheet.Cells[rowIndex, 4].SetValue(row["feetrd_disc_amt"]);  //交易經手費--折減
                        worksheet.Cells[rowIndex, 5].SetValue(row["feetrd_rec_amt"]);   //交易經手費--實收
                        worksheet.Cells[rowIndex, 6].SetValue(row["feetdcc_ar"]);       //結算服務費--應收
                        worksheet.Cells[rowIndex, 7].SetValue(row["feetdcc_disc_amt"]); //結算服務費--折減
                        worksheet.Cells[rowIndex, 8].SetValue(row["feetdcc_rec_amt"]);  //結算服務費--實收
                    }//if(rgpType.SelectedIndex == 0) {

                    rowIndex++; pos++;
                }//foreach (DataRow row in dt.Rows) {


                //刪除空白列
                if (rowIndex <= rowTotalCount)
                {
                    worksheet.Rows.Remove(rowIndex, rowTotalCount - rowIndex);
                }

                worksheet.Range["A1"].Select();
                worksheet.ScrollToRow(0);

                //存檔
                workbook.SaveDocument(excelDestinationPath);
                return(ResultStatus.Success);
            } catch (Exception ex) {
                WriteLog(ex);
            } finally {
                panFilter.Enabled = true;
                labMsg.Text       = "";
                labMsg.Visible    = false;
                this.Cursor       = Cursors.Arrow;
            }
            return(ResultStatus.Fail);
        }
Esempio n. 15
0
        protected override ResultStatus Save(PokeBall poke)
        {
            gvMain.CloseEditor();
            gvMain.UpdateCurrentRow();

            DataTable dt             = (DataTable)gcMain.DataSource;
            DataTable dtChange       = dt.GetChanges();
            DataTable dtAdd          = dt.GetChanges(DataRowState.Added);
            DataTable dtDeleteChange = dt.GetChanges(DataRowState.Deleted);

            if (dtChange == null)
            {
                MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                return(ResultStatus.Fail);
            }
            if (dtChange.Rows.Count == 0)
            {
                MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                return(ResultStatus.Fail);
            }

            if (dtChange != null)
            {
                //更新變動日期與使用者ID
                foreach (DataRow dr in dt.Rows)
                {
                    if (dr.RowState == DataRowState.Modified)
                    {
                        dr["PLS4_W_USER_ID"] = GlobalInfo.USER_ID;
                        dr["PLS4_W_TIME"]    = DateTime.Now;
                        dr["PLS4_PDK_YMD"]   = _IsPdkYMD;
                    }

                    if (dr.RowState == DataRowState.Added)
                    {
                        dr["PLS4_W_USER_ID"] = GlobalInfo.USER_ID;
                        dr["PLS4_W_TIME"]    = DateTime.Now;
                        dr["PLS4_PDK_YMD"]   = _IsPdkYMD;
                        if (string.IsNullOrEmpty(dr["PLS4_SID"].AsString()) || string.IsNullOrEmpty(dr["PLS4_KIND_ID2"].AsString()) ||
                            string.IsNullOrEmpty(dr["PLS4_PID"].AsString()))
                        {
                            MessageDisplay.Info("資料尚未填寫完成!");
                            return(ResultStatus.FailButNext);
                        }
                    }

                    if (dr.RowState == DataRowState.Deleted)
                    {
                        continue;
                    }
                }

                try {
                    // 寫入DB
                    ResultData myResultData = dao20231.UpdatePLS4(dt);
                    //產出txt檔案
                    Common.Helper.ExportHelper.ToText(dt, Path.Combine(GlobalInfo.DEFAULT_REPORT_DIRECTORY_PATH, "20231.txt"));
                } catch (Exception ex) {
                    WriteLog(ex);
                    return(ResultStatus.Fail);
                }
            }
            return(ResultStatus.Success);
        }
Esempio n. 16
0
        protected override ResultStatus Save(PokeBall pokeBall)
        {
            int printStep = 0;

            try {
                DataTable dtCurrent = (DataTable)gcMain.DataSource;
                gvMain.CloseEditor();
                gvMain.UpdateCurrentRow();

                DataTable dtChange = dtCurrent.GetChanges();

                if (dtChange == null)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }
                if (dtChange.Rows.Count == 0)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }

                DialogResult liRtn;
                int          pos = -1;
                foreach (DataRow dr in dtChange.Rows)
                {
                    pos++;
                    if (dr.RowState == DataRowState.Added || dr.RowState == DataRowState.Modified)
                    {
                        dr["CPR_W_TIME"]    = DateTime.Now;
                        dr["CPR_W_USER_ID"] = GlobalInfo.USER_ID;
                        dr["CPR_DATA_NUM"]  = 0; //隱藏欄位賦值

                        if (dr["CPR_PRICE_RISK_RATE"] == DBNull.Value)
                        {
                            string kind = dr["CPR_KIND_ID"].AsString();

                            liRtn = MessageDisplay.Choose(string.Format("{0}最小風險價格係數欄位為空白,請確認是否為已下市契約", kind), MessageBoxDefaultButton.Button2, GlobalInfo.QuestionText);
                            if (liRtn == DialogResult.No)
                            {
                                return(ResultStatus.Fail);
                            }
                            else
                            {
                                dr["CPR_PRICE_RISK_RATE"] = DBNull.Value;
                            }
                        }

                        gvMain.SetRowCellValue(pos, "CPR_W_TIME", DateTime.Now);
                        gvMain.SetRowCellValue(pos, "CPR_W_USER_ID", GlobalInfo.USER_ID);
                        gvMain.UpdateCurrentRow();
                    }
                } //foreach (DataRow dr in dtCurrent.Rows)
                  //dtChange = dtChange.GetChanges();

                //GridHelper.SetCommonGrid(gvMain);
                //gvMain.BestFitColumns();

                printStep = 1; //跑儲存前確認單
                CheckPrint(gcMain, dtChange, printStep);
                liRtn = MessageDisplay.Choose("已列印確認單,點選確認進行儲存資料", MessageBoxDefaultButton.Button2, GlobalInfo.QuestionText);
                if (liRtn == DialogResult.No)
                {
                    return(ResultStatus.Fail);
                }
                else
                {
                    ResultData result = new HCPR().UpdateData(dtChange);
                    if (result.Status == ResultStatus.Fail)
                    {
                        MessageDisplay.Error("儲存失敗", GlobalInfo.ErrorText);
                        return(ResultStatus.FailButNext);
                    }

                    printStep = 2; //儲存後列印已確認單
                    CheckPrint(gcMain, dtChange, printStep);
                }
            } catch (Exception ex) {
                MessageDisplay.Error("儲存錯誤", GlobalInfo.ErrorText);
                WriteLog(ex, "", false);
                return(ResultStatus.FailButNext);
            } finally {
                DataTable dtAll = dao49010.GetDataList();
                DataTable dt    = dtAll.Clone();
                gcMain.DataSource = dt;

                gvMain.AppearancePrint.BandPanel.Options.UseTextOptions = true;
                gvMain.AppearancePrint.BandPanel.TextOptions.WordWrap   = WordWrap.Wrap;
                gvMain.AppearancePrint.BandPanel.Font = new Font("Microsoft YaHei", 11);

                gvMain.AppearancePrint.Row.Font           = new Font("Microsoft YaHei", 11);
                gvMain.OptionsPrint.AllowMultilineHeaders = true;
                gvMain.AppearancePrint.GroupRow.Font      = new Font("Microsoft YaHei", 11);

                gvMain.BestFitColumns();
                GridHelper.SetCommonGrid(gvMain);

                gridBand9.AppearanceHeader.TextOptions.WordWrap = WordWrap.Wrap;

                gridBand9.Caption = "(輸入方式:如3.5%,則輸入0.035)";

                gvMain.Columns["CPR_PROD_SUBTYPE"].ColumnEdit = lupProdSubtype;
                gvMain.Columns["CPR_KIND_ID"].ColumnEdit      = lupKindId;

                //製作連動下拉選單(觸發事件)
                gvMain.ShownEditor += gvMain_ShownEditor;
                lupProdSubtype.EditValueChanged += lupProdSubtype_EditValueChanged;

                //gcMain.Visible = true;
                gcMain.Focus();
                _ToolBtnPrintAll.Enabled = false;//列印
                this.Refresh();
            }
            gcMain.Visible = false;
            return(ResultStatus.Success);
        }
Esempio n. 17
0
        protected override ResultStatus Save(PokeBall poke)
        {
            try {
                DataTable dtCurrent = (DataTable)gcMain.DataSource;
                gvMain.CloseEditor();
                gvMain.UpdateCurrentRow();

                DataTable dtChange      = dtCurrent.GetChanges();
                DataTable dtForAdd      = dtCurrent.GetChanges(DataRowState.Added);
                DataTable dtForModified = dtCurrent.GetChanges(DataRowState.Modified);
                DataTable dtForDeleted  = dtCurrent.GetChanges(DataRowState.Deleted);

                if (dtChange == null)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }
                if (dtChange.Rows.Count == 0)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }

                dtChange = dtCurrent.GetChanges();
                string ls_dw_name, ls_date;
                systemType = "";
                if (gbMarket.EditValue.AsString() == "rbMarket1")
                {
                    ls_dw_name = "";
                    if (gbType.EditValue.AsString() == "rbTypeFut")
                    {
                        ls_dw_name += "_fut";
                        ls_date     = PbFunc.f_ocf_date(0, "futAH");
                        systemType  = "(期貨夜盤)";
                    }
                    else
                    {
                        ls_dw_name += "_opt";
                        ls_date     = PbFunc.f_ocf_date(0, "optAH");
                        systemType  = "(選擇權夜盤)";
                    }
                    ls_dw_name += "_AH";
                }
                else
                {
                    ls_dw_name = "";
                    if (gbType.EditValue.AsString() == "rbTypeFut")
                    {
                        ls_dw_name += "_fut";
                        ls_date     = PbFunc.f_ocf_date(0, "fut");
                        systemType  = "(期貨一般)";
                    }
                    else
                    {
                        ls_dw_name += "_opt";
                        ls_date     = PbFunc.f_ocf_date(0, "opt");
                        systemType  = "(選擇權一般)";
                    }
                }

                ResultData result = dao51070.UpdateData(dtChange, ls_dw_name);
                if (result.Status == ResultStatus.Fail)
                {
                    return(ResultStatus.Fail);
                }
                Print(_ReportHelper);
                //AfterSaveForPrint(gcMain , dtChange , systemType);
            } catch (Exception ex) {
                WriteLog(ex);
            }
            return(ResultStatus.Success);
        }
Esempio n. 18
0
        /// <summary>
        /// 寫log to db (當logType=Error或資料庫連線失敗,會額外將錯誤訊息寫到檔案)
        /// </summary>
        /// <param name="msg">最後儲存的長度為100字元</param>
        /// <param name="logType">基本logType可定義為 Info/Operation/Error</param>
        /// <param name="operationType">
        /// logType=Info,此參數才有效(I = change data, E = export, R = query, P = print, X = execute)
        /// </param>
        /// <param name="showMsg">true=顯示錯誤訊息,false=不顯示</param>
        public void WriteLog(string msg, string logType = "Info", string operationType = " ", bool showMsg = false, bool isNeedWriteFile = false)
        {
            //bool isNeedWriteFile = false;
            string dbErrorMsg = "";

            //1.write log to db
            //ken,先把WriteLog集中,之後可根據不同的logType,存放不同的TABLE或檔案
            //基本logType可定義為 info/operation/error
            //logf_job_type value: I = change data, E = export, R = query, P = print, X = execute
            try {
                switch (logType)
                {
                case ("Info"):
                    operationType = "A";
                    break;

                case ("Error"):
                    operationType   = "Z";
                    isNeedWriteFile = true;
                    break;
                }
                //LOGF_KEY_DATA長度要取前100字元,但是logf.LOGF_KEY_DATA型態為VARCHAR2 (100 Byte),如果有中文會算2byte...
                string msgC = "[C#]" + msg;
                new LOGF().Insert(GlobalInfo.USER_ID, _ProgramID, msgC.SubStr(0, 50), operationType);
            } catch (Exception ex2) {
                // write log to db failed , ready write file to local
                isNeedWriteFile = true;
                dbErrorMsg      = ex2.ToString();
                MessageDisplay.Error("資料庫連線發生錯誤,先將錯誤訊息寫到檔案");
            }//try {
             //2.write file to local
            if (isNeedWriteFile)
            {
                try {
                    string filename = "log_" + DateTime.Now.ToString("yyyyMMdd") + ".log";
                    string filepath = Path.Combine(Application.StartupPath, "Log", DateTime.Today.ToString("yyyyMM"));
                    Directory.CreateDirectory(filepath);
                    filepath = Path.Combine(filepath, filename);
                    using (StreamWriter sw = File.AppendText(filepath)) {
                        sw.WriteLine("");
                        sw.WriteLine("");
                        sw.WriteLine("==============================");
                        sw.WriteLine("datetime=" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                        sw.WriteLine("userId=" + GlobalInfo.USER_ID);
                        sw.WriteLine("txnId=" + _ProgramID);
                        sw.WriteLine("logType=" + logType);
                        sw.WriteLine("operationType=" + operationType);
                        sw.Write("msg=" + msg);
                        sw.WriteLine("");
                        if (dbErrorMsg != "")
                        {
                            sw.Write("dbErrorMsg=" + dbErrorMsg);
                        }
                    }//using (StreamWriter sw = File.AppendText(filepath)) {
                } catch (Exception fileEx) {
                    MessageDisplay.Error("將log寫入檔案發生錯誤,請聯絡管理員" + Environment.NewLine + "msg=" + fileEx.Message);
                    return;
                }
            }//if (isNeedWriteFile) {
             //3.show message to UI (ken,這裡主要處理一般的訊息,Error的錯誤訊息由另外傳入Exception參數的那個來發比較詳盡)
            if (showMsg)
            {
                switch (logType)
                {
                case ("Operation"):
                    MessageDisplay.Normal(msg);
                    break;

                case ("Info"):
                    MessageDisplay.Warning(msg);
                    break;

                case ("Error"):
                    MessageDisplay.Error(msg);
                    break;
                }
            }//if (showMsg) {
        }
Esempio n. 19
0
        protected override ResultStatus Export()
        {
            string flowStepDesc = "1.開始轉出資料";

            try {
                //1.開始轉出資料
                panFilter.Enabled = false;
                gcMsg.DataSource  = null;
                gcMsg.Refresh();
                gcMsg.Visible  = true;
                labMsg.Visible = true;
                labMsg.Text    = "訊息:資料轉出中........";
                this.Refresh();

                //1.1 ready some value
                DateTime tradeDate     = txtSDate.DateTimeValue;                       //當日
                DateTime lastTradeDate = ai2.GetLastDate(tradeDate, "D", "TXF%", "%"); //找到前一日期
                bool     haveTradeTxw  = amif.haveTradeTxw(tradeDate);                 //判斷當日有無TXW
                decimal  closePrice    = amif.GetClosePrice(tradeDate);                //現貨收盤指數
                if (closePrice == 0)
                {
                    closePrice = new AMIFU().GetClosePrice(tradeDate);
                }
                if (closePrice == 0)
                {
                    MessageDisplay.Error("讀取現貨收盤指數無資料,請確認20110作業中有今天資料!", GlobalInfo.ErrorText);
                    return(ResultStatus.Fail);
                }

                //1.2 copy template xls to target path
                //string tempOutputDate = (ddlType.Text == "全部收盤" ? "全部收盤" : "16時15分收盤");//ken,檔名不能有冒號,所以無法直接用下拉選單text
                string tempOutputDate = "全部收盤";
                string targetFileName = string.Format("{0}新版行情表({1}).xlsx", tradeDate.ToString("yyyyMMdd"), tempOutputDate);
                //string reportId = "30055_" + (ddlType.ItemIndex + 1).ToString();//後面還會用到
                string reportId             = "30055_2";
                string excelDestinationPath = wf_copy_file(reportId, targetFileName);
                if (excelDestinationPath == "")
                {
                    return(ResultStatus.Fail);                       //當copy file發生錯誤,直接離開(這裡檔案名稱會重複,所以容易造成檔案開始時無法move造成失敗)
                }
                //1.3 open excel
                Workbook workbook = new Workbook();
                workbook.LoadDocument(excelDestinationPath);
                Worksheet ws = workbook.Worksheets[0];
                flag = 0;

                //2.1 今日台指期收盤指數
                flowStepDesc = "2.1 今日台指期收盤指數";
                //if (!wf_30055_a(ws , tradeDate , closePrice)) return showEmailMsg(cbxNews.Checked);
                if (is_chk == "Y")
                {
                    wf_30055_a(ws, tradeDate, closePrice);
                }

                //2.2 主要指數期貨商品行情表
                flowStepDesc = "2.2 主要指數期貨商品行情表";
                //if (!wf_30055_b(ws , tradeDate , lastTradeDate)) return showEmailMsg(cbxNews.Checked);
                if (is_chk == "Y")
                {
                    wf_30055_b(ws, tradeDate, lastTradeDate);
                }

                //2.3 台指選擇權(近月及一週到期)主要序列行情表
                flowStepDesc = "2.3 台指選擇權(近月及一週到期)主要序列行情表";
                //if (!wf_30055_tx(ws , tradeDate , haveTradeTxw , closePrice)) return showEmailMsg(cbxNews.Checked);
                if (is_chk == "Y")
                {
                    wf_30055_tx(ws, tradeDate, haveTradeTxw, closePrice);
                }


                //2.4 主要指數期貨大額交易人未平倉部位一覽表 (三大法人=外商/投信/自營商)
                //2.4 台指選擇權十大交易人未平倉部位一覽表 (三大法人=外商/投信/自營商)
                flowStepDesc = "2.4 主要指數期貨大額交易人未平倉部位一覽表 (三大法人)";
                //if (!wf_30055_three_keep(ws , tradeDate , lastTradeDate)) return showEmailMsg(cbxNews.Checked);
                if (is_chk == "Y")
                {
                    wf_30055_three_keep(ws, tradeDate, lastTradeDate);
                }


                //2.5 主要指數期貨大額交易人未平倉部位一覽表 (大額交易人=十大交易人(近月)+十大交易人(所有月份))
                //2.5 台指選擇權十大交易人未平倉部位一覽表 (大額交易人=十大交易人(近月)+十大交易人(所有月份))
                flowStepDesc = "2.5 主要指數期貨大額交易人未平倉部位一覽表 (大額交易人)";
                //if (!wf_30055_big_keep(ws , tradeDate , lastTradeDate)) return showEmailMsg(cbxNews.Checked);
                if (is_chk == "Y")
                {
                    wf_30055_big_keep(ws, tradeDate, lastTradeDate);
                }



                //2.6 主要股票(不含ETF)期貨行情表(依未平倉量) = STF
                //2.6 主要ETF期貨行情表(依未平倉量)= ETF
                flowStepDesc = "2.6 主要股票 期貨/ETF 商品行情表(依未平倉量)";
                //if (!wf_30055_stf(ws , tradeDate , lastTradeDate , "STF")) return showEmailMsg(cbxNews.Checked);
                if (is_chk == "Y")
                {
                    wf_30055_stf(ws, tradeDate, lastTradeDate, "STF");
                }
                //if (!wf_30055_stf(ws , tradeDate , lastTradeDate , "ETF")) return showEmailMsg(cbxNews.Checked);
                if (is_chk == "Y")
                {
                    wf_30055_stf(ws, tradeDate, lastTradeDate, "ETF");
                }

                //2.7 主要ETF選擇權(近月價平)序列行情表
                flowStepDesc = "2.7 主要ETF選擇權(近月價平)序列行情表";
                //if (!wf_30055_etc(ws , tradeDate , "ETC")) return showEmailMsg(cbxNews.Checked);
                if (is_chk == "Y")
                {
                    wf_30055_etc(ws, tradeDate, "ETC");
                }


                //2.8 匯率期貨行情表
                flowStepDesc = "2.8 匯率期貨行情表";
                //if (!wf_30055_prod_subtype(ws , tradeDate , "E")) return showEmailMsg(cbxNews.Checked);
                if (is_chk == "Y")
                {
                    wf_30055_prod_subtype(ws, tradeDate, "E");
                }

                //2.9 人民幣匯率選擇權主要序列行情表(依成交量) RHF,RTF
                //ken,template是隱藏的grid,嗯
                flowStepDesc = "2.9 人民幣匯率選擇權主要序列行情表(依成交量) RHF,RTF";
                //if (!wf_30055_rho(ws , tradeDate)) return showEmailMsg(cbxNews.Checked);
                if (is_chk == "Y")
                {
                    wf_30055_rho(ws, tradeDate);
                }

                //2.10 商品期貨行情表 GDF,TGF,BRF
                flowStepDesc = "2.10 商品期貨行情表 (美元黃金期貨/臺幣黃金期貨/布蘭特原油期貨)GDF,TGF,BRF";
                //if (!wf_30055_prod_subtype(ws , tradeDate , "C")) return showEmailMsg(cbxNews.Checked);
                if (is_chk == "Y")
                {
                    wf_30055_prod_subtype(ws, tradeDate, "C");
                }

                //2.11 刪除列
                flowStepDesc = "2.11 刪除列";
                wf_del_row(ws, haveTradeTxw);

                //2.12 股票期貨週
                flowStepDesc = "2.12 股票期貨週";
                ws           = workbook.Worksheets[1];//切換到第二個sheet
                //if (!wf_30055_weekly(ws , tradeDate)) return showEmailMsg(cbxNews.Checked);
                if (is_chk == "Y")
                {
                    wf_30055_weekly(ws, tradeDate);
                }

                //2.13 先存檔
                if (flag <= 0)
                {
                    File.Delete(excelDestinationPath);
                }
                else
                {
                    flowStepDesc = "2.13 Save file";
                    ws           = workbook.Worksheets[0];
                    ws.Range["A1"].Select();
                    ws.ScrollToRow(0);
                    workbook.SaveDocument(excelDestinationPath);
                }

                //2.14 email news
                flowStepDesc = "2.14 email news";
                if (cbxNews.Checked)
                {
                    DataTable dtTxemail = new TXEMAIL().ListData(reportId, 1);

                    if (dtTxemail.Rows.Count != 0)
                    {
                        string TXEMAIL_SENDER     = dtTxemail.Rows[0]["TXEMAIL_SENDER"].AsString();
                        string TXEMAIL_RECIPIENTS = dtTxemail.Rows[0]["TXEMAIL_RECIPIENTS"].AsString();
                        string TXEMAIL_CC         = dtTxemail.Rows[0]["TXEMAIL_CC"].AsString();
                        string TXEMAIL_TITLE      = dtTxemail.Rows[0]["TXEMAIL_TITLE"].AsString();
                        string TXEMAIL_TEXT       = dtTxemail.Rows[0]["TXEMAIL_TEXT"].AsString();
                        try {
                            TXEMAIL_TITLE = txtSDate.DateTimeValue.ToString("yyyyMMdd") + TXEMAIL_TITLE;
                            MailHelper.SendEmail(TXEMAIL_SENDER, TXEMAIL_RECIPIENTS, TXEMAIL_CC, TXEMAIL_TITLE, TXEMAIL_TEXT, excelDestinationPath);
                        } catch (Exception ex) {
                            is_chk = "E";
                            MessageDisplay.Warning("產出檔案有異常資訊,請通知系統負責人!");
                            return(ResultStatus.Fail);
                        }
                    }
                }

                #region //3.產生TJF檔案

                //3.1複製檔案
                targetFileName       = string.Format("{0}_TJF.xlsx", tradeDate.ToString("yyyy.MM.dd"));
                reportId             = "30055_TJF";
                excelDestinationPath = wf_copy_file(reportId, targetFileName);
                workbook.LoadDocument(excelDestinationPath);
                ws = workbook.Worksheets[0];

                //3.2
                //if (!wf_30055_tjf(ws , tradeDate , lastTradeDate)) return showEmailMsg(cbxNews.Checked);
                bool result = false;
                if (is_chk == "Y")
                {
                    result = wf_30055_tjf(ws, tradeDate, lastTradeDate);
                }

                //3.3 儲存及關閉檔案
                if (!result)
                {
                    File.Delete(excelDestinationPath);
                }
                else
                {
                    workbook.SaveDocument(excelDestinationPath);
                }

                //3.4 email
                if (cbxTJF.Checked)
                {
                    string    txnId     = "30055";
                    DataTable dtTxemail = new TXEMAIL().ListData(txnId, 1);

                    if (dtTxemail.Rows.Count != 0)
                    {
                        string TXEMAIL_SENDER     = dtTxemail.Rows[0]["TXEMAIL_SENDER"].AsString();
                        string TXEMAIL_RECIPIENTS = dtTxemail.Rows[0]["TXEMAIL_RECIPIENTS"].AsString();
                        string TXEMAIL_CC         = dtTxemail.Rows[0]["TXEMAIL_CC"].AsString();
                        string TXEMAIL_TITLE      = dtTxemail.Rows[0]["TXEMAIL_TITLE"].AsString();
                        string TXEMAIL_TEXT       = dtTxemail.Rows[0]["TXEMAIL_TEXT"].AsString();

                        TXEMAIL_TITLE = txtSDate.DateTimeValue.ToString("yyyyMMdd") + TXEMAIL_TITLE;
                        try {
                            MailHelper.SendEmail(TXEMAIL_SENDER, TXEMAIL_RECIPIENTS, TXEMAIL_CC, TXEMAIL_TITLE, TXEMAIL_TEXT, excelDestinationPath);
                        } catch (Exception ex) {
                            is_chk = "E";
                            MessageDisplay.Warning("產出檔案有異常資訊,請通知系統負責人!");
                            return(ResultStatus.Fail);
                        }
                    }
                }
                #endregion


                return(ResultStatus.Success);
            } catch (Exception ex) {
                WriteLog(ex, flowStepDesc);
            } finally {
                this.Cursor       = Cursors.Arrow;
                panFilter.Enabled = true;
                labMsg.Text       = "";
                labMsg.Visible    = false;
                this.Refresh();
                Thread.Sleep(5);
            }
            return(ResultStatus.Fail);
        }
Esempio n. 20
0
        protected override ResultStatus Retrieve()
        {
            try {
                //清空Grid
                gcMain.DataSource = null;

                //讀取資料
                dao40070 = new D40070();
                DataTable dt40070 = dao40070.d_40070_scrn(txtSDate.DateTimeValue.ToString("yyyyMMdd"), ddlModel.EditValue.AsString());
                if (dt40070.Rows.Count == 0)
                {
                    MessageDisplay.Warning("無任何資料!");
                    return(ResultStatus.Fail);
                }
                //排序
                dt40070 = dt40070.Sort("OSW_GRP, SEQ_NO, PROD_TYPE, KIND_ID");
                //複製
                //dw_1.RowsCopy(1, dw_1.rowcount(), primary!, ids_tmp, 1, primary!)
                dtTemp = dt40070.Copy();
                //過濾
                DataView dv = dt40070.AsDataView();
                dv.RowFilter = " ab_type in ('-','A')";
                DataTable dtFiltered = dv.ToTable();

                gcMain.DataSource = dtFiltered;
                gcMain.Refresh();
                //預設展開群組
                gvMain.ExpandAllGroups();

                //設定三個Group的生效日期
                string validDateG1, validDateG5;
                int    found;
                //Group1
                found = dtFiltered.Rows.IndexOf(dtFiltered.Select("osw_grp='1' and issue_begin_ymd is not null ").FirstOrDefault());
                if (found > -1)
                {
                    txtDateG1.DateTimeValue = dtFiltered.Rows[found]["ISSUE_BEGIN_YMD"].AsDateTime("yyyyMMdd");
                }
                else
                {
                    txtDateG1.DateTimeValue = PbFunc.f_get_ocf_next_n_day(txtSDate.DateTimeValue, 1);
                }
                validDateG1 = txtDateG1.Text;
                //Group2
                found = dtFiltered.Rows.IndexOf(dtFiltered.Select("osw_grp='5' and issue_begin_ymd is not null ").FirstOrDefault());
                if (found > -1)
                {
                    txtDateG5.DateTimeValue = dtFiltered.Rows[found]["ISSUE_BEGIN_YMD"].AsDateTime("yyyyMMdd");
                }
                else
                {
                    txtDateG5.DateTimeValue = PbFunc.f_get_ocf_next_n_day(txtSDate.DateTimeValue, 2);
                }
                validDateG5 = txtDateG5.Text;
                //Group3
                //found = dtFiltered.Rows.IndexOf(dtFiltered.Select("osw_grp='7' and issue_begin_ymd is not null ").FirstOrDefault());
                //if (found > -1) {
                //   txtDateG7.DateTimeValue = dtFiltered.Rows[found]["ISSUE_BEGIN_YMD"].AsDateTime("yyyyMMdd");
                //} else {
                //   txtDateG7.DateTimeValue = PbFunc.f_get_ocf_next_n_day(txtSDate.DateTimeValue , 2);
                //}
                //validDateG7 = txtDateG7.Text;
            } catch (Exception ex) {
                MessageDisplay.Error("讀取錯誤");
                throw ex;
            }

            return(ResultStatus.Success);
        }
Esempio n. 21
0
        /// <summary>
        /// 顯示明細
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDetail_Click(object sender, EventArgs e)
        {
            //重設gridview
            gcDetail.DataSource = null;

            int    row, col, found;
            string prodType, kindID, stockID, issueBeginYmd, ymd, paramKey, abroad;
            string opType, colname;

            gvMain.CloseEditor();
            gvMain.UpdateCurrentRow();


            DataTable dtGrid = dao40071.d_40071_detail(); //ids_tmp 空的,拿來重置gcDetail

            dtGrid.Columns["ADJ_TYPE"].ColumnName = "OP_TYPE";
            dtGrid.Columns["DATA_YMD"].ColumnName = "YMD";
            //dtTemp.Columns["CM_A * NVL(MGT6_REF_XXX,1)"].ColumnName = "CM_A"; 沒成功撈到資料的話欄位名稱不會變?
            DataTable dtMGD2 = dao40072.d_40072(); //ids_mgd2 空的

            prodType      = "S";
            paramKey      = "ST%";
            abroad        = "%";
            kindID        = "%";
            this.ymd      = txtSDate.DateTimeValue.ToString("yyyyMMdd");
            issueBeginYmd = txtEffectiveSDate.DateTimeValue.ToString("yyyyMMdd");

            //產生明細檔
            DataTable dtInput = (DataTable)gcMain.DataSource;

            if (dtInput.Columns[dtInput.Columns.Count - 1].ColumnName == "CPSORT")
            {
                dtInput.Columns.Remove(dtInput.Columns["CPSORT"]);                                                                //把拿來排序的運算欄位刪掉
            }
            foreach (DataRow drInput in dtInput.Rows)
            {
                opType  = "I";
                stockID = drInput["STOCK_ID"].ToString();

                dtMGD2 = dao40072.d_40072(this.ymd, isAdjType, stockID);
                if (dtMGD2.Rows.Count > 0)
                {
                    DialogResult result = MessageDisplay.Choose(stockID + "資料已存在,是否重新產製資料,若不重產資料,請按「預覽」!");
                    if (result == DialogResult.No)
                    {
                        return;
                    }
                    opType = "U";
                }

                for (col = 0; col < dtInput.Columns.Count; col++)
                {
                    colname = dtInput.Columns[col].ColumnName;
                    //級距為從其高,保證金B值可不填
                    if (drInput["M_LEVEL"].AsString() == "Z" && colname.IndexOf("_B") >= 0)
                    {
                        continue;
                    }
                    if (drInput[col] == DBNull.Value || drInput[col].ToString() == "")
                    {
                        MessageDisplay.Error("請確認資料是否輸入完成!");
                        return;
                    }
                }

                stockID = stockID + "%";

                //調整幅度=0
                //這邊才去讀SP
                DataTable dtTemp = dao40071.d_40071_detail(this.ymd, prodType, paramKey, abroad, kindID, stockID, 0);
                dtTemp.Columns["ADJ_TYPE"].ColumnName = "OP_TYPE";
                dtTemp.Columns["DATA_YMD"].ColumnName = "YMD";
                if (dtTemp.Columns["CM_A*NVL(MGT6_REF_XXX,1)"] != null)
                {
                    dtTemp.Columns["CM_A*NVL(MGT6_REF_XXX,1)"].ColumnName = "CM_A";                                                 //沒撈到值的話欄位名稱不會變,若資料為個股類也不會變
                }
                foreach (DataRow drTemp in dtTemp.Rows)
                {
                    drTemp["ISSUE_BEGIN_YMD"] = issueBeginYmd;
                    drTemp["YMD"]             = this.ymd;
                    drTemp["M_LEVEL"]         = drInput["M_LEVEL"];
                    drTemp["CM_A"]            = drInput["CM_A"];
                    drTemp["MM_A"]            = drInput["MM_A"];
                    drTemp["IM_A"]            = drInput["IM_A"];
                    if (drTemp["CM_B"] != DBNull.Value)
                    {
                        drTemp["CM_B"] = drInput["CM_B"];
                    }
                    if (drTemp["MM_B"] != DBNull.Value)
                    {
                        drTemp["MM_B"] = drInput["MM_B"];
                    }
                    if (drTemp["IM_B"] != DBNull.Value)
                    {
                        drTemp["IM_B"] = drInput["IM_B"];
                    }
                    drTemp["ADJ_RSN"] = drInput["ADJ_RSN"];
                    drTemp["OP_TYPE"] = opType;
                }

                //將資料複製到明細表
                //dtGrid = dtTemp.Clone();
                foreach (DataRow drTemp in dtTemp.Rows)
                {
                    dtGrid.ImportRow(drTemp);
                }
                dtGrid.AcceptChanges();
                gcDetail.DataSource = dtGrid;
            }//foreach (DataRow drInput in dtInput.Rows)

            //sort("stock_id A prod_type A ")
            if (dtGrid.Rows.Count != 0)
            {
                dtGrid = dtGrid.AsEnumerable().OrderBy(x => x.Field <string>("STOCK_ID"))
                         .ThenBy(x => x.Field <string>("PROD_TYPE"))
                         .CopyToDataTable();
            }
            gcDetail.DataSource = dtGrid;

            if (gvDetail.RowCount == 0)
            {
                MessageDisplay.Warning("無明細資料,請確認「交易日期」及「商品調整幅度」是否填寫正確!");
                return;
            }
        }
Esempio n. 22
0
        /// <summary>
        /// 按下[匯出]按鈕時
        /// </summary>
        /// <returns></returns>
        protected override ResultStatus Export()
        {
            #region 輸入&日期檢核 (exportbefore)
            if (string.Compare(txtStartMonth.Text, txtEndMonth.Text) > 0)
            {
                MessageDisplay.Error("月份起始年月不可小於迄止年月!", GlobalInfo.ErrorText);
                return(ResultStatus.Fail);
            }
            #endregion

            //0.將畫面資訊做些轉換
            string startNo = cbxFcmStartNo.EditValue.AsString("");
            string endNo   = cbxFcmEndNo.EditValue.AsString("");


            //1.檢查
            //1.1期貨商後面號碼不能小於前面號碼
            //ken,注意,期貨商代號第一碼為英文,如果要比較字串大小,則要使用string.Compare
            if (startNo.Length > 0)
            {
                if (endNo.Length > 0)
                {
                    if (startNo.CompareTo(endNo) > 0)
                    {
                        MessageDisplay.Warning("造市者代號起始不可大於迄止", GlobalInfo.WarningText);
                        cbxFcmStartNo.Focus();
                        return(ResultStatus.Fail);
                    }
                }
            }

            //2.get data
            DataTable dt;
            if (rgpType.SelectedIndex == 0)//依照期貨商別
            {
                dt = dao55020.ListAll(txtStartMonth.FormatValue,
                                      txtEndMonth.FormatValue,
                                      startNo,
                                      endNo,
                                      cbxProdType.EditValue.AsString());
            }
            else//依照商品別
            {
                dt = dao55020.ListAll2(txtStartMonth.FormatValue,
                                       txtEndMonth.FormatValue,
                                       startNo,
                                       endNo);
            }

            if (dt.Rows.Count <= 0)
            {
                MessageDisplay.Info(string.Format("{0},{1},無任何資料!", txtStartMonth.Text + "~" + txtEndMonth.Text, this.Text), GlobalInfo.ResultText);
                return(ResultStatus.Fail);
            }

            try {
                //3.開始轉出資料
                panFilter.Enabled = false;
                labMsg.Visible    = true;
                labMsg.Text       = "訊息:資料轉出中........";

                //3.1 copy template xls to target path
                string excelDestinationPath = PbFunc.wf_copy_file(_ProgramID, _ProgramID);

                //3.2 open xls
                Workbook workbook = new Workbook();
                workbook.LoadDocument(excelDestinationPath);
                int       sheetNo   = rgpType.SelectedIndex;
                Worksheet worksheet = workbook.Worksheets[sheetNo];

                //3.3寫入檔頭
                worksheet.Cells[3, 0].Value += DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
                worksheet.Cells[3, 3].Value += txtStartMonth.Text.Replace("/", "");
                worksheet.Cells[3, 5].Value += txtEndMonth.Text.Replace("/", "");
                worksheet.Cells[3, 7].Value  = "資料更新時間 : " + dt.Rows[0]["FEETRD_UPD_TIME"].AsDateTime(DateTime.Now).ToString("yyyy/MM/dd HH:mm:ss");

                //3.4寫入明細
                //ken,預先做好一堆空白行數,但是如果筆數超過預設空白行數,會把最後的統計那行覆蓋掉
                int rowIndex      = 7;                                                    //起始row index position
                int pos           = 0;
                int rowTotalCount = rowIndex + (rgpType.SelectedIndex == 0 ? 3000 : 200); //總行數(包含空白)
                foreach (DataRow row in dt.Rows)
                {
                    if (pos % 20 == 0)
                    {
                        labMsg.Text = string.Format("資料轉出中......{0} / {1}", pos, dt.Rows.Count);
                        this.Refresh();
                        //Application.DoEvents();
                    }

                    if (rgpType.SelectedIndex == 0)
                    {
                        //依照期貨商別
                        worksheet.Cells[rowIndex, 0].Value = row["feetrd_fcm_no"].AsString();                                                       //期貨商代號
                        worksheet.Cells[rowIndex, 1].Value = row["brk_abbr_name"].AsString();                                                       //期貨商名稱
                                                                                                                                                    //ken,商品名稱feetrd_kind_id不要用AsString,會把最前面的空白trim掉,excel總計有用到公式比對前面空白
                        worksheet.Cells[rowIndex, 2].Value = (!DBNull.Value.Equals(row["feetrd_kind_id"]) ? row["feetrd_kind_id"].ToString() : ""); //商品名稱

                        worksheet.Cells[rowIndex, 3].Value = row["feetrd_m_qnty"].AsDouble();                                                       //成交口數
                        worksheet.Cells[rowIndex, 4].Value = row["feetrd_ar"].AsDecimal();                                                          //應收交易經手費
                        worksheet.Cells[rowIndex, 5].Value = row["feetrd_mk_disc_amt"].AsDecimal();                                                 //造市折減
                        worksheet.Cells[rowIndex, 6].Value = row["feetrd_oth_disc_amt"].AsDecimal();                                                //其他折減
                        worksheet.Cells[rowIndex, 8].Value = row["feetrd_rec_amt"].AsDecimal();                                                     //金額
                    }
                    else
                    {
                        //依照商品別
                        //ken,商品名稱feetrd_kind_id不要用AsString,會把最前面的空白trim掉,excel總計有用到公式比對前面空白
                        worksheet.Cells[rowIndex, 0].Value = (!DBNull.Value.Equals(row["feetrd_kind_id"]) ? row["feetrd_kind_id"].ToString() : ""); //商品名稱

                        worksheet.Cells[rowIndex, 1].Value = row["feetrd_m_qnty"].AsDouble();                                                       //成交口數
                        worksheet.Cells[rowIndex, 2].Value = row["feetrd_ar"].AsDecimal();                                                          //應收交易經手費
                        worksheet.Cells[rowIndex, 3].Value = row["feetrd_mk_disc_amt"].AsDecimal();                                                 //造市折減
                        worksheet.Cells[rowIndex, 4].Value = row["feetrd_oth_disc_amt"].AsDecimal();                                                //其他折減
                        worksheet.Cells[rowIndex, 6].Value = row["feetrd_rec_amt"].AsDecimal();                                                     //金額
                    }

                    rowIndex++; pos++;
                }//foreach (DataRow row in dt.Rows) {


                //刪除空白列
                if (rowIndex <= rowTotalCount)
                {
                    worksheet.Rows.Remove(rowIndex, rowTotalCount - rowIndex);
                }

                worksheet.Range["A1"].Select();
                worksheet.ScrollToRow(0);

                //存檔
                workbook.SaveDocument(excelDestinationPath);
                if (FlagAdmin)
                {
                    System.Diagnostics.Process.Start(excelDestinationPath);
                }

                return(ResultStatus.Success);
            } catch (Exception ex) {
                WriteLog(ex);
            } finally {
                labMsg.Text       = "";
                labMsg.Visible    = false;
                panFilter.Enabled = true;
            }
            return(ResultStatus.Fail);
        }
Esempio n. 23
0
        protected override ResultStatus Save(PokeBall pokeBall)
        {
            try {
                DataTable dtMainCur = (DataTable)gcMain.DataSource;
                gvMain.CloseEditor();
                gvMain.UpdateCurrentRow();

                DataTable dtMainChange      = dtMainCur.GetChanges();
                DataTable dtMainForAdd      = dtMainCur.GetChanges(DataRowState.Added);
                DataTable dtMainForModified = dtMainCur.GetChanges(DataRowState.Modified);
                DataTable dtMainForDeleted  = dtMainCur.GetChanges(DataRowState.Deleted);

                DataTable dtSubCur = (DataTable)gcSub.DataSource;
                gvSub.CloseEditor();
                gvSub.UpdateCurrentRow();

                DataTable dtSubChange      = dtSubCur.GetChanges();
                DataTable dtSubForAdd      = dtSubCur.GetChanges(DataRowState.Added);
                DataTable dtSubForModified = dtSubCur.GetChanges(DataRowState.Modified);
                DataTable dtSubForDeleted  = dtSubCur.GetChanges(DataRowState.Deleted);

                if (dtMainChange == null && dtSubChange == null)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }

                //若資料為null 用 Rows.Count 會造成exception
                //if (dtMainChange.Rows.Count == 0 && dtSubChange.Rows.Count == 0) {
                //   MessageDisplay.Warning("沒有變更資料,不需要存檔!",GlobalInfo.WarningText);
                //   return ResultStatus.Fail;
                //}

                if (dtMainChange != null)
                {
                    foreach (DataRow drMain in dtMainCur.Rows)
                    {
                        if (drMain.RowState == DataRowState.Added || drMain.RowState == DataRowState.Modified)
                        {
                            drMain["RPTF_TXN_ID"] = _ProgramID;
                            drMain["RPTF_TXD_ID"] = _ProgramID;
                            drMain["RPTF_KEY"]    = mainKey;
                        }
                    }
                    dtMainChange = dtMainCur.GetChanges();
                }

                if (dtSubChange != null)
                {
                    foreach (DataRow drSub in dtSubCur.Rows)
                    {
                        if (drSub.RowState == DataRowState.Added || drSub.RowState == DataRowState.Modified)
                        {
                            drSub["RPTF_TXN_ID"] = _ProgramID;
                            drSub["RPTF_TXD_ID"] = _ProgramID;
                            drSub["RPTF_KEY"]    = subKey;
                        }
                    }
                    dtSubChange = dtSubCur.GetChanges();
                }

                ResultData result = new ResultData();
                if (dtMainChange != null && dtSubChange != null)
                {
                    dtMainChange.Merge(dtSubChange);
                    result = new RPTF().UpdateData(dtMainChange);
                }
                else if (dtMainChange != null && dtSubChange == null)
                {
                    result = new RPTF().UpdateData(dtMainChange);
                }
                else
                {
                    result = new RPTF().UpdateData(dtSubChange);
                }

                if (result.Status == ResultStatus.Fail)
                {
                    return(ResultStatus.Fail);
                }
            } catch (Exception ex) {
                WriteLog(ex);
            }
            _IsPreventFlowPrint = true; //不要自動列印
            return(ResultStatus.Success);
        }
Esempio n. 24
0
        protected override ResultStatus Save(PokeBall pokeBall)
        {
            try {
                #region ue_save_before
                gvMain.CloseEditor();
                gvMain.UpdateCurrentRow();

                string   stockID, ymd, kindID, adjTypeName, opType, dbname, stockIDCk;
                string   issueBeginYmd, tradeYmd, mocfYmd, nextYmd, level, currencyType;
                int      currRow, found, count, row, col, prodSeq;
                decimal  ldblRate;
                DateTime ldtWTIME = DateTime.Now;

                DataTable dtGrid = (DataTable)gcMain.DataSource;
                found = dtGrid.Rows.IndexOf(dtGrid.Select("OP_TYPE <> ' '").FirstOrDefault());
                if (found + dtDel.Rows.Count == -1)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!");
                    return(ResultStatus.FailButNext);
                }
                DataTable dtMGD2;                             //ids_mgd2
                DataTable dtMGD2Log = dao40071.d_40071_log(); //ids_old
                dtMGD2Log.Clear();                            //只取schema

                this.ymd      = txtSDate.DateTimeValue.ToString("yyyyMMdd");
                issueBeginYmd = this.ymd;
                dtMGD2        = dao40071.d_40071(this.ymd, isAdjType);

                foreach (DataRow dr in dtGrid.Rows)
                {
                    if (dr.RowState == DataRowState.Deleted)
                    {
                        continue;
                    }
                    opType  = dr["OP_TYPE"].ToString();
                    stockID = dr["STOCK_ID"].AsString();
                    kindID  = dr["KIND_ID"].AsString();
                    level   = dr["M_LEVEL"].AsString();

                    //檢查調整後級距為從其高且商品類別為選擇權時,是否有輸入保證金B值
                    if (level == "Z" && dr["PROD_TYPE"].AsString() == "O")
                    {
                        if (dr["CM_B"] == DBNull.Value || dr["MM_B"] == DBNull.Value || dr["IM_B"] == DBNull.Value)
                        {
                            MessageDisplay.Error(stockID + "," + kindID + "的保證金B值未輸入完成");
                            return(ResultStatus.FailButNext);
                        }
                    }

                    //檢查有異動的資料
                    if (opType != " ")
                    {
                        //資料修改,將修改前舊資料寫入log
                        if (opType == "U")
                        {
                            dtMGD2.Filter("mgd2_kind_id = '" + kindID + "'");
                            foreach (DataRow drU in dtMGD2.Rows)
                            {
                                currRow = dtMGD2Log.Rows.Count;
                                dtMGD2Log.Rows.Add();
                                for (col = 0; col < dtMGD2.Columns.Count; col++)
                                {
                                    //先取欄位名稱,因為兩張table欄位順序不一致
                                    dbname = dtMGD2.Columns[col].ColumnName;
                                    if (dbname == "CPSORT")
                                    {
                                        continue;            //這個欄位是拿來排序用的,故無需複製
                                    }
                                    dtMGD2Log.Rows[currRow][dbname] = drU[col];
                                }
                                dtMGD2Log.Rows[currRow]["MGD2_L_TYPE"]    = "U";
                                dtMGD2Log.Rows[currRow]["MGD2_L_USER_ID"] = GlobalInfo.USER_ID;
                                dtMGD2Log.Rows[currRow]["MGD2_L_TIME"]    = ldtWTIME;
                            }
                        }

                        /*******************************************
                        *  檢查商品與類別是否符合
                        *******************************************/
                        prodSeq = dao40074.getProd(kindID, dr["PROD_SUBTYPE"].AsString());
                        if (prodSeq != dr["PROD_SEQ_NO"].AsInt())
                        {
                            MessageDisplay.Error(kindID + "與商品類別不符,請確認");
                            return(ResultStatus.FailButNext);
                        }

                        /*****************************************
                         * 檢查商品代號是否存在及相關資料是否正確
                         ******************************************/
                        DataTable dtCheck = dao40074.checkProd(kindID);
                        if (dtCheck.Rows.Count == 0)
                        {
                            MessageDisplay.Error(kindID + "不存在,請重新設定商品代號");
                            return(ResultStatus.FailButNext);
                        }
                        count        = dtCheck.Rows[0]["LI_COUNT"].AsInt();
                        currencyType = dtCheck.Rows[0]["LS_CURRENCY_TYPE"].AsString();
                        stockIDCk    = dtCheck.Rows[0]["LS_STOCK_ID_CK"].AsString();

                        if (count == 0)
                        {
                            MessageDisplay.Error(kindID + "不存在,請重新設定商品代號");
                            return(ResultStatus.FailButNext);
                        }
                        else
                        {
                            if (dr["CURRENCY_TYPE"].AsString() != currencyType)
                            {
                                MessageDisplay.Error(kindID + "的幣別設定錯誤,請重新設定填寫");
                                return(ResultStatus.FailButNext);
                            }
                            if (dr["prod_subtype"].AsString() == "S" && stockID != stockIDCk)
                            {
                                MessageDisplay.Error(kindID + "的股票代號設定錯誤,請重新設定填寫");
                                return(ResultStatus.FailButNext);
                            }
                        }

                        /******************************************
                        *  確認商品是否在同一交易日不同情境下設定過
                        ******************************************/
                        DataTable dtSet = dao40071.IsSetOnSameDay(kindID, this.ymd, isAdjType);
                        if (dtSet.Rows.Count == 0)
                        {
                            MessageDisplay.Info("MGD2 " + kindID + " 無任何資料!");
                            return(ResultStatus.FailButNext);
                        }
                        count       = dtSet.Rows[0]["LI_COUNT"].AsInt();
                        adjTypeName = dtSet.Rows[0]["LS_ADJ_TYPE_NAME"].AsString();
                        if (count > 0)
                        {
                            MessageDisplay.Error(kindID + ",交易日(" + this.ymd + ")在" + adjTypeName + "已有資料");
                            return(ResultStatus.FailButNext);
                        }

                        /*********************************
                         * 確認商品是否在同一生效日區間設定過
                         * 生效起日若與生效迄日相同,不重疊
                         * ex: 10/11的至10/31一般交易時段結束止,10/30的從10/31一般交易時段結束後始>>應不重疊
                         *************************************/
                        dtSet       = dao40071.IsSetInSameSession(kindID, this.ymd, issueBeginYmd);
                        count       = dtSet.Rows[0]["LI_COUNT"].AsInt();
                        adjTypeName = dtSet.Rows[0]["LS_ADJ_TYPE_NAME"].AsString();
                        tradeYmd    = dtSet.Rows[0]["LS_TRADE_YMD"].AsString();
                        if (count > 0)
                        {
                            MessageDisplay.Error(kindID + "," + adjTypeName + ",交易日(" + tradeYmd + ")在同一生效日區間內已有資料");
                            return(ResultStatus.FailButNext);
                        }
                    } //if (ls_op_type != " ")
                }     //foreach (DataRow dr in dtGrid.Rows)

                //把刪除的資料寫進log
                foreach (DataRow drDel in dtDel.Rows)
                {
                    kindID = drDel["KIND_ID"].AsString();
                    dtMGD2.Filter("mgd2_kind_id = '" + kindID + "'");
                    foreach (DataRow drD in dtMGD2.Rows)
                    {
                        currRow = dtMGD2Log.Rows.Count;
                        dtMGD2Log.Rows.Add();
                        for (col = 0; col < dtMGD2.Columns.Count; col++)
                        {
                            //先取欄位名稱,因為兩張table欄位順序不一致
                            dbname = dtMGD2.Columns[col].ColumnName;
                            if (dbname == "CPSORT")
                            {
                                continue;              //這個欄位是拿來排序用的,故無需複製
                            }
                            dtMGD2Log.Rows[currRow][dbname] = drD[col];
                        }
                        dtMGD2Log.Rows[currRow]["MGD2_L_TYPE"]    = "D";
                        dtMGD2Log.Rows[currRow]["MGD2_L_USER_ID"] = GlobalInfo.USER_ID;
                        dtMGD2Log.Rows[currRow]["MGD2_L_TIME"]    = ldtWTIME;
                    }
                }
                #endregion

                string    prodType;
                DataTable dtTemp = dao40072.d_40072(); //ids_tmp

                foreach (DataRow dr in dtGrid.Rows)
                {
                    if (dr.RowState == DataRowState.Deleted)
                    {
                        continue;
                    }
                    opType = dr["OP_TYPE"].ToString();
                    //只更新有異動的資料
                    if (opType != " ")
                    {
                        kindID = dr["KIND_ID"].AsString();
                        //stockID = dr["KIND_ID"].AsString();
                        stockID = dr["STOCK_ID"].ToString();

                        //刪除已存在資料
                        if (daoMGD2.DeleteMGD2(this.ymd, isAdjType, stockID, kindID) < 0)
                        {
                            MessageDisplay.Error("MGD2資料刪除失敗");
                            return(ResultStatus.FailButNext);
                        }

                        currRow  = dtTemp.Rows.Count;
                        prodType = dr["PROD_TYPE"].AsString();
                        dtTemp.Rows.Add();
                        dtTemp.Rows[currRow]["MGD2_YMD"]       = this.ymd;
                        dtTemp.Rows[currRow]["MGD2_PROD_TYPE"] = prodType;
                        dtTemp.Rows[currRow]["MGD2_KIND_ID"]   = kindID;
                        dtTemp.Rows[currRow]["MGD2_STOCK_ID"]  = stockID;
                        dtTemp.Rows[currRow]["MGD2_ADJ_TYPE"]  = isAdjType;

                        dtTemp.Rows[currRow]["MGD2_ADJ_CODE"]        = dr["ADJ_CODE"];
                        dtTemp.Rows[currRow]["MGD2_PUB_YMD"]         = dr["PUB_YMD"];
                        dtTemp.Rows[currRow]["MGD2_ISSUE_BEGIN_YMD"] = issueBeginYmd;
                        dtTemp.Rows[currRow]["MGD2_PROD_SUBTYPE"]    = dr["PROD_SUBTYPE"].AsString();
                        dtTemp.Rows[currRow]["MGD2_PARAM_KEY"]       = dr["PARAM_KEY"];

                        dtTemp.Rows[currRow]["MGD2_CUR_CM"]    = 0;
                        dtTemp.Rows[currRow]["MGD2_CUR_MM"]    = 0;
                        dtTemp.Rows[currRow]["MGD2_CUR_IM"]    = 0;
                        dtTemp.Rows[currRow]["MGD2_CUR_LEVEL"] = 0;
                        dtTemp.Rows[currRow]["MGD2_CM"]        = dr["CM_A"];

                        dtTemp.Rows[currRow]["MGD2_MM"]            = dr["MM_A"];
                        dtTemp.Rows[currRow]["MGD2_IM"]            = dr["IM_A"];
                        dtTemp.Rows[currRow]["MGD2_LEVEL"]         = dr["M_LEVEL"];
                        dtTemp.Rows[currRow]["MGD2_CURRENCY_TYPE"] = dr["CURRENCY_TYPE"];
                        dtTemp.Rows[currRow]["MGD2_SEQ_NO"]        = dr["SEQ_NO"];

                        dtTemp.Rows[currRow]["MGD2_OSW_GRP"]   = dr["OSW_GRP"];
                        dtTemp.Rows[currRow]["MGD2_AMT_TYPE"]  = dr["AMT_TYPE"];
                        dtTemp.Rows[currRow]["MGD2_W_TIME"]    = ldtWTIME;
                        dtTemp.Rows[currRow]["MGD2_W_USER_ID"] = GlobalInfo.USER_ID;

                        /******************************
                         *    AB TYTPE:	-期貨
                         *                A選擇權A值
                         *                B選擇權B值
                         *******************************/
                        if (prodType == "F")
                        {
                            dtTemp.Rows[currRow]["MGD2_AB_TYPE"] = "-";
                        }
                        else
                        {
                            dtTemp.Rows[currRow]["MGD2_AB_TYPE"] = "A";
                            //複製一筆一樣的,AB Type分開存
                            dtTemp.ImportRow(dtTemp.Rows[currRow]);
                            //dtTemp.Rows.Add(dtTemp.Rows[ii_curr_row]);//會跳錯
                            currRow = dtTemp.Rows.Count - 1;
                            dtTemp.Rows[currRow]["MGD2_AB_TYPE"] = "B";
                            dtTemp.Rows[currRow]["MGD2_CM"]      = dr["CM_B"];
                            dtTemp.Rows[currRow]["MGD2_MM"]      = dr["MM_B"];
                            dtTemp.Rows[currRow]["MGD2_IM"]      = dr["IM_B"];
                        }
                    } //if (ls_op_type != " ")
                }     //foreach (DataRow dr in dtGrid.Rows)

                //刪除資料
                foreach (DataRow drDel in dtDel.Rows)
                {
                    kindID  = drDel["KIND_ID"].AsString();
                    stockID = drDel["STOCK_ID"].ToString();
                    if (daoMGD2.DeleteMGD2(this.ymd, isAdjType, stockID, kindID) < 0)
                    {
                        MessageDisplay.Error("MGD2資料刪除失敗");
                        return(ResultStatus.FailButNext);
                    }
                }

                //Update DB
                //ids_tmp.update()
                if (dtTemp.Rows.Count > 0)
                {
                    ResultData myResultData = daoMGD2.UpdateMGD2(dtTemp);
                    if (myResultData.Status == ResultStatus.Fail)
                    {
                        MessageDisplay.Error("更新資料庫MGD2錯誤! ");
                        return(ResultStatus.FailButNext);
                    }
                }
                //ids_old.update()
                if (dtMGD2Log.Rows.Count > 0)
                {
                    ResultData myResultData = daoMGD2L.UpdateMGD2L(dtMGD2Log);
                    if (myResultData.Status == ResultStatus.Fail)
                    {
                        MessageDisplay.Error("更新資料庫MGD2L錯誤! ");
                        return(ResultStatus.FailButNext);
                    }
                }
                //Write LOGF
                WriteLog("變更資料 ", "Info", "I");
                //報表儲存pdf
                ReportHelper            _ReportHelper   = new ReportHelper(gcMain, _ProgramID, this.Text);
                CommonReportLandscapeA3 reportLandscape = new CommonReportLandscapeA3();//設定為橫向列印
                reportLandscape.printableComponentContainerMain.PrintableComponent = gcMain;
                reportLandscape.IsHandlePersonVisible = false;
                reportLandscape.IsManagerVisible      = false;
                _ReportHelper.Create(reportLandscape);
                _ReportHelper.Export(FileType.PDF, _ReportHelper.FilePath);
                MessageDisplay.Info("報表儲存完成!");
            } catch (Exception ex) {
                SetSaveFlagValue();
                MessageDisplay.Error("儲存錯誤");
                throw ex;
            }
            SetSaveFlagValue();
            return(ResultStatus.Success);
        }
Esempio n. 25
0
        protected override ResultStatus Save(PokeBall pokeBall)
        {
            try {
                DataTable dtCurrent = (DataTable)gcMain.DataSource;
                gvMain.CloseEditor();
                gvMain.UpdateCurrentRow();

                DataTable dtChange      = dtCurrent.GetChanges();
                DataTable dtForAdd      = dtCurrent.GetChanges(DataRowState.Added);
                DataTable dtForModified = dtCurrent.GetChanges(DataRowState.Modified);
                DataTable dtForDeleted  = dtCurrent.GetChanges(DataRowState.Deleted);

                if (dtChange != null)
                {
                    foreach (DataRow drCnange in dtChange.Rows)
                    {
                        if (drCnange.RowState == DataRowState.Deleted)
                        {
                            continue;
                        }

                        if (drCnange.RowState == DataRowState.Added || drCnange.RowState == DataRowState.Modified)
                        {
                            if (dtForAdd != null)
                            {
                                foreach (DataRow drAdd in dtForAdd.Rows)
                                {
                                    for (int w = 0; w < dtForAdd.Rows.Count; w++)
                                    {
                                        for (int y = 0; y < 3; y++)
                                        {
                                            if (string.IsNullOrEmpty(drAdd[y].AsString()))
                                            {
                                                MessageDisplay.Error("資料尚未填寫完成", GlobalInfo.ErrorText);
                                                return(ResultStatus.FailButNext);
                                            }
                                        }
                                    }
                                }
                            }

                            if (dtForModified != null)
                            {
                                foreach (DataRow drMod in dtForModified.Rows)
                                {
                                    for (int w = 0; w < dtForModified.Rows.Count; w++)
                                    {
                                        for (int y = 0; y < 3; y++)
                                        {
                                            if (string.IsNullOrEmpty(drMod[y].AsString()))
                                            {
                                                MessageDisplay.Error("資料尚未填寫完成", GlobalInfo.ErrorText);
                                                return(ResultStatus.FailButNext);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                if (dtChange == null)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }
                if (dtChange.Rows.Count == 0)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }

                foreach (DataRow dr in dtCurrent.Rows)
                {
                    if (dr.RowState == DataRowState.Added || dr.RowState == DataRowState.Modified)
                    {
                        dr["MGT3_W_TIME"]    = DateTime.Now;
                        dr["MGT3_W_USER_ID"] = GlobalInfo.USER_ID;
                    }
                }

                dtChange = dtCurrent.GetChanges();
                ResultData result = new MGT3().UpdateData(dtChange);
                if (result.Status == ResultStatus.Fail)
                {
                    MessageDisplay.Error("儲存失敗", GlobalInfo.ErrorText);
                    return(ResultStatus.FailButNext);
                }
            } catch (Exception ex) {
                WriteLog(ex);
            }
            _IsPreventFlowPrint = true; //不要自動列印
            return(ResultStatus.Success);
        }
Esempio n. 26
0
        protected override ResultStatus Save(PokeBall poke)
        {
            gvMain.CloseEditor();
            gvMain.UpdateCurrentRow();

            try {
                DataTable dtCurrent = (DataTable)gcMain.DataSource;

                DataTable dtChange      = dtCurrent.GetChanges();
                DataTable dtForAdd      = dtCurrent.GetChanges(DataRowState.Added);
                DataTable dtForModified = dtCurrent.GetChanges(DataRowState.Modified);
                DataTable dtForDeleted  = dtCurrent.GetChanges(DataRowState.Deleted);

                if (dtChange == null)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }
                if (dtChange.Rows.Count == 0)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }

                //判斷商品組合有無填入跨商品MAX折抵比率
                foreach (DataRow dr in dtChange.Rows)
                {
                    if (dr.RowState != DataRowState.Deleted)
                    {
                        string kind1       = dr["SPT1_KIND_ID1"].AsString();
                        string kind2       = dr["SPT1_KIND_ID2"].AsString();
                        string maxSpnsRate = dr["SPT1_MAX_SPNS_RATE"].AsString();
                        if (string.IsNullOrEmpty(kind1) || string.IsNullOrEmpty(kind2))
                        {
                            MessageDisplay.Error("請輸入商品名稱", GlobalInfo.ErrorText);
                            return(ResultStatus.FailButNext);
                        }

                        if (kind2 != "-" && string.IsNullOrEmpty(maxSpnsRate))
                        {
                            MessageDisplay.Warning("請輸入跨商品MAX折抵比率", GlobalInfo.WarningText);
                            return(ResultStatus.FailButNext);
                        }
                    }
                }

                //隱藏欄位賦值
                foreach (DataRow dr in dtCurrent.Rows)
                {
                    if (dr.RowState == DataRowState.Added || dr.RowState == DataRowState.Modified)
                    {
                        dr["SPT1_W_TIME"]    = DateTime.Now;
                        dr["SPT1_W_USER_ID"] = GlobalInfo.USER_ID;
                    }

                    if (dr.RowState == DataRowState.Deleted)
                    {
                        dr.Delete();
                    }
                }
                //dtCurrent.AcceptChanges();
                dtChange = dtCurrent.GetChanges();
                ResultData result = daoSPT1.UpdateSPT1(dtChange); //使用處理並行違規的function
                if (result.Status == ResultStatus.Fail)
                {
                    MessageDisplay.Error("儲存失敗", GlobalInfo.ErrorText);
                    return(ResultStatus.FailButNext);
                }
                AfterSaveForPrint(gcMain, dtForAdd, dtForDeleted, dtForModified);
            } catch (Exception ex) {
                MessageDisplay.Error("儲存錯誤", GlobalInfo.ErrorText);
                WriteLog(ex, "", false);
                return(ResultStatus.FailButNext);
            }
            return(ResultStatus.Success);
        }
Esempio n. 27
0
        protected override ResultStatus Save(PokeBall poke)
        {
            gvMain.UpdateCurrentRow();
            gvMain.CloseEditor();
            try {
                DataTable dtCurrent = dao40080.GetData(txtTradeDate.DateTimeValue); //原始資料
                DataTable dt        = (DataTable)gcMain.DataSource;                 //現在更改後的
                DataTable dtChange  = dt.Clone();

                int w = -1;
                foreach (DataRow row1 in dtCurrent.Rows)
                {
                    w++;
                    var array1 = row1.ItemArray;
                    var array2 = dt.Rows[w].ItemArray;

                    if (!array1.SequenceEqual(array2))
                    {
                        dtChange.ImportRow(dt.Rows[w]);
                    }
                    continue;
                }

                if (dtChange == null)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.FailButNext);
                }

                DateTime  ldt_w_time = DateTime.Now;
                DataTable dtSp2      = dao40080.GetSP2Data(txtTradeDate.DateTimeValue);

                foreach (DataRow dr in dt.Rows)
                {
                    string cpType = dr["op_type"].AsString();
                    if (cpType == "I")
                    {
                        dr["op_type"] = "I";
                    }
                    else
                    {
                        if (dr["sp2_adj_code"].AsString() == dr["sp2_adj_code_org"].AsString() && dr["sp2_span_code"].AsString() == dr["sp2_span_code_org"].AsString() &&
                            dr["sp2_value_date"].AsString() == dr["sp2_value_date_org"].AsString())
                        {
                            dr["op_type"] = " ";
                        }
                        else
                        {
                            dr["op_type"] = "U";
                        }
                    }

                    if (string.IsNullOrEmpty(dr["op_type"].AsString()))
                    {
                        continue;
                    }

                    string ls_type     = dr["sp1_type"].AsString();
                    string ls_kind_id1 = dr["sp1_kind_id1"].AsString();
                    string ls_kind_id2 = dr["sp1_kind_id2"].AsString();

                    int ll_found = 0;
                    if (dtSp2.Select("sp2_type ='" + ls_type + "' and sp2_kind_id1='" + ls_kind_id1 + "' and sp2_kind_id2='" + ls_kind_id2 + "'").Length <= 0)
                    {
                        //新增
                        DataRow insertRow = dtSp2.NewRow();
                        insertRow["sp2_date"]       = txtTradeDate.DateTimeValue;
                        insertRow["sp2_type"]       = ls_type;
                        insertRow["sp2_kind_id1"]   = ls_kind_id1;
                        insertRow["sp2_kind_id2"]   = ls_kind_id2;
                        insertRow["sp2_value_date"] = dr["sp2_value_date"];
                        insertRow["sp2_adj_code"]   = dr["sp2_adj_code"];
                        insertRow["sp2_span_code"]  = dr["sp2_span_code"];
                        insertRow["sp2_osw_grp"]    = dr["sp1_osw_grp"];
                        insertRow["sp2_w_time"]     = ldt_w_time;
                        insertRow["sp2_w_user_id"]  = GlobalInfo.USER_ID;
                        dtSp2.Rows.Add(insertRow);
                    }
                    else
                    {
                        ll_found = dtSp2.Rows.IndexOf(dtSp2.Select("sp2_type ='" + ls_type + "' and sp2_kind_id1='" + ls_kind_id1 + "' and sp2_kind_id2='" + ls_kind_id2 + "'")[0]);
                        dtSp2.Rows[ll_found]["sp2_value_date"] = dr["sp2_value_date"];
                        dtSp2.Rows[ll_found]["sp2_adj_code"]   = dr["sp2_adj_code"];
                        dtSp2.Rows[ll_found]["sp2_span_code"]  = dr["sp2_span_code"];
                        dtSp2.Rows[ll_found]["sp2_osw_grp"]    = dr["sp1_osw_grp"];
                        dtSp2.Rows[ll_found]["sp2_w_time"]     = ldt_w_time;
                        dtSp2.Rows[ll_found]["sp2_w_user_id"]  = GlobalInfo.USER_ID;
                    }
                    dr["sp2_adj_code_org"] = dr["sp2_adj_code"];
                }//foreach (DataRow dr in dt.Rows)

                //dw_2.update()
                ResultData myResultData = daoSP2.UpdateData(dtSp2);
                if (myResultData.Status == ResultStatus.Fail)
                {
                    MessageDisplay.Error("更新資料庫錯誤! ", GlobalInfo.ErrorText);
                    return(ResultStatus.Fail);
                }

                //dw_1.update(將dw_1的op_type全改為" ")
                foreach (DataRow dr in dt.Rows)
                {
                    dr["op_type"] = " ";
                }

                AfterSaveForPrint(gcMain, null, null, dtChange);
                MessageDisplay.Info("報表儲存完成!", GlobalInfo.ResultText);
            } catch (Exception ex) {
                WriteLog(ex);
                MessageDisplay.Error("儲存錯誤", GlobalInfo.ErrorText);
            }
            return(ResultStatus.Success);
        }
Esempio n. 28
0
        /// <summary>
        /// 存檔前檢查
        /// </summary>
        /// <param name="dt">要檢查的資料</param>
        /// <returns></returns>
        private bool SaveBefore(DataTable dt)
        {
            string lsType, lsVal1, lsVal2, lsVal3, lsVal4, lsVal5;

            try {
                //只檢查變動的部分
                foreach (DataRow dr in dt.GetChanges().Rows)
                {
                    if (dr.RowState == DataRowState.Deleted)
                    {
                        continue;
                    }
                    if (dr["OP_TYPE"].AsString() == " ")
                    {
                        continue;
                    }

                    //key值不能為null
                    string marketCode = dr[MARKET_CODE].AsString();
                    if (string.IsNullOrEmpty(marketCode))
                    {
                        MessageDisplay.Error("「交易時段」必須要選取值!");
                        //set Focused
                        SetFocused(dt, dr, MARKET_CODE);
                        return(false);
                    }
                    string paramKey = dr[PARAM_KEY].AsString();
                    if (string.IsNullOrEmpty(paramKey))
                    {
                        MessageDisplay.Error("「商品類別」必須要選取值!");
                        //set Focused
                        SetFocused(dt, dr, PARAM_KEY);
                        return(false);
                    }

                    //key值不能重複
                    int valueCount = dt.AsEnumerable().Where(r => r.RowState != DataRowState.Deleted &&
                                                             r.Field <string>(MARKET_CODE).AsString() == marketCode &&
                                                             r.Field <string>(PARAM_KEY).AsString() == paramKey).Count();
                    if (valueCount >= 2)
                    {
                        MessageDisplay.Error($"交易時段:{(marketCode == "0" ? "[一般]" : "[夜盤]")}與商品類別:[{paramKey}] 不得重複新增!");
                        SetFocused(dt, dr, PARAM_KEY);
                        return(false);
                    }

                    //必須回應詢價比
                    if (string.IsNullOrEmpty(dr["MMF_RESP_RATIO"].AsString()))
                    {
                        MessageDisplay.Warning("「必須回應詢價比(%)」必須要輸入值!");
                        //set Focused
                        SetFocused(dt, dr, "MMF_RESP_RATIO");
                        return(false);
                    }
                    //最低造市量
                    if (string.IsNullOrEmpty(dr["MMF_QNTY_LOW"].AsString()))
                    {
                        MessageDisplay.Warning("「最低造市量」必須要輸入值!");
                        //set Focused
                        SetFocused(dt, dr, "MMF_QNTY_LOW");
                        return(false);
                    }
                    //報價有效量比率
                    if (string.IsNullOrEmpty(dr["MMF_QUOTE_VALID_RATE"].AsString()))
                    {
                        MessageDisplay.Warning("「報價有效量比率」必須要輸入值!");
                        //set Focused
                        SetFocused(dt, dr, "MMF_QUOTE_VALID_RATE");
                        return(false);
                    }
                    //報價每日平均維持分鐘
                    if (string.IsNullOrEmpty(dr["MMF_AVG_TIME"].AsString()))
                    {
                        MessageDisplay.Warning("「報價每日平均維持分鐘」必須要輸入值!");
                        //set Focused
                        SetFocused(dt, dr, "MMF_AVG_TIME");
                        return(false);
                    }
                    //寫LOGV
                    lsType = "I";
                    lsVal1 = dr["MMF_PARAM_KEY"].AsString();
                    lsVal2 = dr["MMF_RESP_RATIO"].AsString();
                    lsVal3 = dr["MMF_QNTY_LOW"].AsString();
                    lsVal4 = dr["MMF_QUOTE_VALID_RATE"].AsString();
                    lsVal5 = dr["MMF_AVG_TIME"].AsString();
                    new LOGV().Insert(_ProgramID, GlobalInfo.USER_ID, lsType, lsVal1, lsVal2, lsVal3, lsVal4, lsVal5);
                }
            }
            catch (Exception ex) {
                WriteLog(ex);
                return(false);
            }
            return(true);
        }
Esempio n. 29
0
        protected override ResultStatus Save(PokeBall poke)
        {
            try {
                DataTable dtCurrent = (DataTable)gcMain.DataSource;
                gvMain.CloseEditor();
                gvMain.UpdateCurrentRow();

                DataTable dtChange      = dtCurrent.GetChanges();
                DataTable dtForAdd      = dtCurrent.GetChanges(DataRowState.Added);
                DataTable dtForModified = dtCurrent.GetChanges(DataRowState.Modified);
                DataTable dtForDeleted  = dtCurrent.GetChanges(DataRowState.Deleted);

                if (dtChange == null)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }
                if (dtChange.Rows.Count == 0)
                {
                    MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }

                foreach (DataRow dr in dtCurrent.Rows)
                {
                    if (dr.RowState == DataRowState.Added || dr.RowState == DataRowState.Modified)
                    {
                        dr["mgt2_w_time"]    = DateTime.Now;
                        dr["mgt2_w_user_id"] = GlobalInfo.USER_ID;

                        //有設下市日
                        if (!Convert.IsDBNull(dr["mgt2_end_ymd"]))
                        {
                            string mgt2EndDate = dr["mgt2_end_ymd"].AsString();
                            if (mgt2EndDate != "")
                            {
                                //要輸入8位數值
                                int dateNumber;
                                if (int.TryParse(mgt2EndDate, out dateNumber) == true)
                                {
                                    //檢核有效日
                                    string   strDate = DateTime.ParseExact(mgt2EndDate, "yyyyMMdd", null).ToString("yyyy/MM/dd");
                                    DateTime isEndDate;
                                    if (DateTime.TryParse(strDate, out isEndDate) == false)
                                    {
                                        MessageDisplay.Error(string.Format("下市日期格式不符yyyymmdd,({0})非有效日期", mgt2EndDate), GlobalInfo.ErrorText);
                                        return(ResultStatus.FailButNext);
                                    }
                                }
                                else
                                {
                                    MessageDisplay.Error(string.Format("下市日期格式不符yyyymmdd,({0})非有效日期", mgt2EndDate), GlobalInfo.ErrorText);
                                    return(ResultStatus.FailButNext);
                                } //if (int.TryParse(mgt2EndDate , out int tmp) == true)
                            }
                        }         //if (!Convert.IsDBNull(dr["mgt2_end_ymd"]))
                    }
                }                 // foreach (DataRow dr in dtCurrent.Rows)

                ResultData result = new MGT2().UpdateData(dtCurrent);
                if (result.Status == ResultStatus.Fail)
                {
                    return(ResultStatus.Fail);
                }
                //PrintOrExportChangedByKen(gcMain , dtForAdd , dtForDeleted , dtForModified);
            } catch (Exception ex) {
                MessageDisplay.Error("儲存錯誤", GlobalInfo.ErrorText);
                WriteLog(ex, "", false);
                return(ResultStatus.FailButNext);
            }
            return(ResultStatus.Success);
        }
Esempio n. 30
0
        protected override ResultStatus Export()
        {
            try {
                #region 輸入&日期檢核
                if (string.Compare(txtStartYMD.Text, txtEndYMD.Text) > 0)
                {
                    MessageDisplay.Error(CheckDate.Datedif, GlobalInfo.ErrorText);
                    return(ResultStatus.Fail);
                }
                #endregion

                //0. ready
                panFilter.Enabled = false;
                labMsg.Visible    = true;
                labMsg.Text       = "開始轉檔...";
                this.Cursor       = Cursors.WaitCursor;
                this.Refresh();
                Thread.Sleep(5);

                ///*************************************
                //   chkGroup.Items[0] = MonQnty
                //   chkGroup.Items[1] = OI
                //   chkGroup.Items[2] = MonCnt
                //   chkGroup.Items[3] = Amt
                //   chkGroup.Items[4] = Acc
                //   chkGroup.Items[5] = Id
                //   chkGroup.Items[6] = Rmb
                //*************************************/

                //1. 判斷是否至少勾選一個選項
                if (chkGroup.CheckedItemsCount < 1)
                {
                    MessageDisplay.Warning("請勾選至少一個選項!", GlobalInfo.WarningText);
                    return(ResultStatus.Fail);
                }
                else
                {
                    string tempMarketCode = "";
                    //RadioButton (rbMarket0 = 一般 / rbMarket1 = 盤後 / rbMarketAll = 全部)
                    if (gbMarket.EditValue.AsString() == "rbMarket0")
                    {
                        tempMarketCode = "一般";
                    }
                    else if (gbMarket.EditValue.AsString() == "rbMarket1")
                    {
                        tempMarketCode = "盤後";
                    }
                    else
                    {
                        tempMarketCode = "全部";
                    }

                    flag = 0;
                    //2. 複製檔案 & 開啟檔案 (因檔案需因MarketCode更動,所以另外寫)
                    string originalFilePath = Path.Combine(GlobalInfo.DEFAULT_EXCEL_TEMPLATE_DIRECTORY_PATH, _ProgramID + "." + FileType.XLSX.ToString().ToLower());

                    string destinationFilePath = Path.Combine(GlobalInfo.DEFAULT_REPORT_DIRECTORY_PATH,
                                                              _ProgramID + "_" + tempMarketCode + "_" + DateTime.Now.ToString("yyyy.MM.dd") + "-" + DateTime.Now.ToString("HH.mm.ss") + "." + FileType.XLSX.ToString().ToLower());

                    File.Copy(originalFilePath, destinationFilePath, true);

                    Workbook workbook = new Workbook();
                    workbook.LoadDocument(destinationFilePath);

                    if (chkGroup.CheckedItemsCount == 1)
                    {
                        foreach (CheckedListBoxItem item in chkGroup.Items)
                        {
                            if (item.Value.AsString() == "chkRmb")
                            {
                                File.Delete(destinationFilePath);
                            }
                        }
                    }

                    foreach (CheckedListBoxItem item in chkGroup.Items)
                    {
                        if (item.CheckState == CheckState.Unchecked)
                        {
                            continue;
                        }
                        switch (item.Value)
                        {
                        case "chkRmb":
                            wf_30592_RMB();
                            break;

                        default:
                            //3. 填資料
                            bool result = false;
                            result = wf_30592(workbook, destinationFilePath); //function 30592

                            if (!result)
                            {
                                try {
                                    workbook = null;
                                    File.Delete(destinationFilePath);
                                } catch (Exception ex) {
                                    WriteLog(ex);
                                }
                                return(ResultStatus.Fail);
                            }
                            else
                            {
                                flag++;
                            }
                            break;
                        }
                    }//foreach (CheckedListBoxItem item in chkGroup.Items)

                    if (flag <= 0)
                    {
                        MessageDisplay.Info(MessageDisplay.MSG_NO_DATA, GlobalInfo.ResultText);
                    }

                    //3.存檔改寫在Function內
                    labMsg.Visible = false;
                }
                return(ResultStatus.Success);
            } catch (Exception ex) {
                WriteLog(ex);
            } finally {
                panFilter.Enabled = true;
                labMsg.Text       = "";
                labMsg.Visible    = false;
                this.Cursor       = Cursors.Arrow;
            }

            return(ResultStatus.Fail);
        }