/// ------------------------------------------------------------------ /// <summary> /// グリッドデータを表示する </summary> /// <param name="g"> /// データグリッドビューオブジェクト</param> /// <param name="sID"> /// 新請求書ID</param> /// ------------------------------------------------------------------ private void gridShow(DataGridView g, int sID) { if (!dts.新請求書.Any(a => a.ID == sID)) { return; } nr = dts.新請求書.Single(a => a.ID == sID); lblNum.Text = nr.ID.ToString(); lblClientCode.Text = nr.得意先ID.ToString(); if (nr.得意先Row != null) { lblClientName.Text = nr.得意先Row.略称; } else { lblClientName.Text = string.Empty; } lblHDt.Text = nr.請求書発行日.ToShortDateString(); lblSDt.Text = nr.支払期日.ToShortDateString(); lblSeikyu.Text = nr.請求金額.ToString("#,##0"); lblUriage.Text = nr.売上金額.ToString("#,##0"); lblTax.Text = nr.消費税.ToString("#,##0"); lblNebiki.Text = nr.値引額.ToString("#,##0"); if (nr.Is備考Null()) { txtMemo.Text = string.Empty; } else { txtMemo.Text = nr.備考; } g.Rows.Clear(); int iX = 0; foreach (var t in nr.Get受注1Rows()) { g.Rows.Add(); g[colID, iX].Value = t.ID; g[colNaiyo, iX].Value = t.チラシ名; g[colTanka, iX].Value = t.単価.ToString("#,##0.00"); g[colSuu, iX].Value = t.枚数.ToString("#,##0"); g[colKingaku, iX].Value = t.金額.ToString("#,##0"); g[colTax, iX].Value = t.消費税.ToString("#,##0"); g[colNebiki, iX].Value = t.値引額.ToString("#,##0"); g[colZeikomi, iX].Value = t.売上金額.ToString("#,##0"); iX++; } g.CurrentCell = null; }
///------------------------------------------------------- /// <summary> /// 請求書データ集計 </summary> ///------------------------------------------------------- public void Summary(int sYear, int sMonth) { Cursor.Current = Cursors.WaitCursor; // オーナーフォームを無効にする frm.Enabled = false; // プログレスバーを表示する int rCnt = 0; frmPrg frmP = new frmPrg(); frmP.Owner = frm; frmP.Show(); // データ読み込み jAdp.Fill(dts.受注1); nAdp.Fill(dts.新請求書); // クライアント別,請求書発行日別,支払期日別で請求金額を集計 var s = dts.受注1 .Where(a => a.完了区分 == 0 && !a.Is請求書発行日Null()) .GroupBy(a => a.得意先ID) .Select(cg => new { cCode = cg.Key, seDt = cg.GroupBy(b => b.請求書発行日) .Select(seg => new { sss = seg.Key, siDt = seg.GroupBy(b => b.入金予定日) .Select(h => new { nnn = h.Key, kingaku = h.Sum(a => a.金額), // 単価×枚数(税抜) nebiki = h.Sum(a => a.値引額), tax = h.Sum(a => a.消費税), cnt = h.Count() }) }) }); // 件数取得 int cTotal = s.Count(); //frmP.progressMax = cTotal; //frmP.setProgressMax(); // 新請求書テーブル登録 foreach (var item in s) { //データ件数加算 rCnt++; //プログレスバー表示 frmP.Text = "請求データ作成中..." + rCnt.ToString() + "/" + cTotal.ToString(); frmP.progressValue = rCnt * 100 / cTotal; //frmP.progressValue = rCnt; frmP.ProgressStep(); // クライアント int clientCode = item.cCode; foreach (var k in item.seDt) { // 請求書発行日が指定年月外のとき、ネグる if (k.sss.Year != sYear || k.sss.Month != sMonth) { continue; } // 請求書発行日 DateTime seikyuDt = k.sss; foreach (var j in k.siDt) { // 既に新請求書データが登録されているか得意先ID,請求書発行日,支払期日(入金予定日)で検索する if (dts.新請求書.Any(a => a.得意先ID == clientCode && a.請求書発行日 == seikyuDt && a.支払期日 == j.nnn)) { // 登録済みのため更新処理 darwinDataSet.新請求書Row r = dts.新請求書.Single(a => a.得意先ID == clientCode && a.請求書発行日 == seikyuDt && a.支払期日 == j.nnn); // 請求金額 decimal kin = j.kingaku - j.nebiki + j.tax; // 金額もしくは値引額が変更になっているとき新請求書データを更新します if (j.kingaku != r.売上金額 || j.nebiki != r.値引額 || kin != r.請求金額) { // 入金額計算 int nkin = r.請求金額 - r.残金; //decimal kin = j.kingaku - j.nebiki + j.tax; // 請求金額 r.請求金額 = (int)kin; r.消費税 = (int)j.tax; r.値引額 = (int)j.nebiki; r.売上金額 = (int)j.kingaku; r.明細数 = j.cnt; r.残金 = (int)(kin - nkin); // 再計算 r.更年月日 = DateTime.Now; r.ユーザーID = global.loginUserID; } } else { // 新請求書データ新規登録 decimal kin = j.kingaku - j.nebiki + j.tax; // 請求金額 darwinDataSet.新請求書Row r = dts.新請求書.New新請求書Row(); r.得意先ID = clientCode; r.請求金額 = (int)kin; r.消費税 = (int)j.tax; r.値引額 = (int)j.nebiki; r.売上金額 = (int)j.kingaku; r.税率 = 0; r.請求書発行日 = seikyuDt; r.支払期日 = j.nnn; r.残金 = (int)kin; r.入金完了 = 0; r.請求書発行済 = 0; r.明細数 = j.cnt; r.備考 = string.Empty; r.登録年月日 = DateTime.Now; r.更年月日 = DateTime.Now; r.ユーザーID = global.loginUserID; r.無効 = global.FLGOFF; r.精算備考 = string.Empty; r.精算額 = 0; r.精算日付 = string.Empty; dts.新請求書.Add新請求書Row(r); } } } } //MessageBox.Show("!!"); Application.DoEvents(); // 100ミリ秒遅らせる System.Threading.Thread.Sleep(100); // データベース更新 nAdp.Update(dts.新請求書); nAdp.Fill(dts.新請求書); rCnt = 0; // 新請求データ取得 var ss = dts.新請求書.Where(a => a.入金完了 == global.FLGOFF); cTotal = ss.Count(); //frmP.progressMax = cTotal; //frmP.setProgressMax(); // 受注データと新請求データの紐付 foreach (var t in ss) { //データ件数加算 rCnt++; //プログレスバー表示 frmP.Text = "受注データと請求データを最適化中 Step.1 ..." + rCnt.ToString() + "/" + cTotal.ToString(); frmP.progressValue = rCnt * 100 / cTotal; //frmP.progressValue = rCnt; frmP.ProgressStep(); //// 1ミリ秒停止する //System.Threading.Thread.Sleep(1); foreach (var d in dts.受注1.Where(a => a.完了区分 == global.FLGOFF && !a.Is請求書発行日Null() && !a.Is入金予定日Null() && a.得意先ID == t.得意先ID && a.請求書発行日 == t.請求書発行日 && a.入金予定日 == t.支払期日)) { d.請求書ID = t.ID; } } //MessageBox.Show("!!"); Application.DoEvents(); // 100ミリ秒遅らせる System.Threading.Thread.Sleep(100); rCnt = 0; // 締め処理後新請求書データに紐付されない受注データの請求書IDを初期化(0)にする foreach (var t in ss) { //データ件数加算 rCnt++; //プログレスバー表示 frmP.Text = "受注データと請求データを最適化中 Step.2 ..." + rCnt.ToString() + "/" + cTotal.ToString(); frmP.progressValue = rCnt * 100 / cTotal; frmP.ProgressStep(); foreach (var m in t.Get受注1Rows()) { if (m.Is請求書発行日Null()) { m.請求書ID = 0; } else if (m.Is入金予定日Null()) { m.請求書ID = 0; } else if (t.得意先ID != m.得意先ID || t.請求書発行日 != m.請求書発行日 || t.支払期日 != m.入金予定日) { m.請求書ID = 0; } } } Application.DoEvents(); // 100ミリ秒遅らせる System.Threading.Thread.Sleep(100); rCnt = 0; // 締め処理後受注データに紐付されない新請求書データを削除にする foreach (var t in ss) { //データ件数加算 rCnt++; //プログレスバー表示 frmP.Text = "受注データと請求データを最適化中 Step.3 ..." + rCnt.ToString() + "/" + cTotal.ToString(); frmP.progressValue = rCnt * 100 / cTotal; frmP.ProgressStep(); // 締め処理後受注データに紐付されない新請求書データを削除にする 2015/12/19 if (t.Get受注1Rows().Count() == 0) { t.Delete(); } } Application.DoEvents(); // データベース更新 jAdp.Update(dts.受注1); nAdp.Update(dts.新請求書); nAdp.Fill(dts.新請求書); Application.DoEvents(); // いったんオーナーをアクティブにする frm.Activate(); // 進行状況ダイアログを閉じる frmP.Close(); // オーナーのフォームを有効に戻す frm.Enabled = true; Cursor.Current = Cursors.Default; }
/// ------------------------------------------------------------------ /// <summary> /// グリッドデータを表示する </summary> /// <param name="g"> /// データグリッドビューオブジェクト</param> /// ------------------------------------------------------------------ private void gridShow(DataGridView g, int sID) { if (!dts.新請求書.Any(a => a.ID == sID)) { return; } nr = dts.新請求書.Single(a => a.ID == sID); lblNum.Text = nr.ID.ToString(); lblClientCode.Text = nr.得意先ID.ToString(); if (nr.得意先Row != null) { lblClientName.Text = nr.得意先Row.略称; } else { lblClientName.Text = string.Empty; } lblHDt.Text = nr.請求書発行日.ToShortDateString(); lblSDt.Text = nr.支払期日.ToShortDateString(); lblSeikyu.Text = nr.請求金額.ToString("#,##0"); lblUriage.Text = nr.売上金額.ToString("#,##0"); lblTax.Text = nr.消費税.ToString("#,##0"); lblNebiki.Text = nr.値引額.ToString("#,##0"); lblZan.Text = nr.残金.ToString("#,##0"); if (nr.入金完了 == global.FLGON) { checkBox1.Checked = true; label6.Visible = true; } else { checkBox1.Checked = false; label6.Visible = false; } // 入金済みメッセージ if (nr.入金完了 == global.FLGON && nr.残金 > 0) { label6.Text = "未収確定"; } else if (nr.入金完了 == global.FLGON && nr.残金 == 0) { label6.Text = "入金完了"; } else { label6.Text = string.Empty; } if (nr.Is備考Null()) { txtSeikyuMemo.Text = string.Empty; } else { txtSeikyuMemo.Text = nr.備考; } // 入金日 DateTime dt; if (DateTime.TryParse(lblSDt.Text, out dt)) { dateTimePicker1.Value = dt; } else { dateTimePicker1.Value = DateTime.Today; } // 無効な請求書 if (nr.無効 == global.FLGON) { lblMukou.Visible = true; } else { lblMukou.Visible = false; } // 精算日付 if (nr.精算日付 == string.Empty) { dateTimeSai.Checked = false; } else { if (DateTime.TryParse(nr.精算日付, out dt)) { dateTimeSai.Checked = true; dateTimeSai.Value = dt; } else { dateTimeSai.Checked = false; } } // 精算額 txtSai.Text = nr.精算額.ToString(); // 精算備考 txtSaiMemo.Text = nr.精算備考.ToString(); // 口座 : 2017/08/15 if (Utility.nullToStr(nr.口座) == string.Empty) { cmbKouza.SelectedIndex = -1; } else { cmbKouza.SelectedIndex = -1; for (int i = 0; i < kouzaArray.Length; i++) { if (kouzaArray[i] == nr.口座) { cmbKouza.SelectedIndex = i; break; } } } g.Rows.Clear(); int iX = 0; foreach (var t in nr.Get新入金Rows()) { g.Rows.Add(); g[colDate, iX].Value = t.入金年月日.ToShortDateString(); g[colKingaku, iX].Value = t.金額.ToString("#,##0"); g[colMemo, iX].Value = t.備考; g[colID, iX].Value = t.ID.ToString(); iX++; } g.CurrentCell = null; button2.Enabled = false; }