/// <summary> /// 買掛テーブル更新処理 /// </summary> /// <param name="context"></param> /// <param name="hdData"></param> private void S09_KAIKAKE_Update(TRAC3Entities context, S09_KAIKAKE_Extension srData, int userId) { //INSERTで登録する S09_KAIKAKE data = new S09_KAIKAKE(); data.自社コード = srData.自社コード; data.得意先コード = srData.得意先コード; data.得意先枝番 = srData.得意先枝番; data.日付 = srData.日付; data.伝票番号 = srData.伝票番号; data.行番号 = srData.行番号; data.品番コード = srData.品番コード; data.自社品名 = srData.自社品名; // No.390 Add data.金種コード = srData.金種コード; data.数量 = srData.数量; data.単価 = srData.単価; data.金額 = srData.金額; data.通常税率消費税 = srData.通常税率消費税; data.軽減税率消費税 = srData.軽減税率消費税; data.出金額 = srData.出金額; data.前月繰越 = srData.前月繰越; data.残高 = srData.残高; data.登録者 = userId; data.作成機能ID = srData.作成機能ID; data.登録日時 = DateTime.Now; data.期日 = srData.期日 == null ? string.Empty : " 期日:" + ((DateTime)srData.期日).ToString("yyyy/MM/dd"); context.S09_KAIKAKE.ApplyChanges(data); }
/// <summary> /// 前月情報取得 /// Accounts Payable:買掛金 /// </summary> /// <param name="context"></param> /// <param name="company">会社名コード</param> /// <param name="targetStDate">集計開始年月</param> /// <param name="code">得意先コード</param> /// <param name="eda">枝番</param> /// <returns></returns> public S09_KAIKAKE_Extension getLastAccountsPay(TRAC3Entities context, int company, DateTime targetStDate, int?code, int?eda) { // 前月開始日 DateTime befTargetStDate = targetStDate.AddMonths(-1); var befAccountsPay = context.S09_KAIKAKE .Where(w => w.自社コード == company && w.日付 >= befTargetStDate && w.日付 < targetStDate && w.得意先コード == code && w.得意先枝番 == eda) .OrderByDescending(o => o.日付) .FirstOrDefault(); // 前月繰越行に整形 S09_KAIKAKE_Extension ret = new S09_KAIKAKE_Extension(); ret.自社コード = company; ret.日付 = new DateTime(targetStDate.Year, targetStDate.Month, 1); ret.得意先コード = code ?? 0; ret.得意先枝番 = eda ?? 0; ret.伝票番号 = 0; ret.行番号 = 0; ret.前月繰越 = befAccountsPay == null ? 0 : befAccountsPay.残高; ret.残高 = befAccountsPay == null ? 0 : befAccountsPay.残高; return(ret); }
/// <summary> /// 買掛データ登録処理(販社) /// </summary> /// <param name="context"></param> /// <param name="myCompanyCode">自社コード</param> /// /// <param name="salesCompanyCode">販社コード(M70_JIS)</param> /// <param name="targetStDate">集計開始日</param> /// <param name="targetEdDate">集計終了日</param> /// /// <param name="code">得意先コード</param> /// <param name="eda">得意先枝番</param> /// <param name="userId">ログインユーザID</param> private void setAccountsPayHan(TRAC3Entities context, int myCompanyCode, int salesCompanyCode, DateTime targetStDate, DateTime targetEdDate, int?code, int?eda, int userId) { // 自社マスタ(自社情報) var targetJis = context.M70_JIS .Where(w => w.削除日時 == null && w.自社コード == salesCompanyCode) .First(); // 仕入情報取得(販社) List <S09_KAIKAKE_Extension> srHanList = getHanSrInfo(context, myCompanyCode, salesCompanyCode, targetStDate, targetEdDate, userId); // 揚り情報取得 List <S09_KAIKAKE_Extension> agrList = getAgrInfo(context, myCompanyCode, code, eda, targetStDate, targetEdDate, userId); // 出金情報取得 List <S09_KAIKAKE_Extension> syukkinList = getWithdrawalInfo(context, myCompanyCode, targetJis.取引先コード, targetJis.枝番, targetStDate, targetEdDate); // 買掛情報整形 var accountsPayHanList = srHanList.Concat(agrList).Concat(syukkinList).OrderBy(c => c.日付).ThenBy(c => c.伝票番号).ThenBy(c => c.行番号).ToList(); // データがなくても繰越残高を作成する if (accountsPayHanList == null) { accountsPayHanList = new List <S09_KAIKAKE_Extension>(); } // 前回買掛情報取得し結合 S09_KAIKAKE_Extension befData = getLastAccountsPay(context, myCompanyCode, targetStDate, code, eda); accountsPayHanList.Insert(0, befData); int 残高 = befData.前月繰越; // 既に登録されている買掛情報を削除 S09_KAIKAKE_Delete(context, myCompanyCode, code, eda, targetStDate, targetEdDate); // 買掛情報を登録 foreach (S09_KAIKAKE_Extension row in accountsPayHanList) { // 最初の行のみ消費税を設定 if (accountsPayHanList.Where(c => c.伝票番号 == row.伝票番号).First().行番号 != row.行番号) { row.通常税率消費税 = 0; row.軽減税率消費税 = 0; } // 残高の再計算 if (row.前月繰越 == 0) { 残高 = 残高 + (row.金額 + row.通常税率消費税 + row.軽減税率消費税) - row.出金額; row.残高 = 残高; } S09_KAIKAKE_Update(context, row, userId); } }
/// <summary> /// 買掛データ登録処理 /// </summary> /// <param name="context"></param> /// <param name="company">自社コード</param> /// <param name="code">得意先コード</param> /// <param name="eda">得意先枝番</param> /// <param name="targetStDate">集計開始日</param> /// <param name="targetEdDate">集計終了日</param> /// <param name="userId">ログインユーザID</param> private void setAccountsPay(TRAC3Entities context, int company, int code, int eda, DateTime targetStDate, DateTime?targetEdDate, int userId) { // 仕入情報取得 List <S09_KAIKAKE_Extension> srList = getSrInfo(context, company, code, eda, targetStDate, targetEdDate, userId); // 揚り情報取得 List <S09_KAIKAKE_Extension> agrList = getAgrInfo(context, company, code, eda, targetStDate, targetEdDate, userId); // 出金情報取得 List <S09_KAIKAKE_Extension> syukkinList = getWithdrawalInfo(context, company, code, eda, targetStDate, targetEdDate); // 買掛情報整形 var accountsPayList = srList.Concat(agrList).Concat(syukkinList).OrderBy(c => c.日付).ThenBy(c => c.伝票番号).ThenBy(c => c.行番号).ToList(); // データがなくても繰越残高を作成する if (accountsPayList == null) { accountsPayList = new List <S09_KAIKAKE_Extension>(); } // 前月残高の再設定 S09_KAIKAKE_Extension befData = getLastAccountsPay(context, company, targetStDate, code, eda); accountsPayList.Insert(0, befData); int 残高 = befData.前月繰越; // 既に登録されている買掛情報を削除 S09_KAIKAKE_Delete(context, company, code, eda, targetStDate, targetEdDate); // 買掛情報を登録 foreach (S09_KAIKAKE_Extension row in accountsPayList) { // 最初の行のみ消費税を設定 if (accountsPayList.Where(c => c.伝票番号 == row.伝票番号).First().行番号 != row.行番号) { row.通常税率消費税 = 0; row.軽減税率消費税 = 0; } // 残高の再計算 残高 = 残高 + (row.金額 + row.通常税率消費税 + row.軽減税率消費税) - row.出金額; row.残高 = 残高; S09_KAIKAKE_Update(context, row, userId); } }