コード例 #1
0
        /// <summary>
        /// 获取单据
        /// </summary>
        /// <param name="billId"></param>
        /// <returns></returns>
        public async Task <ReturnBillModel> GetBillAsync(int billId, bool force = false, CancellationToken calToken = default)
        {
            var model = new ReturnBillModel();

            try
            {
                int storeId = Settings.StoreId;
                int userId  = Settings.UserId;
                var api     = RefitServiceBuilder.Build <IReturnBillApi>(URL);

                var cacheKey = RefitServiceBuilder.Cacher("ReturnBillService.GetBillAsync", storeId, userId, billId);
                var results  = await _makeRequest.StartUseCache(api.GetBillAsync(storeId, userId, billId, calToken), cacheKey, force, calToken);

                if (results != null && results?.Code >= 0)
                {
                    model = results?.Data;
                }
                return(model);
            }
            catch (Exception e)
            {
                e.HandleException();
                return(null);
            }
        }
コード例 #2
0
        public ViewResult EditGetReturn(int id)
        {
            var             ctx    = new SmsContext();
            ReturnBillModel model  = new ReturnBillModel();
            var             infor  = ctx.SP_GET_RETURN_INFO_BY_ID(id).FirstOrDefault();
            var             detail = ctx.SP_GET_RETURN_DETAIL_BY_ID(id).ToList <SP_GET_RETURN_DETAIL_BY_ID_Result>();

            model.Infor  = infor;
            model.Detail = detail;
            var units = ctx.DON_VI_TINH.Where(u => u.ACTIVE == "A").ToList <DON_VI_TINH>();

            model.Units = units;
            if (infor != null && infor.MA_KHACH_HANG != null)
            {
                var debitHist = ctx.KHACH_HANG_DEBIT_HIST.Where(u => u.ACTIVE == "A" && u.MA_PHIEU_TRA == infor.MA_TRA_HANG).FirstOrDefault();
                var customer  = ctx.KHACH_HANG.Find(infor.MA_KHACH_HANG);
                if (debitHist != null)
                {
                    if (customer.NO_GOI_DAU == 0)
                    {
                        customer.NGAY_PHAT_SINH_NO = null;
                    }
                    customer.NO_GOI_DAU = (decimal)customer.NO_GOI_DAU + (decimal)debitHist.PHAT_SINH;

                    /*using (var transaction = new System.Transactions.TransactionScope())
                     * {
                     *  try
                     *  {
                     *      if (customer.NO_GOI_DAU == 0)
                     *      {
                     *          customer.NGAY_PHAT_SINH_NO = null;
                     *      }
                     *      customer.NO_GOI_DAU = (decimal)customer.NO_GOI_DAU + (decimal)debitHist.PHAT_SINH;
                     *      customer.UPDATE_AT = DateTime.Now;
                     *      customer.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                     *      debitHist.ACTIVE = "I";
                     *      debitHist.UPDATE_AT = DateTime.Now;
                     *      debitHist.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                     *      ctx.SaveChanges();
                     *      transaction.Complete();
                     *  }
                     *  catch (Exception ex)
                     *  {
                     *      Console.WriteLine(ex.ToString());
                     *      Transaction.Current.Rollback();
                     *  }
                     * }*/
                    model.OldDebitHistID = debitHist.ID;
                }
                model.Customer = customer;
                if (customer != null)
                {
                    model.OldCustomerID = customer.MA_KHACH_HANG;
                }
            }
            ctx.Dispose();
            return(View(model));
        }
コード例 #3
0
        public ViewResult ShowReturnBill(int id)
        {
            var             ctx    = new SmsContext();
            ReturnBillModel model  = new ReturnBillModel();
            var             infor  = ctx.SP_GET_RETURN_INFO_BY_ID(id).FirstOrDefault();
            var             detail = ctx.SP_GET_RETURN_DETAIL_BY_ID(id).ToList <SP_GET_RETURN_DETAIL_BY_ID_Result>();

            model.Infor  = infor;
            model.Detail = detail;
            ctx.Dispose();
            return(View(model));
        }
コード例 #4
0
        public ActionResult EditGetReturn(ReturnBillModel model)
        {
            var ctx         = new SmsContext();
            var oldCustomer = ctx.KHACH_HANG.Find(model.OldCustomerID);
            var debitHist   = ctx.KHACH_HANG_DEBIT_HIST.Find(model.OldDebitHistID);

            using (var transaction = new System.Transactions.TransactionScope())
            {
                try
                {
                    if (debitHist != null)
                    {
                        debitHist.ACTIVE    = "I";
                        debitHist.UPDATE_AT = DateTime.Now;
                        debitHist.UPDATE_BY = Convert.ToInt32(Session["UserId"]);

                        if (oldCustomer != null)
                        {
                            if (oldCustomer.NO_GOI_DAU == 0)
                            {
                                oldCustomer.NGAY_PHAT_SINH_NO = null;
                            }
                            oldCustomer.NO_GOI_DAU = (decimal)oldCustomer.NO_GOI_DAU + (decimal)debitHist.PHAT_SINH;
                            oldCustomer.UPDATE_AT  = DateTime.Now;
                            oldCustomer.UPDATE_BY  = Convert.ToInt32(Session["UserId"]);
                            oldCustomer.ACTIVE     = "I";
                            oldCustomer.UPDATE_AT  = DateTime.Now;
                            oldCustomer.UPDATE_BY  = Convert.ToInt32(Session["UserId"]);
                            ctx.SaveChanges();
                        }
                    }
                    var returnInfor = ctx.TRA_HANG.Find(model.Infor.MA_TRA_HANG);
                    returnInfor.GHI_CHU        = model.Infor.GHI_CHU;
                    returnInfor.NGAY_TRA       = model.Infor.NGAY_TRA;
                    returnInfor.TEN_KHACH_HANG = model.Infor.TEN_KHACH_HANG;
                    returnInfor.MA_KHACH_HANG  = model.Infor.MA_KHACH_HANG;
                    returnInfor.UPDATE_AT      = DateTime.Now;
                    returnInfor.NHAN_VIEN_NHAN = Convert.ToInt32(Session["UserId"]);
                    returnInfor.UPDATE_BY      = Convert.ToInt32(Session["UserId"]);
                    returnInfor.ACTIVE         = "A";
                    ctx.SaveChanges();
                    ctx.CHI_TIET_TRA_HANG.RemoveRange(ctx.CHI_TIET_TRA_HANG.Where(u => u.MA_TRA_HANG == returnInfor.MA_TRA_HANG));
                    double total   = 0;
                    double percent = 0;
                    foreach (var detail in model.Detail)
                    {
                        if (detail.DEL_FLG != 1 && detail.MA_SAN_PHAM != null && !string.IsNullOrWhiteSpace(detail.MA_SAN_PHAM.ToString()))
                        {
                            CHI_TIET_TRA_HANG ct;
                            //if (detail.DEL_FLG != 1)
                            //{
                            ct             = ctx.CHI_TIET_TRA_HANG.Create();
                            ct.MA_SAN_PHAM = detail.MA_SAN_PHAM;
                            if (detail.PHAN_TRAM_KHAU_HAO == null)
                            {
                                percent = 0;
                            }
                            else
                            {
                                percent = (double)detail.PHAN_TRAM_KHAU_HAO;
                            }
                            total                += (double)detail.DON_GIA * (double)detail.SO_LUONG * (100 - percent) / 100;
                            ct.MA_DON_VI          = detail.MA_DON_VI;
                            ct.SO_LUONG_TEMP      = detail.SO_LUONG;
                            ct.SO_LUONG_TRA       = detail.SO_LUONG * detail.HE_SO;
                            ct.GIA_VON            = detail.DON_GIA / detail.HE_SO;
                            ct.DON_GIA_TEMP       = detail.DON_GIA;
                            ct.PHAN_TRAM_KHAU_HAO = detail.PHAN_TRAM_KHAU_HAO;
                            ct.ACTIVE             = "A";
                            ct.CREATE_AT          = DateTime.Now;
                            ct.UPDATE_AT          = DateTime.Now;
                            ct.CREATE_BY          = Convert.ToInt32(Session["UserId"]);
                            ct.UPDATE_BY          = Convert.ToInt32(Session["UserId"]);
                            ct.MA_TRA_HANG        = returnInfor.MA_TRA_HANG;
                            ctx.CHI_TIET_TRA_HANG.Add(ct);
                            ctx.SaveChanges();
                        }
                    }
                    if (model.Infor.MA_KHACH_HANG != null)
                    {
                        var customer = ctx.KHACH_HANG.Find(model.Infor.MA_KHACH_HANG);
                        if (customer != null && customer.NO_GOI_DAU > 0)
                        {
                            if ((double)customer.NO_GOI_DAU > total)
                            {
                                var cusHist = ctx.KHACH_HANG_DEBIT_HIST.Create();
                                customer.UPDATE_AT      = DateTime.Now;
                                customer.UPDATE_BY      = Convert.ToInt32(Session["UserId"]);
                                cusHist.NO_TRUOC        = (double)customer.NO_GOI_DAU;
                                cusHist.NO_SAU          = cusHist.NO_TRUOC - total;
                                cusHist.MA_NHAN_VIEN_TH = Convert.ToInt32(Session["UserId"]);
                                cusHist.GHI_CHU         = "Trả hàng - Trừ vào công nợ của khách hàng";
                                customer.NO_GOI_DAU     = customer.NO_GOI_DAU - (decimal)total;
                                cusHist.PHAT_SINH       = total;
                                cusHist.NGAY_PHAT_SINH  = DateTime.Now;
                                cusHist.UPDATE_AT       = DateTime.Now;
                                cusHist.CREATE_AT       = DateTime.Now;
                                cusHist.MA_KHACH_HANG   = customer.MA_KHACH_HANG;
                                cusHist.UPDATE_BY       = Convert.ToInt32(Session["UserId"]);
                                cusHist.CREATE_BY       = Convert.ToInt32(Session["UserId"]);
                                cusHist.ACTIVE          = "A";
                                cusHist.MA_PHIEU_TRA    = returnInfor.MA_TRA_HANG;
                                customer.DOANH_SO       = customer.DOANH_SO - (decimal)total;
                                ctx.KHACH_HANG_DEBIT_HIST.Add(cusHist);
                                ctx.SaveChanges();
                            }
                            else
                            {
                                var cusHist = ctx.KHACH_HANG_DEBIT_HIST.Create();
                                customer.UPDATE_AT         = DateTime.Now;
                                customer.UPDATE_BY         = Convert.ToInt32(Session["UserId"]);
                                cusHist.NO_SAU             = 0;
                                cusHist.NO_TRUOC           = (double)customer.NO_GOI_DAU;
                                cusHist.PHAT_SINH          = (double)customer.NO_GOI_DAU;
                                cusHist.NGAY_PHAT_SINH     = DateTime.Now;
                                cusHist.UPDATE_AT          = DateTime.Now;
                                cusHist.CREATE_AT          = DateTime.Now;
                                cusHist.MA_KHACH_HANG      = customer.MA_KHACH_HANG;
                                cusHist.UPDATE_BY          = Convert.ToInt32(Session["UserId"]);
                                cusHist.CREATE_BY          = Convert.ToInt32(Session["UserId"]);
                                cusHist.ACTIVE             = "A";
                                cusHist.MA_PHIEU_TRA       = returnInfor.MA_TRA_HANG;
                                cusHist.MA_NHAN_VIEN_TH    = Convert.ToInt32(Session["UserId"]);
                                cusHist.GHI_CHU            = "Trả hàng - Trừ vào công nợ của khách hàng";
                                customer.NO_GOI_DAU        = 0;
                                customer.NGAY_PHAT_SINH_NO = null;
                                customer.DOANH_SO          = customer.DOANH_SO - (decimal)total;
                                ctx.KHACH_HANG_DEBIT_HIST.Add(cusHist);
                                ctx.SaveChanges();
                            }
                        }
                    }
                    transaction.Complete();
                    ctx.Dispose();
                    return(RedirectToAction("ReturnPurchaseList", new { @inforMessage = "Nhận trả hàng thành công." }));
                }
                catch (Exception)
                {
                    Transaction.Current.Rollback();
                    ctx.Dispose();
                    return(RedirectToAction("ReturnPurchaseList", new { @message = "Nhận trả hàng thất bại, vui lòng liên hệ admin." }));
                }
            }
        }