Example #1
0
        /// ------------------------------------------------------------------
        /// <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;
        }
Example #2
0
        ///-------------------------------------------------------
        /// <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;
        }
Example #3
0
        /// ------------------------------------------------------------------
        /// <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;
        }