Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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();
                }
            }
        }
Esempio n. 3
0
        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();
                }
            }
        }
Esempio n. 4
0
        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
                    }));
                }
            }
        }