public JsonResult ThemPhieuBuDinhMuc(int storeid, List <BukhoModel> products) { { var tblorder = new tbl_TransferOrder { SysHotelID = CommService.GetHotelId(), CreatorID = CommService.GetUserId(), DateCreated = DateTime.Now, Status = 1, SupplierID = 0, OrderCode = service.GetTransferCode(), // SupplierCode = order.SoChungTu, InputDate = DateTime.Today, }; List <tbl_TransferOrderDetail> listDetail = new List <tbl_TransferOrderDetail>(); var product = service.GetallProducts(); var cate = service.GetAllCategories(); foreach (var item in products) { var p1 = product.FirstOrDefault(p => p.Id == item.ProductId); var c = cate.FirstOrDefault(p => p.Id == p1?.ProductCateID); listDetail.Add(new tbl_TransferOrderDetail { SysHotelID = CommService.GetHotelId(), item = p1 != null ? p1.Name : "", catalogitemid = p1?.ProductCateID, catalogitem = c != null ? c.Name : "", DateCreated = DateTime.Now, CreatorID = CommService.GetUserId(), quantity = item.Quantity, itemid = item.ProductId, StoreID = item.StoreId, FromStoreId = storeid, Price = Convert.ToInt32(p1?.PriceOrder), }); } var msg = ""; var rs = service.StoreTransfer(tblorder, listDetail); if (string.IsNullOrEmpty(msg)) { msg = "Tạo phiếu lỗi"; } return(Json(new { ResponseCode = (rs ? "01" : "00"), Message = (rs ? "Tạo phiếu thành công" : msg) }, JsonRequestBehavior.AllowGet)); } }
public JsonResult Add(Order order, List <OrderDetail> orderdetails) { var tblorder = new tbl_TransferOrder { SysHotelID = CommService.GetHotelId(), CreatorID = CommService.GetUserId(), DateCreated = DateTime.Now, Status = 1, SupplierID = 0, OrderCode = order.SoPhieu, // SupplierCode = order.SoChungTu, InputDate = Share.Todate(order.NgayNhapHD), // DatePayment = DateTime.ParseExact(order.NgayChungTu, "dd/MM/yyyy", CultureInfo.InvariantCulture) }; List <tbl_TransferOrderDetail> listDetail = new List <tbl_TransferOrderDetail>(); foreach (var item in orderdetails) { listDetail.Add(new tbl_TransferOrderDetail { SysHotelID = CommService.GetHotelId(), item = item.ProductName, catalogitemid = item.CateId, catalogitem = item.CateName, DateCreated = DateTime.Now, CreatorID = CommService.GetUserId(), quantity = item.Quantity, itemid = item.ProductId, StoreID = order.StoreId, FromStoreId = order.SrcStoreId, Price = item.Price, }); } var msg = ""; var rs = service.StoreTransfer(tblorder, listDetail, ref msg); if (string.IsNullOrEmpty(msg)) { msg = "Tạo phiếu lỗi"; } return(Json(new { ResponseCode = (rs ? "01" : "00"), Message = (rs ? "Tạo phiếu thành công" : msg) }, JsonRequestBehavior.AllowGet)); }
public bool StoreTransfer(tbl_TransferOrder order, List <tbl_TransferOrderDetail> orderDetails) { using (var db = _connectionData.OpenDbConnection()) { using (var ts = db.OpenTransaction()) { try { order.Id = Convert.ToInt32(db.Insert(order, true)); foreach (var item in orderDetails) { item.TransferID = order.Id; } var srcStoreId = orderDetails.FirstOrDefault().FromStoreId; foreach (var item in orderDetails) { var product = db.Select <tbl_Product>( p => p.SysHotelID == CommService.GetHotelId() && p.Id == item.itemid) .FirstOrDefault(); var srcStoreProduct = db.Select <tbl_StoreProduct>( p => p.productid == item.itemid && p.storeid == srcStoreId).FirstOrDefault(); if (srcStoreProduct == null || srcStoreProduct.quantity == 0) { continue; } item.quantity = srcStoreProduct.quantity > item.quantity ? item.quantity : srcStoreProduct.quantity; db.Insert(item); srcStoreProduct.quantity = srcStoreProduct.quantity - item.quantity; db.Update(srcStoreProduct); var existItem = db.Select <tbl_StoreProduct>( p => p.productid == item.itemid && p.storeid == item.StoreID).FirstOrDefault(); if (existItem == null) { existItem = new tbl_StoreProduct { quantity = item.quantity, SysHotelID = CommService.GetHotelId(), datecreated = DateTime.Now, productid = item.itemid, unitid = product.UnitID, storeid = item.StoreID }; var id = db.Insert(existItem, true); //Thêm bản ghi Log var log = new tbl_StoreProductLog { typeImportExport = 3, SysHotelID = CommService.GetHotelId(), datecreated = DateTime.Now, storeid = item.StoreID, productid = item.itemid, storeproductid = Convert.ToInt32(id), unitid = product.UnitID, quantity = item.quantity, fromstoreid = srcStoreId }; db.Insert(log); } else { var log = new tbl_StoreProductLog { typeImportExport = 3, SysHotelID = CommService.GetHotelId(), datecreated = DateTime.Now, storeid = item.StoreID, productid = item.itemid, storeproductid = existItem.Id, unitid = product.UnitID, quantity = item.quantity, fromstoreid = srcStoreId }; db.Insert(log); existItem.quantity = existItem.quantity + item.quantity; db.Update(existItem); } } ts.Commit(); return(true); } catch (Exception) { ts.Rollback(); return(false); } } } }
public bool StoreTransfer(tbl_TransferOrder order, List <tbl_TransferOrderDetail> orderDetails, ref string msg) { using (var db = _connectionData.OpenDbConnection()) { using (var ts = db.OpenTransaction()) { try { order.Id = Convert.ToInt32(db.Insert(order, true)); foreach (var item in orderDetails) { item.TransferID = order.Id; } db.InsertAll(orderDetails); //Cập nhật tồn kho: //Group theo StoreId var srcStoreId = orderDetails.FirstOrDefault().FromStoreId; var storeId = orderDetails.FirstOrDefault().StoreID; // foreach (var storeId in storeIds) var orderByStore = orderDetails.Where(p => p.StoreID == storeId); //Group theo sản phẩm var productGroup = orderByStore.GroupBy(p => p.itemid, (key, g) => new { ProductId = key, Total = g.Sum(p => p.quantity) }); foreach (var item in productGroup) { //trừ tồn kho Kho gốc var srcStoreProduct = db.Select <tbl_StoreProduct>( p => p.productid == item.ProductId && p.storeid == srcStoreId).FirstOrDefault(); var product = db.Select <tbl_Product>( p => p.SysHotelID == CommService.GetHotelId() && p.Id == item.ProductId) .FirstOrDefault(); if (srcStoreProduct == null || srcStoreProduct.quantity < item.Total) { // var product = msg = "Tạo phiếu lỗi. Sản phẩm " + product.Name + " không đủ số lượng trong kho nguồn"; ts.Rollback(); return(false); } srcStoreProduct.quantity = srcStoreProduct.quantity - item.Total; db.Update(srcStoreProduct); var existItem = db.Select <tbl_StoreProduct>( p => p.productid == item.ProductId && p.storeid == storeId).FirstOrDefault(); if (existItem == null) { existItem = new tbl_StoreProduct { quantity = item.Total, SysHotelID = CommService.GetHotelId(), datecreated = DateTime.Now, productid = item.ProductId, unitid = product.UnitID, storeid = storeId }; var id = db.Insert(existItem, true); //Thêm bản ghi Log var log = new tbl_StoreProductLog { typeImportExport = 3, SysHotelID = CommService.GetHotelId(), datecreated = DateTime.Now, storeid = storeId, productid = item.ProductId, storeproductid = Convert.ToInt32(id), unitid = product.UnitID, quantity = item.Total, fromstoreid = srcStoreId }; db.Insert(log); } else { var log = new tbl_StoreProductLog { typeImportExport = 3, SysHotelID = CommService.GetHotelId(), datecreated = DateTime.Now, storeid = storeId, productid = item.ProductId, storeproductid = existItem.Id, unitid = product.UnitID, quantity = item.Total, fromstoreid = srcStoreId }; db.Insert(log); existItem.quantity = existItem.quantity + item.Total; db.Update(existItem); } } ts.Commit(); return(true); } catch (Exception) { ts.Rollback(); return(false); } } } }