private void OpenProductsSelectedDialogForm(DataGridViewCellEventArgs e)
        {
            DataGridViewRow row       = grvProductList.Rows[e.RowIndex];
            int             productId = int.Parse(row.Cells[Constant.ProductSearch.ProductGridColumnName.PRODUCT_ID].Value.ToString());

            JSManagementDataSet.ProductDataTable prod = productTableAdapter.GetDataByProductId(productId);


            ProductsSelectedDialogForm proSelectedDialogForm = new ProductsSelectedDialogForm();
            Label lbProductCode  = proSelectedDialogForm.Controls.Find(Constant.ProductsSelectedDialog.PRODUCT_CODE_LABEL_CONTROL_NAME, true)[0] as Label;
            Label lbProductType  = proSelectedDialogForm.Controls.Find(Constant.ProductsSelectedDialog.PRODUCT_TYPE_LABEL_CONTROL_NAME, true)[0] as Label;
            Label lbProductBrand = proSelectedDialogForm.Controls.Find(Constant.ProductsSelectedDialog.PRODUCT_BRAND_LABEL_CONTROL_NAME, true)[0] as Label;
            Label lbProdId       = proSelectedDialogForm.Controls.Find(Constant.ProductsSelectedDialog.PROD_ID_LABEL_CONTROL_NAME, true)[0] as Label;

            lbProductCode.Text  = prod[0].ProductCode;
            lbProductType.Text  = prod[0].ProductType;
            lbProductBrand.Text = prod[0].Brand;
            lbProdId.Text       = prod[0].ProdId.ToString();
            proSelectedDialogForm.isWorkingOnOutputOrder = true;
            proSelectedDialogForm.OutputTypeCode         = this.OutputTypeCode;
            proSelectedDialogForm.StartPosition          = FormStartPosition.CenterScreen;
            proSelectedDialogForm.ShowDialog();

            this.Close();
        }
        private void ProductsSelectedDialogForm_Load(object sender, EventArgs e)
        {
            productTableAdapter            = new JSManagementDataSetTableAdapters.ProductTableAdapter();
            productTableAdapter.Connection = CommonHelper.GetSQLConnection();
            int prodId = int.Parse(lbProdId.Text);

            JSManagementDataSet.ProductDataTable productData = productTableAdapter.GetProductByProdId(prodId);
            ((ListBox)this.checkedListBoxSize).DataSource    = productData;
            ((ListBox)this.checkedListBoxSize).DisplayMember = "Size";
            ((ListBox)this.checkedListBoxSize).ValueMember   = "ProductId";
            //checkedListBoxSize.Items.Clear();
            //for (int i = 0; i < productData.Rows.Count; i++)
            //{

            //    checkedListBoxSize.Items.Add(productData[i].Size);
            //}

            productTableAdapter.Dispose();
        }
        private void BindData(DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == -1 || e.RowIndex == grvProductList.RowCount - 1 || e.RowIndex == 0)
            {
                return;
            }
            btDelete.Visible = true;
            btAddNew.Visible = true;
            DataGridViewRow row       = grvProductList.Rows[e.RowIndex];
            int             productId = int.Parse(row.Cells[Constant.ProductSearch.ProductGridColumnName.PRODUCT_ID].Value.ToString());
            int             prodId    = int.Parse(row.Cells[Constant.ProductSearch.ProductGridColumnName.ProdId].Value.ToString());

            if (cboxStoreFind.SelectedValue != null)
            {
                storeId = int.Parse(cboxStoreFind.SelectedValue.ToString());
            }
            JSManagementDataSet.ProductDataTable productDataTable = productTableAdapter.GetProductById(productId, storeId);
            JSManagementDataSet.ProdDataTable    prodDataTable    = prodTableAdapter.GetDataById(prodId);


            string  productCode = prodDataTable[0].ProductCode;
            string  brand       = prodDataTable[0].Brand;
            string  productType = prodDataTable[0].ProductType;
            decimal productCost = productDataTable[0].ProductCost;
            decimal price       = productDataTable[0].Price;
            decimal price2      = productDataTable[0].Price2;
            decimal price3      = productDataTable[0].Price3;
            decimal price4      = productDataTable[0].Price4;
            string  size        = productDataTable[0].Size;
            string  imageUrls   = productDataTable[0].ImageUrls;

            lbProductHeader.Text  = string.Format("Sửa mã hàng {0} Hiệu:{1} Size:{2}", productCode, brand, size);
            txtProductCode.Text   = productCode;
            cbBoxProductType.Text = productType;
            cbBoxBrand.Text       = brand;
            lbProductId.Text      = productId.ToString();
            lbProdId.Text         = productDataTable[0].ProdId.ToString();
            txtPrice.Text         = price.ToString("#,###");
            txtPrice2.Text        = price2 == 0? "0": price2.ToString("#,###");
            txtPrice3.Text        = price3 == 0 ? "0" : price3.ToString("#,###");
            txtPrice4.Text        = price4 == 0 ? "0" : price4.ToString("#,###");
            cbBoxSize.Text        = size;
            txtInputPrice.Text    = productCost == 0 ? "0" : productCost.ToString("#,###");
            txtNote.Text          = prodDataTable[0].Note == null ? string.Empty: prodDataTable[0].Note;

            grvProductInOutDetail.DataSource = getProductInOutDetailTableAdapter.GetProductInOutDetailByProductId(productId, storeId);
            FormatProductInOutDetailGridview();

            panelPicture.Controls.Clear();
            if (imageUrls != null)
            {
                string[] imglinks = imageUrls.Split(',');
                if (!imageUrls.Contains(","))
                {
                    imglinks.SetValue(imageUrls, 0);
                }

                int p = -80;
                foreach (var link in imglinks)
                {
                    if (link.Equals(imglinks[0]))
                    {
                        p += 80;
                        WebRequest req = WebRequest.Create(link);

                        WebResponse res = req.GetResponse();

                        Stream imgStream = res.GetResponseStream();

                        Image img1 = Image.FromStream(imgStream);

                        imgStream.Close();
                        PictureBox pic = new PictureBox();
                        pic.Click   += pic_Click;
                        pic.Height   = 80;
                        pic.Width    = 80;
                        pic.Image    = img1;
                        pic.SizeMode = PictureBoxSizeMode.StretchImage;
                        pic.Location = new Point(p, 0);
                        panelPicture.Controls.Add(pic);
                    }
                }
            }
        }
        private void btOK_Click(object sender, EventArgs e)
        {
            productTableAdapter            = new JSManagementDataSetTableAdapters.ProductTableAdapter();
            productTableAdapter.Connection = CommonHelper.GetSQLConnection();

            FormCollection fc = Application.OpenForms;
            Form           productInputForm         = new Form();
            Form           purchaseReceiptOrderForm = new Form();

            foreach (Form f in fc)
            {
                if (f.Name == "productInputForm")
                {
                    productInputForm = f;
                }

                if (f.Name == "ProductSearchForm")
                {
                    Application.OpenForms["ProductSearchForm"].Close();
                }

                if (f.Name == "PurchaseReceiptOrderForm")
                {
                    purchaseReceiptOrderForm = f;
                }
            }
            if (isWorkingOnOutputOrder)
            {
                DataGridView grvProducts  = purchaseReceiptOrderForm.Controls.Find("grvProducts", true)[0] as DataGridView;
                int          currentIndex = grvProducts.CurrentCell.RowIndex;

                for (int i = 0; i < checkedListBoxSize.CheckedItems.Count; i++)
                {
                    DataRowView     castedItem = checkedListBoxSize.CheckedItems[i] as DataRowView;
                    DataGridViewRow row;
                    object          productId = castedItem["ProductId"];
                    JSManagementDataSet.ProductDataTable prodData = productTableAdapter.GetDataByProductId(int.Parse(productId.ToString()));

                    if (i != 0)
                    {
                        row = (DataGridViewRow)grvProducts.Rows[0].Clone();
                        grvProducts.NotifyCurrentCellDirty(true);
                        grvProducts.Rows.Insert(currentIndex + i, row);
                    }

                    grvProducts.Rows[currentIndex + i].Cells[Constant.ProductOutputColumnName.PRODUCT_CODE].Value    = prodData[0].ProductCode;
                    grvProducts.Rows[currentIndex + i].Cells[Constant.ProductOutputColumnName.PRODUCT_TYPE].Value    = prodData[0].ProductType;
                    grvProducts.Rows[currentIndex + i].Cells[Constant.ProductOutputColumnName.PRODUCT_TYPE].ReadOnly = true;
                    grvProducts.Rows[currentIndex + i].Cells[Constant.ProductOutputColumnName.BRAND].Value           = prodData[0].Brand;
                    grvProducts.Rows[currentIndex + i].Cells[Constant.ProductOutputColumnName.BRAND].ReadOnly        = true;
                    grvProducts.Rows[currentIndex + i].Cells[Constant.ProductOutputColumnName.SIZE].Value            = prodData[0].Size;
                    grvProducts.Rows[currentIndex + i].Cells[Constant.ProductOutputColumnName.SIZE].ReadOnly         = true;
                    grvProducts.Rows[currentIndex + i].Cells[Constant.ProductOutputColumnName.QUANTITY].Value        = Setting.GetIntergerSetting("ProductOutputQuantity") == 0 ? 1 : Setting.GetIntergerSetting("ProductInputQuantity");

                    grvProducts.Rows[currentIndex + i].Cells[Constant.ProductOutputColumnName.PRICE].Value = prodData[0].Price;
                    if (this.OutputTypeCode == Constant.OutputType.XTH)
                    {
                        if (LoginInfor.IsAdmin || Setting.GetBoolSetting(Constant.Setting.ALLOW_USER_VIEW_ALL_COST))
                        {
                            grvProducts.Rows[currentIndex + i].Cells[Constant.ProductOutputColumnName.SOLD_PRICE].Value = prodData[0].ProductCost;
                        }
                        else
                        {
                            grvProducts.Rows[currentIndex + i].Cells[Constant.ProductOutputColumnName.SOLD_PRICE].Value = 0;
                        }
                    }

                    grvProducts.Rows[currentIndex + i].Cells[Constant.ProductOutputColumnName.PRODUCT_ID].Value    = productId;
                    grvProducts.Rows[currentIndex + i].Cells[Constant.ProductOutputColumnName.PRODUCT_ID].ReadOnly = true;
                }
            }

            if (isWorkingOnInputOrder)
            {
                DataGridView grvProducts  = productInputForm.Controls.Find("grvProducts", true)[0] as DataGridView;
                int          currentIndex = grvProducts.CurrentCell.RowIndex;

                for (int i = 0; i < checkedListBoxSize.CheckedItems.Count; i++)
                {
                    DataRowView castedItem = checkedListBoxSize.CheckedItems[i] as DataRowView;
                    decimal     cost       = 0;
                    int         quantity   = 1;
                    if (i == 0)
                    {
                        grvProducts.Rows[currentIndex].Cells[Constant.ProductInputColumnName.PRODUCT_CODE].Value    = lbProductCode.Text;
                        grvProducts.Rows[currentIndex].Cells[Constant.ProductInputColumnName.PRODUCT_TYPE].Value    = lbProductType.Text;
                        grvProducts.Rows[currentIndex].Cells[Constant.ProductInputColumnName.PRODUCT_TYPE].ReadOnly = true;
                        grvProducts.Rows[currentIndex].Cells[Constant.ProductInputColumnName.BRAND].Value           = lbBrand.Text;
                        grvProducts.Rows[currentIndex].Cells[Constant.ProductInputColumnName.BRAND].ReadOnly        = true;
                        grvProducts.Rows[currentIndex].Cells[Constant.ProductInputColumnName.SIZE].Value            = castedItem["Size"];
                        grvProducts.Rows[currentIndex].Cells[Constant.ProductInputColumnName.SIZE].ReadOnly         = true;
                        grvProducts.Rows[currentIndex].Cells[Constant.ProductInputColumnName.QUANTITY].Value        = Setting.GetIntergerSetting("ProductInputQuantity") == 0 ? 1 : Setting.GetIntergerSetting("ProductInputQuantity");
                        quantity = (int)grvProducts.Rows[currentIndex].Cells[Constant.ProductInputColumnName.QUANTITY].Value;
                        grvProducts.Rows[currentIndex].Cells[Constant.ProductInputColumnName.PRODUCT_ID].Value    = castedItem["ProductId"];
                        grvProducts.Rows[currentIndex].Cells[Constant.ProductInputColumnName.PRODUCT_ID].ReadOnly = true;
                        if (Setting.GetBoolSetting(Constant.Setting.ALLOW_USER_VIEW_ALL_COST) || LoginInfor.IsAdmin)
                        {
                            cost = productTableAdapter.GetDataByProductId(int.Parse(castedItem["ProductId"].ToString()))[0].ProductCost;
                        }
                        grvProducts.Rows[currentIndex].Cells[Constant.ProductInputColumnName.COST].Value   = cost;
                        grvProducts.Rows[currentIndex].Cells[Constant.ProductInputColumnName.AMOUNT].Value = quantity * cost;
                    }
                    else
                    {
                        DataGridViewRow row = (DataGridViewRow)grvProducts.Rows[0].Clone();
                        grvProducts.NotifyCurrentCellDirty(true);
                        grvProducts.Rows.Insert(currentIndex + i, row);
                        row.Cells[Constant.ProductInputColumnName.PRODUCT_CODE].Value    = lbProductCode.Text;
                        row.Cells[Constant.ProductInputColumnName.PRODUCT_TYPE].Value    = lbProductType.Text;
                        row.Cells[Constant.ProductInputColumnName.PRODUCT_TYPE].ReadOnly = true;
                        row.Cells[Constant.ProductInputColumnName.BRAND].Value           = lbBrand.Text;
                        row.Cells[Constant.ProductInputColumnName.BRAND].ReadOnly        = true;
                        row.Cells[Constant.ProductInputColumnName.SIZE].Value            = castedItem["Size"];
                        row.Cells[Constant.ProductInputColumnName.SIZE].ReadOnly         = true;
                        row.Cells[Constant.ProductInputColumnName.QUANTITY].Value        = Setting.GetIntergerSetting("ProductInputQuantity") == 0 ? 1 : Setting.GetIntergerSetting("ProductInputQuantity");
                        row.Cells[Constant.ProductInputColumnName.PRODUCT_ID].Value      = castedItem["ProductId"];
                        row.Cells[Constant.ProductInputColumnName.PRODUCT_ID].ReadOnly   = true;
                        if (Setting.GetBoolSetting(Constant.Setting.ALLOW_USER_VIEW_ALL_COST) || LoginInfor.IsAdmin)
                        {
                            cost = productTableAdapter.GetDataByProductId(int.Parse(castedItem["ProductId"].ToString()))[0].ProductCost;
                        }
                        row.Cells[Constant.ProductInputColumnName.COST].Value   = cost;
                        row.Cells[Constant.ProductInputColumnName.AMOUNT].Value = quantity * cost;
                    }
                }
            }
            this.Close();
        }