public async Task <WebContractViewModel> GetByOID(string OID) { using (IDbConnection conn = _gonSaConnection.GetConnection()) { WebContractViewModel model = new WebContractViewModel(); var result = await conn.QueryMultipleAsync("wspContracts", new { OID = OID }, commandType : CommandType.StoredProcedure); model.WebContract = result.Read <WebContract>().OrderByDescending(x => x.SignNumb).FirstOrDefault(); model.WebContractDetails = result.Read <WebContractDetail>().ToList(); return(model); } }
public async Task Insert(WebContractViewModel webContractViewModel, string ASM, string SUB, string TEAM, string VISA) { var webContract = webContractViewModel.WebContract; using (IDbConnection conn = _gonSaConnection.GetConnection()) { conn.Open(); using (IDbTransaction dbTransaction = conn.BeginTransaction()) { string sQuery = @"INSERT INTO dbo.webContracts( ASM, SUB, TEAM, CmpnID, ClnID, ZoneID, RegionID, CustomerID, EntryID, FactorID, OID, ODATE, ClnPath, MemberCardID, MembType, DscnMbRt, PsCsName, PsCsFReg, PsCsTel, PsCsAddr, PsCsInfo, DeliverEm, DlCsName, DlCsAddr, DlCsInfo, SaleEmID, SaleEmName, DESCRIP, PrdcAmnt, DscnMbAm, DscnAmnt, Sum_Amnt, SignNumb, SignDate, Crt_User, Crt_Date, ChgeUser, ChgeDate) values (@ASM,@SUB,@TEAM,@CmpnID,@ClnID,@ZoneID,@RegionID,@CustomerID,@EntryID,@FactorID,@OID,@ODATE,@ClnPath,@MemberCardID,@MembType,@DscnMbRt,@PsCsName,@PsCsFReg,@PsCsTel, @PsCsAddr,@PsCsInfo,@DeliverEm,@DlCsName,@DlCsAddr,@DlCsInfo,@SaleEmID,@SaleEmName, @DESCRIP,@PrdcAmnt,@DscnMbAm,@DscnAmnt,@Sum_Amnt,@SignNumb,@SignDate,@Crt_User,@Crt_Date,@ChgeUser,@ChgeDate)"; DynamicParameters parameters = new DynamicParameters(); parameters.Add("@ASM", webContract.ASM); parameters.Add("@SUB", webContract.SUB); parameters.Add("@TEAM", webContract.TEAM); parameters.Add("@CmpnID", webContract.CmpnID); parameters.Add("@ClnID", webContract.ClnID); parameters.Add("@ZoneID", webContract.ZoneID); parameters.Add("@RegionID", webContract.RegionID); parameters.Add("@CustomerID", webContract.CustomerID); parameters.Add("@EntryID", webContract.EntryID); parameters.Add("@FactorID", webContract.FactorID); parameters.Add("@OID", webContract.OID); parameters.Add("@ODATE", webContract.ODATE); parameters.Add("@ClnPath", webContract.ClnPath); parameters.Add("@MemberCardID", webContract.MemberCardID); parameters.Add("@MembType", webContract.MembType); parameters.Add("@DscnMbRt", webContract.DscnMbRt); parameters.Add("@PsCsName", webContract.PsCsName); parameters.Add("@PsCsFReg", webContract.PsCsFReg); parameters.Add("@PsCsTel", webContract.PsCsTel); parameters.Add("@PsCsAddr", webContract.PsCsAddr); parameters.Add("@PsCsInfo", webContract.PsCsInfo); parameters.Add("@DeliverEm", webContract.DeliverEm); parameters.Add("@DlCsName", webContract.DlCsName); parameters.Add("@DlCsAddr", webContract.DlCsAddr); parameters.Add("@DlCsInfo", webContract.DlCsInfo); parameters.Add("@SaleEmID", webContract.SaleEmID); parameters.Add("@SaleEmName", webContract.SaleEmName); parameters.Add("@DESCRIP", webContract.DESCRIP); parameters.Add("@PrdcAmnt", webContract.PrdcAmnt); parameters.Add("@DscnMbAm", webContract.DscnMbAm); parameters.Add("@DscnAmnt", webContract.DscnAmnt); parameters.Add("@Sum_Amnt", webContract.Sum_Amnt); parameters.Add("@SignNumb", webContract.SignNumb); parameters.Add("@SignDate", webContract.SignDate); parameters.Add("@Crt_User", webContract.Crt_User); parameters.Add("@Crt_Date", webContract.Crt_Date); parameters.Add("@ChgeUser", webContract.ChgeUser); parameters.Add("@ChgeDate", webContract.ChgeDate); await conn.ExecuteAsync(sQuery, param : parameters, transaction : dbTransaction); int detailCount = webContractViewModel.WebContractDetails.Count; for (int i = 0; i < detailCount; i++) { var detail = webContractViewModel.WebContractDetails[i]; int checkOnHandResult = await CheckOnHandProductLine(1, webContract.ClnID, webContract.ZoneID, webContract.RegionID, ASM, SUB, TEAM, detail.ItemID, VISA, detail.ItemQtty, 0, detail.StoreQtty, StoreQtty_Old : 0, dbConnection : conn, dbTransaction : dbTransaction); if (checkOnHandResult == 0) // Đủ tồn kho. { throw new Exception($"Sản phẩm {detail.ItemName} không đủ tồn kho"); } await DecOnHandProductLine(webContract.ClnID, webContract.ZoneID, webContract.RegionID, ASM, SUB, TEAM, detail.ItemID, VISA, ItemQtty : detail.ItemQtty, ItemQtty_Old : 0, StoreQtty : detail.StoreQtty, StoreQtty_Old : 0, dbConnection : conn, dbTransaction : dbTransaction); DynamicParameters detailParams = new DynamicParameters(); detailParams.Add("@OID", webContract.OID); detailParams.Add("@ItemID", detail.ItemID); detailParams.Add("@BoxID", detail.BoxID); detailParams.Add("@BchCode", detail.BchCode); detailParams.Add("@StoreID", detail.StoreID); detailParams.Add("@PrmtID", detail.PrmtID); detailParams.Add("@PrmtListItem", detail.PrmtListItem); detailParams.Add("@ItemName", detail.ItemName); detailParams.Add("@ItemUnit", detail.ItemUnit); detailParams.Add("@ItemUnitName", detail.ItemUnitName); detailParams.Add("@Qc_XaBang", detail.Qc_XaBang ?? ""); detailParams.Add("@ItemQtty", detail.ItemQtty); detailParams.Add("@RemnRfQt", detail.RemnRfQt); detailParams.Add("@StoreQtty", detail.StoreQtty); detailParams.Add("@ItemPrice", detail.ItemPrice); detailParams.Add("@PrdcAmnt", detail.PrdcAmnt); detailParams.Add("@DscnMbRt", detail.DscnMbRt); detailParams.Add("@DscnMbAm", detail.DscnMbAm); detailParams.Add("@DscnRate", detail.DscnRate); detailParams.Add("@DscnAmnt", detail.DscnAmnt); detailParams.Add("@SmPdAmnt", detail.SmPdAmnt); detailParams.Add("@DESCRIP", detail.DESCRIP); await conn.ExecuteAsync("wspInsertWebContractsDetails", param : detailParams, transaction : dbTransaction, commandType : CommandType.StoredProcedure); } dbTransaction.Commit(); } } }
public async Task Save(WebContractViewModel webContractViewModel, string ASM, string SUB, string TEAM, string VISA) { using (IDbConnection con = _gonSaConnection.GetConnection()) { con.Open(); using (IDbTransaction dbTransaction = con.BeginTransaction()) { string sQuery = @" UPDATE dbo.webContracts set MemberCardID = @MemberCardID, MembType = @MembType, DscnMbRt = @DscnMbRt, PsCsName = @PsCsName, PsCsFReg = @PsCsFReg, PsCsTel = @PsCsTel, PsCsAddr = @PsCsAddr, PsCsInfo = @PsCsInfo, DeliverEm = @DeliverEm, DlCsName = @DlCsName, DlCsAddr = @DlCsAddr, DlCsInfo = @DlCsInfo, SaleEmID = @SaleEmID, SaleEmName = @SaleEmName, DESCRIP = @DESCRIP, PrdcAmnt = @PrdcAmnt, DscnMbAm = @DscnMbAm, Sum_Amnt = @Sum_Amnt, DscnAmnt = @DscnAmnt, SignDate = @SignDate, ChgeUser = @ChgeUser, ChgeDate = @ChgeDate WHERE OID = @OID"; var webContract = webContractViewModel.WebContract; DynamicParameters parameters = new DynamicParameters(); parameters.Add("@OID", webContract.OID); parameters.Add("@MemberCardID", webContract.MemberCardID); parameters.Add("@MembType", webContract.MembType); parameters.Add("@DscnMbRt", webContract.DscnMbRt); parameters.Add("@PsCsName", webContract.PsCsName); parameters.Add("@PsCsFReg", webContract.PsCsFReg); parameters.Add("@PsCsTel", webContract.PsCsTel); parameters.Add("@PsCsAddr", webContract.PsCsAddr); parameters.Add("@PsCsInfo", webContract.PsCsInfo); parameters.Add("@DeliverEm", webContract.DeliverEm); parameters.Add("@DlCsName", webContract.DlCsName); parameters.Add("@DlCsAddr", webContract.DlCsAddr); parameters.Add("@DlCsInfo", webContract.DlCsInfo); parameters.Add("@SaleEmID", webContract.SaleEmID); parameters.Add("@SaleEmName", webContract.SaleEmName); parameters.Add("@DESCRIP", webContract.DESCRIP); parameters.Add("@PrdcAmnt", webContract.PrdcAmnt); parameters.Add("@DscnMbAm", webContract.DscnMbAm); parameters.Add("@DscnAmnt", webContract.DscnAmnt); parameters.Add("@Sum_Amnt", webContract.Sum_Amnt); parameters.Add("@SignDate", webContract.SignDate); parameters.Add("@ChgeUser", webContract.ChgeUser); parameters.Add("@ChgeDate", webContract.ChgeDate); await con.ExecuteAsync(sQuery, param : parameters, transaction : dbTransaction); var insertedWebContract = await con.QuerySingleAsync <WebContract>("SELECT * FROM dbo.webContracts where OID = @OID", new { OID = webContract.OID }, transaction : dbTransaction); // webcontract ở trên ko có thông só, vì store monitor ko trả về. var details = await con.QueryAsync <WebContractDetail>("SELECT * FROM dbo.webContractDetails where OID = @OID", new { OID = webContract.OID }, transaction : dbTransaction); //foreach qua lisst moi //foreach (var new_detail in webContractViewModel.WebContractDetails) //{ // // kiem tra co trong orderluc chua sua khong. // var existing_list = oldDetails.Where(x => // x.ItemID == new_detail.ItemID // && x.BoxID == new_detail.BoxID // && x.BchCode == new_detail.BchCode // && x.StoreID == new_detail.StoreID // && x.PrmtID == new_detail.PrmtID && ((x.Qc_XaBang ?? "") == new_detail.Qc_XaBang)); // if (existing_list.Any()) // co trong list cu. // { // var existing = existing_list.FirstOrDefault(); // await IncOnHandProductLine(insertedWebContract.ClnID, insertedWebContract.ZoneID, insertedWebContract.RegionID, ASM, SUB, TEAM, existing.ItemID, VISA, new_detail.ItemQtty, existing.ItemQtty, new_detail.StoreQtty, existing.StoreQtty, con, dbTransaction); // // check ton kho theo entity moi. // // cap nhat theo detail moi. // await DecOnHandProductLine(insertedWebContract.ClnID, insertedWebContract.ZoneID, insertedWebContract.RegionID, ASM, SUB, TEAM, existing.ItemID, VISA, ItemQtty: new_detail.ItemQtty, ItemQtty_Old: existing.ItemQtty, StoreQtty: new_detail.StoreQtty, StoreQtty_Old: existing.StoreQtty, dbConnection: con, dbTransaction: dbTransaction); // } //} //foreach (var detail in oldDetails) //{ // await IncOnHandProductLine(insertedWebContract.ClnID, insertedWebContract.ZoneID, insertedWebContract.RegionID, ASM, SUB, TEAM, detail.ItemID, VISA, detail.ItemQtty, 0, detail.StoreQtty, 0, con, dbTransaction); //} //await con.ExecuteAsync("DELETE FROM webContractDetails where OID= @OID", new //{ // OID = webContract.OID //}, transaction: dbTransaction, commandType: CommandType.Text); foreach (var detail in details) { await IncOnHandProductLine(webContract.OID, insertedWebContract.ClnID, insertedWebContract.ZoneID, insertedWebContract.RegionID, ASM, SUB, TEAM, detail.ItemID, VISA, detail.ItemQtty, 0, detail.StoreQtty, 0, con, dbTransaction); } await con.ExecuteAsync("DELETE FROM webContractDetails where OID= @OID", new { OID = webContract.OID }, transaction : dbTransaction, commandType : CommandType.Text); int detailCount = webContractViewModel.WebContractDetails.Count; for (int i = 0; i < detailCount; i++) { var detail = webContractViewModel.WebContractDetails[i]; int checkOnHandResult = await CheckOnHandProductLine(1, insertedWebContract.ClnID, insertedWebContract.ZoneID, insertedWebContract.RegionID, ASM, SUB, TEAM, detail.ItemID, VISA, detail.ItemQtty, 0, detail.StoreQtty, StoreQtty_Old : 0, dbConnection : con, dbTransaction : dbTransaction); if (checkOnHandResult == 0) // Đủ tồn kho. { throw new Exception($"Sản phẩm {detail.ItemName} không đủ tồn kho"); } await DecOnHandProductLine(insertedWebContract.ClnID, insertedWebContract.ZoneID, insertedWebContract.RegionID, ASM, SUB, TEAM, detail.ItemID, VISA, ItemQtty : detail.ItemQtty, ItemQtty_Old : 0, StoreQtty : detail.StoreQtty, StoreQtty_Old : 0, dbConnection : con, dbTransaction : dbTransaction); DynamicParameters detailParams = new DynamicParameters(); detailParams.Add("@OID", webContract.OID); detailParams.Add("@ItemID", detail.ItemID); detailParams.Add("@BoxID", detail.BoxID); detailParams.Add("@BchCode", detail.BchCode); detailParams.Add("@StoreID", detail.StoreID); detailParams.Add("@PrmtID", detail.PrmtID); detailParams.Add("@PrmtListItem", detail.PrmtListItem); detailParams.Add("@ItemName", detail.ItemName); detailParams.Add("@ItemUnit", detail.ItemUnit); detailParams.Add("@ItemUnitName", detail.ItemUnitName); detailParams.Add("@Qc_XaBang", detail.Qc_XaBang ?? ""); detailParams.Add("@ItemQtty", detail.ItemQtty); detailParams.Add("@RemnRfQt", detail.RemnRfQt); detailParams.Add("@StoreQtty", detail.StoreQtty); detailParams.Add("@ItemPrice", detail.ItemPrice); detailParams.Add("@PrdcAmnt", detail.PrdcAmnt); detailParams.Add("@DscnMbRt", detail.DscnMbRt); detailParams.Add("@DscnMbAm", detail.DscnMbAm); detailParams.Add("@DscnRate", detail.DscnRate); detailParams.Add("@DscnAmnt", detail.DscnAmnt); detailParams.Add("@SmPdAmnt", detail.SmPdAmnt); detailParams.Add("@DESCRIP", detail.DESCRIP); await con.ExecuteAsync("wspInsertWebContractsDetails", param : detailParams, transaction : dbTransaction, commandType : CommandType.StoredProcedure); } dbTransaction.Commit(); } } }
public async Task <ActionResult <WebContract> > save(WebContractViewModel model) { if (!ModelState.IsValid) { return(Ok(new { Status = -1, Message = "Vui lòng cung cấp đầy đủ thông tin đơn hàng!" })); } ApplicationUser user = await _userManager.FindByNameAsync(HttpContext.User.FindFirst(ClaimTypes.Name).Value); var webContract = model.WebContract; webContract.ChgeUser = user.UserCode; webContract.ChgeDate = DateTime.Now; if (model.Mode == 0) { webContract.Crt_User = user.UserCode; webContract.SignNumb = -1; webContract.SignDate = DateTime.Now; webContract.EntryID = "21:763"; webContract.FactorID = "webContract"; try { await _webContractRes.Insert(model, user.ASM, user.SUB, user.TEAM, VISA : ""); return(Ok(new { Status = 1, Message = "Thêm đơn hàng thành công" })); } catch (Exception ex) { return(Ok(new { Status = 0, Message = ex.Message })); } } else { try { await _webContractRes.Save(model, user.ASM, user.SUB, user.TEAM, VISA : ""); return(Ok(new { Status = 1, Message = "Chỉnh sửa đơn hàng thành công" })); } catch (Exception ex) { return(Ok(new { Status = 0, Message = ex.Message })); } } }