/// <summary> /// 売掛テーブル更新処理 /// </summary> /// <param name="context"></param> /// <param name="hdData"></param> private void S08_URIKAKE_Update(TRAC3Entities context, S08_URIKAKE_Extension urData, int userId) { //INSERTで登録する S08_URIKAKE data = new S08_URIKAKE(); data.自社コード = urData.自社コード; data.得意先コード = urData.得意先コード; data.得意先枝番 = urData.得意先枝番; data.日付 = urData.日付; data.伝票番号 = urData.伝票番号; data.行番号 = urData.行番号; data.品番コード = urData.品番コード; data.自社品名 = urData.自社品名; data.金種コード = urData.金種コード; data.数量 = urData.数量; data.単価 = urData.単価; data.金額 = urData.金額; data.通常税率消費税 = urData.通常税率消費税; data.軽減税率消費税 = urData.軽減税率消費税; data.入金額 = urData.入金額; data.前月繰越 = urData.前月繰越; data.残高 = urData.残高; data.登録者 = userId; data.登録日時 = DateTime.Now; context.S08_URIKAKE.ApplyChanges(data); }
/// <summary> /// 前月情報取得 /// Accounts Receivable:売掛金 /// </summary> /// <param name="context"></param> /// <param name="company">会社名コード</param> /// <param name="yearMonth">集計開始年月</param> /// <param name="code">得意先コード</param> /// <param name="eda">得意先枝番</param> /// <param name="cnt">回数</param> public S08_URIKAKE_Extension getLastAccountsRec(TRAC3Entities context, int company, DateTime targetStDate, int?code, int?eda) { // 前月開始日 DateTime befTargetStDate = targetStDate.AddMonths(-1); var befAccountsRec = context.S08_URIKAKE .Where(w => w.自社コード == company && w.日付 >= befTargetStDate && w.日付 < targetStDate && w.得意先コード == code && w.得意先枝番 == eda) .OrderByDescending(o => o.日付) .FirstOrDefault(); // 前月繰越行に整形 S08_URIKAKE_Extension ret = new S08_URIKAKE_Extension(); ret.自社コード = company; ret.日付 = new DateTime(targetStDate.Year, targetStDate.Month, 1); ret.得意先コード = code ?? 0; ret.得意先枝番 = eda ?? 0; ret.伝票番号 = 0; ret.行番号 = 0; ret.前月繰越 = befAccountsRec == null ? 0 : befAccountsRec.残高; ret.残高 = befAccountsRec == null ? 0 : befAccountsRec.残高; 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 setAccountsRecHan(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 <S08_URIKAKE_Extension> uriHanList = getHanUriInfo(context, myCompanyCode, salesCompanyCode, targetStDate, targetEdDate, userId); // 入金情報取得 List <S08_URIKAKE_Extension> nyukinHanList = getPaymentInfo(context, myCompanyCode, targetJis.取引先コード, targetJis.枝番, targetStDate, targetEdDate); // 売掛情報整形 var accountsRecHanList = uriHanList.Concat(nyukinHanList).OrderBy(c => c.日付).ThenBy(c => c.伝票番号).ThenBy(c => c.行番号).ToList(); // データがなくても繰越残高を作成する if (accountsRecHanList == null) { accountsRecHanList = new List <S08_URIKAKE_Extension>(); } // 前回売掛情報取得し結合 S08_URIKAKE_Extension befData = getLastAccountsRec(context, myCompanyCode, targetStDate, code, eda); accountsRecHanList.Insert(0, befData); int 残高 = befData.前月繰越; // 既に登録されている売掛情報を削除 S08_URIKAKE_Delete(context, myCompanyCode, code, eda, targetStDate, targetEdDate); // 売掛情報を登録 foreach (S08_URIKAKE_Extension row in accountsRecHanList) { // 最初の行のみ消費税を設定 if (accountsRecHanList.Where(c => c.伝票番号 == row.伝票番号).First().行番号 != row.行番号) { row.通常税率消費税 = 0; row.軽減税率消費税 = 0; } // 残高の再計算 if (row.前月繰越 == 0) { 残高 = 残高 + (row.金額 + row.通常税率消費税 + row.軽減税率消費税) - row.入金額; row.残高 = 残高; } S08_URIKAKE_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 setAccountsRec(TRAC3Entities context, int company, int code, int eda, DateTime targetStDate, DateTime?targetEdDate, int userId) { // 売上情報取得 List <S08_URIKAKE_Extension> uriList = getUriInfo(context, company, code, eda, targetStDate, targetEdDate, userId); // 入金情報取得 List <S08_URIKAKE_Extension> nyukinList = getPaymentInfo(context, company, code, eda, targetStDate, targetEdDate); // 売掛情報整形 var accountsRecList = uriList.Concat(nyukinList).OrderBy(c => c.日付).ThenBy(c => c.伝票番号).ThenBy(c => c.行番号).ToList(); // データがなくても繰越残高を作成する if (accountsRecList == null) { accountsRecList = new List <S08_URIKAKE_Extension>(); } // 前月残高の再設定 S08_URIKAKE_Extension befData = getLastAccountsRec(context, company, targetStDate, code, eda); accountsRecList.Insert(0, befData); int 残高 = befData.前月繰越; // 既に登録されている売掛情報を削除 S08_URIKAKE_Delete(context, company, code, eda, targetStDate, targetEdDate); // 売掛情報を登録 foreach (S08_URIKAKE_Extension row in accountsRecList) { // 最初の行のみ消費税を設定 if (accountsRecList.Where(c => c.伝票番号 == row.伝票番号).First().行番号 != row.行番号) { row.通常税率消費税 = 0; row.軽減税率消費税 = 0; } // 残高の再計算 残高 = 残高 + (row.金額 + row.通常税率消費税 + row.軽減税率消費税) - row.入金額; row.残高 = 残高; S08_URIKAKE_Update(context, row, userId); } }