示例#1
0
        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            try
            {
                GF.closeLoading();
                Exception ex = (Exception)e.Exception;
                GF.doDebug("********** THREAD FATAL ERROR : " + Environment.MachineName + " **********");
                GF.doDebug(" [" + ex.TargetSite.ToString() + "]");
                GF.doDebug(ex.Message);
                GF.doDebug("\r\n\r\n" + ex.StackTrace);

                GF.doDebug("\r\n\r\nFile : " + new StackTrace(ex, true).GetFrame(0).GetFileName());
                GF.doDebug("\r\n\r\nLine : " + new StackTrace(ex, true).GetFrame(0).GetFileLineNumber());

                GF.submitErrorLog();
                waitHandle.WaitOne();
            }
            finally
            {
                if (currentProcess != null)
                {
                    currentProcess.Kill();
                }
                System.Environment.Exit(0);
            }
        }
示例#2
0
        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            try
            {
                GF.closeLoading();
                Exception ex = (Exception)e.ExceptionObject;
                GF.doDebug("********** FATAL UNHANDLED EXCEPTION ERROR : " + Environment.MachineName + " **********");
                GF.doDebug(" [" + ex.TargetSite.ToString() + "]");
                GF.doDebug(ex.Message);
                GF.doDebug("\r\n\r\n" + ex.StackTrace);

                GF.doDebug("\r\n\r\nFile : " + new StackTrace(ex, true).GetFrame(0).GetFileName());
                GF.doDebug("\r\n\r\nLine : " + new StackTrace(ex, true).GetFrame(0).GetFileLineNumber());

                GF.submitErrorLog();
                waitHandle.WaitOne();

                /*MessageBox.Show("Whoops! Please contact the developers with the following"
                 + " information:\n\n" + ex.Message + ex.StackTrace,
                 +    "Fatal Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);*/
            }
            finally
            {
                if (currentProcess != null)
                {
                    currentProcess.Kill();
                }
                System.Environment.Exit(0);
            }
        }
示例#3
0
        private void loadAttachment()
        {
            if (Owner.Name == "shop_selling")
            {
                owner_name = Owner.Name;
            }
            else
            {
                owner_name = Owner.Owner.Name;
            }

            //GF.showLoading(this);
            this.DGV.Rows.Clear();

            if (DGV.Columns.Count == 0)
            {
                this.DGV.Columns.Add("attachment_name", "ATTACHMENT NAME");
                this.DGV.Columns.Add("file_name", "FILE NAME");
                this.DGV.Columns.Add("attachment_id", "ATTACHMENT ID");
            }

            String queryString = "SELECT ROW_NUMBER() OVER (ORDER BY attachment_name) as RowNum, attachment_id, attachment_name, file_name FROM ATTACHMENT WHERE owner_id = " + this.id.ToString() + " AND owner_form = '" + owner_name + "'";

            Dictionary <string, string> Params = new Dictionary <string, string>();

            /*Params.Add("@id", this.id.ToString());
            *  Params.Add("@owner_form", owner_name);*/

            using (DataTable myDT = DB.getS(queryString, Params, "GET ATTACHMENT"))
            {
                int rowNum = 0;
                foreach (DataRow myRow in myDT.Rows)
                {
                    this.DGV.Rows.Add(
                        myRow["attachment_name"],
                        myRow["file_name"],
                        myRow["attachment_id"]
                        );

                    this.DGV[0, rowNum].Style.Alignment = DataGridViewContentAlignment.MiddleLeft;
                    this.DGV[1, rowNum].Style.Alignment = DataGridViewContentAlignment.MiddleLeft;
                    rowNum++;
                }
            }
            this.DGV.Columns["attachment_id"].Visible = false;
            GF.updateRowNum(DGV);
            this.DGV.ClearSelection();

            if (viewOnly)
            {
                file_path.Enabled       = false;
                attachment_name.Enabled = false;
                GF.disableButton(add_btn);
                GF.disableButton(delete_btn);
            }
            GF.closeLoading();
        }
示例#4
0
 private void main_page_FormClosing(object sender, FormClosingEventArgs e)
 {
     GF.doDebug(" ========== MAIN FORM IS NOW CLOSED !! ===========");
     //clock.Dispose();
     GF.closeChildren(this);
     GF.showLoading(this);
     //DB.logout();
     GF.closeLoading();
 }
示例#5
0
 private void my_date_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
 {
     if (!GF.emptyDate(Text.Trim()))
     {
         if (!e.IsValidInput || Text.Trim().Length != 10 || !GF.isValidDate(Text.Trim()))
         {
             MessageBox.Show("INVALID DATE !! PLEASE CHECK THE DATE AGAIN !!\r\n\r\n HINT : DATE MUST BE ONLY IN FORMAT DD/MM/YYYY !!", "ERROR");
             my_date.Select();
             GF.closeLoading();
             return;
         }
     }
 }
示例#6
0
        public static void initPage(Form childPage, main_page mainPage)
        {
            GF.closeChildren(mainPage);
            GF.showLoading(mainPage);

            GF.doDebug("========== MAIN FORM :: " + childPage.Name + " ==========");
            GF.selected_id = 0;

            childPage.MdiParent = mainPage;
            if (childPage.Name.IndexOf("report_") != -1)
            {
                childPage.Dock = DockStyle.Fill;
            }
            else
            {
                childPage.Size          = childPage.MdiParent.ClientSize;
                childPage.StartPosition = FormStartPosition.Manual;
            }
            childPage.WindowState = FormWindowState.Maximized;

            GF.addKeyUp(childPage);

            childPage.Load += (s, e) =>
            {
                //((Form)s).Visible = true;
            };
            childPage.LocationChanged += (s, e) =>
            {
                if (childPage.Left != 0)
                {
                    childPage.Left = -5;
                }
                if (childPage.Top != 0)
                {
                    childPage.Top = 0;
                }
            };
            if (!childPage.IsDisposed)
            {
                childPage.Show();
            }

            GF.closeLoading();
        }
示例#7
0
        private void DGV_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                e.Handled = true;
                GF.showLoading(this);

                string filename = DGV.SelectedRows[0].Cells["file_name"].Value.ToString();

                using (viewer viewerPage = new viewer())
                {
                    viewerPage.Owner    = this;
                    viewerPage.filename = filename;

                    GF.closeLoading();
                    viewerPage.Show();
                }
            }
        }
示例#8
0
        public static void deleteTempAttachment(int owner_id, string owner_form)
        {
            GF.showLoading();
            DataTable DT;
            String    queryString = "SELECT FILE_NAME FROM ATTACHMENT WHERE OWNER_ID = " + owner_id.ToString() + " AND OWNER_FORM = " + owner_form;

            Dictionary <string, string> Params = new Dictionary <string, string>();

            /*Params.Add("@owner_id", owner_id.ToString());
             * Params.Add("@owner_form", owner_form);*/

            using (DT = DB.getS(queryString, Params, "GET TEMP ATTACHMENT[OWNER_ID=" + owner_id.ToString() + " : OWNER_FORM=" + owner_form + "]", false))
            {
                foreach (DataRow row in DT.Rows)
                {
                    string fileName = row["file_name"].ToString();
                    //MessageBox.Show(fileName);
                    if (FTP.delete(fileName, "ATTACHMENT"))
                    {
                        queryString = "DELETE FROM ATTACHMENT WHERE FILE_NAME LIKE '" + fileName + "'";
                        DB.beginTrans();
                        if (DB.set(queryString, "DELETE ATTACHMENT[" + fileName + "]"))
                        {
                            DB.close();
                        }
                        else
                        {
                            MessageBox.Show("ERROR DELETE ATTACHMENT FROM DATABASE !!", "ERROR");
                            GF.closeLoading();
                            return;
                        }
                    }
                    else
                    {
                        MessageBox.Show("CANNOT DELETE ATTACHMENT FILE via FTP !!", "ERROR");
                        GF.closeLoading();
                        return;
                    }
                }
                GF.closeLoading();
                return;
            }
        }
示例#9
0
        private void viewer_Load(object sender, EventArgs e)
        {
            GF.showLoading(this);

            if (hidePrint)
            {
                panel.Height   += toolbar.Height;
                panel.Top       = toolbar.Top;
                toolbar.Visible = false;
            }

            file = FTP.download(filename, folderName);

            double percentage = 0.00;

            if (file.Width > this.Width)
            {
                percentage = ((double)(Width) / (double)file.Width);
            }

            theWidth  = file.Width;
            theHeight = file.Height;

            if (percentage != 0.00)
            {
                theWidth  = (Int32)(theWidth * percentage) - 23;
                theHeight = (Int32)(theHeight * percentage);
            }
            else
            {
                theLeft = ((panel.Width - theWidth) / 2);
            }

            panel.AutoScrollMinSize = new Size(theWidth, theHeight);
            GF.closeLoading();
            this.Focus();
        }
示例#10
0
        private void card_print_Load(object sender, EventArgs e)
        {
            String    queryString = "";
            DataTable DT          = null;

            switch (card_type)
            {
            case 0:
            case 1:             // MEMBERCARD & MEMBERCARD_LIMITED_EDITION
                print_card1_btn.Text  = "FRONT";
                print_card2_btn.Text  = "BACK";
                attach_paper_btn.Text = "ATTACH PAPER";
                break;

            case 2:     // GIFT CERTIFICATE
                print_card1_btn.Text    = "CARD";
                print_card1_btn.Width   = attach_paper_btn.Width;
                print_card2_btn.Visible = false;
                break;

            case 3:     // GIFT VOUCHER
                GF.enableButton(print_card1_btn);
                print_card1_btn.Text     = "CARD";
                print_card1_btn.Width    = attach_paper_btn.Width;
                print_card2_btn.Visible  = false;
                attach_paper_btn.Visible = false;
                groupBox1.Height         = attach_paper_btn.Top;
                instruction_lbl.Top      = groupBox1.Height + 15;
                this.Height = instruction_lbl.Top + instruction_lbl.Height + 40;
                break;
            }

            switch (card_type)
            {
            case 0:
            case 1:             // MEMBERCARD
                queryString = @"
                    SELECT 
                        A.CARD_NO,
                        B.*, C.CODE
                    FROM MEMBERCARD A 
                    INNER JOIN MEMBERCARD_TYPE B ON A.MEMBERCARD_TYPE_ID = B.MEMBERCARD_TYPE_ID 
                    INNER JOIN CUSTOMER C ON A.CUSTOMER_ID = C.CUSTOMER_ID
                    WHERE A.MEMBERCARD_ID = " + GF.selected_id.ToString();
                using (DT = DB.getS(queryString, null, "GET DATA FROM MEMBERCARD_TYPE", false))
                {
                    file1         = DT.Rows[0]["FRONT_CARD"].ToString();
                    file2         = DT.Rows[0]["BACK_CARD"].ToString();
                    file3         = DT.Rows[0]["ATTACH_PAPER"].ToString();
                    customer_code = DT.Rows[0]["CODE"].ToString();
                    if (card_no == "")
                    {
                        card_no = DT.Rows[0]["CARD_NO"].ToString();
                    }
                }
                break;

            case 2:     // GIFT CERTIFICATE
                queryString = "SELECT A.*, B.RUS_NAME FROM GIFT_CERTIFICATE A LEFT OUTER JOIN SPA_PROGRAM B ON A.SPA_PROGRAM_ID = B.SPA_PROGRAM_ID WHERE A.GIFT_CERTIFICATE_ID = " + GF.selected_id.ToString();
                using (DT = DB.getS(queryString, null, "GET SPA_PROGRAM_NAME FROM GIFT_CERTIFICATE[" + GF.selected_id.ToString() + "]", false))
                {
                    if (DT.Rows.Count == 1)
                    {
                        spaProgramName = DT.Rows[0]["RUS_NAME"].ToString();
                        if (DT.Rows[0]["BALANCE_MAX"].ToString() != "")
                        {
                            price = DT.Rows[0]["BALANCE_MAX"].ToString();
                        }
                        else
                        {
                            price = DT.Rows[0]["PRICE"].ToString();
                        }
                        from_txt = DT.Rows[0]["FROM_TXT"].ToString();
                        for_txt  = DT.Rows[0]["FOR_TXT"].ToString();
                        if (card_no == "")
                        {
                            card_no = DT.Rows[0]["CARD_NO"].ToString();
                        }
                    }
                }

                queryString = "SELECT * FROM GIFT_CERTIFICATE_CONFIG";
                DT          = DB.getS(queryString, null, "GET GIFT_CERTIFICATE_CONFIG", false);
                file1       = DT.Rows[0]["CARD1"].ToString();
                file3       = DT.Rows[0]["CARD2"].ToString();
                break;

            case 3:     // GIFT VOUCHER
                String[] tmp = GF.tmpText.Split();
                if (!isReIssue)
                {
                    if (GF.selected_id.ToString() != "-1")
                    {
                        queryString = "SELECT RUS_NAME FROM SPA_PROGRAM WHERE SPA_PROGRAM_ID = " + GF.selected_id.ToString();
                        using (DT = DB.getS(queryString, null, "GET RUS_NAME OF SPA_PROGRAM_NAME FROM GIFT_VOUCHER", false))
                        {
                            spaProgramName = DT.Rows[0]["RUS_NAME"].ToString();
                        }
                    }
                    else
                    {
                        spaProgramName = "ALL SPA PROGRAM " + tmp[0] + " " + tmp[1];
                    }
                }
                else
                {
                    if (GF.selected_id.ToString() != "-1")
                    {
                        queryString = "SELECT B.RUS_NAME FROM GIFT_VOUCHER A INNER JOIN SPA_PROGRAM B ON A.SPA_PROGRAM_ID = B.SPA_PROGRAM_ID WHERE A.GIFT_VOUCHER_ID = " + GF.selected_id.ToString();
                        using (DT = DB.getS(queryString, null, "GET RUS_NAME OF SPA_PROGRAM_NAME FROM GIFT_VOUCHER", false))
                        {
                            spaProgramName = DT.Rows[0]["RUS_NAME"].ToString();
                        }
                    }
                    else
                    {
                        spaProgramName = "ALL SPA PROGRAM " + tmp[0] + " " + tmp[1];
                    }
                }

                queryString = "SELECT * FROM GIFT_VOUCHER_CONFIG";
                using (DT = DB.getS(queryString, null, "GET GIFT_VOUCHER_CONFIG", false))
                {
                    file1 = DT.Rows[0]["CARD"].ToString();
                }
                break;
            }

            if (!isReIssue)
            {
                expire_amount = Convert.ToInt32(DT.Rows[0]["EXPIRE_AMOUNT"].ToString());
                expire_unit   = Convert.ToInt32(DT.Rows[0]["EXPIRE_UNIT"].ToString());

                if (expire_amount.ToString() != "0")
                {
                    DateTime expiryDate = new DateTime();
                    if (expire_unit == 0)
                    {
                        expiryDate = DateTime.Now.AddMonths(expire_amount);
                    }
                    if (expire_unit == 1)
                    {
                        expiryDate = DateTime.Now.AddYears(expire_amount);
                    }
                    expire_date = expiryDate.Day.ToString("00") + "/" + expiryDate.Month.ToString("00") + "/" + expiryDate.Year.ToString();
                }

                if (card_type == 3)
                {
                    card_no = (DateTime.Now.Year + 543).ToString() + DateTime.Now.Month.ToString("00") + DateTime.Now.Day.ToString("00") + DateTime.Now.Hour.ToString("00") + DateTime.Now.Minute.ToString("00") + DateTime.Now.Second.ToString("00") + new Random().Next(1, 100).ToString("00");
                }

                switch (card_type)
                {
                case 0:
                case 1:     // MEMBERCARD
                    break;

                case 2:
                    insertString = "UPDATE GIFT_CERTIFICATE SET IS_PAID = 1, IS_USE = 1 WHERE GIFT_CERTIFICATE_ID = " + GF.selected_id.ToString();
                    break;

                case 3:     // GIFT_VOUCHER
                    String[] tmp = GF.tmpText.Split(' ');

                    insertString = "INSERT INTO GIFT_VOUCHER (" + (billID != -1 ? "BILL_ID, " : "") + "CARD_NO, SPA_PROGRAM_ID, EXPIRY_DATE, DISCOUNT_AMOUNT, DISCOUNT_UNIT, ISSUE_BY, APPROVED_BY, ISSUE_FOR";
                    if (member_card_id != -1)
                    {
                        insertString += ", MEMBERCARD_ID";
                    }
                    insertString += ") SELECT " + (billID != -1 ? billID.ToString() + ", " : "") + "'" + card_no + "', " + GF.selected_id.ToString() + ", ";
                    if (GF.selected_id.ToString() != "-1")
                    {
                        insertString += "DATEADD(";
                        if (expire_unit == 0)
                        {
                            insertString += "MONTH";
                        }
                        if (expire_unit == 1)
                        {
                            insertString += "YEAR";
                        }
                        insertString += ", " + expire_amount.ToString() + ", GETDATE()), ";
                    }
                    else
                    {
                        insertString += GF.modDate(tmp[2]) + ", ";
                    }
                    insertString += tmp[0] + ", ";
                    insertString += (tmp[1].Trim() == "%" ? "0, " : "1, ");
                    insertString += GF.emp_id.ToString() + ", " + approved_id.ToString() + ", '" + gv_issue_for + "'";
                    if (member_card_id != -1)
                    {
                        insertString += ", " + member_card_id.ToString();
                    }
                    insertString += " FROM GIFT_VOUCHER_CONFIG WHERE GIFT_VOUCHER_CONFIG_ID = 1";
                    break;
                }

                if (insertString.Trim() != "")
                {
                    DB.beginTrans();
                    GF.doDebug(">>>>>>>>>> " + insertString);
                    if (!DB.set(insertString, "INSERT INTO " + type_name[card_type] + " TABLE"))
                    {
                        GF.closeLoading();
                        MessageBox.Show("ERROR INSERT INTO " + type_name[card_type] + " TABLE !!", "ERROR");
                        return;
                    }
                    else
                    {
                        DB.close();
                    }
                }
            }
            else
            {
                switch (card_type)
                {
                case 0:
                case 1:             // MEMBERCARD
                    queryString = "SELECT CARD_NO, CONVERT(NVARCHAR(MAX), EXPIRE_DATE, 103) EXPIRY_DATE FROM MEMBERCARD WHERE MEMBERCARD_ID = " + GF.selected_id.ToString();
                    DT          = DB.getS(queryString, null, "GET CARD_NO, EXPIRY_DATE FROM MEMBERCARD[" + GF.selected_id.ToString() + "]", false);
                    break;

                case 2:
                    queryString = "SELECT CARD_NO, CONVERT(NVARCHAR(MAX), EXPIRY_DATE, 103) EXPIRY_DATE FROM GIFT_CERTIFICATE WHERE GIFT_CERTIFICATE_ID = " + GF.selected_id.ToString();
                    DT          = DB.getS(queryString, null, "GET CARD_NO, EXPIRY_DATE FROM GIFT_CERTIFICATE[" + GF.selected_id.ToString() + "]", false);
                    break;

                case 3:
                    queryString = "SELECT CARD_NO, CONVERT(NVARCHAR(MAX), EXPIRY_DATE, 103) EXPIRY_DATE FROM GIFT_VOUCHER WHERE GIFT_VOUCHER_ID = " + GF.selected_id.ToString();
                    DT          = DB.getS(queryString, null, "GET CARD_NO, EXPIRY_DATE FROM GIFT_VOUCHER[" + GF.selected_id.ToString() + "]", false);
                    break;
                }

                card_no     = DT.Rows[0]["CARD_NO"].ToString();
                expire_date = DT.Rows[0]["EXPIRY_DATE"].ToString();
                DT.Dispose();
            }
        }
示例#11
0
        private void card_print_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!print_card1_btn.Enabled && (!print_card2_btn.Enabled || !print_card2_btn.Visible) && (!attach_paper_btn.Enabled || !attach_paper_btn.Visible))
            {
                GF.showLoading(this);
                if (!isReIssue)
                {
                    switch (card_type)
                    {
                    case 0:
                    case 1:    // MEMBERCARD, MEMBERCARD LIMITED EDITION

                        break;

                    case 2:     // GIFT_CERTIFICATE
                        break;

                    case 3:     // GIFT_VOUCHER
                        if (Owner.Name != "payment")
                        {
                            if ((VOUCHER.issue_e_voucher)Owner != null)
                            {
                                ((VOUCHER.issue_e_voucher)Owner).Close();
                            }
                        }
                        break;
                    }
                }
                else
                {
                    GF.showLoading(this);
                    DB.beginTrans();
                    String queryString = "";
                    String tblName     = "";
                    switch (card_type)
                    {
                    case 0:
                    case 1:             // MEMBERCARD
                        queryString = "UPDATE MEMBERCARD SET ISSUE_DATE = CURRENT_TIMESTAMP, ISSUE_BY = " + GF.emp_id.ToString() + " WHERE MEMBERCARD_ID = " + GF.selected_id.ToString();
                        tblName     = "MEMBERCARD";
                        break;

                    case 2:     // GIFT CERTIFICATE
                        queryString = "UPDATE GIFT_CERTIFICATE SET ISSUE_DATE = CURRENT_TIMESTAMP, ISSUE_BY = " + GF.emp_id.ToString() + " WHERE GIFT_CERTIFICATE_ID = " + GF.selected_id.ToString();
                        tblName     = "GIFT_CERTIFICATE";
                        break;

                    case 3:     // GIFT VOUCHER
                        queryString = "UPDATE GIFT_VOUCHER SET ISSUE_DATETIME = CURRENT_TIMESTAMP, ISSUE_BY = " + GF.emp_id.ToString() + " WHERE GIFT_VOUCHER_ID = " + GF.selected_id.ToString();
                        tblName     = "GIFT_VOUCHER";
                        break;
                    }
                    if (!DB.set(queryString, "UPDATE " + tblName + "[" + GF.selected_id.ToString() + "]"))
                    {
                        MessageBox.Show("ERROR UPDATE " + tblName + " !!", "ERROR");
                        GF.closeLoading();
                    }
                    DB.close();
                    GF.closeLoading();
                    ((re_issue_card)((re_issue_card_approve)Owner).Owner).btn_dgv.search_btn.PerformClick();
                    ((re_issue_card_approve)Owner).Close();
                }
                GF.closeLoading();
            }
            //if (this.Owner.Name == "cashier") ((SPA_MANAGEMENT_SYSTEM.SHOP.cashier)this.Owner).new_bill_btn.PerformClick();
        }
示例#12
0
        // DELEGATE PART :: END

        public void loadGridData()
        {
            GF.showLoading(this);
            this.btn_dgv.DGV.Visible = false;
            this.btn_dgv.DGV.Rows.Clear();

            if (btn_dgv.DGV.Columns.Count == 0)
            {
                this.btn_dgv.DGV.Columns.Add("card_type_name", "CARD NAME");
                this.btn_dgv.DGV.Columns.Add("owner_name", "OWNER NAME");
                this.btn_dgv.DGV.Columns.Add("code", "CODE");
                this.btn_dgv.DGV.Columns.Add("detail", "DETAIL");
                this.btn_dgv.DGV.Columns.Add("issue_datetime", "ISSUED DATETIME");
                this.btn_dgv.DGV.Columns.Add("status", "STATUS");
                this.btn_dgv.DGV.Columns.Add("issue_by", "ISSUED BY");
                this.btn_dgv.DGV.Columns.Add("card_type", "card_type");
                this.btn_dgv.DGV.Columns.Add("card_id", "card_id");
                this.btn_dgv.DGV.Columns["card_type"].Visible = false;
                this.btn_dgv.DGV.Columns["card_id"].Visible   = false;
                this.btn_dgv.DGV.Columns["status"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            }

            // GET TOTAL PAGE
            Dictionary <string, string> Params = new Dictionary <string, string>();
            String queryString = @"
            SELECT A.*, ISNULL(B.FULLNAME, 'S.A.') ISSUE_BY_NAME FROM (
                (SELECT 
                    B.MEMBERCARD_TYPE_NAME CARD_TYPE_NAME, 
                    A.CARD_NO, 
                    Convert(NVARCHAR(MAX),A.PRICE) PRICE, 
                    A.ISSUE_DATE,
                    CONVERT(NVARCHAR(MAX), A.ISSUE_DATE, 103) + ' ' + CONVERT(NVARCHAR(MAX), A.ISSUE_DATE, 108) ISSUE_DATETIME, 
                    A.ISSUE_BY,
                    A.MEMBERCARD_TYPE_ID CARD_TYPE,
                    A.MEMBERCARD_ID CARD_ID,
                    C.CUSTOMER_NAME + '-' + C.TEL OWNER_NAME,
                    NULL SPA_PROGRAM,
                    A.IS_USE
                FROM MEMBERCARD A 
                INNER JOIN MEMBERCARD_TYPE B ON A.MEMBERCARD_TYPE_ID = B.MEMBERCARD_TYPE_ID
                INNER JOIN CUSTOMER C ON A.CUSTOMER_ID = C.CUSTOMER_ID
                WHERE B.IS_USE = 1)
                UNION ALL
                (SELECT
                    CASE A.SPA_PROGRAM_ID WHEN -1 THEN 'MONEY ' ELSE 'SPA MENU ' END + 'GIFT CERTIFICATE' CARD_TYPE_NAME,
                    A.CARD_NO,
                    Convert(NVARCHAR(MAX),A.PRICE) PRICE,
                    A.ISSUE_DATE,
                    CONVERT(NVARCHAR(MAX), A.ISSUE_DATE, 103) + ' ' + CONVERT(NVARCHAR(MAX), A.ISSUE_DATE, 108) ISSUE_DATETIME, 
                    A.ISSUE_BY,
                    50 CARD_TYPE,
                    A.GIFT_CERTIFICATE_ID CARD_ID,
                    B.CUSTOMER_NAME + '-' + B.TEL OWNER_NAME,
                    C.PROGRAM_NAME SPA_PROGRAM,
                    A.IS_USE
                FROM GIFT_CERTIFICATE A
                LEFT OUTER JOIN CUSTOMER B ON A.CUSTOMER_ID = B.CUSTOMER_ID
                LEFT OUTER JOIN SPA_PROGRAM C ON A.SPA_PROGRAM_ID = C.SPA_PROGRAM_ID
                )
                UNION ALL
                (SELECT
                    'GIFT VOUCHER' CARD_TYPE_NAME,
                    A.CARD_NO,
                    '-' PRICE,
                    A.ISSUE_DATETIME ISSUE_DATE,
                    CONVERT(NVARCHAR(MAX), A.ISSUE_DATETIME, 103) + ' ' + CONVERT(NVARCHAR(MAX), A.ISSUE_DATETIME, 108) ISSUE_DATETIME, 
                    A.ISSUE_BY,
                    99 CARD_TYPE,
                    A.GIFT_VOUCHER_ID,
                    A.ISSUE_FOR OWNER_NAME,
                    B.PROGRAM_NAME SPA_PROGRAM,
                    A.IS_USE
                FROM GIFT_VOUCHER A
                INNER JOIN SPA_PROGRAM B ON A.SPA_PROGRAM_ID = B.SPA_PROGRAM_ID
                )
            ) A LEFT OUTER JOIN EMPLOYEE B ON A.ISSUE_BY = B.EMP_ID WHERE 1=1";

            if (((ComboItem)card_type.SelectedItem).Key != -1)
            {
                queryString += " AND A.CARD_TYPE = " + ((ComboItem)card_type.SelectedItem).Key.ToString();
                //Params.Add("@card_type", ((ComboItem)card_type.SelectedItem).Key.ToString());
            }
            if (!GF.emptyDate(issue_date.Text.Trim()))
            {
                queryString += " AND CONVERT(DATE, ISSUE_DATE) = CONVERT(DATE, '" + issue_date.Text + "', 103)";
                //Params.Add("@issue_date", issue_date.Text);
            }

            GF.getTotalPage(btn_dgv, "SELECT COUNT(*) AS TOTAL FROM (" + queryString + ") AS TOTAL_ROW", Params);

            queryString = DB.insertRowNum("A.ISSUE_DATE DESC", queryString);
            GF.doDebug(">>>> " + queryString);
            DataTable myDT;

            using (myDT = DB.getS(queryString, Params, "GET ALL ISSUED CARDS"))
            {
                for (int rowNum = 0; rowNum < myDT.Rows.Count; rowNum++)
                {
                    DataRow myRow = myDT.Rows[rowNum];

                    String detail = "";
                    if (myRow["SPA_PROGRAM"].ToString() != "")
                    {
                        detail = myRow["SPA_PROGRAM"].ToString();
                    }
                    else
                    {
                        detail = GF.formatNumber(Convert.ToInt32(myRow["PRICE"].ToString()));
                    }

                    this.btn_dgv.DGV.Rows.Add(
                        myRow["CARD_TYPE_NAME"].ToString(),
                        myRow["OWNER_NAME"].ToString(),
                        myRow["CARD_NO"].ToString(),
                        detail,
                        myRow["ISSUE_DATETIME"].ToString(),
                        (myRow["IS_USE"].ToString() == "1" ? "ACTIVE": "INACTIVE"),
                        myRow["ISSUE_BY_NAME"].ToString(),
                        myRow["CARD_TYPE"].ToString(),
                        myRow["CARD_ID"].ToString()
                        );

                    btn_dgv.DGV.Rows[rowNum].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
                    if (myRow["IS_USE"].ToString() == "1")
                    {
                        btn_dgv.DGV.Rows[rowNum].Cells["status"].Style.ForeColor = Color.Green;
                    }
                    else
                    {
                        btn_dgv.DGV.Rows[rowNum].Cells["status"].Style.ForeColor = Color.Red;
                    }
                    this.btn_dgv.DGV.ClearSelection();
                }
            }

            GF.updateRowNum(btn_dgv.DGV, true);
            this.btn_dgv.DGV.Refresh();
            this.btn_dgv.DGV.Visible = true;
            GF.closeLoading();
        }
示例#13
0
        public main_page()
        {
            InitializeComponent();

            //File.WriteAllText(GF.path, String.Empty);

            GF.doDebug("===== MAIN FORM :: " + this.Name + " IS OPENED =====");
            this.FormClosing += (s, e) =>
            {
                GF.doDebug("===== MAIN FORM :: " + this.Name + " IS CLOSED =====");
            };

            GF.mainPage = this;

            GF.initLoading();
            GF.showLoading(this);
            DB.initLocalVars();

            switch (CultureInfo.CurrentCulture.Name)
            {
            case "th-TH":
            case "en-US":
                GF.dateSep     = "/";
                GF.thousandSep = ",";
                GF.decimalSep  = ".";
                break;

            case "ru-RU":
                GF.dateSep     = ".";
                GF.thousandSep = " ";
                GF.decimalSep  = ",";
                break;
            }

            using (clock = new Timer())
            {
                clock.Enabled  = true;
                clock.Interval = 100;
                int count = 0;
                clock.Tick += (s, ee) =>
                {
                    count++;
                    uint             idleTime      = 0;
                    GF.LASTINPUTINFO lastInputInfo = new GF.LASTINPUTINFO();
                    lastInputInfo.cbSize = (uint)Marshal.SizeOf(lastInputInfo);
                    lastInputInfo.dwTime = 0;

                    uint envTicks = (uint)Environment.TickCount;

                    if (GF.GetLastInputInfo(ref lastInputInfo))
                    {
                        uint lastInputTick = lastInputInfo.dwTime;

                        idleTime = envTicks - lastInputTick;
                    }
                    //GF.doDebug(">>>>>>>>>> " + idleTime.ToString());
                    if (Math.Floor(Convert.ToDouble(idleTime / 1000)) >= (10 * 60))
                    {
                        logOutTopToolStripMenuItem.PerformClick();
                    }

                    String language_txt = InputLanguage.CurrentInputLanguage.Culture.EnglishName;
                    if (language_txt.ToUpper().IndexOf("ENGLISH") != -1)
                    {
                        language_txt = "ENGLISH";
                    }
                    if (language_txt.ToUpper().IndexOf("THAI") != -1)
                    {
                        language_txt = "ไทย";
                    }
                    if (language_txt.ToUpper().IndexOf("RUSSIAN") != -1)
                    {
                        language_txt = "РУССКИЙ";
                    }
                    language.Text = language_txt;

                    if (count % 10 == 0)
                    {
                        timenow.Text = GF.NOW();
                        count        = 0;
                    }
                    GF.ClickButtonLabeledOK("Hotel lock system interface");
                };
            }

            if (!GF.is_logged_in)
            {
                this.Hide();

                /*if (!DB.skipFileCheck)
                 * {
                 *  using (progress progressPage = new progress())
                 *  {
                 *      progressPage.Owner = this;
                 *      progressPage.ShowDialog();
                 *  }
                 * }
                 * else
                 * {*/
                using (login loginPage = new login())
                {
                    loginPage.Owner = this;
                    GF.closeLoading();
                    loginPage.ShowDialog();
                }
                //}
            }
        }
        protected override void OnKeyDown(KeyEventArgs e)
        {
            if (Text.Trim() != "")
            {
                if (e.KeyCode == Keys.Return)
                {
                    if (!ModeList.Contains(Mode))
                    {
                        MessageBox.Show("THE AUTOCOMPLETE IS UNDER CONSTRUCTION !!", "ERROR");
                        return;
                    }
                    if (Mode == "")
                    {
                        return;
                    }

                    String tmpQuery = queryString;
                    currentID = -1;
                    GF.showLoading(parentForm);

                    Dictionary <string, string> Params;

                    if (Mode == "CUSTOMER")
                    {
                        if (Text.Trim().Substring(0, 1) == "7")
                        {
                            Text = "8" + Text.Trim().Substring(1);
                        }

                        tmpQuery += "AND (CUSTOMER_NAME LIKE N'%' + @text + '%' OR RUS_NAME LIKE N'%' + @text + '%' OR TEL LIKE @text + '%')";
                        Params    = new Dictionary <string, string>();
                        Params.Add("@text", Text);

                        using (DT = DB.getS(tmpQuery, Params, "GET CUSTOMER NAME", false))
                        {
                            if (DT.Rows.Count == 0)
                            {
                                GF.closeLoading();
                                MessageBox.Show("... NO RESULT ...");
                            }
                            else if (DT.Rows.Count == 1)
                            {
                                DataRow row = DT.Rows[0];
                                SetText(Convert.ToInt32(row["CUSTOMER_ID"].ToString()), row["CUSTOMER_NAME"].ToString() + " - " + (row["GENDER"].ToString() == "1" ? "MALE" : "FEMALE") + " - " + row["TEL"].ToString());
                                GF.closeLoading();
                            }
                            else
                            {
                                preventTextChanged = true;
                                using (name_list searchResult = new name_list())
                                {
                                    searchResult.Load += (ss, ee) =>
                                    {
                                        searchResult.Size = searchResult.resultTable.Size;
                                    };

                                    if (searchResult.resultTable.Rows.Count > 0)
                                    {
                                        searchResult.resultTable.Rows.Clear();
                                    }
                                    if (searchResult.resultTable.Columns.Count == 0)
                                    {
                                        searchResult.resultTable.Columns.Add("name", "NAME");
                                        searchResult.resultTable.Columns.Add("rus_name", "RUS NAME");
                                        searchResult.resultTable.Columns.Add("gender", "GENDER");
                                        searchResult.resultTable.Columns.Add("tel", "TEL");
                                        searchResult.resultTable.Columns.Add("note", "NOTE");
                                        searchResult.resultTable.Columns.Add("customer_id", "customer_id");
                                        searchResult.resultTable.Columns["note"].Visible        = false;
                                        searchResult.resultTable.Columns["customer_id"].Visible = false;
                                    }

                                    foreach (DataRow row in DT.Rows)
                                    {
                                        searchResult.resultTable.Rows.Add(row["CUSTOMER_NAME"].ToString(), row["RUS_NAME"].ToString(), (row["GENDER"].ToString() == "1" ? "MALE" : "FEMALE"), row["TEL"].ToString(), row["NOTE"].ToString(), row["CUSTOMER_ID"].ToString());
                                    }

                                    GF.updateRowNum(searchResult.resultTable);

                                    foreach (DataGridViewColumn column in searchResult.resultTable.Columns)
                                    {
                                        column.SortMode = DataGridViewColumnSortMode.NotSortable;
                                    }
                                    GF.closeLoading();
                                    searchResult.Owner = parentForm;
                                    searchResult.Mode  = this.Mode;
                                    searchResult.ShowDialog();
                                    searchResult.BringToFront();
                                }
                                preventTextChanged = false;
                            }
                        }
                    }

                    if (Mode == "EMPLOYEE")
                    {
                        tmpQuery += "AND (FULLNAME LIKE '%' + @text + '%' OR CODE LIKE @text + '%')";
                        Params    = new Dictionary <string, string>();
                        Params.Add("@text", Text);

                        using (DT = DB.getS(tmpQuery, Params, "GET EMPLOYEE NAME", false))
                        {
                            if (DT.Rows.Count == 0)
                            {
                                GF.closeLoading();
                                MessageBox.Show("... NO RESULT ...");
                            }
                            else if (DT.Rows.Count == 1)
                            {
                                DataRow row = DT.Rows[0];
                                SetText(Convert.ToInt32(row["EMP_ID"].ToString()), row["CODE"].ToString() + " - " + row["FULLNAME"].ToString());
                                GF.closeLoading();
                            }
                            else
                            {
                                preventTextChanged = true;
                                using (name_list searchResult = new name_list())
                                {
                                    searchResult.Load += (ss, ee) =>
                                    {
                                        searchResult.Size = searchResult.resultTable.Size;
                                    };

                                    if (searchResult.resultTable.Rows.Count > 0)
                                    {
                                        searchResult.resultTable.Rows.Clear();
                                    }
                                    if (searchResult.resultTable.Columns.Count == 0)
                                    {
                                        searchResult.resultTable.Columns.Add("fullname", "NAME");
                                        searchResult.resultTable.Columns.Add("code", "CODE");
                                        searchResult.resultTable.Columns.Add("emp_id", "emp_id");
                                        searchResult.resultTable.Columns["emp_id"].Visible = false;
                                    }

                                    foreach (DataRow row in DT.Rows)
                                    {
                                        searchResult.resultTable.Rows.Add(row["FULLNAME"].ToString(), row["CODE"].ToString(), row["EMP_ID"].ToString());
                                    }

                                    GF.updateRowNum(searchResult.resultTable);

                                    foreach (DataGridViewColumn column in searchResult.resultTable.Columns)
                                    {
                                        column.SortMode = DataGridViewColumnSortMode.NotSortable;
                                    }
                                    GF.closeLoading();
                                    searchResult.Owner = parentForm;
                                    searchResult.Mode  = this.Mode;
                                    searchResult.ShowDialog();
                                }
                                preventTextChanged = false;
                            }
                        }
                    }

                    if (Mode == "DEBTOR")
                    {
                        tmpQuery += "AND (A.NAME LIKE '%' + @text + '%' OR A.TEL LIKE '%' + @text + '%')";
                        Params    = new Dictionary <string, string>();
                        Params.Add("@text", Text);

                        using (DT = DB.getS(tmpQuery, Params, "GET DEBTOR NAME", false))
                        {
                            if (DT.Rows.Count == 0)
                            {
                                GF.closeLoading();
                                MessageBox.Show("... NO RESULT ...");
                            }
                            else if (DT.Rows.Count == 1)
                            {
                                DataRow row = DT.Rows[0];
                                SetText(Convert.ToInt32(row["DEBTOR_ID"].ToString()), "[" + row["DEBTOR_TYPE_NAME"].ToString() + "] " + row["NAME"].ToString() + " " + row["TEL"].ToString());
                                GF.closeLoading();
                            }
                            else
                            {
                                preventTextChanged = true;
                                using (name_list searchResult = new name_list())
                                {
                                    searchResult.Load += (ss, ee) =>
                                    {
                                        searchResult.Size = searchResult.resultTable.Size;
                                    };

                                    if (searchResult.resultTable.Rows.Count > 0)
                                    {
                                        searchResult.resultTable.Rows.Clear();
                                    }
                                    if (searchResult.resultTable.Columns.Count == 0)
                                    {
                                        searchResult.resultTable.Columns.Add("debtor_name", "NAME");
                                        searchResult.resultTable.Columns.Add("tel", "TEL NO.");
                                        searchResult.resultTable.Columns.Add("debtor_type_name", "TYPE");
                                        searchResult.resultTable.Columns.Add("debtor_id", "debtor_id");
                                        searchResult.resultTable.Columns["debtor_id"].Visible = false;
                                    }

                                    foreach (DataRow row in DT.Rows)
                                    {
                                        searchResult.resultTable.Rows.Add(row["NAME"].ToString(), row["TEL"].ToString(), row["DEBTOR_TYPE_NAME"].ToString(), row["DEBTOR_ID"].ToString());
                                    }

                                    GF.updateRowNum(searchResult.resultTable);

                                    foreach (DataGridViewColumn column in searchResult.resultTable.Columns)
                                    {
                                        column.SortMode = DataGridViewColumnSortMode.NotSortable;
                                    }
                                    GF.closeLoading();
                                    searchResult.Owner = parentForm;
                                    searchResult.Mode  = this.Mode;
                                    searchResult.ShowDialog();
                                }
                                preventTextChanged = false;
                            }
                        }
                    }

                    if (Mode == "AGENT")
                    {
                        tmpQuery += "AND (A.AGENT_NAME LIKE '%' + @text + '%' OR A.TEL LIKE '%' + @text + '%')";
                        Params    = new Dictionary <string, string>();
                        Params.Add("@text", Text);

                        using (DT = DB.getS(tmpQuery, Params, "GET AGENT NAME", false))
                        {
                            if (DT.Rows.Count == 0)
                            {
                                GF.closeLoading();
                                MessageBox.Show("... NO RESULT ...");
                            }
                            else if (DT.Rows.Count == 1)
                            {
                                DataRow row = DT.Rows[0];
                                SetText(Convert.ToInt32(row["AGENT_ID"].ToString()), row["AGENT_NAME"].ToString() + " - " + row["TEL"].ToString());
                                GF.closeLoading();
                            }
                            else
                            {
                                preventTextChanged = true;
                                using (name_list searchResult = new name_list())
                                {
                                    searchResult.Load += (ss, ee) =>
                                    {
                                        searchResult.Size = searchResult.resultTable.Size;
                                    };

                                    if (searchResult.resultTable.Rows.Count > 0)
                                    {
                                        searchResult.resultTable.Rows.Clear();
                                    }
                                    if (searchResult.resultTable.Columns.Count == 0)
                                    {
                                        searchResult.resultTable.Columns.Add("agent_name", "NAME");
                                        searchResult.resultTable.Columns.Add("tel", "TEL NO.");
                                        searchResult.resultTable.Columns.Add("agent_type_name", "TYPE");
                                        searchResult.resultTable.Columns.Add("agent_id", "agent_id");
                                        searchResult.resultTable.Columns["agent_id"].Visible = false;
                                    }

                                    foreach (DataRow row in DT.Rows)
                                    {
                                        searchResult.resultTable.Rows.Add(row["AGENT_NAME"].ToString(), row["TEL"].ToString(), (row["AGENT_TYPE"].ToString() == "0" ? "COMPANY" : "PERSON"), row["AGENT_ID"].ToString());
                                    }

                                    GF.updateRowNum(searchResult.resultTable);

                                    foreach (DataGridViewColumn column in searchResult.resultTable.Columns)
                                    {
                                        column.SortMode = DataGridViewColumnSortMode.NotSortable;
                                    }
                                    GF.closeLoading();
                                    searchResult.Owner = parentForm;
                                    searchResult.Mode  = this.Mode;
                                    searchResult.ShowDialog();
                                }
                                preventTextChanged = false;
                            }
                        }
                    }

                    if (Mode == "ITEM_TYPE")
                    {
                        tmpQuery += "AND A.ITEM_TYPE_NAME LIKE '%' + @text + '%'";

                        Params = new Dictionary <string, string>();
                        Params.Add("@text", Text);

                        using (DT = DB.getS(tmpQuery, Params, "GET ITEM_TYPE_NAME", false))
                        {
                            if (DT.Rows.Count == 0)
                            {
                                GF.closeLoading();
                                MessageBox.Show("... NO RESULT ...");
                            }
                            else if (DT.Rows.Count == 1)
                            {
                                DataRow row = DT.Rows[0];
                                SetText(Convert.ToInt32(row["ITEM_TYPE_ID"].ToString()), row["ITEM_TYPE_NAME"].ToString());
                                GF.closeLoading();
                            }
                            else
                            {
                                preventTextChanged = true;
                                using (name_list searchResult = new name_list())
                                {
                                    searchResult.Load += (ss, ee) =>
                                    {
                                        searchResult.Size = searchResult.resultTable.Size;
                                    };

                                    if (searchResult.resultTable.Rows.Count > 0)
                                    {
                                        searchResult.resultTable.Rows.Clear();
                                    }
                                    if (searchResult.resultTable.Columns.Count == 0)
                                    {
                                        searchResult.resultTable.Columns.Add("item_type_name", "ITEM TYPE NAME");
                                        searchResult.resultTable.Columns.Add("item_type_id", "item_type_id");
                                        searchResult.resultTable.Columns["item_type_id"].Visible = false;
                                    }

                                    foreach (DataRow row in DT.Rows)
                                    {
                                        searchResult.resultTable.Rows.Add(row["ITEM_TYPE_NAME"].ToString(), row["ITEM_TYPE_ID"].ToString());
                                    }

                                    GF.updateRowNum(searchResult.resultTable);

                                    foreach (DataGridViewColumn column in searchResult.resultTable.Columns)
                                    {
                                        column.SortMode = DataGridViewColumnSortMode.NotSortable;
                                    }
                                    GF.closeLoading();
                                    searchResult.Owner = parentForm;
                                    searchResult.Mode  = this.Mode;
                                    searchResult.ShowDialog();
                                }
                                preventTextChanged = false;
                            }
                        }
                    }

                    parentForm.Activate();
                    parentForm.BringToFront();
                }
            }
            base.OnKeyDown(e);
        }
示例#15
0
        public static DataRow validateCards(String card_type, String card_no, String code_check = "")
        {
            try
            {
                string original_card_type = card_type;
                GF.doDebug("VALIDATE CARD : " + original_card_type);
                if (card_type == "MONEY_COUPON")
                {
                    card_type = "COUPON";
                }
                String queryString = "SELECT " + card_type + @".*, ";

                if (card_type == "MEMBERCARD" || card_type == "VIP_CARD")
                {
                    queryString += "NULL PROGRAM_NAME, NULL PROGRAM_CODE, ";
                }
                else
                {
                    queryString += "SPA_PROGRAM.PROGRAM_NAME PROGRAM_NAME, SPA_PROGRAM.CODE PROGRAM_CODE, ";
                }

                if (card_type == "MEMBERCARD")
                {
                    queryString += "MEMBERCARD_TYPE.DISCOUNT DISCOUNT, 0 DISCOUNT_UNIT, ";
                }
                else if (card_type == "VIP_CARD")
                {
                    queryString += "VIP_CARD.DISCOUNT DISCOUNT, 0 DISCOUNT_UNIT, ";
                }
                else if (card_type == "CROSS_PROMOTION")
                {
                    queryString += "CROSS_PROMOTION.DISCOUNT DISCOUNT, 0 DISCOUNT_UNIT, ";
                }
                else if (card_type == "COUPON")
                {
                    queryString += "COUPON.DISCOUNT_AMOUNT DISCOUNT, COUPON.DISCOUNT_UNIT, ";
                }
                else
                {
                    queryString += "NULL DISCOUNT, NULL DISCOUNT_UNIT, ";
                }

                if (card_type == "MEMBERCARD")
                {
                    queryString += "MEMBERCARD_TYPE.DISCOUNT_FOOD, MEMBERCARD_TYPE.DISCOUNT_FOOD_UNIT, ";
                }
                else
                {
                    queryString += itemDiscount.ToString() + " DISCOUNT_FOOD, 0 DISCOUNT_FOOD_UNIT, ";
                }

                if (card_type != "MEMBERCARD" && card_type != "GIFT_CERTIFICATE" && card_type != "COUPON")
                {
                    queryString += "NULL BALANCE, ";
                }

                queryString = queryString.Substring(0, queryString.Length - 2) + " ";

                queryString += "FROM " + card_type + " ";
                if (card_type == "MEMBERCARD")
                {
                    queryString += "INNER JOIN MEMBERCARD_TYPE ON MEMBERCARD.MEMBERCARD_TYPE_ID = MEMBERCARD_TYPE.MEMBERCARD_TYPE_ID ";
                }
                else if (card_type != "VIP_CARD")
                {
                    queryString += "LEFT OUTER JOIN SPA_PROGRAM ON " + card_type + @".SPA_PROGRAM_ID = SPA_PROGRAM.SPA_PROGRAM_ID ";
                }

                queryString += "WHERE RTRIM(LTRIM(CARD_NO)) = '" + card_no + "' AND " + card_type + ".IS_USE = 1 ";

                Dictionary <string, string> Params = new Dictionary <string, string>();
                //Params.Add("@card_no", card_no);

                if (card_type == "VIP_CARD" || card_type == "COUPON")
                {
                    queryString += "AND IS_VOID = 0 ";
                }

                DataTable DT;
                using (DT = DB.getS(queryString, Params, "GET " + original_card_type + "[" + card_no + "]", false))
                {
                    if (DT.Rows.Count == 0)
                    {
                        if (card_type != "CROSS_PROMOTION")
                        {
                            String error_msg = "NO " + card_type.Replace('_', ' ') + " WITH THIS CODE !!";
                            if (card_type == "VIP_CARD" || card_type == "COUPON")
                            {
                                queryString = @"
                                SELECT TOP 1 " + card_type + @".*, EMPLOYEE.FULLNAME VOIDER 
                                FROM " + card_type + @"
                                LEFT OUTER JOIN EMPLOYEE ON " + card_type + @".VOIDED_BY = EMPLOYEE.EMP_ID
                                WHERE RTRIM(LTRIM(CARD_NO)) = '" + card_no + "' AND " + card_type + ".IS_VOID = 1 ORDER BY " + card_type + ".VOIDED_DATETIME DESC";

                                DataTable tmpDT;
                                using (tmpDT = DB.getS(queryString, Params, "GET VOIDED LATEST REASON", false))
                                {
                                    if (tmpDT.Rows.Count == 1)
                                    {
                                        error_msg = "THIS " + card_type.Replace('_', ' ') + " WAS VOIDED !!\r\nREASON : " + tmpDT.Rows[0]["VOIDED_REASON"].ToString() + "\r\nVOIDED BY : " + (tmpDT.Rows[0]["VOIDED_BY"].ToString() == "0" ? "S.A." : tmpDT.Rows[0]["VOIDER"].ToString()) + "\r\nVOIDED ON : " + GF.formatDateTime(tmpDT.Rows[0]["VOIDED_DATETIME"].ToString());
                                    }
                                }
                            }
                            GF.doDebug(error_msg);
                            MessageBox.Show(error_msg, "ERROR");
                        }
                        else
                        {
                            GF.doDebug("NOT FOUND !!");
                            MessageBox.Show("NOT FOUND !!", "ERROR");
                        }
                        GF.closeLoading();
                        return(null);
                    }
                    else if (DT.Rows.Count > 1)
                    {
                        GF.doDebug("DUPLICATE CARDS WITH THIS CODE !!");
                        MessageBox.Show("DUPLICATE CARDS WITH THIS CODE !!", "ERROR");
                        GF.closeLoading();
                        return(null);
                    }
                    else if (DT.Rows.Count == 1)
                    {
                        String expireColName = "";
                        if (card_type == "MEMBERCARD")
                        {
                            expireColName = "EXPIRE_DATE";
                        }
                        else
                        {
                            expireColName = "EXPIRY_DATE";
                        }

                        if (DT.Rows[0][expireColName].ToString() != "NULL" && DT.Rows[0][expireColName].ToString() != "")
                        {
                            DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
                            dtfi.ShortDatePattern = "d" + GF.dateSep + "M" + GF.dateSep + "yyyy";
                            dtfi.DateSeparator    = GF.dateSep;

                            DateTime today  = Convert.ToDateTime(DateTime.Today.ToString("d" + GF.dateSep + "M" + GF.dateSep + "yyyy"), dtfi);
                            DateTime expire = Convert.ToDateTime(DT.Rows[0][expireColName].ToString().Split(' ')[0], dtfi);
                            if (DateTime.Compare(today, expire) > 0)
                            {
                                GF.doDebug("THIS CARD IS EXPIRED !!");
                                MessageBox.Show("THIS CARD IS EXPIRED !!", "ERROR");
                                GF.closeLoading();
                                return(null);
                            }
                        }

                        if (DT.Rows[0]["IS_USE"].ToString() == "0")
                        {
                            GF.doDebug("THIS " + card_type.Replace('_', ' ') + " WAS ALREADY USED OR MIGHT BE VOIDED !!");
                            MessageBox.Show("THIS " + card_type.Replace('_', ' ') + " WAS ALREADY USED OR MIGHT BE VOIDED !!", "ERROR");
                            GF.closeLoading();
                            return(null);
                        }

                        if (card_type == "MEMBERCARD" || card_type == "GIFT_CERTIFICATE" || card_type == "COUPON")
                        {
                            if (DT.Rows[0]["BALANCE"].ToString() != "" && DT.Rows[0]["BALANCE"].ToString() != "NULL")
                            {
                                if (card_type == "MEMBERCARD")
                                {
                                    queryString = "SELECT * FROM MEMBERCARD_TYPE WHERE MEMBERCARD_TYPE_ID = " + DT.Rows[0]["MEMBERCARD_TYPE_ID"].ToString();
                                    DataTable tmpDT;
                                    using (tmpDT = DB.getS(queryString, null, "CHECK IF MEMBERCARD CAN USE AFTER NO CREDIT ?", false))
                                    {
                                        if (Convert.ToInt32(tmpDT.Rows[0]["CAN_USE_NO_CREDIT"].ToString()) == 0 && Convert.ToInt32(DT.Rows[0]["BALANCE"].ToString()) == 0)
                                        {
                                            GF.doDebug("NO CREDIT LEFT !!");
                                            MessageBox.Show("NO CREDIT LEFT !!", "ERROR");
                                            GF.closeLoading();
                                            return(null);
                                        }
                                        else
                                        {
                                            GF.doDebug("CREDIT LEFT : " + DT.Rows[0]["BALANCE"].ToString() + " " + Properties.Settings.Default.money_unit);
                                            MessageBox.Show("CREDIT LEFT : " + DT.Rows[0]["BALANCE"].ToString() + " " + Properties.Settings.Default.money_unit);
                                            GF.closeLoading();
                                        }
                                    }
                                }
                                else
                                {
                                    int balance_left = 0;
                                    if (Int32.TryParse(DT.Rows[0]["BALANCE"].ToString(), out balance_left))
                                    {
                                        if (balance_left == 0)
                                        {
                                            GF.doDebug("NO CREDIT LEFT !!");
                                            MessageBox.Show("NO CREDIT LEFT !!", "ERROR");
                                            GF.closeLoading();
                                            return(null);
                                        }
                                    }
                                    else
                                    {
                                        if (original_card_type == "MONEY_COUPON")
                                        {
                                            GF.closeLoading();
                                            GF.doDebug("THIS IS NOT 'MONEY COUPON' !!\r\n\r\nPLEASE MAKE SURE YOU CLICKED THE CORRECT COUPON TYPE !!");
                                            MessageBox.Show("THIS IS NOT 'MONEY COUPON' !!\r\n\r\nPLEASE MAKE SURE YOU CLICKED THE CORRECT COUPON TYPE !!", "ERROR");
                                            return(null);
                                        }
                                    }
                                }
                            }
                        }
                        GF.doDebug("CARD IS OK !!");
                        return(DT.Rows[0]);
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
            catch (Exception e)
            {
                GF.closeLoading();
                GF.doDebug("CARD VALIDATION ERROR !!\r\n\r\nPLEASE CONTACT SOFTWARE DEVELOPER !!\r\n\r\n" + e.Message);
                MessageBox.Show("CARD VALIDATION ERROR !!\r\n\r\nPLEASE CONTACT SOFTWARE DEVELOPER !!\r\n\r\n" + e.Message, "ERROR !!");
                return(null);
            }
        }