public async Task<bool> CreateInput(Transaction_Detail_Dto model, string updateBy) { var qrCodeModel = await _repoQRCodeMain.GetByQRCodeID(model.QrCode_Id); if (qrCodeModel != null && qrCodeModel.Valid_Status == "Y") { var listQrCodeDetails = await _repoQRCodeDetail.GetByQRCodeIDAndVersion(qrCodeModel.QRCode_ID, qrCodeModel.QRCode_Version); var packingListModel = await _repoPackingList.GetByReceiveNo(qrCodeModel.Receive_No); WMSB_Transaction_Main inputModel = new WMSB_Transaction_Main(); inputModel.Transac_Type = "I"; inputModel.Transac_No = model.Input_No; inputModel.Transac_Time = DateTime.Now; inputModel.QRCode_ID = qrCodeModel.QRCode_ID; inputModel.QRCode_Version = qrCodeModel.QRCode_Version; inputModel.MO_No = packingListModel.MO_No; inputModel.MO_Seq = packingListModel.MO_Seq; inputModel.Purchase_No = packingListModel.Purchase_No; inputModel.Material_ID = packingListModel.Material_ID; inputModel.Material_Name = packingListModel.Material_Name; inputModel.Purchase_Qty = model.Accumated_Qty; inputModel.Transacted_Qty = model.Trans_In_Qty; inputModel.Rack_Location = model.Rack_Location; inputModel.Can_Move = "Y"; inputModel.Is_Transfer_Form = "N"; inputModel.Updated_By = updateBy; inputModel.Updated_Time = DateTime.Now; _repoTransactionMain.Add(inputModel); var i = 0; foreach (var item in model.Detail_Size) { WMSB_Transaction_Detail inputDetailModel = new WMSB_Transaction_Detail(); inputDetailModel.Transac_No = inputModel.Transac_No; inputDetailModel.Tool_Size = listQrCodeDetails[i].Tool_Size; inputDetailModel.Model_Size = listQrCodeDetails[i].Model_Size; inputDetailModel.Order_Size = listQrCodeDetails[i].Order_Size; inputDetailModel.Spec_Size = listQrCodeDetails[i].Spec_Size; inputDetailModel.Qty = listQrCodeDetails[i].Qty; inputDetailModel.Trans_Qty = item.Qty; inputDetailModel.Instock_Qty = item.Qty; inputDetailModel.Untransac_Qty = inputDetailModel.Qty - inputDetailModel.Trans_Qty; inputDetailModel.Updated_By = updateBy; inputDetailModel.Updated_Time = DateTime.Now; _repoTransactionDetail.Add(inputDetailModel); i += 1; } return await _repoTransactionMain.SaveAll(); } return false; }
public async Task <bool> SubmitTransfer(List <TransferLocation_Dto> lists, string updateBy) { DateTime timeNow = DateTime.Now; if (lists.Count > 0) { foreach (var item in lists) { // Tìm ra TransactionMain theo id var transactionMain = _repoTransactionMain.FindSingle(x => x.ID == item.Id); // tạo biến lấy ra Transac_No của TransactionMain var transacNo = transactionMain.Transac_No; // Update TransactionMain cũ: Can_Move = "N" transactionMain.Can_Move = "N"; _repoTransactionMain.Update(transactionMain); await _repoTransactionMain.SaveAll(); // Thêm TransactionMain mới dựa vào TransactionMain cũ: thêm mới chỉ thay đổi mấy trường dưới còn lại giữ nguyên transactionMain.ID = 0; // Trong DB có identity tự tăng transactionMain.Transac_Type = "M"; transactionMain.Can_Move = "Y"; transactionMain.Is_Transfer_Form = "N"; transactionMain.Rack_Location = item.ToLocation; transactionMain.Updated_By = updateBy; transactionMain.Updated_Time = timeNow; transactionMain.Transac_Time = item.TransacTime; transactionMain.Transac_No = item.TransferNo; transactionMain.Transac_Sheet_No = item.TransferNo; _repoTransactionMain.Add(transactionMain); // Thêm TransactionDetail mới dựa vào TransactionDetail của TransactionMain cũ(có bao nhiêu TransactionDetail cũ là thêm bấy nhiêu TransactionDetail mới): chỉ thay đổi Transac_No thành của TransactionMain mới var transactionDetails = await _repoTransactionDetail.FindAll(x => x.Transac_No.Trim() == transacNo.Trim()).ToListAsync(); foreach (var transactionDetail in transactionDetails) { // thêm mới chỉ thay đổi mấy trường dưới, còn lại giữ nguyên transactionDetail.ID = 0; // Trong DB có identity tự tăng transactionDetail.Transac_No = item.TransferNo; transactionDetail.Updated_Time = timeNow; transactionDetail.Updated_By = updateBy; _repoTransactionDetail.Add(transactionDetail); } } return(await _repoTransactionMain.SaveAll()); } return(false); }
public async Task <bool> SaveListOutput(List <OutputParam> outputParam, string updateBy) { DateTime timeNow = DateTime.Now; string outputSheetNo; do { string num = CodeUtility.RandomNumber(3); outputSheetNo = "OB" + DateTime.Now.ToString("yyyyMMdd") + num;// OB + 20200421 + 001 } while (await _repoTransactionMain.CheckTranSheetNo(outputSheetNo)); foreach (var itemt in outputParam) { // Tìm ra TransactionMain theo id var transactionMain = _repoTransactionMain.FindSingle(x => x.ID == itemt.output.Id); transactionMain.Can_Move = "N"; // update transaction main cũ: Can_Move thành N _repoTransactionMain.Update(transactionMain); // thêm transaction main type O WMSB_Transaction_Main modelTypeO = new WMSB_Transaction_Main(); modelTypeO.Transac_Type = "O"; modelTypeO.Can_Move = "N"; // modelTypeO.Is_Transfer_Form = "N"; modelTypeO.Transac_No = itemt.output.TransacNo; modelTypeO.Transac_Sheet_No = outputSheetNo; modelTypeO.Transacted_Qty = itemt.output.TransOutQty; modelTypeO.Pickup_No = itemt.output.PickupNo; modelTypeO.Transac_Time = timeNow; modelTypeO.Updated_Time = timeNow; modelTypeO.Updated_By = updateBy; modelTypeO.Missing_No = transactionMain.Missing_No; modelTypeO.Material_ID = transactionMain.Material_ID; modelTypeO.Material_Name = transactionMain.Material_Name; modelTypeO.Purchase_No = transactionMain.Purchase_No; modelTypeO.Rack_Location = null;// type O: racklocation rỗng modelTypeO.Purchase_Qty = transactionMain.Purchase_Qty; modelTypeO.QRCode_Version = transactionMain.QRCode_Version; modelTypeO.QRCode_ID = transactionMain.QRCode_ID; modelTypeO.MO_No = transactionMain.MO_No; modelTypeO.MO_Seq = transactionMain.MO_Seq; _repoTransactionMain.Add(modelTypeO); // Thêm transaction detail mới theo type = o, dựa vào transaction detail của transaction main cũ foreach (var item in itemt.transactionDetail) { item.ID = 0;// ID trong db là tự tăng: dựa vào transaction detail cũ nên thêm mới gán id bằng 0, không cần phải new hết thuộc tính của đổi tượng ra item.Transac_No = itemt.output.TransacNo; item.Updated_By = updateBy; item.Updated_Time = timeNow; var itemModel = _mapper.Map <WMSB_Transaction_Detail>(item); _repoTransactionDetail.Add(itemModel); } // Nếu output ra chưa hết thì thêm transaction main type R, và transaction detail, thêm qrcode mới và update version lên if (itemt.output.RemainingQty > 0) { // thêm type R var tmpQrcodeVersion = transactionMain.QRCode_Version + 1; WMSB_Transaction_Main modelTypeR = new WMSB_Transaction_Main(); modelTypeR.Transac_Type = "R"; modelTypeR.Transac_No = "R" + transactionMain.Transac_No; modelTypeR.Transac_Sheet_No = "R" + transactionMain.Transac_Sheet_No; modelTypeR.Transacted_Qty = itemt.output.TransOutQty; modelTypeR.Updated_By = updateBy; modelTypeR.Updated_Time = timeNow; modelTypeR.Missing_No = transactionMain.Missing_No; modelTypeR.Material_ID = transactionMain.Material_ID; modelTypeR.Material_Name = transactionMain.Material_Name; modelTypeR.Purchase_No = transactionMain.Purchase_No; modelTypeR.Rack_Location = transactionMain.Rack_Location; modelTypeR.Purchase_Qty = transactionMain.Purchase_Qty; modelTypeR.QRCode_Version = tmpQrcodeVersion; modelTypeR.QRCode_ID = transactionMain.QRCode_ID; modelTypeR.MO_No = transactionMain.MO_No; modelTypeR.MO_Seq = transactionMain.MO_Seq; modelTypeR.Can_Move = "Y"; // modelTypeR.Is_Transfer_Form = "N"; modelTypeR.Transac_Time = timeNow; _repoTransactionMain.Add(modelTypeR); // thêm transaction main cũng phải thêm transaction detail foreach (var itemTypeR in itemt.transactionDetail) { itemTypeR.ID = 0;// ID trong db là tự tăng: dựa vào transaction detail cũ nên thêm mới gán id bằng 0, không cần phải new hết thuộc tính của đổi tượng ra itemTypeR.Transac_No = modelTypeR.Transac_No; itemTypeR.Updated_By = updateBy; itemTypeR.Updated_Time = timeNow; itemTypeR.Qty = itemTypeR.Instock_Qty; itemTypeR.Trans_Qty = itemTypeR.Instock_Qty; var itemModel = _mapper.Map <WMSB_Transaction_Detail>(itemTypeR); _repoTransactionDetail.Add(itemModel); } // thêm qrcode mới, nếu output ra chưa hết thì thêm qrcode main mới dựa vào cái cũ và update version lên var qrCodeMain = await _repoQRCodeMain.FindAll(x => x.QRCode_ID.Trim() == itemt.output.QrCodeId.Trim()).OrderByDescending(x => x.QRCode_Version).FirstOrDefaultAsync(); WMSB_QRCode_Main modelQrCodeMain = new WMSB_QRCode_Main(); modelQrCodeMain.QRCode_ID = qrCodeMain.QRCode_ID; modelQrCodeMain.QRCode_Type = qrCodeMain.QRCode_Type; modelQrCodeMain.Receive_No = qrCodeMain.Receive_No; modelQrCodeMain.Valid_Status = "Y"; modelQrCodeMain.Is_Scanned = "Y"; modelQrCodeMain.Invalid_Date = qrCodeMain.Invalid_Date; modelQrCodeMain.QRCode_Version = qrCodeMain.QRCode_Version + 1; modelQrCodeMain.Updated_Time = timeNow; modelQrCodeMain.Updated_By = updateBy; _repoQRCodeMain.Add(modelQrCodeMain); // Update cho QRCode cũ, Valid_Status =N, Invalid_Date = Ngày mà tạo ra version mới qrCodeMain.Valid_Status = "N"; qrCodeMain.Invalid_Date = timeNow; _repoQRCodeMain.Update(qrCodeMain); // thêm qrcodedetail của qrcode mới: thêm qrcode main cũng phải thêm qrcode detail var qrCodeDetails = await _repoQRCodeDetail.FindAll(x => x.QRCode_ID.Trim() == qrCodeMain.QRCode_ID.Trim() && x.QRCode_Version == qrCodeMain.QRCode_Version).ToListAsync(); foreach (var itemQrCodeDetail in qrCodeDetails) { itemQrCodeDetail.QID = 0; itemQrCodeDetail.Updated_By = updateBy; itemQrCodeDetail.Updated_Time = timeNow; itemQrCodeDetail.QRCode_Version = modelQrCodeMain.QRCode_Version; itemQrCodeDetail.Qty = itemt.transactionDetail.Where(x => x.Tool_Size == itemQrCodeDetail.Tool_Size && x.Order_Size == itemQrCodeDetail.Order_Size && x.Model_Size == itemQrCodeDetail.Model_Size).FirstOrDefault().Instock_Qty; _repoQRCodeDetail.Add(itemQrCodeDetail); } } // Nếu QRCode đã out hết số lượng, cần update cho nó không còn hiệu lực // ( Ở bảng WMSB_QRCode_Main: UPDATE trường Valid_Status =’N”, Invalid_Date là ngày Output hết số lượng, // đồng thời cũng update trường Update_Time & Update_By) else { var qrCodeMain = await _repoQRCodeMain.FindAll(x => x.QRCode_ID.Trim() == itemt.output.QrCodeId.Trim()).OrderByDescending(x => x.QRCode_Version).FirstOrDefaultAsync(); qrCodeMain.Valid_Status = "N"; qrCodeMain.Invalid_Date = timeNow; qrCodeMain.Updated_Time = timeNow; qrCodeMain.Updated_By = updateBy; _repoQRCodeMain.Update(qrCodeMain); } } // lưu Db return(await _repoTransactionMain.SaveAll()); }
public async Task <bool> SaveListOutput(List <OutputParam> outputParam) { DateTime timeNow = DateTime.Now; foreach (var itemt in outputParam) { Random ran = new Random(); int num = ran.Next(100, 999); // Tìm ra TransactionMain theo id var transactionMain = _repoTransactionMain.FindSingle(x => x.ID == itemt.output.Id); if (transactionMain.Transac_Type != "R") { transactionMain.Can_Move = "N"; // nếu type != R update transaction main cũ: Can_Move thành N _repoTransactionMain.Update(transactionMain); } if (transactionMain.Transac_Type == "R" && itemt.output.RemainingQty == 0) { transactionMain.Can_Move = "N"; // nếu type == R và output ra hết update : Can_Move thành N _repoTransactionMain.Update(transactionMain); } // thêm transaction main type O WMSB_Transaction_Main modelTypeO = new WMSB_Transaction_Main(); modelTypeO.Transac_Type = "O"; modelTypeO.Can_Move = "N"; modelTypeO.Transac_No = itemt.output.TransacNo; modelTypeO.Transac_Sheet_No = "OB" + DateTime.Now.ToString("yyyyMMdd") + num.ToString(); modelTypeO.Transacted_Qty = itemt.output.TransOutQty; modelTypeO.Pickup_No = itemt.output.PickupNo; modelTypeO.Transac_Time = timeNow; modelTypeO.Updated_Time = timeNow; modelTypeO.Updated_By = "Emma"; modelTypeO.Missing_No = transactionMain.Missing_No; modelTypeO.Material_ID = transactionMain.Material_ID; modelTypeO.Material_Name = transactionMain.Material_Name; modelTypeO.Purchase_No = transactionMain.Purchase_No; modelTypeO.Rack_Location = null;// type O: racklocation rỗng modelTypeO.Purchase_Qty = transactionMain.Purchase_Qty; modelTypeO.QRCode_Version = transactionMain.QRCode_Version; modelTypeO.QRCode_ID = transactionMain.QRCode_ID; modelTypeO.MO_No = transactionMain.MO_No; modelTypeO.MO_Seq = transactionMain.MO_Seq; _repoTransactionMain.Add(modelTypeO); // Thêm transaction detail mới theo type = o, dựa vào transaction detail của transaction main cũ foreach (var item in itemt.transactionDetail) { item.ID = 0;// ID trong db là tự tăng: dựa vào transaction detail cũ nên thêm mới gán id bằng 0, không cần phải new hết thuộc tính của đổi tượng ra item.Transac_No = itemt.output.TransacNo; item.Updated_By = "Emma"; item.Updated_Time = timeNow; var itemModel = _mapper.Map <WMSB_Transaction_Detail>(item); _repoTransactionDetail.Add(itemModel); } // Nếu output ra chưa hết thì thêm transaction main type R, và transaction detail, thêm qrcode mới và update version lên if (itemt.output.RemainingQty > 0) { // thêm type R // nếu type là R: thì update lại if (transactionMain.Transac_Type.Trim() == "R") { var tmpQrcodeVersion = transactionMain.QRCode_Version + 1; transactionMain.Updated_Time = timeNow; transactionMain.Updated_By = "Emma"; transactionMain.Transacted_Qty = itemt.output.TransOutQty; transactionMain.QRCode_Version = tmpQrcodeVersion; _repoTransactionMain.Update(transactionMain); // update transaction main thì cũng phải update transaction detail var transactionDetail = await _repoTransactionDetail.FindAll(x => x.Transac_No.Trim() == transactionMain.Transac_No.Trim()).ToListAsync(); foreach (var item in transactionDetail) { item.Trans_Qty = 0;// nếu transaction main là Type R là thì transaction detail của nó gán Trans_Qty = 0 item.Qty = itemt.transactionDetail.Where(x => x.Tool_Size == item.Tool_Size && x.Order_Size == item.Order_Size && x.Model_Size == item.Model_Size).FirstOrDefault().Qty; item.Instock_Qty = itemt.transactionDetail.Where(x => x.Tool_Size == item.Tool_Size && x.Order_Size == item.Order_Size && x.Model_Size == item.Model_Size).FirstOrDefault().Instock_Qty; item.Updated_By = "Emma"; item.Updated_Time = timeNow; _repoTransactionDetail.Update(item); } } // ngược lại thì thêm mới type R else { var tmpQrcodeVersion = transactionMain.QRCode_Version + 1; WMSB_Transaction_Main modelTypeR = new WMSB_Transaction_Main(); modelTypeR.Transac_Type = "R"; modelTypeR.Transac_No = "R" + transactionMain.Transac_No; modelTypeR.Transac_Sheet_No = "R" + transactionMain.Transac_Sheet_No; modelTypeR.Transacted_Qty = itemt.output.TransOutQty; modelTypeR.Updated_By = "Emma"; modelTypeR.Updated_Time = timeNow; modelTypeR.Missing_No = transactionMain.Missing_No; modelTypeR.Material_ID = transactionMain.Material_ID; modelTypeR.Material_Name = transactionMain.Material_Name; modelTypeR.Purchase_No = transactionMain.Purchase_No; modelTypeR.Rack_Location = transactionMain.Rack_Location; modelTypeR.Purchase_Qty = transactionMain.Purchase_Qty; modelTypeR.QRCode_Version = tmpQrcodeVersion; modelTypeR.QRCode_ID = transactionMain.QRCode_ID; modelTypeR.MO_No = transactionMain.MO_No; modelTypeR.MO_Seq = transactionMain.MO_Seq; modelTypeR.Can_Move = "Y"; modelTypeR.Transac_Time = transactionMain.Transac_Time; _repoTransactionMain.Add(modelTypeR); // thêm transaction main cũng phải thêm transaction detail foreach (var itemTypeR in itemt.transactionDetail) { itemTypeR.ID = 0;// ID trong db là tự tăng: dựa vào transaction detail cũ nên thêm mới gán id bằng 0, không cần phải new hết thuộc tính của đổi tượng ra itemTypeR.Transac_No = modelTypeR.Transac_No; itemTypeR.Updated_By = "Emma"; itemTypeR.Updated_Time = timeNow; itemTypeR.Trans_Qty = 0;// nếu transaction main là Type R là thì transaction detail của nó gán Trans_Qty = 0 var itemModel = _mapper.Map <WMSB_Transaction_Detail>(itemTypeR); _repoTransactionDetail.Add(itemModel); } } // thêm qrcode mới, nếu output ra chưa hết thì thêm qrcode main mới dựa vào cái cũ và update version lên var qrCodeMain = await _repoQRCodeMain.FindAll(x => x.QRCode_ID.Trim() == itemt.output.QrCodeId.Trim()).OrderByDescending(x => x.QRCode_Version).FirstOrDefaultAsync(); WMSB_QRCode_Main modelQrCodeMain = new WMSB_QRCode_Main(); modelQrCodeMain.QRCode_ID = qrCodeMain.QRCode_ID; modelQrCodeMain.QRCode_Type = qrCodeMain.QRCode_Type; modelQrCodeMain.Receive_No = qrCodeMain.Receive_No; modelQrCodeMain.Valid_Status = "Y"; modelQrCodeMain.Is_Scanned = "Y"; modelQrCodeMain.Invalid_Date = qrCodeMain.Invalid_Date; modelQrCodeMain.QRCode_Version = qrCodeMain.QRCode_Version + 1; modelQrCodeMain.Updated_Time = timeNow; modelQrCodeMain.Updated_By = "Emma"; _repoQRCodeMain.Add(modelQrCodeMain); // Update cho QRCode cũ, Valid_Status =N, Invalid_Date = Ngày mà tạo ra version mới qrCodeMain.Valid_Status = "N"; qrCodeMain.Invalid_Date = timeNow; _repoQRCodeMain.Update(qrCodeMain); // thêm qrcodedetail của qrcode mới: thêm qrcode main cũng phải thêm qrcode detail var qrCodeDetails = await _repoQRCodeDetail.FindAll(x => x.QRCode_ID.Trim() == qrCodeMain.QRCode_ID.Trim() && x.QRCode_Version == qrCodeMain.QRCode_Version).ToListAsync(); foreach (var itemQrCodeDetail in qrCodeDetails) { itemQrCodeDetail.QID = 0; itemQrCodeDetail.Updated_By = "Emma"; itemQrCodeDetail.Updated_Time = timeNow; itemQrCodeDetail.QRCode_Version = modelQrCodeMain.QRCode_Version; itemQrCodeDetail.Qty = itemt.transactionDetail.Where(x => x.Tool_Size == itemQrCodeDetail.Tool_Size && x.Order_Size == itemQrCodeDetail.Order_Size && x.Model_Size == itemQrCodeDetail.Model_Size).FirstOrDefault().Instock_Qty; _repoQRCodeDetail.Add(itemQrCodeDetail); } } } // lưu Db return(await _repoTransactionMain.SaveAll()); }