public RedirectToRouteResult Approve(string requestid, string itemcode) { StockAdjustmentDetail stockadjdet = repo.GetStockAdjustmentDetailById(requestid, itemcode); stockadjdet.Status = "Approved"; stockadjdet.NotificationStatus = "Unread"; stockadjdet.StockAdjustmentHeader.DateProcessed = DateTime.Now; repo.UpdateStockAdjustmentDetail(stockadjdet); repo.Save(); using (SSISdbEntities m = new SSISdbEntities()) { StockAdjustmentHeader sjh = m.StockAdjustmentHeaders.Where(x => x.RequestId == requestid).FirstOrDefault(); Employee emp = m.Employees.Where(x => x.EmployeeID == sjh.Requestor).FirstOrDefault(); string title = "[LogicUniversity] Stock Adjustment Approved: " + requestid; string message = "Item Code: " + itemcode + " has been approved."; // Send to Employee CommonLogic.Email.sendEmail("*****@*****.**", emp.EmployeeEmail, title, message); } Session["StockAdjPage"] = 2; Session["StoreInventoryTabIndex"] = "1"; return(RedirectToAction("Inventory", "Store")); }
public RedirectToRouteResult Reject(string requestid, string itemcode) { StockAdjustmentDetail stockadjdet = repo.GetStockAdjustmentDetailById(requestid, itemcode); using (IItemTransactionRepository itemRepo = new ItemTransactionRepositoryImpl(new SSISdbEntities())) { ItemTransaction itemTrans = new ItemTransaction { DocumentRefNo = requestid, TransDateTime = DateTime.Now, ItemCode = itemcode, TransactionType = "Reject Stock Adjustment", Quantity = stockadjdet.ItemQuantity, Amount = stockadjdet.Amount, UnitCost = stockadjdet.Amount / stockadjdet.ItemQuantity }; itemRepo.InsertItemTransaction(itemTrans); itemRepo.Save(); } stockadjdet.Status = "Rejected"; stockadjdet.NotificationStatus = "Unread"; repo.UpdateStockAdjustmentDetail(stockadjdet); repo.Save(); using (SSISdbEntities m = new SSISdbEntities()) { StockAdjustmentHeader sjh = m.StockAdjustmentHeaders.Where(x => x.RequestId == requestid).FirstOrDefault(); Employee emp = m.Employees.Where(x => x.EmployeeID == sjh.Requestor).FirstOrDefault(); // Send to Employee string title = "[LogicUniversity] Stock Adjustment Rejected: " + requestid; string message = "Item Code: " + itemcode + " has been rejected."; // Send to Employee CommonLogic.Email.sendEmail("*****@*****.**", emp.EmployeeEmail, title, message); } Session["StoreInventoryTabIndex"] = "1"; Session["StockAdjPage"] = 2; return(RedirectToAction("Inventory", "Store", new { area = "" })); }
public RedirectToRouteResult SubmitNewAdj() { using (SSISdbEntities e = new SSISdbEntities()) { //data is item desc, index is list index int adjCount = e.StockAdjustmentHeaders.ToList().Count() + 1; string newAdjHeaderId = CommonLogic.SerialNo(adjCount, "SA"); bool mgrEmail = false; bool supEmail = false; StockAdjustmentHeader sah = new StockAdjustmentHeader(); sah.RequestId = newAdjHeaderId; sah.DateRequested = DateTime.Now; sah.Requestor = Session["LoginEmployeeID"].ToString(); sah.DateProcessed = null; sah.TransactionType = "Stock Adjustment"; DAL.StockAdjustmentRepositoryImpl dal = new DAL.StockAdjustmentRepositoryImpl(e); dal.InsertStockAdjustmentHeader(sah); DAL.StockAdjustmentDetailsRepositoryImpl dalDetails = new DAL.StockAdjustmentDetailsRepositoryImpl(e); //insert SAH details foreach (StockAdjItemModel detail in (List <StockAdjItemModel>)Session["NewAdjList"]) { StockAdjustmentDetail sad = new StockAdjustmentDetail(); sad.RequestId = newAdjHeaderId; sad.ItemCode = detail.ItemCode; sad.Amount = float.Parse(detail.AdjCost.ToString()); sad.ItemQuantity = detail.AdjQty; sad.Remarks = detail.Reason; sad.Status = "Pending"; sad.NotificationStatus = "Unread"; dalDetails.InsertStockAdjustmentDetail(sad); if (sad.Amount < 250) { supEmail = true; } else { mgrEmail = true; } //Create new Item Transaction ItemTransaction itemTransaction = new ItemTransaction(); itemTransaction.TransDateTime = DateTime.Now; itemTransaction.DocumentRefNo = sad.RequestId; itemTransaction.ItemCode = sad.ItemCode; itemTransaction.TransactionType = "Stock Adjustment"; itemTransaction.Quantity = sad.ItemQuantity; float itemUnitCost = e.Items.Where(x => x.ItemCode == sad.ItemCode).Select(x => x.AvgUnitCost).FirstOrDefault(); itemTransaction.UnitCost = itemUnitCost; itemTransaction.Amount = itemTransaction.Quantity * itemTransaction.UnitCost; e.ItemTransactions.Add(itemTransaction); //Update Item Quantity Item item = e.Items.Where(x => x.ItemCode == sad.ItemCode).FirstOrDefault(); item.Quantity = item.Quantity - sad.ItemQuantity; } Employee current = e.Employees.Where(x => x.EmployeeID == Session["LoginEmployeeID"].ToString()).FirstOrDefault(); Employee sup = e.Employees.Where(x => x.EmployeeID == current.ReportsTo).FirstOrDefault(); Employee mgr = e.Employees.Where(x => x.EmployeeID == sup.ReportsTo).FirstOrDefault(); string title = "[LogicUniversity] Stock Adjustment Request: " + newAdjHeaderId; string message = "There are stock adjustment items pending for your approval."; if (mgrEmail == true) { CommonLogic.Email.sendEmail("*****@*****.**", mgr.EmployeeEmail, title, message); } if (supEmail == true) { CommonLogic.Email.sendEmail("*****@*****.**", sup.EmployeeEmail, title, message); } e.SaveChanges(); List <String> tempList = (List <String>)Session["tempList"]; tempList.Clear(); Session["tempList"] = tempList; Session["NewAdjList"] = new List <StockAdjItemModel>(); return(RedirectToAction("Inventory", "Store")); } }
public void DeleteStockAdjustmentHeader(int requestid) { StockAdjustmentHeader stockAdjustment = context.StockAdjustmentHeaders.Find(requestid); context.StockAdjustmentHeaders.Remove(stockAdjustment); }
public void UpdateStockAdjustmentHeader(StockAdjustmentHeader stockAdjustmentHeader) { context.Entry(stockAdjustmentHeader).State = EntityState.Modified; }
public void InsertStockAdjustmentHeader(StockAdjustmentHeader stockAdjustmentHeader) { context.StockAdjustmentHeaders.Add(stockAdjustmentHeader); }
public RedirectToRouteResult DisburseItems() { using (SSISdbEntities m = new SSISdbEntities()) { m.Configuration.ProxyCreationEnabled = false; string id = (string)Session["RetrievalId"]; StockRetrievalHeader srh = m.StockRetrievalHeaders.Where(x => x.ID == id).First(); srh.Disbursed = 1; List <StockRetrievalDetail> itemsRetrieved = m.StockRetrievalDetails.Where(x => x.Id == id).ToList(); bool stockAdjustmentHeaderCreated = false; foreach (StockRetrievalDetail srd in itemsRetrieved) { DateTime localDate = DateTime.Now; if (srd.QuantityAdjusted > 0) { //To check whether there is stock adjustment header for the item if (!stockAdjustmentHeaderCreated) { //To Create Stock Adjustment Header stockAdjustmentHeaderCreated = true; StockAdjustmentHeader sah = new StockAdjustmentHeader(); int stockAdjustmentHeaderId = m.StockAdjustmentHeaders.Count() + 1; sah.RequestId = CommonLogic.SerialNo(stockAdjustmentHeaderId, "SA"); sah.DateRequested = localDate; sah.Requestor = (string)Session["LoginEmployeeID"]; sah.TransactionType = "Stock Adjustment"; m.StockAdjustmentHeaders.Add(sah); m.SaveChanges(); } //To Create Stock Adjustment Details int stockAdjustmentDetailId = m.StockAdjustmentHeaders.Count(); StockAdjustmentDetail sad = new StockAdjustmentDetail(); sad.RequestId = CommonLogic.SerialNo(stockAdjustmentDetailId, "SA"); sad.ItemCode = srd.ItemCode; sad.ItemQuantity = srd.QuantityAdjusted; float itemUnitCost = m.Items.Where(x => x.ItemCode == sad.ItemCode).Select(x => x.AvgUnitCost).FirstOrDefault(); sad.Amount = itemUnitCost * sad.ItemQuantity; sad.Remarks = srd.Remarks; sad.Status = "Pending"; m.StockAdjustmentDetails.Add(sad); //To add the item transactions ItemTransaction itemTransaction = new ItemTransaction(); itemTransaction.TransDateTime = localDate; itemTransaction.DocumentRefNo = sad.RequestId; itemTransaction.ItemCode = sad.ItemCode; itemTransaction.TransactionType = "Stock Adjustment"; itemTransaction.Quantity = sad.ItemQuantity; itemTransaction.UnitCost = itemUnitCost; itemTransaction.Amount = sad.Amount; m.ItemTransactions.Add(itemTransaction); //To update the quantity of the item table Item itemAdjusted = m.Items.Where(x => x.ItemCode == itemTransaction.ItemCode).FirstOrDefault(); itemAdjusted.Quantity -= itemTransaction.Quantity; m.SaveChanges(); } } //Creating list of new disbursements //To order by id so the earlier id will mean that the req form was submitted earlier List <String> reqFormIDList = m.StockRetrievalReqForms.OrderBy(x => x.Id).Where(x => x.StockRetrievalID == id).Select(x => x.ReqFormID).ToList <String>(); //Create distinct disbursement headers List <String> disbHeaderDeptCodes = new List <String>(); //Take from stock retrieval details List <StockRetrievalDetail> stockRetrievalDetails = m.StockRetrievalDetails.Where(x => x.Id == id).ToList <StockRetrievalDetail>(); foreach (StockRetrievalDetail srd in stockRetrievalDetails) { //To take care that in case stock adjustment makes the quantity retrieved to be 0 if (srd.QuantityRetrieved > 0) { String deptCode = m.DepartmentDetails.Where(x => x.CollectionPointID == srd.CollectionPointID).FirstOrDefault().DepartmentCode; disbHeaderDeptCodes.Add(deptCode); } } //Make it distinct so that only one disbursement header is created disbHeaderDeptCodes = disbHeaderDeptCodes.Distinct().ToList(); foreach (String deptCode in disbHeaderDeptCodes) { DisbursementHeader newDH = new DisbursementHeader(); int count = m.DisbursementHeaders.Count() + 1; string disId = CommonLogic.SerialNo(count, "DH"); newDH.Id = disId; newDH.Status = "Open"; newDH.Date = DateTime.Now; newDH.Amount = 0; //Put 0 first and then to be calculated after all the disbursement details is done newDH.StockRetrievalId = id; newDH.DepartmentCode = deptCode; newDH.CollectionPointID = m.DepartmentDetails.Where(x => x.DepartmentCode == deptCode).FirstOrDefault().CollectionPointID; newDH.RepresentativeID = m.DepartmentDetails.Where(x => x.DepartmentCode == newDH.DepartmentCode).FirstOrDefault().RepresentativeID; float totalAmount = 0f; //Create disbursement details, since one collection point is for one dept, then the entire stock retrieved would be assigned to that dept foreach (StockRetrievalDetail srd in stockRetrievalDetails) { String deptCodeDH = m.DepartmentDetails.Where(x => x.CollectionPointID == srd.CollectionPointID).Select(x => x.DepartmentCode).FirstOrDefault(); //Only disbursed if quantity retrieved is more than 0 if (srd.QuantityRetrieved > 0 && deptCodeDH.Equals(newDH.DepartmentCode)) { DisbursementDetail newDD = new DisbursementDetail(); newDD.Id = disId; newDD.ItemCode = srd.ItemCode; int quantityOrdered = 0; foreach (String reqF in reqFormIDList) { StaffRequisitionDetail staffReqDet = m.StaffRequisitionDetails.Where(x => x.FormID == reqF && x.ItemCode == newDD.ItemCode).FirstOrDefault(); StaffRequisitionHeader staffReqHeader = m.StaffRequisitionHeaders.Where(x => x.FormID == reqF).FirstOrDefault(); int reqQtyOrdered = 0; if (staffReqDet != null && staffReqHeader != null) { if (staffReqHeader.DepartmentCode.Equals(newDH.DepartmentCode)) { reqQtyOrdered = staffReqDet.QuantityOrdered; } } quantityOrdered = quantityOrdered + reqQtyOrdered; } newDD.QuantityOrdered = quantityOrdered; newDD.QuantityReceived = srd.QuantityRetrieved; float itemUnitCost = m.Items.Where(x => x.ItemCode == newDD.ItemCode).Select(x => x.AvgUnitCost).FirstOrDefault(); newDD.UnitCost = itemUnitCost; newDD.UoM = m.Items.Where(x => x.ItemCode == newDD.ItemCode).Select(x => x.UoM).FirstOrDefault(); newDD.QuantityAdjusted = 0; newDD.TransactionType = "Disbursement"; float amount = itemUnitCost * newDD.QuantityReceived; totalAmount += amount; m.DisbursementDetails.Add(newDD); //To add the item transactions DateTime localDate = DateTime.Now; ItemTransaction itemTransaction = new ItemTransaction(); itemTransaction.TransDateTime = localDate; itemTransaction.DocumentRefNo = newDD.Id; itemTransaction.ItemCode = newDD.ItemCode; itemTransaction.TransactionType = "Disbursement"; itemTransaction.Quantity = newDD.QuantityReceived; itemTransaction.UnitCost = itemUnitCost; itemTransaction.Amount = newDD.QuantityReceived * itemUnitCost; m.ItemTransactions.Add(itemTransaction); //To update the quantity of the item table Item itemDisbursed = m.Items.Where(x => x.ItemCode == itemTransaction.ItemCode).FirstOrDefault(); itemDisbursed.Quantity -= itemTransaction.Quantity; } } newDH.Amount = totalAmount; m.DisbursementHeaders.Add(newDH); m.SaveChanges(); } } return(RedirectToAction("Disbursements", "Store")); }
public StockAdjustmentHeader GetStockInHeader(StockAdjustmentHeader item) { return((StockAdjustmentHeader)stockadjustmentheaderDAL.GetItem <StockAdjustmentHeader>(item)); }
public bool DeleteStockInHeader(StockAdjustmentHeader item) { return(stockadjustmentheaderDAL.Delete(item)); }
public bool SaveStockInHeader(StockAdjustmentHeader newItem) { return(stockadjustmentheaderDAL.Save(newItem)); }