Ejemplo n.º 1
0
        public ActionResult ReturnToProvider(int id)
        {
            var ctx    = new SmsContext();
            var refund = ctx.TRA_HANG.Find(id);

            if (refund.ACTIVE != "A")
            {
                ctx.Dispose();
                return(RedirectToAction("ReturnPurchaseList", new { @inforMessage = "Không tìm thấy phiếu trả hàng nào tương ứng." }));
            }
            var refundDetail            = ctx.SP_GET_REFUND_DETAIL(id).ToList <SP_GET_REFUND_DETAIL_Result>();
            ReturnToProviderModel model = new ReturnToProviderModel();

            model.Infor  = refund;
            model.Detail = refundDetail;
            var providers = ctx.NHA_CUNG_CAP.Where(u => u.ACTIVE == "A").ToList <NHA_CUNG_CAP>();

            ViewBag.Providers = providers;
            ctx.Dispose();
            return(View(model));
        }
Ejemplo n.º 2
0
        public ActionResult ReturnToProvider(ReturnToProviderModel model)
        {
            var ctx    = new SmsContext();
            var refund = ctx.TRA_HANG.Find(model.Infor.MA_TRA_HANG);

            if (refund.RETURN_FLG != null && (bool)refund.RETURN_FLG)
            {
                ctx.Dispose();
                return(RedirectToAction("ReturnPurchaseList", new { @message = "Phiếu trả hàng này đã được lập phiếu trả cho nhà cung cấp, vui lòng liên hệ admin." }));
            }
            TransactionOptions transOptions = new TransactionOptions();

            transOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            transOptions.Timeout        = TransactionManager.MaximumTimeout;
            using (var transaction = new System.Transactions.TransactionScope(TransactionScopeOption.Required, transOptions))
            {
                try
                {
                    var returnToProvider = ctx.TRA_HANG_NCC.Create();
                    returnToProvider.MA_PHIEU_TRA    = refund.MA_TRA_HANG;
                    returnToProvider.NGUOI_LAP_PHIEU = Convert.ToInt32(Session["UserId"]);
                    returnToProvider.MA_NHA_CUNG_CAP = Convert.ToInt32(model.ProviderId);
                    returnToProvider.GHI_CHU         = model.Note;
                    returnToProvider.NGAY_LAP_PHIEU  = model.ReturnDate;
                    returnToProvider.CREATE_AT       = DateTime.Now;
                    returnToProvider.UPDATE_AT       = DateTime.Now;
                    returnToProvider.CREATE_BY       = Convert.ToInt32(Session["UserId"]);
                    returnToProvider.UPDATE_BY       = Convert.ToInt32(Session["UserId"]);
                    returnToProvider.ACTIVE          = "A";

                    ctx.TRA_HANG_NCC.Add(returnToProvider);
                    ctx.SaveChanges();

                    refund.RETURN_FLG = true;
                    TRA_HANG_NCC_CHI_TIET ct;
                    foreach (var detail in model.Detail)
                    {
                        if (detail.DEL_FLG == 1 || detail.SO_LUONG_TRA < detail.SO_LUONG_TON)
                        {
                            refund.RETURN_FLG = true;
                        }
                        if (detail.DEL_FLG != 1)
                        {
                            ct = ctx.TRA_HANG_NCC_CHI_TIET.Create();
                            ct.MA_PHIEU_TRA_NCC = returnToProvider.ID;
                            ct.MA_SAN_PHAM      = detail.MA_SAN_PHAM;
                            ct.SO_LUONG         = detail.SO_LUONG_TRA;
                            ct.UPDATE_AT        = DateTime.Now;
                            ct.CREATE_AT        = DateTime.Now;
                            ct.UPDATE_BY        = Convert.ToInt32(Session["UserId"]);
                            ct.CREATE_BY        = Convert.ToInt32(Session["UserId"]);
                            ct.ACTIVE           = "A";
                            //ct.DON_GIA =
                            ct.DON_GIA = detail.GIA_VON;
                            ctx.TRA_HANG_NCC_CHI_TIET.Add(ct);
                            ctx.SaveChanges();
                        }
                    }
                    refund.UPDATE_AT = DateTime.Now;
                    refund.UPDATE_BY = Convert.ToInt32(Session["UserId"]);
                    ctx.SaveChanges();
                    transaction.Complete();
                    ctx.Dispose();
                    return(RedirectToAction("ListOfToProvider", "TraHang", new { @inforMessage = "Lập phiếu trả hàng đến nhà cung cấp thành công." }));
                }
                catch (Exception)
                {
                    Transaction.Current.Rollback();
                    ctx.Dispose();
                    return(RedirectToAction("ListOfToProvider", "TraHang", new { @message = "Lập phiếu trả hàng đến nhà cung cấp thất bại, vui lòng liên hệ admin." }));
                }
            }
        }