Beispiel #1
0
 public IActionResult Delete(string docid, string seqno)
 {
     try
     {
         KeepCostModel keepCost = _context.BMEDKeepCosts.Find(docid, Convert.ToInt32(seqno));
         _context.BMEDKeepCosts.Remove(keepCost);
         _context.SaveChanges();
         //
         KeepDtlModel dtl = _context.BMEDKeepDtls.Where(d => d.DocId == keepCost.DocId)
                            .FirstOrDefault();
         if (dtl != null)
         {
             dtl.Cost = _context.BMEDKeepCosts.Where(k => k.DocId == keepCost.DocId)
                        .Select(k => k.TotalCost)
                        .DefaultIfEmpty(0).Sum();
             _context.Entry(dtl).State = EntityState.Modified;
             _context.SaveChanges();
         }
         return(new JsonResult(keepCost)
         {
             Value = new { success = true, error = "" }
         });
     }
     catch (Exception e)
     {
         throw new Exception(e.Message);
     }
 }
        public async Task <IViewComponentResult> InvokeAsync(string id)
        {
            KeepCostModel cost = new KeepCostModel();
            var           ur   = _userRepo.Find(u => u.UserName == this.User.Identity.Name).FirstOrDefault();

            /* Check the device's contract. */
            var keepDtl = _context.BMEDKeepDtls.Find(id);

            if (keepDtl.NotInExceptDevice == "Y") //該案件為統包
            {
                ViewData["HideCost"] = "Y";
            }
            else
            {
                ViewData["HideCost"] = "N";
            }

            int seqno = _context.BMEDKeepCosts.Where(c => c.DocId == id)
                        .Select(c => c.SeqNo).DefaultIfEmpty().Max();

            cost.DocId = id;
            cost.Qty   = 1; //Default value.
            cost.SeqNo = seqno + 1;
            KeepFlowModel rf = _context.BMEDKeepFlows.Where(f => f.DocId == id)
                               .Where(f => f.Status == "?").FirstOrDefault();
            var isEngineer = false;

            if (ur.DptId == "8420" || ur.DptId == "7084")
            {
                isEngineer = true;
            }
            if (!(rf.Cls.Contains("工程師") && rf.UserId == ur.Id))    /* 流程 => 其他 */
            {
                if (rf.Cls.Contains("工程師") && isEngineer == true)   /* 流程 => 工程師,Login User => 非負責之工程師 */
                {
                    return(View(cost));
                }
                if (rf.Cls.Contains("醫工主管") || rf.Cls.Contains("賀康主管")) /* 流程 => 醫工、賀康主管 */
                {
                    if (rf.UserId == ur.Id)
                    {
                        return(View(cost));
                    }
                }
                List <KeepCostModel> t = _context.BMEDKeepCosts.Include(r => r.TicketDtl).Where(c => c.DocId == id).ToList();
                return(View("List", t));
            }
            /* 流程 => 工程師,Login User => 負責之工程師 */
            return(View(cost));
        }
Beispiel #3
0
        public IActionResult KeepCostEdit(KeepCostModel keepCost)
        {
            var ur = _userRepo.Find(u => u.UserName == this.User.Identity.Name).FirstOrDefault();

            if (keepCost.SignNo != null)
            {
                keepCost.SignNo = keepCost.SignNo.ToUpper();
            }
            if (keepCost.StockType == "3")
            {
                ModelState.Remove("TicketDtl.SeqNo");
            }
            if (ModelState.IsValid)
            {
                keepCost.Rtp = ur.Id;
                keepCost.Rtt = DateTime.Now;
                _context.Entry(keepCost).State = EntityState.Modified;
                _context.SaveChanges();

                KeepDtlModel dtl = _context.KeepDtls.Where(d => d.DocId == keepCost.DocId)
                                   .FirstOrDefault();
                if (dtl != null)
                {
                    dtl.Cost = _context.KeepCosts.Where(k => k.DocId == keepCost.DocId)
                               .Select(k => k.TotalCost)
                               .DefaultIfEmpty(0).Sum();
                    _context.Entry(dtl).State = EntityState.Modified;
                    _context.SaveChanges();
                }

                return(new JsonResult(keepCost)
                {
                    Value = new { success = true, error = "" }
                });
            }
            else
            {
                string msg = "";
                foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors))
                {
                    msg += error.ErrorMessage + Environment.NewLine;
                }
                throw new Exception(msg);
            }
        }
Beispiel #4
0
        public async Task <IViewComponentResult> InvokeAsync(string id)
        {
            KeepCostModel cost = new KeepCostModel();
            var           ur   = _userRepo.Find(u => u.UserName == this.User.Identity.Name).FirstOrDefault();

            /* Check the device's contract. */
            //var keepDtl = _context.KeepDtls.Find(id);
            //if (keepDtl.NotInExceptDevice == "Y") //該案件為統包
            //{
            //    ViewData["HideCost"] = "Y";
            //}
            //else
            //{
            //    ViewData["HideCost"] = "N";
            //}
            ViewData["HideCost"] = "N";
            int seqno = _context.KeepCosts.Where(c => c.DocId == id)
                        .Select(c => c.SeqNo).DefaultIfEmpty().Max();

            cost.DocId = id;
            cost.SeqNo = seqno + 1;
            KeepFlowModel rf = _context.KeepFlows.Where(f => f.DocId == id)
                               .Where(f => f.Status == "?").FirstOrDefault();
            var isEngineer = _context.UsersInRoles.Where(u => u.AppRoles.RoleName == "RepEngineer" &&
                                                         u.UserId == ur.Id).FirstOrDefault();

            if (!(rf.Cls.Contains("工程師") && rf.UserId == ur.Id))    /* 流程 => 其他 */
            {
                if (rf.Cls.Contains("工程師") && isEngineer != null)   /* 流程 => 工程師,Login User => 非負責之工程師 */
                {
                    return(View(cost));
                }
                List <KeepCostModel> t = _context.KeepCosts.Include(r => r.TicketDtl).Where(c => c.DocId == id).ToList();
                return(View("List", t));
            }
            /* 流程 => 工程師,Login User => 負責之工程師 */
            return(View(cost));
        }
Beispiel #5
0
        // GET: Admin/Invoice/KeepCostEdit/5
        public IActionResult KeepCostEdit(string docid, string seqno)
        {
            KeepCostModel keepCost = _context.KeepCosts.Include(rc => rc.TicketDtl)
                                     .SingleOrDefault(rc => rc.DocId == docid && rc.SeqNo == Convert.ToInt32(seqno));

            if (keepCost.StockType == "0")
            {
                ViewData["StockType"] = "庫存";
            }
            else if (keepCost.StockType == "2")
            {
                ViewData["StockType"] = "發票(含收據)";
            }
            else if (keepCost.StockType == "4")
            {
                ViewData["StockType"] = "零用金";
            }
            else
            {
                ViewData["StockType"] = "簽單";
            }

            return(View(keepCost));
        }
Beispiel #6
0
        public async Task <IActionResult> Edit(KeepCostModel keepCost)
        {
            var ur   = _userRepo.Find(u => u.UserName == this.User.Identity.Name).FirstOrDefault();
            var kdtl = _context.BMEDKeepDtls.Find(keepCost.DocId);

            /* Change to UpperCase.*/
            if (keepCost.TicketDtl.TicketDtlNo != null)
            {
                keepCost.TicketDtl.TicketDtlNo = keepCost.TicketDtl.TicketDtlNo.ToUpper();
            }
            if (keepCost.SignNo != null)
            {
                keepCost.SignNo = keepCost.SignNo.ToUpper();
            }

            if (ModelState.IsValid)
            {
                try
                {
                    if (keepCost.StockType == "2")
                    {
                        var dupData = _context.BMEDKeepCosts.Include(c => c.TicketDtl)
                                      .Where(c => c.DocId == keepCost.DocId &&
                                             c.PartName == keepCost.PartName &&
                                             c.Standard == keepCost.Standard &&
                                             c.TicketDtl.TicketDtlNo == keepCost.TicketDtl.TicketDtlNo).FirstOrDefault();
                        if (dupData != null)
                        {
                            string msg = "資料重複儲存!!";
                            return(BadRequest(msg));
                        }
                    }
                    else
                    {
                        var dupData = _context.BMEDKeepCosts.Include(c => c.TicketDtl)
                                      .Where(c => c.DocId == keepCost.DocId &&
                                             c.PartName == keepCost.PartName &&
                                             c.Standard == keepCost.Standard &&
                                             c.SignNo == keepCost.SignNo).FirstOrDefault();
                        if (dupData != null)
                        {
                            string msg = "資料重複儲存!!";
                            return(BadRequest(msg));
                        }
                    }

                    int seqno = _context.BMEDKeepCosts.Where(c => c.DocId == keepCost.DocId)
                                .Select(c => c.SeqNo).DefaultIfEmpty().Max();
                    keepCost.SeqNo = seqno + 1;
                    if (keepCost.StockType == "2")
                    {
                        if (string.IsNullOrEmpty(keepCost.TicketDtl.TicketDtlNo))
                        {
                            //throw new Exception("發票號碼不可空白!!");
                            string msg = "發票號碼不可空白!!";
                            return(BadRequest(msg));
                        }
                        if (keepCost.AccountDate == null)
                        {
                            //throw new Exception("發票日期不可空白!!");
                            string msg = "發票日期不可空白!!";
                            return(BadRequest(msg));
                        }
                        // check vendor from ERP
                        if (keepCost.VendorId == null)
                        {
                            string msg = "廠商尚未選擇!!";
                            return(BadRequest(msg));
                        }
                        else
                        {
                            if (kdtl != null)
                            {
                                if (kdtl.NotInExceptDevice == "N")  //非統包
                                {
                                    // Do nothing.
                                }
                                else
                                {
                                    var vendor      = _context.BMEDVendors.Find(keepCost.VendorId);
                                    var checkResult = await new ERPVendors().CheckERPVendorAsync(vendor.UniteNo, vendor.VendorName);
                                    if (checkResult != null)
                                    {
                                        keepCost.ERPVendorId = checkResult;
                                    }
                                    else
                                    {
                                        string msg = "於ERP系統查無此廠商!!";
                                        return(BadRequest(msg));
                                    }
                                }
                            }
                            else
                            {
                                var vendor      = _context.BMEDVendors.Find(keepCost.VendorId);
                                var checkResult = await new ERPVendors().CheckERPVendorAsync(vendor.UniteNo, vendor.VendorName);
                                if (checkResult != null)
                                {
                                    keepCost.ERPVendorId = checkResult;
                                }
                                else
                                {
                                    string msg = "於ERP系統查無此廠商!!";
                                    return(BadRequest(msg));
                                }
                            }
                        }
                        int i = _context.BMEDTicketDtls.Where(d => d.TicketDtlNo == keepCost.TicketDtl.TicketDtlNo)
                                .Select(d => d.SeqNo).DefaultIfEmpty().Max();
                        keepCost.TicketDtl.SeqNo   = i + 1;
                        keepCost.TicketDtl.ObjName = keepCost.PartName;
                        keepCost.TicketDtl.Qty     = keepCost.Qty;
                        keepCost.TicketDtl.Unite   = keepCost.Unite;
                        keepCost.TicketDtl.Price   = keepCost.Price;
                        keepCost.TicketDtl.Cost    = keepCost.TotalCost;
                        TicketModel t = _context.BMEDTickets.Find(keepCost.TicketDtl.TicketDtlNo);
                        if (t == null)
                        {
                            t            = new TicketModel();
                            t.TicketNo   = keepCost.TicketDtl.TicketDtlNo;
                            t.TicDate    = keepCost.AccountDate;
                            t.ApplyDate  = null;
                            t.CancelDate = null;
                            t.VendorId   = keepCost.VendorId;
                            t.VendorName = keepCost.VendorName;
                            keepCost.TicketDtl.Ticket = t;
                            _context.BMEDTickets.Add(t);
                        }
                        _context.BMEDTicketDtls.Add(keepCost.TicketDtl);
                    }
                    else
                    {
                        keepCost.AccountDate = keepCost.AccountDate == null ? DateTime.Now.Date : keepCost.AccountDate;
                        keepCost.TicketDtl   = null;
                    }
                    keepCost.Rtp = ur.Id;
                    keepCost.Rtt = DateTime.Now;
                    if (keepCost.StockType != "0")
                    {
                        if (kdtl.NotInExceptDevice == "N") //非統包
                        {
                            keepCost.PartNo = "";
                        }
                    }

                    _context.BMEDKeepCosts.Add(keepCost);
                    _context.SaveChanges();
                    //
                    KeepDtlModel dtl = _context.BMEDKeepDtls.Where(d => d.DocId == keepCost.DocId)
                                       .FirstOrDefault();
                    if (dtl != null)
                    {
                        dtl.Cost = _context.BMEDKeepCosts.Where(k => k.DocId == keepCost.DocId)
                                   .Select(k => k.TotalCost)
                                   .DefaultIfEmpty(0).Sum();
                        _context.Entry(dtl).State = EntityState.Modified;
                        _context.SaveChanges();
                    }

                    return(ViewComponent("BMEDKeepCostList", new { id = keepCost.DocId, viewType = "Edit" }));
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message);
                }
            }
            else
            {
                string msg = "";
                foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors))
                {
                    msg += error.ErrorMessage + Environment.NewLine;
                }
                throw new Exception(msg);
            }
        }
        public IActionResult Edit2(KeepCostModel keepCost)
        {
            var ur = _userRepo.Find(u => u.UserName == this.User.Identity.Name).FirstOrDefault();

            if (keepCost.StockType == "3")
            {
                ModelState.Remove("TicketDtl.SeqNo");
            }
            if (ModelState.IsValid)
            {
                if (keepCost.StockType != "3")
                {
                    TicketModel t = _context.Tickets.Find(keepCost.TicketDtl.TicketDtlNo);
                    if (t == null)
                    {
                        t            = new TicketModel();
                        t.TicketNo   = keepCost.TicketDtl.TicketDtlNo;
                        t.TicDate    = keepCost.AccountDate;
                        t.ApplyDate  = null;
                        t.CancelDate = null;
                        t.VendorId   = keepCost.VendorId;
                        t.VendorName = keepCost.VendorName;
                        keepCost.TicketDtl.Ticket = t;
                        _context.Tickets.Add(t);
                    }

                    TicketDtlModel ticketDtl = _context.TicketDtls.Find(keepCost.TicketDtl.TicketDtlNo, keepCost.TicketDtl.SeqNo);
                    if (ticketDtl == null)
                    {
                        int i = _context.TicketDtls.Where(d => d.TicketDtlNo == keepCost.TicketDtl.TicketDtlNo)
                                .Select(d => d.SeqNo).DefaultIfEmpty().Max();
                        keepCost.TicketDtl.SeqNo   = i + 1;
                        keepCost.TicketDtl.ObjName = keepCost.PartName;
                        keepCost.TicketDtl.Qty     = keepCost.Qty;
                        keepCost.TicketDtl.Unite   = keepCost.Unite;
                        keepCost.TicketDtl.Price   = keepCost.Price;
                        keepCost.TicketDtl.Cost    = keepCost.TotalCost;
                        _context.TicketDtls.Add(keepCost.TicketDtl);
                    }
                    else
                    {
                        ticketDtl.ObjName = keepCost.PartName;
                        ticketDtl.Qty     = keepCost.Qty;
                        ticketDtl.Unite   = keepCost.Unite;
                        ticketDtl.Price   = keepCost.Price;
                        ticketDtl.Cost    = keepCost.TotalCost;
                        _context.Entry(ticketDtl).State = EntityState.Modified;
                    }
                }

                keepCost.Rtp = ur.Id;
                keepCost.Rtt = DateTime.Now;
                _context.Entry(keepCost).State = EntityState.Modified;
                _context.SaveChanges();

                KeepDtlModel dtl = _context.KeepDtls.Where(d => d.DocId == keepCost.DocId)
                                   .FirstOrDefault();
                if (dtl != null)
                {
                    dtl.Cost = _context.KeepCosts.Where(k => k.DocId == keepCost.DocId)
                               .Select(k => k.TotalCost)
                               .DefaultIfEmpty(0).Sum();
                    _context.Entry(dtl).State = EntityState.Modified;
                    _context.SaveChanges();
                }

                return(RedirectToAction("Edit", "Keep", new { Area = "", id = keepCost.DocId, page = 5 }));
            }
            if (keepCost.StockType == "0")
            {
                ViewData["StockType"] = "庫存";
            }
            else if (keepCost.StockType == "2")
            {
                ViewData["StockType"] = "發票(含收據)";
            }
            else if (keepCost.StockType == "4")
            {
                ViewData["StockType"] = "零用金";
            }
            else
            {
                ViewData["StockType"] = "簽單";
            }
            return(View(keepCost));
        }