Exemplo n.º 1
0
        void View_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            if (e.Column.FieldName.ToUpper() != "MAVT" || e.Value == null)
            {
                return;
            }
            RepositoryItemGridLookUpEdit riGlu = e.Column.ColumnEdit as RepositoryItemGridLookUpEdit;
            int i = riGlu.GetIndexByKeyValue(e.Value);

            if (i < 0)
            {
                return;
            }
            if (riGlu.View.Columns["Tonkho"] == null)
            {
                return;
            }
            GridView gvMain = (_data.FrmMain.Controls.Find("gcMain", true)[0] as GridControl).MainView as GridView;
            int      tonKho = Int32.Parse(riGlu.View.GetRowCellValue(i, riGlu.View.Columns["Tonkho"]).ToString());

            if (gvMain.Columns["Gia"] != null)
            {
                gvMain.Columns["Gia"].OptionsColumn.AllowEdit = (tonKho == 5);
            }
            if (gvMain.Columns["GiaNT"] != null)
            {
                gvMain.Columns["GiaNT"].OptionsColumn.AllowEdit = (tonKho == 5);
            }
            if (gvMain.Columns["Ps"] != null)
            {
                gvMain.Columns["Ps"].OptionsColumn.AllowEdit = (tonKho == 5);
            }
            if (gvMain.Columns["PsNT"] != null)
            {
                gvMain.Columns["PsNT"].OptionsColumn.AllowEdit = (tonKho == 5);
            }
            if (gvMain.Columns["GiaVon"] != null)
            {
                gvMain.Columns["GiaVon"].OptionsColumn.AllowEdit = (tonKho == 5);
            }
            if (gvMain.Columns["TienVon"] != null)
            {
                gvMain.Columns["TienVon"].OptionsColumn.AllowEdit = (tonKho == 5);
            }
        }
Exemplo n.º 2
0
        //cập nhật NVKD khi chọn mặt hàng
        //        private void LayNVKD2(DataRow drCT)
        //        {
        //            RepositoryItemGridLookUpEdit gluHH = gcMain.RepositoryItems["Description"] as RepositoryItemGridLookUpEdit;
        //            if (gluHH.OwnerEdit != null && gluHH.OwnerEdit.IsPopupOpen)
        //                return;
        //            if (gluKH.EditValue == null || gluKH.EditValue.ToString() == "")
        //                return;
        //            BindingSource bs = gluKH.Properties.DataSource as BindingSource;
        //            if (bs == null || bs.DataSource.GetType() != typeof(DataTable))
        //                return;
        //            DataTable dt = bs.DataSource as DataTable;
        //            DataRow[] drs = dt.Select("MaKH = '" + gluKH.EditValue.ToString() + "'");
        //            if (drs.Length == 0)
        //                return;
        //            DataRow drKH = drs[0];
        //            if (drKH == null)
        //                return;
        //            string pl = drKH["Nhom1"].ToString();
        //            if (pl == "")
        //            {
        //                XtraMessageBox.Show("Khách hàng này chưa phân loại, không thể tính doanh số cho salesman!",
        //                    Config.GetValue("PackageName").ToString(), MessageBoxButtons.OK);
        //                drCT["NVKD"] = DBNull.Value;
        //                return;
        //            }
        //            string kv = drKH["KhuVuc"].ToString();
        //            if (kv == "")
        //            {
        //                XtraMessageBox.Show("Khách hàng này chưa phân khu vực, không thể tính doanh số cho salesman!",
        //                    Config.GetValue("PackageName").ToString(), MessageBoxButtons.OK);
        //                drCT["NVKD"] = DBNull.Value;
        //                return;
        //            }
        //            object mahh = drCT["Description"];
        //            bs = gluHH.DataSource as BindingSource;
        //            if (bs == null || bs.DataSource.GetType() != typeof(DataTable))
        //                return;
        //            dt = bs.DataSource as DataTable;
        //            drs = dt.Select("PNo = '" + mahh.ToString() + "'");
        //            if (drs.Length == 0)
        //                return;
        //            DataRow drHH = drs[0];
        //            string nhom = drHH["Nhom"].ToString();
        //            if (nhom == "")
        //            {
        //                XtraMessageBox.Show("Mặt hàng " + drHH["TenVT2"].ToString() + " chưa phân nhóm, không thể tính doanh số cho salesman!",
        //                    Config.GetValue("PackageName").ToString(), MessageBoxButtons.OK);
        //                drCT["NVKD"] = DBNull.Value;
        //                return;
        //            }
        //            dt = db.GetDataTable(string.Format(@"select MaNV from NVKDTheoKV where (DMTP like '{0},%' or DMTP like '%,{0}' or DMTP like '%,{0},%' or DMTP = '{0}') 
        //                    and (NhomKH like '{1},%' or NhomKH like '%,{1}' or NhomKH like '%,{1},%' or NhomKH = '{1}')
        //                    and (NhomVT like '{2},%' or NhomVT like '%,{2}' or NhomVT like '%,{2},%' or NhomVT = '{2}')", kv, pl, nhom));
        //            if (dt.Rows.Count == 0)
        //            {
        //                XtraMessageBox.Show(string.Format("Khu vực {0}, loại khách hàng {1} và nhóm hàng {2} hiện chưa phân sales", kv, pl, nhom),
        //                    Config.GetValue("PackageName").ToString());
        //                drCT["NVKD"] = DBNull.Value;
        //                return;
        //            }
        //            if (dt.Rows.Count > 1)
        //            {
        //                XtraMessageBox.Show(string.Format("Khu vực {0}, loại khách hàng {1} và nhóm hàng {2} hiện đang phân nhiều sales cùng lúc", kv, pl, nhom),
        //                    Config.GetValue("PackageName").ToString());
        //                drCT["NVKD"] = DBNull.Value;
        //                return;
        //            }
        //            drCT["NVKD"] = dt.Rows[0]["MaNV"];
        //        }

        //tính khi thay đổi hàng hóa hoặc phụ kiện
        private void TinhGiaCoDinh2(DataRow drCT, string cl)
        {
            RepositoryItemGridLookUpEdit gluHH = gcMain.RepositoryItems[cl] as RepositoryItemGridLookUpEdit;
            RepositoryItemGridLookUpEdit gluPK = gcMain.RepositoryItems["MaVT2"] as RepositoryItemGridLookUpEdit;
            if (gluHH.OwnerEdit != null && gluHH.OwnerEdit.IsPopupOpen)
                return;
            if (gluKH.EditValue == null || gluKH.EditValue.ToString() == "")
            {
                XtraMessageBox.Show("Chưa chọn khách hàng, không thể lấy được giá bán!",
                    Config.GetValue("PackageName").ToString(), MessageBoxButtons.OK);
                return;
            }
            //int n = gluKH.Properties.GetIndexByKeyValue(gluKH.EditValue);
            //if (n < 0)
            //    return;
            BindingSource bs = gluKH.Properties.DataSource as BindingSource;
            if (bs == null || bs.DataSource.GetType() != typeof(DataTable))
                return;
            DataTable dt = bs.DataSource as DataTable;
            DataRow[] drs = dt.Select("MaKH = '" + gluKH.EditValue.ToString() + "'");
            if (drs.Length == 0)
                return;
            DataRow drKH = drs[0];
            if (drKH == null)
                return;
            string pl = drKH["Nhom1"].ToString();
            if (pl == "")
            {
                XtraMessageBox.Show("Khách hàng này chưa phân loại, không thể lấy được giá bán cho khách hàng này!",
                    Config.GetValue("PackageName").ToString(), MessageBoxButtons.OK);
                return;
            }
            object mahh = drCT[cl];
            //object code = drCT["Description"];
            bs = gluHH.DataSource as BindingSource;
            if (bs == null || bs.DataSource.GetType() != typeof(DataTable))
                return;
            dt = bs.DataSource as DataTable;
            drs = dt.Select("MaVT = '" + mahh.ToString() + "' or PNo = '" + mahh.ToString() + "'");
            if (drs.Length == 0)
                return;
            DataRow drHH = drs[0];
            string nhom = drHH["Nhom"].ToString();
            if (nhom == "")
                XtraMessageBox.Show("Mặt hàng " + drHH["TenVT2"].ToString() + " chưa phân nhóm, có thể ảnh hưởng đến cách tính giá bán!",
                    Config.GetValue("PackageName").ToString(), MessageBoxButtons.OK);
            object mapk = drCT["MaVT2"];
            int k = gluPK.GetIndexByKeyValue(mapk);
            DataRow drPK = null;
            if (k >= 0)
                drPK = gluPK.View.GetDataRow(k);
            object ghh, gpk;
            switch (pl)
            {
                case "OEM":
                case "TRA":
                    ghh = drHH == null ? 0 : drHH["GiaOME"];
                    gpk = drPK == null ? 0 : drPK["GiaOME"];
                    break;
                case "DIS":
                    ghh = drHH == null ? 0 : drHH["GiaDTB"];
                    gpk = drPK == null ? 0 : drPK["GiaDTB"];
                    break;
                default:
                    ghh = drHH == null ? 0 : drHH["GiaBan"];
                    gpk = drPK == null ? 0 : drPK["GiaBan"];
                    break;
            }
            if (cl == "Description")
            {
                string dvt = drCT["MaDVT"].ToString();
                if (dvt == "")      //chua co dvt thi chua tinh gia ban
                    return;
                drCT["GiaGoc"] = ghh;
                decimal gg = decimal.Parse(drCT["GiaGoc"].ToString());
                #region Cách tính cũ
                //if (drHH["MaDVT"].ToString() != "7") //mã của dvt m2
                //    drCT["Gia"] = gg;
                //else
                //{
                //    decimal r = decimal.Parse(drCT["Rong"].ToString());
                //    decimal d = decimal.Parse(drCT["Cao"].ToString());
                //    if (nhom == "HPFB" || nhom == "SB")
                //        drCT["Gia"] = r == 0 ? gg : (r * (d + 100) / 1000000) * gg;
                //    else
                //        drCT["Gia"] = r == 0 ? gg : (r * d / 1000000) * gg;
                //}
                #endregion
                decimal sl = decimal.Parse(drCT["SoLuong"].ToString());
                if (nhom == "FB" || nhom == "SB")
                {
                    decimal d = decimal.Parse(drCT["Cao"].ToString());
                    decimal r = decimal.Parse(drCT["Rong"].ToString());
                    decimal t = Convert.ToDecimal(drCT["PE"]) + Convert.ToDecimal(drCT["HS"]) + Convert.ToDecimal(drCT["AT"]);
                    if (t > 0)
                        d = (nhom == "SB") ? d + 120 : d + 80;
                    if (dvt == "7")   //m2
                    {
                        drCT["Ps"] = (d * r) / 1000000 * gg;
                        if (sl > 0)
                            drCT["Gia"] = Convert.ToDecimal(drCT["Ps"]) / sl;
                        else
                            drCT["Gia"] = 0;
                    }
                    else
                        if (dvt == "10")  //m
                        {
                            drCT["Ps"] = (d * r) / 1000000 * gg;
                            if (d > 0)
                                drCT["Gia"] = Convert.ToDecimal(drCT["Ps"]) / d * 1000;
                            else
                                drCT["Gia"] = 0;
                        }
                        else
                        {
                            drCT["Ps"] = (d * r) / 1000000 * gg * sl;
                            if (sl > 0)
                                drCT["Gia"] = Convert.ToDecimal(drCT["Ps"]) / sl;
                            else
                                drCT["Gia"] = 0;
                        }
                }
                else
                {
                    drCT["Gia"] = gg;
                    drCT["Ps"] = decimal.Parse(drCT["Gia"].ToString()) * sl;
                }
            }
            else
            {
                drCT["DGPKGoc"] = gpk;
                decimal gg = decimal.Parse(drCT["DGPKGOC"].ToString());
                if (drPK["MaDVT"].ToString() != "7") //mã của dvt m2
                    drCT["DGPK"] = gg;
                else
                {
                    decimal r = decimal.Parse(drCT["RongPK"].ToString());
                    decimal d = decimal.Parse(drCT["CaoPK"].ToString());
                    drCT["DGPK"] = r == 0 ? gg : (r * d / 1000000) * gg;
                }
            }
        }