public GoodsReceiptModel AddGoodsReceipt(GoodsReceiptModel model) { using (var transaction = db.Database.BeginTransaction()) { try { model.GoodsReceiptItem.ForEach(item => { item.CreatedOn = DateTime.Now; //Assign Today's date as CreatedOn item.CreatedBy = model.CreatedBy; }); model.CreatedOn = DateTime.Now; db.GoodsReceipts.Add(model); //Save Goods Receipt to DB db.SaveChanges(); StockModel stockItem = new StockModel(); //If GR generated then save items in Stock table int SavedGoodsReceiptId = model.GoodsReceiptID; if (SavedGoodsReceiptId > 0) { model.GoodsReceiptItem.ForEach(item => { stockItem = new StockModel(); stockItem.GoodsReceiptItemId = item.GoodsReceiptItemId; stockItem.ItemId = item.ItemId; stockItem.BatchNO = item.BatchNO; stockItem.ExpiryDate = item.ExpiryDate; stockItem.ReceivedQuantity = item.ReceivedQuantity + item.FreeQuantity; stockItem.AvailableQuantity = item.ReceivedQuantity + item.FreeQuantity; stockItem.ReceiptDate = model.GoodsReceiptDate; stockItem.CreatedBy = item.CreatedBy; stockItem.CreatedOn = item.CreatedOn; db.Stock.Add(stockItem); }); //Save => Stock Items in stock table db.SaveChanges(); PurchaseOrderModel poitems = db.PurchaseOrders.Where(a => a.PurchaseOrderId == model.PurchaseOrderId).FirstOrDefault(); if (poitems != null) { poitems.POStatus = "complete"; db.Entry(poitems).State = EntityState.Modified; db.SaveChanges(); } } transaction.Commit(); } catch (Exception Ex) { transaction.Rollback(); throw Ex; } } return(model); }
public int UpdateGoodsReceipt(GoodsReceiptModel GoodsReceipt) { using (var dbTransaction = db.Database.BeginTransaction()) { try { db.GoodsReceipts.Attach(GoodsReceipt); db.Entry(GoodsReceipt).State = EntityState.Modified; db.Entry(GoodsReceipt).Property(x => x.CreatedOn).IsModified = false; db.Entry(GoodsReceipt).Property(x => x.CreatedBy).IsModified = false; db.Entry(GoodsReceipt).Property(x => x.GoodsReceiptDate).IsModified = false; db.Entry(GoodsReceipt).Property(x => x.VendorId).IsModified = false; db.Entry(GoodsReceipt).Property(x => x.BillNo).IsModified = false; db.SaveChanges(); GoodsReceipt.GoodsReceiptItem.ForEach(itm => { db.GoodsReceiptItems.Attach(itm); db.Entry(itm).State = EntityState.Modified; db.Entry(itm).Property(x => x.GoodsReceiptId).IsModified = false; db.Entry(itm).Property(x => x.CreatedOn).IsModified = false; db.Entry(itm).Property(x => x.CreatedBy).IsModified = false; db.SaveChanges(); }); dbTransaction.Commit(); return(GoodsReceipt.GoodsReceiptID); } catch (Exception Ex) { dbTransaction.Rollback(); throw Ex; } } }
public IActionResult Post([FromBody] GoodsReceiptModel value) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser"); value.CreatedBy = currentUser.EmployeeId; value.IsCancel = false; if (value != null) { //Nagesh: we are creating gr without po directly , if we need functionality like first create po and then gr //po from background //var poResponse = _inventoryGoodReceiptService.AddPOAndPOItemsByGRId(value); //value.PurchaseOrderId = poResponse.PurchaseOrderId; var grResponse = _inventoryGoodReceiptService.AddGoodsReceipt(value); //add po with po items when we directly create goods receipt responseData.Results = grResponse.GoodsReceiptID; responseData.Status = "OK"; } } catch (Exception ex) { responseData.Status = "Failed"; responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString(); } return(Ok(responseData)); }
public IActionResult UpdateGoodReceipt([FromBody] GoodsReceiptModel value) { try { responseData.Results = _inventoryGoodReceiptService.UpdateGoodsReceipt(value); responseData.Status = "OK"; } catch (Exception ex) { responseData.Status = "Failed"; responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString(); } return(Ok(responseData)); }
public PurchaseOrderModel AddPOAndPOItemsByGRId(GoodsReceiptModel model) { using (var transaction = db.Database.BeginTransaction()) { PurchaseOrderModel po = new PurchaseOrderModel(); try { po.VendorId = model.VendorId; po.PoDate = DateTime.Now; po.POStatus = "complete"; po.SubTotal = model.SubTotal; po.TotalAmount = model.TotalAmount; po.VAT = model.VATTotal; po.CreatedBy = model.CreatedBy.Value; po.CreatedOn = DateTime.Now; po.PurchaseOrderItems = new List <PurchaseOrderItemsModel>(); model.GoodsReceiptItem.ForEach(grItm => { PurchaseOrderItemsModel poItem = new PurchaseOrderItemsModel(); poItem.ItemId = grItm.ItemId; poItem.Quantity = grItm.ReceivedQuantity; poItem.PurchaseOrderId = po.PurchaseOrderId; poItem.StandardRate = grItm.ItemRate; poItem.TotalAmount = grItm.TotalAmount; poItem.ReceivedQuantity = grItm.ReceivedQuantity; poItem.PendingQuantity = 0; poItem.DeliveryDays = 0; poItem.AuthorizedBy = po.CreatedBy; poItem.AuthorizedOn = DateTime.Now; poItem.AuthorizedRemark = "this is auto po creating on gr creation time"; poItem.CreatedBy = po.CreatedBy; poItem.CreatedOn = DateTime.Now; poItem.POItemStatus = "complete"; po.PurchaseOrderItems.Add(poItem); }); db.PurchaseOrders.Add(po); db.SaveChanges(); transaction.Commit(); } catch (Exception Ex) { transaction.Rollback(); throw Ex; } return(po); } }