コード例 #1
0
        void save()
        {
            //grvLink.ClearColumnsFilter(); * (1 + 0.3M * (item.Qty >= 2 ? item.Qty - 1 : 0)) / item.Qty colC_QuotationDetailID
            grvLink.FocusedRowHandle = -1;
            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;
                    }
                    decimal pricePerDay = TextUtils.ToDecimal(grvLink.GetRowCellValue(i, colPricePerDay));
                    int     costID      = TextUtils.ToInt(grvLink.GetRowCellValue(i, colC_CostID));
                    decimal qty         = TextUtils.ToDecimal(grvLink.GetRowCellValue(i, colQty));

                    C_CostQuotationItemLinkModel link = (C_CostQuotationItemLinkModel)C_CostQuotationItemLinkBO.Instance.FindByPK(id);
                    link.NumberDay    = TextUtils.ToDecimal(grvLink.GetRowCellValue(i, colNumberDay));
                    link.PersonNumber = TextUtils.ToDecimal(grvLink.GetRowCellValue(i, colPersonNumber));
                    link.TotalR       = link.NumberDay * link.PersonNumber;
                    if (costID == 61)//nhân công thiết kế
                    {
                        //int quotationDetailID = TextUtils.ToInt(grvLink.GetRowCellValue(i, colC_QuotationDetailID));
                        //C_QuotationDetailModel item = (C_QuotationDetailModel)C_QuotationDetailBO.Instance.FindByPK(quotationDetailID);
                        link.TotalR *= (1 + 0.3M * (qty - 1)) / qty;
                    }
                    link.Price = link.TotalR * pricePerDay;
                    C_CostQuotationItemLinkBO.Instance.Update(link);
                }
                IsSaved = true;
            }
            MessageBox.Show("Lưu trữ thành công.", TextUtils.Caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
コード例 #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
        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);
        }
コード例 #4
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);
        }
コード例 #5
0
        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);
                }
            }
        }
コード例 #6
0
 protected C_CostQuotationItemLinkFacade(C_CostQuotationItemLinkModel model) : base(model)
 {
 }