Пример #1
0
        /// <summary>
        /// 移動入力情報を登録・更新する
        /// </summary>
        /// <param name="ds">
        /// 移動データセット
        /// [0:T05_IDOHD、1:T05_IDODTL]
        /// </param>
        /// <param name="userId">ログインユーザID</param>
        /// <returns></returns>
        public void Update(DataSet ds, int userId)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    T05Service = new T05(context, userId);
                    S03Service = new S03(context, userId);
                    S04Service = new S04(context, userId, S04.機能ID.振替入力);

                    try
                    {
                        DataRow   hdRow   = ds.Tables[TABLE_HEADER].Rows[0];
                        T05_IDOHD 振替Hd    = convertDataRowToT05_IDOHD_Entity(hdRow);
                        DataTable 振替出庫Dtl = ds.Tables[SYUKO_TABLE_DETAIL];
                        DataTable 振替入庫Dtl = ds.Tables[NYUKO_TABLE_DETAIL];


                        List <T05_IDODTL> updList = new List <T05_IDODTL>();
                        updList.Add(convertDataRowToT05_IDODTL_Entity(振替出庫Dtl.Rows[0]));
                        updList.Add(convertDataRowToT05_IDODTL_Entity(振替入庫Dtl.Rows[0]));

                        // 1>> ヘッダ情報更新
                        setT05_IDOHD_Update(振替Hd);

                        // 2>> 明細情報更新
                        setT05_IDODTL_Update(振替Hd, updList);

                        // 3>> 在庫情報更新
                        // (出荷元からの引落し)
                        if (振替Hd.出荷元倉庫コード != null)
                        {
                            setS03_STOK_Update(context, hdRow, 振替出庫Dtl, true);
                            setS04_HISTORY_Update(context, 振替Hd, 振替出庫Dtl, true);
                        }

                        // (出荷先への積上げ)
                        if (振替Hd.出荷先倉庫コード != null)
                        {
                            setS03_STOK_Update(context, hdRow, 振替入庫Dtl, false);
                            setS04_HISTORY_Update(context, 振替Hd, 振替入庫Dtl, false);
                        }

                        // 変更状態を確定
                        context.SaveChanges();

                        tran.Commit();
                    }
                    catch (Exception ex)
                    {
                        tran.Rollback();
                        throw ex;
                    }
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 移動入力情報を削除する
        /// </summary>
        /// <param name="ds">
        /// 移動データセット
        /// [0:T04_AGRHD、1:T04_AGRDTL]
        /// </param>
        /// <param name="userId">ログインユーザID</param>
        /// <returns></returns>
        public void Delete(DataSet ds, int userId)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    T05Service = new T05(context, userId);
                    S03Service = new S03(context, userId);
                    S04Service = new S04(context, userId, S04.機能ID.商品移動入力);

                    try
                    {
                        DataRow   hdRow  = ds.Tables[TABLE_HEADER].Rows[0];
                        T05_IDOHD idohd  = convertDataRowToT05_IDOHD_Entity(hdRow);
                        DataTable dtlTbl = ds.Tables[TABLE_DETAIL];

                        // 1>> ヘッダ情報削除
                        T05Service.T05_IDOHD_Delete(idohd.伝票番号);


                        // 2>> 明細情報削除
                        T05Service.T05_IDODTL_Delete(idohd.伝票番号);

                        // 3>> 在庫情報更新
                        // (出荷元に戻す)
                        if (idohd.出荷元倉庫コード != null)
                        {
                            setS03_STOK_Update(context, idohd, dtlTbl, true, true);
                        }

                        // (出荷先から引落し)
                        if (idohd.出荷先倉庫コード != null)
                        {
                            setS03_STOK_Update(context, idohd, dtlTbl, false, true);
                        }

                        //履歴テーブルの削除
                        S04Service.PhysicalDeletionProductHistory(context, idohd.伝票番号, (int)S04.機能ID.商品移動入力);


                        // 変更状態を確定
                        context.SaveChanges();

                        tran.Commit();
                    }
                    catch (Exception ex)
                    {
                        tran.Rollback();
                        throw ex;
                    }
                }
            }
        }
Пример #3
0
        /// <summary>
        /// 移動入力情報を登録・更新する
        /// </summary>
        /// <param name="ds">
        /// 移動データセット
        /// [0:T04_AGRHD、1:T04_AGRDTL]
        /// </param>
        /// <param name="userId">ログインユーザID</param>
        /// <returns></returns>
        public void Update(DataSet ds, int userId)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    T05Service = new T05(context, userId);
                    S03Service = new S03(context, userId);
                    S04Service = new S04(context, userId, S04.機能ID.商品移動入力);

                    try
                    {
                        DataRow   hdRow  = ds.Tables[TABLE_HEADER].Rows[0];
                        T05_IDOHD idohd  = convertDataRowToT05_IDOHD_Entity(hdRow);
                        DataTable dtlTbl = ds.Tables[TABLE_DETAIL];

                        // 1>> ヘッダ情報更新
                        setT05_IDOHD_Update(idohd);

                        // 2>> 明細情報更新
                        setT05_IDODTL_Update(idohd, dtlTbl);

                        // 3>> 在庫情報更新
                        // (出荷元からの引落し)
                        if (idohd.出荷元倉庫コード != null)
                        {
                            setS03_STOK_Update(context, idohd, dtlTbl, true);           // No-258 Mod
                            setS04_HISTORY_Update(context, idohd, dtlTbl, true);
                        }

                        // (出荷先への積上げ)
                        if (idohd.出荷先倉庫コード != null)
                        {
                            setS03_STOK_Update(context, idohd, dtlTbl, false);           // No-258 Mod
                            setS04_HISTORY_Update(context, idohd, dtlTbl, false);
                        }

                        // 変更状態を確定
                        context.SaveChanges();

                        tran.Commit();
                    }
                    catch (Exception ex)
                    {
                        tran.Rollback();
                        throw ex;
                    }
                }
            }
        }
Пример #4
0
        /// <summary>
        /// 仕入入力情報を登録・更新する
        /// </summary>
        /// <param name="ds">
        /// 仕入データセット
        /// [0:T03_SRHD、1:T03_SRDTL]
        /// </param>
        /// <param name="userId">ユーザID</param>
        /// <returns></returns>
        public int Update(DataSet ds, int userId)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    T03Service = new T03(context, userId);
                    S03Service = new S03(context, userId);
                    S04Service = new S04(context, userId, S04.機能ID.仕入入力);

                    try
                    {
                        DataTable hdTable  = ds.Tables[T03_HEADER_TABLE_NAME];
                        DataTable dtlTable = ds.Tables[T03_DETAIL_TABLE_NAME];

                        if (hdTable == null || hdTable.Rows.Count == 0)
                        {
                            throw new Exception("仕入データの形式が正しくない為、登録処理をおこなう事ができませんでした。");
                        }

                        // 1>> ヘッダ情報更新
                        T03_SRHD shd = setT03_SRHD_Update(hdTable.Rows[0]);

                        // 2>> 明細情報更新
                        setT03_SRDTL_Update(shd, dtlTable);

                        // 3>> 在庫情報更新
                        setS03_STOK_Update(context, shd, dtlTable);         // No-258 Mod

                        // 4>> 入出庫履歴の作成
                        setS04_HISTORY_Create(context, shd, dtlTable, hdTable.Rows[0]);  // No.156-1 Mod,No-258 Mod

                        // 変更状態を確定
                        context.SaveChanges();

                        tran.Commit();
                    }
                    catch (Exception ex)
                    {
                        tran.Rollback();
                        throw ex;
                    }
                }
            }

            return(1);
        }
Пример #5
0
        /// <summary>
        /// 仕入入力情報の削除をおこなう
        /// </summary>
        /// <param name="slipNumber">伝票番号</param>
        /// <param name="userId">ユーザID</param>
        /// <returns></returns>
        public int Delete(string slipNumber, int userId)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    int number = 0;
                    if (int.TryParse(slipNumber, out number))
                    {
                        T03Service = new T03(context, userId);      // No.156-1 Add
                        S03Service = new S03(context, userId);
                        S04Service = new S04(context, userId, S04.機能ID.仕入入力);

                        try
                        {
                            // ①仕入ヘッダ論理削除
                            T03_SRHD hdData = T03Service.T03_SRHD_Delete(number);

                            // ②仕入明細論理削除
                            List <T03_SRDTL> dtlList = T03Service.T03_SRDTL_Delete(number);

                            // ③在庫更新
                            foreach (T03_SRDTL row in dtlList)
                            {
                                S03_STOK stok = new S03_STOK();
                                stok.庫コード  = T03Service.get倉庫コード(hdData.会社名コード);
                                stok.品番コード = row.品番コード;
                                stok.賞味期限  = AppCommon.DateTimeToDate(row.賞味期限, DateTime.MaxValue);
                                stok.在庫数   = row.数量 * -1;

                                S03Service.S03_STOK_Update(stok);
                            }

                            // ④入出庫履歴作成
                            DataTable wkTbl = KESSVCEntry.ConvertListToDataTable <T03_SRDTL>(dtlList);
                            wkTbl.AcceptChanges();      // No.156-1 Add
                            foreach (DataRow row in wkTbl.Rows)
                            {
                                // 削除分を判定させる為、RowStateを変更する
                                row.Delete();
                            }
                            setS04_HISTORY_Create(context, hdData, wkTbl, null);     // No.156-1 Mod,No-258 Mod

                            // 変更状態を確定
                            context.SaveChanges();      // No.156-1 Add
                        }
                        catch
                        {
                            tran.Rollback();
                            throw new Exception("削除処理実行中にエラーが発生しました。");
                        }
                    }
                    else
                    {
                        throw new KeyNotFoundException("伝票番号が正しくありません");
                    }

                    tran.Commit();
                }
            }

            return(1);
        }
Пример #6
0
        /// <summary>
        /// 棚卸更新処理
        /// </summary>
        /// <param name="pMyCompany">会社コード</param>
        /// <param name="pStocktakingDate">棚卸日</param>
        /// <param name="pParamDic">パラメータ辞書</param>
        /// <param name="pUserId">ログインユーザID</param>
        public void InventoryStocktaking(int pMyCompany, string pStocktakingDate, Dictionary <string, string> pParamDic, int pUserId)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                // ---------------------------
                // 初期処理
                // ---------------------------
                context.Connection.Open();

                using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    S04Service = new S04(context, pUserId, S04.機能ID.棚卸更新);
                    S10Service = new S10(context, pUserId);

                    try
                    {
                        // ---------------------------
                        // 主処理
                        // ---------------------------
                        // 棚卸更新 対象情報取得
                        List <StocktakingDataMember> lstResult = getData(context, pMyCompany, pStocktakingDate, pParamDic);

                        foreach (StocktakingDataMember row in lstResult)
                        {
                            // ▼課題No329 Mod Start 2020/02/05

                            // 処理対象チェック
                            bool bolRetTarget = CheckTargetRecord(context, row);

                            if (bolRetTarget == true)
                            {
                                // 入出庫履歴テーブル 更新
                                Update_S04_HISTORY(context, row);

                                // 在庫テーブル 更新
                                Update_S03_STOK(context, row);
                            }

                            // 棚卸在庫テーブル 更新
                            Update_S10_STOCKTAKING(context, row);

                            // ▲課題No329 Mod End 2020/02/05
                        }

                        // 棚卸在庫テーブル 更新後削除処理   課題No304 Add
                        Delete_S10_STOCKTAKING(context, pMyCompany, pStocktakingDate, pParamDic);

                        // ---------------------------
                        // 終了処理
                        // ---------------------------
                        // 変更内容を確定
                        context.SaveChanges();

                        // トランザクションのコミット
                        tran.Commit();
                    }
                    catch (Exception ex)
                    {
                        // トランザクションのロールバック
                        tran.Rollback();
                        throw ex;
                    }
                }
            }
        }
Пример #7
0
        /// <summary>
        /// 移動入力情報を削除する
        /// </summary>
        /// <param name="ds">
        /// 移動データセット
        /// [0:T05_IDOHD、1:T05_IDODTL]
        /// </param>
        /// <param name="userId">ログインユーザID</param>
        /// <returns></returns>
        public void Delete(string slipNumber, int userId)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    T05Service = new T05(context, userId);
                    S03Service = new S03(context, userId);
                    S04Service = new S04(context, userId, S04.機能ID.振替入力);

                    int number = 0;
                    if (int.TryParse(slipNumber, out number))
                    {
                        try
                        {
                            var idohd =
                                context.T05_IDOHD
                                .Where(x => x.削除日時 == null &&
                                       x.伝票番号 == number)
                                .FirstOrDefault();

                            var idodtl =
                                context.T05_IDODTL
                                .Where(x => x.削除日時 == null &&
                                       x.伝票番号 == number)
                                .ToList();

                            // 伝票データが存在しない場合は処理しない。
                            if (idodtl == null || idodtl.Count == 0)
                            {
                                return;
                            }

                            // 1>> ヘッダ情報削除
                            T05Service.T05_IDOHD_Delete(number);

                            // 2>> 明細情報削除
                            T05Service.T05_IDODTL_Delete(number);

                            // 3>> 在庫情報削除
                            #region 在庫調整

                            foreach (T05_IDODTL row in idodtl)
                            {
                                int souko = row.行番号 == 2 ? (int)idohd.出荷元倉庫コード : (int)idohd.出荷先倉庫コード;

                                // 対象データ設定
                                S03_STOK stok = new S03_STOK();
                                stok.庫コード  = souko;
                                stok.品番コード = row.品番コード;
                                stok.賞味期限  = AppCommon.DateTimeToDate(row.賞味期限, DateTime.MaxValue);
                                stok.在庫数   = row.行番号 == 2 ? row.数量 : row.数量 * (-1);

                                // 旧賞味期限の在庫を更新
                                S03Service.S03_STOK_Update(stok);

                                // 変更状態を確定
                                context.SaveChanges();
                            }

                            #endregion

                            // 4>> 入出庫データの物理削除
                            S04Service.PhysicalDeletionProductHistory(context, number, (int)S04.機能ID.振替入力);

                            // 変更状態を確定
                            context.SaveChanges();

                            tran.Commit();
                        }
                        catch (Exception ex)
                        {
                            tran.Rollback();
                            throw ex;
                        }
                    }
                    else
                    {
                        throw new KeyNotFoundException("伝票番号が正しくありません");
                    }
                }
            }
        }