/// <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; } } } }
/// <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; } } } }
/// <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; } } } }
/// <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); }
/// <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); }
/// <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("伝票番号が正しくありません"); } } } }