Ejemplo n.º 1
0
        public static void Create(int InvoiceId)
        {
            ProductInvoiceRepository        productInvoiceRepository        = new Domain.Sale.Repositories.ProductInvoiceRepository(new Domain.Sale.ErpSaleDbContext());
            CommisionRepository             CommisionRepository             = new Domain.Sale.Repositories.CommisionRepository(new Domain.Sale.ErpSaleDbContext());
            CommisionStaffRepository        commisionStaffRepository        = new Domain.Sale.Repositories.CommisionStaffRepository(new Domain.Sale.ErpSaleDbContext());
            UsingServiceLogDetailRepository usingServiceLogDetailRepository = new Domain.Sale.Repositories.UsingServiceLogDetailRepository(new Domain.Sale.ErpSaleDbContext());
            var product_invoice       = productInvoiceRepository.GetAllvwInvoiceDetailsByInvoiceId(InvoiceId).ToList();
            var usingServiceLogDetail = usingServiceLogDetailRepository.GetAllvwUsingServiceLogDetail().Where(x => x.ProductInvoiceId == InvoiceId).ToList();

            foreach (var item in product_invoice)
            {
                if (item.ProductType == "service")
                {
                    //lấy nhân viên làm dịch vụ của hóa đơn ra
                    var user = usingServiceLogDetail.Where(x => x.ServiceInvoiceDetailId == item.Id).OrderBy(x => x.CreatedDate).FirstOrDefault();
                    //kiểm tra xem nhân viên đó có được nhận hoa hồng hay k
                    var setting_commision = CommisionRepository.GetAllCommision().Where(x => x.StaffId == user.StaffId && x.ProductId == item.ProductId).ToList();
                    if (setting_commision.Count() > 0)
                    {
                        var CommisionStaff = new CommisionStaff();
                        CommisionStaff.IsDeleted      = false;
                        CommisionStaff.CreatedUserId  = WebSecurity.CurrentUserId;
                        CommisionStaff.ModifiedUserId = WebSecurity.CurrentUserId;
                        CommisionStaff.StaffId        = user.StaffId.Value;
                        //nếu hoa hồng của nhân viên là % thì dựa vào hóa đơn tính ra số tiền chiết khấu
                        //ngược lại thì dựa vào số tiền chiết khấu tính ra %.
                        if (setting_commision.FirstOrDefault().IsMoney == false)
                        {
                            CommisionStaff.PercentOfCommision = Convert.ToInt32(setting_commision.FirstOrDefault().CommissionValue);
                            CommisionStaff.AmountOfCommision  = (item.Price * item.Quantity) * setting_commision.FirstOrDefault().CommissionValue / 100;
                        }
                        else
                        {
                            CommisionStaff.AmountOfCommision  = setting_commision.FirstOrDefault().CommissionValue;
                            CommisionStaff.PercentOfCommision = Convert.ToInt32(setting_commision.FirstOrDefault().CommissionValue / (item.Price * item.Quantity) * 100);
                        }
                        CommisionStaff.CreatedDate     = DateTime.Now;
                        CommisionStaff.ModifiedDate    = DateTime.Now;
                        CommisionStaff.InvoiceType     = "ProductInvoice";
                        CommisionStaff.InvoiceId       = item.ProductInvoiceId.Value;
                        CommisionStaff.InvoiceDetailId = item.Id;
                        CommisionStaff.BranchId        = item.BranchId;
                        commisionStaffRepository.InsertCommisionStaff(CommisionStaff);
                    }
                }
            }
        }
        public static void Create(int InvoiceId, decimal?TotalAmount)
        {
            CommisionRepository CommisionRepository = new Domain.Sale.Repositories.CommisionRepository(new Domain.Sale.ErpSaleDbContext());
            var commisions = CommisionRepository.GetAllCommision().Where(x => x.StartDate <= DateTime.Now && DateTime.Now <= x.EndDate).ToList();

            Commision commisionApply = null;

            foreach (var item in commisions)
            {
                // tìm chương trình chiếc khấu thỏa đk ngày ở trên và áp dụng cho chi nhánh của nhân viên đang đăng nhập
                int?brandIdCurrent   = Helpers.Common.CurrentUser.BranchId;
                var commision_branch = CommisionRepository.GetListCommisionBranch(item.Id).Where(x => x.BranchId == brandIdCurrent).FirstOrDefault();
                if (commision_branch == null)
                {
                    continue;
                }

                commisionApply = item;
                if (commisionApply != null)
                {
                    break;
                }
            }

            //nếu có chương trình chiếc khấu thì mới thêm
            if (commisionApply != null)
            {
                CommisionSale commisionSale = new CommisionSale {
                    CreatedDate        = DateTime.Now,
                    ModifiedDate       = DateTime.Now,
                    CreatedUserId      = WebSecurity.CurrentUserId,
                    BranchId           = Helpers.Common.CurrentUser.BranchId,
                    CommisionId        = commisionApply.Id,
                    AmountOfCommision  = Math.Round(Convert.ToDecimal(commisionApply.PercentOfCommision * TotalAmount) / 100),
                    PercentOfCommision = commisionApply.PercentOfCommision,
                    ProductInvoiceId   = InvoiceId,
                    IsDeleted          = false,
                };
            }
        }