public string AddOrUpdatePurchaseOrder(int id, int branchID, DateTime date, DateTime expectedDate, int supplierID, string notes, decimal discValue, string terms, List <PurchaseOrderDetailViewModel> detail) { var poHeader = id == 0 ? new PurchaseOrderHeader() : context.PurchaseOrderHeaders.Single(po => po.ID == id); if (id == 0) { poHeader.DocumentNo = autoNumberProvider.Generate(branchID, "PO", date.Month, date.Year); } poHeader.BranchID = branchID; poHeader.DocumentDate = date; poHeader.ExpectedDate = expectedDate; poHeader.SupplierID = supplierID; poHeader.Notes = notes; poHeader.DiscountValue = discValue; poHeader.Terms = terms; poHeader.EmployeeID = employeeProvider.Get(CurrentUserName).ID; poHeader.Status = 'O'; poHeader.StatusReceiving = 'O'; EntityHelper.SetAuditField(id, poHeader, CurrentUserName); context.Delete(poHeader.PurchaseOrderDetails.ToList()); foreach (var detailLine in detail) { PurchaseOrderDetailViewModel line = detailLine; //var itemProvider = new ItemProvider(context, principal); decimal ratio = itemProvider.GetItemUnitRatio(detailLine.ItemID, detailLine.UnitName); var poDetail = new PurchaseOrderDetail { ItemID = detailLine.ItemID, UnitPrice = detailLine.UnitPrice, Quantity = detailLine.Quantity, IsTaxed = detailLine.IsTaxed, DiscountRate = detailLine.DiscountRate, UnitName = detailLine.UnitName, UnitRatio = ratio, Notes = String.Empty }; poHeader.PurchaseOrderDetails.Add(poDetail); } if (id == 0) { context.Add(poHeader); autoNumberProvider.Increment("PO", branchID, date.Year); } context.SaveChanges(); return(poHeader.DocumentNo); }
public async Task <IActionResult> CreatePurchaseOrderDetailAsync([FromBody] PurchaseOrderDetailViewModel value) { var response = new SingleModelResponse <PurchaseOrderDetailViewModel>() as ISingleModelResponse <PurchaseOrderDetailViewModel>; try { var entity = await Task.Run(() => { return(_RESTfulAPI_Repository.AddPurchaseOrderDetail(value.ToEntity())); }); if (response.DidError == false) { response.Model = entity.ToViewModel(); } } catch (Exception ex) { string webRoot = _hostingEnvironment.WebRootPath; string errorGuid = String.Format(Guid.NewGuid().ToString().Replace("-", string.Empty).Substring(0, 16)); HttpContext.Session.SetString("ErrorGuid", errorGuid); ViewBag.ErrorGuid = HttpContext.Session.GetString("ErrorGuid"); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { using (StreamWriter w = new StreamWriter(webRoot + "\\log.txt", append: true)) { Log.Logging(ex.ToString(), w, ViewBag.ErrorGuid); } } if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { using (StreamWriter w = new StreamWriter(webRoot + "/log.txt", append: true)) { Log.Logging(ex.ToString(), w, ViewBag.ErrorGuid); } } response.DidError = true; //response.ErrorMessage = ex.ToString(); return(this.Json(new { timestamp = DateTime.Now, errorGuid = ViewBag.ErrorGuid, status = HttpStatusCode.InternalServerError, info = "Error logged in log file." })); } response.Info = "Client " + " " + HttpContext.Connection.RemoteIpAddress.ToString(); return(response.ToHttpResponse()); }
protected void btnAddDetail_Click(object sender, EventArgs e) { Page.Validate("AddDetail"); if (Page.IsValid) { if (Convert.ToInt32(ntbQty.Value) == 0) { ntbQty.Value = 1; } try { var detailLine = new PurchaseOrderDetailViewModel(); var item = ItemService.Get(Convert.ToInt32(cboItem.SelectedValue)); detailLine.ItemID = item.ID; detailLine.ItemCode = item.Barcode; detailLine.ItemName = item.Description; detailLine.UnitName = ddlUnit.SelectedItem.Text; detailLine.Quantity = Convert.ToInt32(ntbQty.Value); detailLine.UnitPrice = Convert.ToDecimal(ntbUnitPrice.Value); detailLine.IsTaxed = true; detailLine.DiscountRate = Convert.ToDecimal(ntbDisc.Value); detailLine.Total = (detailLine.Quantity * detailLine.UnitPrice) - (detailLine.Quantity * detailLine.UnitPrice * detailLine.DiscountRate / 100); if (detailLine.IsTaxed) { detailLine.Total += detailLine.Total * 0.1M; } detailLine.ID = Detail.Any() ? Detail.Max(detail => detail.ID) + 1 : 1; Detail.Add(detailLine); RefreshDetail(); cboItem.Text = ""; ntbQty.Value = 1; ddlUnit.SelectedIndex = -1; ntbUnitPrice.Value = 0; ntbDisc.Value = 0; cboItem.Focus(); } catch (Exception ex) { WebFormHelper.SetLabelTextWithCssClass(lblStatusAddEdit, ex.Message, LabelStyleNames.ErrorMessage); } } }
/// <summary> /// /// </summary> /// <param name="viewModel"></param> /// <returns></returns> public static PurchaseOrderDetail ToEntity(this PurchaseOrderDetailViewModel viewModel) { return(viewModel == null ? null : new PurchaseOrderDetail { Id = viewModel.Id, Purchase_Order_Id = viewModel.Purchase_Order_Id, Product_Id = viewModel.Product_Id, Quantity = viewModel.Quantity, Unit_Cost = viewModel.Unit_Cost, Date_Received = viewModel.Date_Received, Posted_To_Inventory = viewModel.Posted_To_Inventory, Inventory_Id = viewModel.Inventory_Id // //RowGuid = viewModel.RowGuid, //ModifiedDate = viewModel.ModifiedDate }); }
public async Task <IActionResult> UpdatePurchaseOrderDetailAsync(Int32 id, [FromBody] PurchaseOrderDetailViewModel value) { var response = new SingleModelResponse <PurchaseOrderDetailViewModel>() as ISingleModelResponse <PurchaseOrderDetailViewModel>; try { var entity = await Task.Run(() => { return(_RESTfulAPI_Repository.UpdatePurchaseOrderDetail(id, value.ToEntity())); }); response.Model = entity.ToViewModel(); response.Info = "The record was updated successfully"; } catch (Exception ex) { response.DidError = true; response.ErrorMessage = ex.Message; } return(response.ToHttpResponse()); }
public string AddOrUpdatePurchaseOrder(int id, int branchID, DateTime date, DateTime expectedDate, int supplierID, string notes, decimal discValue, string terms, List <PurchaseOrderDetailViewModel> detail) { var poHeader = id == 0 ? new PurchaseOrderHeader() : context.PurchaseOrderHeaders.Single(po => po.ID == id); var autoNo = new AutoNumberProvider(context, principal); var emp = new EmployeeProvider(context, principal); if (id == 0) { poHeader.DocumentNo = autoNo.GeneratePurchaseOrderRunningNumber(CurrentCompanyCode, date); } poHeader.BranchID = branchID; poHeader.Date = date; poHeader.ExpectedDate = expectedDate; poHeader.SupplierID = supplierID; poHeader.Notes = notes; poHeader.DiscountValue = discValue; poHeader.Terms = terms; poHeader.EmployeeID = emp.GetEmployee(CurrentUserName).ID; poHeader.Status = "O"; poHeader.StatusReceiving = "O"; EntityHelper.SetAuditFields(id, poHeader, CurrentUserName); //context.SubmitChanges(); context.PurchaseOrderDetails.DeleteAllOnSubmit(poHeader.PurchaseOrderDetails); foreach (var detailLine in detail) { PurchaseOrderDetailViewModel line = detailLine; var itemProvider = new ItemProvider(context, principal); decimal ratio = itemProvider.GetItemUnitRatio(detailLine.ItemID, detailLine.UnitName); var poDetail = new PurchaseOrderDetail { ItemID = detailLine.ItemID, UnitPrice = detailLine.UnitPrice, Quantity = detailLine.Quantity, IsTaxed = detailLine.IsTaxed, DiscountRate = detailLine.DiscountRate, UnitName = detailLine.UnitName, UnitRatio = ratio, Notes = String.Empty }; poDetail.PurchaseOrderHeader = poHeader; //poHeader.PurchaseOrderDetails.Add(poDetail); context.PurchaseOrderDetails.InsertOnSubmit(poDetail); } if (id == 0) { context.PurchaseOrderHeaders.InsertOnSubmit(poHeader); } context.SubmitChanges(); return(poHeader.DocumentNo); }