Ejemplo n.º 1
0
        /// <summary>
        /// 実績コピー処理を行います。
        /// </summary>
        private void CopyResults()
        {
            KNS_D01        origin_01 = GetLocalKinmuJisseki(viewShainInfo.SHAIN_CD, viewDateTime.Year, viewDateTime.Month, GetOriginDayFromRequest());
            List <KNS_D02> origin_02 = GetLocalSagyoNisshi(viewShainInfo.SHAIN_CD, viewDateTime.Year, viewDateTime.Month, GetOriginDayFromRequest());

            int[]          copyToValues  = GetCopytoDaysFromRequest();
            List <KNS_D01> copytoList_01 = new List <KNS_D01>();
            List <KNS_D02> copytoList_02 = new List <KNS_D02>();

            foreach (int copyToValue in copyToValues)
            {
                if (origin_01 == null)
                {
                    KNS_D01 tmp = GetLocalKinmuJisseki(viewShainInfo.SHAIN_CD, viewDateTime.Year, viewDateTime.Month, copyToValue);
                    if (tmp != null)
                    {
                        copytoList_01.Add(tmp);
                    }
                }
                else
                {
                    KNS_D01 copytod01 = origin_01.Clone();
                    copytod01.DATA_D = copyToValue.ToString();
                    KinmuManager.ExecuteUpdate(ref copytod01);
                }

                if (origin_01 == null || origin_02 == null)
                {
                    List <KNS_D02> tmp = GetLocalSagyoNisshi(viewShainInfo.SHAIN_CD, viewDateTime.Year, viewDateTime.Month, copyToValue);
                    if (tmp.Any())
                    {
                        copytoList_02.AddRange(tmp);
                    }
                }
                else
                {
                    List <KNS_D02> copytod02 = new List <KNS_D02>();
                    origin_02.ForEach(item =>
                    {
                        KNS_D02 tmp = item.Clone();
                        tmp.DATA_D  = copyToValue.ToString();
                        copytod02.Add(tmp);
                    });
                    KinmuManager.ExecuteUpdate(ref copytod02);
                }
            }

            try
            {
                // 削除対象がなくても実施。Listの有無の判断をマネージャ側でいい感じにやってくれる
                dbManager.DeleteKinmuJisseki(copytoList_01);
                dbManager.DeleteSagyoNisshi(copytoList_02);
            }
            catch (Exception ex)
            {
                throw new KinmuException(ex.Message, ex);
            }

            SetInformationPanel(ref InformationPanel, ref InfoIcon, ref InfoText, "勤務実績のコピーが完了しました。", InformationLevel.Highlight);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 実績情報に応じた<see cref="TableCell"/>を作成します
        /// </summary>
        /// <param name="jisseki">勤務実績データ</param>
        /// <param name="cell"><see cref="KNS_D01"/> <paramref name="jisseki"/>に応じ作成された<see cref="TableCell"/>が格納されます。</param>
        private void SetTableCellData(KNS_D01 jisseki, out TableCell cell)
        {
            try
            {
                logger.Debug(LOG_START);
                cell = new TableCell()
                {
                    CssClass = "jisseki",
                    Text     = ninsyoCD[jisseki.NINKA_CD]
                };

                // 勤務時間があればテキストを書き換える
                TimeRange tr = jisseki.GetWorkTimeRange();
                if (tr != null)
                {
                    cell.Text = tr.ToString(timeFormat);
                }
            }
            catch (KinmuException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new KinmuException(ex.Message, ex);
            }
        }
Ejemplo n.º 3
0
        public void CalcSyukujituCTest3()
        {
            KNS_D01 _d01 = new KNS_D01
            {
                SHAIN_CD   = "9999999",
                DATA_Y     = "2019",
                DATA_M     = "2",
                DATA_D     = "11",
                NINYO_CD   = "01",
                NINKA_CD   = "10",
                STR_HR     = "9",
                STR_MIN    = "20",
                END_HR     = "1",
                END_MIN    = "0",
                END_PAR    = "1",
                RESTS1_HR  = "12",
                RESTS1_MIN = "00",
                RESTE1_HR  = "13",
                RESTE1_MIN = "0",
                RESTS2_HR  = "22",
                RESTS2_MIN = "30",
                RESTE2_HR  = "23",
                RESTE2_MIN = "30"
            };
            int res = KinmuManager.CalcSyukujituC(ref _d01);

            Assert.IsTrue(res == 760, "失敗:res = " + res);
        }
Ejemplo n.º 4
0
        public void ValidationD01AndD02Test1()
        {
            KNS_D01 _d01 = new KNS_D01
            {
                SHAIN_CD   = "9999999",
                DATA_Y     = "2019",
                DATA_M     = "2",
                DATA_D     = "1",
                NINYO_CD   = "01",
                NINKA_CD   = "10",
                STR_HR     = "9",
                STR_MIN    = "20",
                END_HR     = "18",
                END_MIN    = "0",
                END_PAR    = "0",
                RESTS1_HR  = "12",
                RESTS1_MIN = "00",
                RESTE1_HR  = "13",
                RESTE1_MIN = "0",
                //RESTS2_HR = "24",
                //RESTS2_MIN = "30",
                //RESTE2_HR = "25",
                //RESTE2_MIN = "0"
            };

            List <KNS_D02> _d02s = new List <KNS_D02>();
            KNS_D02        _d02  = new KNS_D02
            {
                SHAIN_CD  = "9999999",
                DATA_Y    = "2019",
                DATA_M    = "2",
                DATA_D    = "1",
                PROJ_CD   = "V00303010A",
                SAGYO_CD  = "01",
                SAGYO_MIN = 460
            };

            _d02s.Add(_d02);
            KinmuManager.ValidationD01AndD02(ref _d01, ref _d02s);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 実績クリアの処理を行います
        /// </summary>
        private void ClearResults()
        {
            logger.Debug(LOG_START);
            int[]          clearValue     = GetClearFlagFromRequest();
            List <KNS_D01> cleartoList_01 = new List <KNS_D01>();
            List <KNS_D02> cleartoList_02 = new List <KNS_D02>();

            // 削除対象の作成
            foreach (int day in clearValue)
            {
                KNS_D01 tmp = GetLocalKinmuJisseki(viewShainInfo.SHAIN_CD, viewDateTime.Year, viewDateTime.Month, day);
                if (tmp != null)
                {
                    cleartoList_01.Add(tmp);
                }
                var tmp2 = GetLocalSagyoNisshi(viewShainInfo.SHAIN_CD, viewDateTime.Year, viewDateTime.Month, day);
                if (tmp2.Any())
                {
                    cleartoList_02.AddRange(tmp2);
                }
            }

            // 削除の実行
            int cnt = 0;

            cnt  = dbManager.DeleteKinmuJisseki(cleartoList_01);
            cnt += dbManager.DeleteSagyoNisshi(cleartoList_02);

            if (0 < cnt)
            {
                SetInformationPanel(ref InformationPanel, ref InfoIcon, ref InfoText, "勤務実績のクリアが完了しました。", InformationLevel.Highlight);
            }
            else
            {
                SetInformationPanel(ref InformationPanel, ref InfoIcon, ref InfoText, "クリア対象の勤務実績がありませんでした。", InformationLevel.Error);
            }
        }
Ejemplo n.º 6
0
        public void CalcTankaDTest2()
        {
            KNS_D01 _d01 = new KNS_D01
            {
                SHAIN_CD   = "9999999",
                DATA_Y     = "2019",
                DATA_M     = "2",
                DATA_D     = "3",
                NINYO_CD   = "01",
                NINKA_CD   = "10",
                STR_HR     = "9",
                STR_MIN    = "20",
                END_HR     = "18",
                END_MIN    = "0",
                END_PAR    = "0",
                RESTS1_HR  = "12",
                RESTS1_MIN = "00",
                RESTE1_HR  = "13",
                RESTE1_MIN = "0",
            };
            int res = KinmuManager.CalcTankaD(ref _d01);

            Assert.IsTrue(res == 460, "失敗:res = " + res);
        }
Ejemplo n.º 7
0
        public void SetKinmuJissekiParameterTest1()
        {
            KNS_D01 _d01 = new KNS_D01
            {
                SHAIN_CD   = "9999999",
                DATA_Y     = "2019",
                DATA_M     = "2",
                DATA_D     = "1",
                NINYO_CD   = "01",
                NINKA_CD   = "10",
                STR_HR     = "9",
                STR_MIN    = "20",
                END_HR     = "18",
                END_MIN    = "0",
                END_PAR    = "0",
                RESTS1_HR  = "12",
                RESTS1_MIN = "00",
                RESTE1_HR  = "13",
                RESTE1_MIN = "0",
            };
            bool res = KinmuManager.ExecuteUpdate(ref _d01);

            Assert.IsTrue(res);
        }
Ejemplo n.º 8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                logger.Debug(LOG_START);
                KinmuSystem.SetSessionData(ref loginShainInfo, ref viewShainInfo, ref viewDateTime, Response, Request, Session);

                int workTimeTotal = 0;
                List <KinmuGridViewWorkResultsRow> data = new List <KinmuGridViewWorkResultsRow>();
                KinmuManager kinmuManager = new KinmuManager(viewShainInfo.SHAIN_CD, viewDateTime.Year, viewDateTime.Month);

                DateTimeStringLabel.Text = viewDateTime.ToString("yyyy年MM月");
                CompanyNameLabel.Text    = companyName;
                EmployeeCodeLabel.Text   = viewShainInfo.SHAIN_CD;
                NameLabel.Text           = viewShainInfo.SHAIN_NM;
                Title = "勤務実績整理簿 " + viewShainInfo.SHAIN_NM + " " + viewDateTime.ToString("yyyy年MM月");

                //メインの表をバインド
                for (int i = 1; i <= DateTime.DaysInMonth(kinmuManager.Year, kinmuManager.Month); i++)
                {
                    // 本当はKinmuRecordRowを取得しておきたかったが、処理の関係上こうなってる
                    // なんか良い方法あったら教えてください
                    KNS_D01 KinmuJisseki   = kinmuManager.KinmuJisseki.SingleOrDefault(_ => _.DATA_D == i.ToString(PADDING_ZERO_2)) ?? new KNS_D01();
                    KNS_D13 KinmuYotei     = kinmuManager.KinmuYotei.SingleOrDefault(_ => _.DATA_D == i.ToString(PADDING_ZERO_2)) ?? new KNS_D13();
                    KNS_M05 CalendarMaster = kinmuManager.CalendarMaster.SingleOrDefault(_ => _.DATA_D == i.ToString(PADDING_ZERO_2)) ?? new KNS_M05();
                    workTimeTotal += KinmuJisseki.DKINM ?? 0;
                    data.Add(
                        new KinmuGridViewWorkResultsRow(
                            new KinmuRecordRow(kinmuManager.EmployeeCD, KinmuJisseki, KinmuYotei, new List <KNS_D02>(), CalendarMaster),
                            workTimeTotal
                            )
                        );
                }
                WorkResultsGridView.DataSource = data;
                WorkResultsGridView.DataBind();

                // 所定日数
                A1Label.Text = kinmuManager.CalcGekkanSyoteiNissu().ToString();
                // 出勤日数
                A2Label.Text = kinmuManager.CalcGekkanSyukkinNissu().ToString();
                // 休労日数
                A3Label.Text = kinmuManager.CalcGekkanKyujitsuRoudouNissu().ToString();
                // -日数
                A4Label.Text = kinmuManager.CalcBarNissu().ToString();
                // 代休日数
                A5Label.Text = kinmuManager.CalcGekkanDaikyuNissu().ToString();
                // 非番日数
                A6Label.Text = kinmuManager.CalcGekkanHibanNissu().ToString();
                // 有給日数
                A7Label.Text = kinmuManager.CalcGekkanYukyuNissu().ToString();
                // 無休日数
                A8Label.Text = kinmuManager.CalcGekkanMukyuNissu().ToString();

                // 組休日数
                B1Label.Text = kinmuManager.CalcGekkanKumikyuNissu().ToString();
                // 公休日労働回数
                B2Label.Text = kinmuManager.CalcGekkanKokyuRoudouNissu().ToString();
                // 所定労働日数
                B3Label.Text = kinmuManager.CalcGekkanSyoteiRoudoNissu().ToString();
                // 労働日数
                B4Label.Text = kinmuManager.CalcGekkanRoudouNissu().ToString();
                // 特休日数 予定
                B5Label.Text = kinmuManager.CalcGekkanTokkyuYoteiNissu().ToString();
                // 特休日数 確定
                B6Label.Text = kinmuManager.CalcGekkanTokkyuKakuteiNissu().ToString();
                // 公休日数 予定
                B7Label.Text = kinmuManager.CalcGekkanKoukyuYoteiNissu().ToString();
                // 公休日数 確定
                B8Label.Text = kinmuManager.CalcGekkanKoukyuKakuteiNissu().ToString();

                // 実総労働時間
                int tmp = kinmuManager.CalcGekkanTotalJitsuRoudoJikan();
                C1Label1.Text = MinutesToStringFormat(tmp);
                C1Label2.Text = tmp.ToString();
                // みなし2
                tmp           = kinmuManager.CalcGekkanYukyuJikan();
                C2Label1.Text = MinutesToStringFormat(tmp);
                C2Label2.Text = tmp.ToString();
                // 超勤A
                tmp           = kinmuManager.CalcGekkanTankaAJikan();
                C3Label1.Text = MinutesToStringFormat(tmp);
                C3Label2.Text = tmp.ToString();
                // 超勤B
                tmp           = kinmuManager.CalcGekkanTankaBJikan();
                C4Label1.Text = MinutesToStringFormat(tmp);
                C4Label2.Text = tmp.ToString();
                // 超勤D(特休)
                tmp           = kinmuManager.CalcGekkanTankaTokkyuDJikan();
                C5Label1.Text = MinutesToStringFormat(tmp);
                C5Label2.Text = tmp.ToString();
                // 超勤D(公休)
                tmp           = kinmuManager.CalcGekkanTankaKoukyuDJikan();
                C6Label1.Text = MinutesToStringFormat(tmp);
                C6Label2.Text = tmp.ToString();
                // 夜勤C
                tmp           = kinmuManager.CalcGekkanTankaCJikan();
                C7Label1.Text = MinutesToStringFormat(tmp);
                C7Label2.Text = tmp.ToString();
                // 控除A
                tmp           = kinmuManager.CalcGekkanKoujyoAJikan();
                C8Label1.Text = MinutesToStringFormat(tmp);
                C8Label2.Text = tmp.ToString();

                // 減額A
                tmp           = kinmuManager.CalcGekkanGengakuAjikan();
                D1Label1.Text = MinutesToStringFormat(tmp);
                D1Label2.Text = tmp.ToString();
                // 時間外労働時間
                tmp           = kinmuManager.CalcGekkanJikangaiRoudoJikan();
                D2Label1.Text = MinutesToStringFormat(tmp);
                D2Label2.Text = tmp.ToString();
                // 経営公休日労働時間
                tmp           = kinmuManager.CalcGekkanKeieiKokyuRoudoJikan();
                D3Label1.Text = MinutesToStringFormat(tmp);
                D3Label2.Text = tmp.ToString();
                // 法定労働時間
                tmp           = kinmuManager.CalcGekkanHouTeiRoudoJikan();
                D4Label1.Text = MinutesToStringFormat(tmp);
                D4Label2.Text = tmp.ToString();
                // 所定労働時間
                tmp           = kinmuManager.CalcGekkanSyoteiRoudoJikan();
                D5Label1.Text = MinutesToStringFormat(tmp);
                D5Label2.Text = tmp.ToString();
                // みなし1
                tmp           = kinmuManager.CalcGekkanMinashi1Jikan();
                D6Label1.Text = MinutesToStringFormat(tmp);
                D6Label2.Text = tmp.ToString();
                // 超勤E
                tmp           = kinmuManager.CalcGekkanTankaEJikan();
                D7Label1.Text = MinutesToStringFormat(tmp);
                D7Label2.Text = tmp.ToString();
                // 祝日C
                tmp           = kinmuManager.CalcGekkanSyukujituRoudoJikan();
                D8Label1.Text = MinutesToStringFormat(tmp);
                D8Label2.Text = tmp.ToString();
            }
            catch (KinmuException ex)
            {
                WorkResultsPanel.Visible = false;
                ErrorPanel.Visible       = true;
                ErrorMessageLabel.Text   = dataErrorMessage + "ErrorMessage:" + ex.Message + "StackTrace:" + ex.StackTrace;
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 社員コード、年、月をもとにDBから勤務予定を取得し、帳票にバインドできる形に変換して返します。
        /// </summary>
        /// <returns>バインドできる形に成形した勤務予定に記入するデータ</returns>
        private void RenderWorkPlansTableBody()
        {
            logger.Debug(LOG_START);
            for (int i = 1; i <= DateTime.DaysInMonth(kinmuManager.Year, kinmuManager.Month); i++)
            {
                // 本当はKinmuRecordRowを取得しておきたかったが、処理の関係上こうなってる
                // なんか良い方法あったら教えてください
                KNS_D01 KinmuJisseki   = kinmuManager.KinmuJisseki.SingleOrDefault(_ => _.DATA_D == i.ToString(PADDING_ZERO_2)) ?? new KNS_D01();
                KNS_D13 KinmuYotei     = kinmuManager.KinmuYotei.SingleOrDefault(_ => _.DATA_D == i.ToString(PADDING_ZERO_2)) ?? new KNS_D13();
                KNS_M05 CalendarMaster = kinmuManager.CalendarMaster.SingleOrDefault(_ => _.DATA_D == i.ToString(PADDING_ZERO_2)) ?? new KNS_M05();

                workTimeTotal    += KinmuJisseki.DKINM ?? 0;
                minashiTimeTotal += KinmuJisseki.DMINA1 ?? 0;
                minashiTimeTotal += KinmuJisseki.DMINA2 ?? 0;
                restTimeTotal    += KinmuJisseki.GetTotalRestTime();

                KinmuGridViewWorkPlansRow a = new KinmuGridViewWorkPlansRow(new KinmuRecordRow(kinmuManager.EmployeeCD, KinmuJisseki, KinmuYotei, new List <KNS_D02>(), CalendarMaster), workTimeTotal);

                TableRow row = new TableRow();
                row.Cells.AddRange(new TableCell[] {
                    new TableCell()
                    {
                        Text = a.Date, CssClass = "Date"
                    },
                    new TableCell()
                    {
                        Text = a.Day, CssClass = "Day"
                    },
                    new TableCell()
                    {
                        Text = a.NinsyoSchedule, CssClass = "Plan"
                    },
                    new TableCell()
                    {
                        Text = a.NinsyoResult, CssClass = "Result"
                    },
                    new TableCell()
                    {
                        Text = a.OpeningTimeToClosingTimeSchedule, CssClass = "OpeningTimeToClosingTimeSchedule"
                    },
                    new TableCell()
                    {
                        Text = a.OpeningTimeToClosingTimeResult, CssClass = "OpeningTimeToClosingTimeResult"
                    },
                    new TableCell()
                    {
                        Text = a.NextDayFlag, CssClass = "NextDay"
                    },
                    new TableCell()
                    {
                        Text = a.RestTime, CssClass = "BreakTime"
                    },
                    new TableCell()
                    {
                        Text = a.WorkTime, CssClass = "WorkTime"
                    },
                    new TableCell()
                    {
                        Text = a.Minashi, CssClass = "Minashi"
                    },
                    new TableCell()
                    {
                        Text = a.WorkTimeTotal, CssClass = "WorkTimeTotal"
                    },
                    new TableCell()
                    {
                        Text = a.Article, CssClass = "Article"
                    }
                });

                WorkPlansTable.Rows.Add(row);
            }
        }