示例#1
0
 private void btnSave_Click(object sender, EventArgs e)
 {
     save();
     CurrentCost  = new C_CostModel();
     txtCode.Text = "";
     txtName.Text = "";
     loadProductGroup();
 }
示例#2
0
        void resetAll()
        {
            grvLink.FocusedRowHandle = -1;
            decimal totalNC = 0;
            string  sql     = "update C_QuotationDetail set TotalNC = 0 where C_QuotationID = " + C_QuotationID;

            LibQLSX.ExcuteSQL(sql);
            using (WaitDialogForm fWait = new WaitDialogForm("Vui lòng chờ trong giây lát...", "Đang xử lý..."))
            {
                for (int i = 0; i < grvLink.RowCount; i++)
                {
                    int id = TextUtils.ToInt(grvLink.GetRowCellValue(i, colID));
                    if (id == 0)
                    {
                        return;
                    }

                    int costID            = TextUtils.ToInt(grvLink.GetRowCellValue(i, colC_CostID));
                    int quotationDetailID = TextUtils.ToInt(grvLink.GetRowCellValue(i, colC_QuotationDetailID));
                    C_QuotationDetailModel quotationDetail = (C_QuotationDetailModel)C_QuotationDetailBO.Instance.FindByPK(quotationDetailID);
                    C_CostModel            cost            = (C_CostModel)C_CostBO.Instance.FindByPK(costID);

                    C_CostProductGroupLinkModel group = (C_CostProductGroupLinkModel)C_CostProductGroupLinkBO.Instance.FindByExpression(new Expression("C_CostID", cost.ID)
                                                                                                                                        .And(new Expression("C_ProductGroupID", quotationDetail.C_ProductGroupID)))[0];

                    decimal pricePerDay = TextUtils.ToDecimal(grvLink.GetRowCellValue(i, colPricePerDay));
                    decimal qty         = TextUtils.ToDecimal(grvLink.GetRowCellValue(i, colQty));

                    C_CostQuotationItemLinkModel link = (C_CostQuotationItemLinkModel)C_CostQuotationItemLinkBO.Instance.FindByPK(id);
                    link.PersonNumber = group.PersonNumber;// TextUtils.ToDecimal(drs[0]["PersonNumber"]);
                    if (group.IsFix == 1)
                    {
                        link.NumberDay = group.NumberDay;// TextUtils.ToDecimal(drs[0]["NumberDay"]);
                    }
                    else
                    {
                        link.NumberDay = group.VtuPercent * quotationDetail.PriceVT / cost.Price;
                    }
                    link.TotalR = link.NumberDay * link.PersonNumber;
                    if (cost.ID == 61)//phòng thiết kế
                    {
                        link.TotalR *= (1 + 0.3M * (quotationDetail.Qty - 1)) / quotationDetail.Qty;
                    }
                    link.Price = link.TotalR * cost.Price;
                    C_CostQuotationItemLinkBO.Instance.Update(link);

                    quotationDetail.TotalNC += link.Price;
                    C_QuotationDetailBO.Instance.Update(quotationDetail);
                }
                IsSaved = true;
            }
            MessageBox.Show("Reset thành công.", TextUtils.Caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
示例#3
0
        private void btnDel_Click(object sender, EventArgs e)
        {
            try
            {
                if (grvData.DataSource == null)
                {
                    return;
                }
                int    id   = TextUtils.ToInt(grvData.GetFocusedRowCellValue(colID));
                string code = grvData.GetFocusedRowCellValue(colCode).ToString();
                if (id == 0)
                {
                    return;
                }

                //if (C_CostProductGroupLinkBO.Instance.CheckExist("C_CostID", id))
                //{
                //    MessageBox.Show("Chi phí này đang liên kết với nghành hàng nên không thể xóa được.", TextUtils.Caption, MessageBoxButtons.OK, MessageBoxIcon.Stop);
                //    return;
                //}

                if (C_CostQuotationItemLinkBO.Instance.CheckExist("C_CostID", id))
                {
                    MessageBox.Show("Chi phí này đang liên kết với thiết bị nên không thể xóa được.", TextUtils.Caption, MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    return;
                }

                if (MessageBox.Show("Bạn có chắc muốn xóa chi phí [" + grvData.GetFocusedRowCellValue(colName).ToString() + "] không?",
                                    TextUtils.Caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                {
                    return;
                }

                //ModulesBO.Instance.Delete(id);
                C_CostModel model = (C_CostModel)C_CostBO.Instance.FindByPK(id);
                model.IsDeleted = true;
                C_CostBO.Instance.Update(model);

                LibQLSX.ExcuteSQL("delete C_CostProductGroupLink where C_CostID = " + id);
                LibQLSX.ExcuteSQL("delete C_CostQuotationLink where C_CostID = " + id);

                LoadInfoSearch();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, TextUtils.Caption, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
示例#4
0
        public static decimal CalculateCostPB(C_QuotationDetailModel item, C_QuotationModel thisQotation, decimal price)
        {
            decimal   totalPB            = 0;
            ArrayList arr                = C_CostBO.Instance.FindByExpression(new Expression("IsUse", 1).And(new Expression("IsWithProject", 0)).And(new Expression("IsDirectCost", 0)));
            DataTable dtCostProductGroup = LibQLSX.Select("select * from vC_CostProductGroupLink where [C_ProductGroupID] = " + item.C_ProductGroupID);

            foreach (var c in arr)
            {
                C_CostModel cost = (C_CostModel)c;
                DataRow[]   drs  = dtCostProductGroup.Select("C_CostID = " + cost.ID);
                if (drs.Length == 0)
                {
                    continue;
                }
                C_CostQuotationItemLinkModel link = new C_CostQuotationItemLinkModel();

                ArrayList arrLink = C_CostQuotationItemLinkBO.Instance.FindByExpression(new Expression("C_CostID", cost.ID).And(new Expression("C_QuotationDetailID", item.ID)));
                if (arrLink != null && arrLink.Count > 0)
                {
                    link = (C_CostQuotationItemLinkModel)arrLink[0];
                }

                link.C_CostID            = cost.ID;
                link.C_QuotationDetailID = item.ID;
                link.IsDirect            = cost.IsDirectCost;
                if (link.IsDirect == 0)
                {
                    decimal valuePercent = TextUtils.ToDecimal(drs[0]["ValuePercent"]);

                    link.Price = valuePercent * item.Qty * price;
                    if (cost.IsDeliveryTime == 1)
                    {
                        link.Price *= thisQotation.DeliveryTime / 288;
                    }

                    if (cost.ID == 72 || cost.ID == 73)
                    {
                        if (cost.ID != thisQotation.DepartmentId)
                        {
                            link.Price = 0;
                        }
                    }
                    totalPB += link.Price;
                }
            }
            return(totalPB);
        }
示例#5
0
        private void resetToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int id = TextUtils.ToInt(grvLink.GetFocusedRowCellValue(colID));

            if (id == 0)
            {
                return;
            }

            int costID            = TextUtils.ToInt(grvLink.GetFocusedRowCellValue(colC_CostID));
            int quotationDetailID = TextUtils.ToInt(grvLink.GetFocusedRowCellValue(colC_QuotationDetailID));
            C_QuotationDetailModel quotationDetail = (C_QuotationDetailModel)C_QuotationDetailBO.Instance.FindByPK(quotationDetailID);
            C_CostModel            cost            = (C_CostModel)C_CostBO.Instance.FindByPK(costID);

            C_CostProductGroupLinkModel group = (C_CostProductGroupLinkModel)C_CostProductGroupLinkBO.Instance.FindByExpression(new Expression("C_CostID", cost.ID)
                                                                                                                                .And(new Expression("C_ProductGroupID", quotationDetail.C_ProductGroupID)))[0];

            decimal pricePerDay = TextUtils.ToDecimal(grvLink.GetFocusedRowCellValue(colPricePerDay));
            decimal qty         = TextUtils.ToDecimal(grvLink.GetFocusedRowCellValue(colQty));

            C_CostQuotationItemLinkModel link = (C_CostQuotationItemLinkModel)C_CostQuotationItemLinkBO.Instance.FindByPK(id);

            quotationDetail.TotalNC -= link.Price;
            link.PersonNumber        = group.PersonNumber;// TextUtils.ToDecimal(drs[0]["PersonNumber"]);
            if (group.IsFix == 1)
            {
                link.NumberDay = group.NumberDay;// TextUtils.ToDecimal(drs[0]["NumberDay"]);
            }
            else
            {
                link.NumberDay = group.VtuPercent * quotationDetail.PriceVT / cost.Price;
            }
            link.TotalR = link.NumberDay * link.PersonNumber;
            if (cost.ID == 61)//phòng thiết kế
            {
                link.TotalR *= (1 + 0.3M * (quotationDetail.Qty - 1)) / quotationDetail.Qty;
            }
            link.Price = link.TotalR * cost.Price;
            C_CostQuotationItemLinkBO.Instance.Update(link);

            quotationDetail.TotalNC += link.Price;
            C_QuotationDetailBO.Instance.Update(quotationDetail);
            loadData();
            MessageBox.Show("Reset thành công.", TextUtils.Caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
示例#6
0
        private void btnEdit_Click(object sender, EventArgs e)
        {
            int id = TextUtils.ToInt(grvData.GetFocusedRowCellValue(colID));

            if (id == 0)
            {
                return;
            }
            C_CostModel model = (C_CostModel)C_CostBO.Instance.FindByPK(id);
            int         catId = TextUtils.ToInt(grvData.GetFocusedRowCellValue(colGroup));

            _rownIndex = grvData.FocusedRowHandle;

            frmCCost frm = new frmCCost();

            frm.CatID           = catId;
            frm.CurrentCost     = model;
            frm.LoadDataChange += main_LoadDataChange;
            frm.Show();
        }
示例#7
0
 protected C_CostFacade(C_CostModel model) : base(model)
 {
 }
        void calculateCost(C_QuotationDetailModel item, decimal costVT)
        {
            if (item.C_ProductGroupID == 0)
            {
                C_CostQuotationItemLinkBO.Instance.DeleteByAttribute("C_QuotationDetailID", item.ID);
                item.TotalNC = 0;
                item.TotalPB = 0;
                C_QuotationDetailBO.Instance.Update(item);
            }
            else
            {
                //decimal priceThucThu = (item.PriceHD - Quotation.CustomerPercent / 100 * item.PriceHD - Quotation.CustomerCash * item.PriceVT / costVT);

                ArrayList arr = C_CostBO.Instance.FindByExpression(new Expression("IsUse", 1).And(new Expression("IsWithProject", 0)));
                DataTable dtCostProductGroup = LibQLSX.Select("select * from vC_CostProductGroupLink where [C_ProductGroupID] = " + item.C_ProductGroupID);
                decimal   totalNC            = 0;
                decimal   totalPB            = 0;
                foreach (var c in arr)
                {
                    C_CostModel cost = (C_CostModel)c;
                    DataRow[]   drs  = dtCostProductGroup.Select("C_CostID = " + cost.ID);
                    if (drs.Length == 0)
                    {
                        continue;
                    }
                    C_CostQuotationItemLinkModel link = new C_CostQuotationItemLinkModel();

                    ArrayList arrLink = C_CostQuotationItemLinkBO.Instance.FindByExpression(new Expression("C_CostID", cost.ID).And(new Expression("C_QuotationDetailID", item.ID)));
                    if (arrLink != null && arrLink.Count > 0)
                    {
                        link = (C_CostQuotationItemLinkModel)arrLink[0];
                    }

                    link.C_CostID            = cost.ID;
                    link.C_QuotationDetailID = item.ID;
                    link.IsDirect            = cost.IsDirectCost;
                    if (link.IsDirect == 1)
                    {
                        #region Chi phí nhân công
                        if (link.ID == 0)
                        {
                            if (cost.Price == 0)
                            {
                                link.Price = 0;
                            }
                            else
                            {
                                link.PersonNumber = TextUtils.ToDecimal(drs[0]["PersonNumber"]);
                                int isFix = TextUtils.ToInt(drs[0]["IsFix"]);
                                if (isFix == 1)
                                {
                                    link.NumberDay = TextUtils.ToDecimal(drs[0]["NumberDay"]);
                                }
                                else
                                {
                                    link.NumberDay = TextUtils.ToDecimal(drs[0]["VtuPercent"]) * item.PriceVT / cost.Price;
                                }
                                link.TotalR = link.NumberDay * link.PersonNumber;
                                if (cost.ID == 61)//phòng thiết kế
                                {
                                    link.TotalR = link.NumberDay * link.PersonNumber * (1 + 0.3M * (item.Qty - 1)) / item.Qty;
                                    //link.Price = (link.NumberDay * link.PersonNumber) * (1 + 0.3M * (item.Qty - 1)) / item.Qty * cost.Price;
                                }
                                link.Price = link.TotalR * cost.Price;
                            }
                        }

                        totalNC += link.Price;
                        #endregion
                    }
                    else
                    {
                        #region Chi phí phân bổ
                        if (item.PriceHD > 0)
                        {
                            decimal valuePercent = TextUtils.ToDecimal(drs[0]["ValuePercent"]);

                            link.Price = valuePercent / 100 * item.PriceReal;
                            if (cost.IsDeliveryTime == 1)
                            {
                                link.Price *= Quotation.DeliveryTime / 288;
                            }

                            if (cost.ID == 72 || cost.ID == 73)
                            {
                                if (cost.ID != Quotation.DepartmentId)
                                {
                                    link.Price = 0;
                                }
                            }
                            totalPB += link.Price;
                        }
                        #endregion
                    }

                    if (link.ID == 0)
                    {
                        C_CostQuotationItemLinkBO.Instance.Insert(link);
                    }
                    else
                    {
                        C_CostQuotationItemLinkBO.Instance.Update(link);
                    }

                    item.TotalNC = totalNC;
                    item.TotalPB = totalPB;
                    C_QuotationDetailBO.Instance.Update(item);
                }
            }
        }
示例#9
0
        void calculateCost(C_QuotationDetail_SXModel item)
        {
            int costID = (Quotation.DepartmentId == "D018" ? 73 : 72);//Phòng KD1->lấy ra chi phí nhân công KD2 không thì lấy chi phí nhân công KD1

            if (item.C_ProductGroupID == 0)
            {
                C_CostQuotationItemLinkNewBO.Instance.DeleteByAttribute("C_QuotationDetail_SXID", item.ID);
                item.TotalNC = 0;
                item.TotalPB = 0;
                C_QuotationDetail_SXBO.Instance.Update(item);
            }
            else
            {
                ArrayList arr = C_CostBO.Instance.FindByExpression(new Expression("IsUse", 1).And(new Expression("IsWithProject", 0)));
                DataTable dtCostProductGroup = LibQLSX.Select("select * from vC_CostProductGroupLinkNew where [C_ProductGroupID] = " + item.C_ProductGroupID);
                decimal   totalNC            = 0;
                decimal   totalPB            = 0;
                foreach (var c in arr)
                {
                    C_CostModel cost = (C_CostModel)c;
                    DataRow[]   drs  = dtCostProductGroup.Select("C_CostID = " + cost.ID);
                    if (drs.Length == 0)
                    {
                        continue;
                    }
                    C_CostQuotationItemLinkNewModel link = new C_CostQuotationItemLinkNewModel();

                    ArrayList arrLink = C_CostQuotationItemLinkNewBO.Instance.FindByExpression(new Expression("C_CostID", cost.ID).And(new Expression("C_QuotationDetail_SXID", item.ID)));
                    if (arrLink != null && arrLink.Count > 0)
                    {
                        link = (C_CostQuotationItemLinkNewModel)arrLink[0];
                    }

                    link.C_CostID = cost.ID;
                    link.C_QuotationDetail_SXID = item.ID;
                    link.IsDirect = cost.IsDirectCost;
                    if (link.IsDirect == 1)
                    {
                        #region Chi phí nhân công
                        if (link.ID == 0)
                        {
                            if (cost.Price == 0)
                            {
                                link.Price = 0;
                            }
                            else
                            {
                                link.PersonNumber = TextUtils.ToDecimal(drs[0]["PersonNumber"]);
                                int isFix = TextUtils.ToInt(drs[0]["IsFix"]);
                                if (isFix == 1)
                                {
                                    link.NumberDay = TextUtils.ToDecimal(drs[0]["NumberDay"]);
                                }
                                else
                                {
                                    link.NumberDay = TextUtils.ToDecimal(drs[0]["VtuPercent"]) * item.PriceVT / cost.Price;
                                }
                                link.TotalR = link.NumberDay * link.PersonNumber;
                                if (cost.ID == 61)//phòng thiết kế
                                {
                                    link.TotalR = link.NumberDay * link.PersonNumber * (1 + 0.3M * (item.Qty - 1)) / item.Qty;
                                    //link.Price = (link.NumberDay * link.PersonNumber) * (1 + 0.3M * (item.Qty - 1)) / item.Qty * cost.Price;
                                }
                                link.Price = link.TotalR * cost.Price;
                            }
                        }

                        totalNC += link.Price;
                        #endregion
                    }
                    else
                    {
                        #region Chi phí phân bổ
                        if (item.PriceHD > 0)
                        {
                            decimal valuePercent = TextUtils.ToDecimal(drs[0]["ValuePercentSX"]);

                            link.Price = valuePercent / 100 * item.PriceTPA;

                            if (link.C_CostID == costID)
                            {
                                link.Price = 0;
                            }
                            else
                            {
                                //link.Price = TextUtils.ToDecimal(row["ValuePercentSX"]) / 100 * item.PriceTPA;
                            }
                        }
                        #endregion
                    }

                    if (link.ID == 0)
                    {
                        C_CostQuotationItemLinkNewBO.Instance.Insert(link);
                    }
                    else
                    {
                        C_CostQuotationItemLinkNewBO.Instance.Update(link);
                    }

                    item.TotalNC = totalNC;
                    item.TotalPB = totalPB;
                    C_QuotationDetail_SXBO.Instance.Update(item);
                }
            }
        }