Esempio n. 1
0
        ///----------------------------------------------------------------------
        /// <summary>
        ///     計算用出勤日数で出勤日数を算出する </summary>
        /// <param name="r">
        ///     MTYSDataSet.勤務票ヘッダRow</param>
        /// <returns>
        ///     出勤日数</returns>
        ///----------------------------------------------------------------------
        private double getShukkinDays(MTYSDataSet.勤務票ヘッダRow r)
        {
            double sVal     = 0;
            double sShDays  = r.計算用出勤日数;
            double sSeDays  = r.生理分娩日数;
            double sKeDays  = r.勤日数合計;
            double sYukyu   = 0;
            double sYukyu1  = r.休日数合計;
            double sYukyu2  = r.休日数2;
            double sTokDays = r.特休日数合計;

            // 小数点以下あり有給日数
            sYukyu = (sYukyu1 * 10 + sYukyu2) / 10;

            // 出勤日数算出
            sVal = sShDays - sSeDays - sKeDays - sYukyu - sTokDays;

            return(sVal);
        }
Esempio n. 2
0
        ///------------------------------------------------------------------------------------
        /// <summary>
        ///     データを画面に表示します </summary>
        /// <param name="iX">
        ///     ヘッダデータインデックス</param>
        ///------------------------------------------------------------------------------------
        private void showOcrData(int iX)
        {
            // 勤務票ヘッダテーブル行を取得
            //MTYSDataSet.勤務票ヘッダRow r = (MTYSDataSet.勤務票ヘッダRow)dts.勤務票ヘッダ.Rows[iX];

            // 2015/10/30
            MTYSDataSet.勤務票ヘッダRow r = (MTYSDataSet.勤務票ヘッダRow)dts.勤務票ヘッダ.Single(a => a.ID == sKey[iX]);

            // フォーム初期化
            formInitialize(dID, iX);

            // ヘッダ情報表示
            txtYear.Text  = Utility.EmptytoZero(r.年.ToString());
            txtMonth.Text = Utility.EmptytoZero(r.月.ToString());

            global.ChangeValueStatus = false;                   // チェンジバリューステータス
            txtNo.Text = string.Empty;
            global.ChangeValueStatus = true;                    // チェンジバリューステータス

            txtNo.Text = Utility.EmptytoZero(r.人番号.ToString()); // 社員番号

            // 時間合計欄
            txtZangyoTL.Text   = r.残業時.ToString() + ":" + r.残業分.ToString().PadLeft(2, '0');
            txtShinyaTL.Text   = r.深夜時.ToString() + ":" + r.深夜分.ToString().PadLeft(2, '0');
            txtKyujitsuTL.Text = r.休日勤務時.ToString() + ":" + r.休日勤務分.ToString().PadLeft(2, '0');
            txtChikokuTL.Text  = r.遅刻時間時.ToString() + ":" + r.遅刻時間分.ToString().PadLeft(2, '0');
            txtSoutaiTL.Text   = r.早退時間時.ToString() + ":" + r.早退時間分.ToString().PadLeft(2, '0');

            // 日数合計欄
            txtShukkin.Text     = r.出勤日数合計.ToString() + "." + r.出勤日数2.ToString();
            txtYukyu.Text       = r.休日数合計.ToString() + "." + r.休日数2.ToString();
            txtTokukyu.Text     = r.特休日数合計.ToString();
            txtKekkin.Text      = r.勤日数合計.ToString();
            txtSeiri.Text       = r.生理分娩日数.ToString();
            txtJisa.Text        = r.時差出勤日数.ToString();
            txtHoanH.Text       = r.平日保安回数.ToString();
            txtHoanK.Text       = r.休日保安回数.ToString();
            txtShukuH.Text      = r.平日宿日直回数.ToString();
            txtShukuK.Text      = r.休日宿日直回数.ToString();
            txt1L.Text          = r._1L勤回数.ToString();
            txt2Kin.Text        = r._2勤回数.ToString();
            txtMaru3Kin.Text    = r.丸3勤回数.ToString();
            txt3Kin.Text        = r._3勤回数.ToString();
            txtshukujitsu.Text  = r.日祝日勤務回数.ToString();
            txtKoujyoNissu.Text = r.控除日数.ToString();

            // 帳票種別表示
            global gl = new global();

            label4.Text = r.帳票番号.ToString();

            if (r.帳票番号 > 0 && r.帳票番号 <= gl.arrayChohyoID.Length)
            {
                label27.Text = gl.arrayChohyoID[r.帳票番号 - 1];
            }

            // 日別勤怠表示
            showItem(r.帳票番号.ToString(), r.ID, dGV, r.年.ToString(), r.月.ToString());

            // エラー情報表示初期化
            lblErrMsg.Visible = false;
            lblErrMsg.Text    = string.Empty;

            // 画像表示
            ShowImage(global.pblImagePath + r.画像名.ToString());

            if (cSR != null)
            {
                OCRData ocr = new OCRData();

                // 計算用出勤日数を取得
                int days = ocr.getWorkDays(1, Utility.StrtoInt(txtYear.Text), Utility.StrtoInt(txtMonth.Text), r.帳票番号, cSR.大阪製造部勤務グループ);
                txtKeisanDays.Text = days.ToString();

                // 印刷用出勤日数を取得
                days          = ocr.getWorkDays(0, Utility.StrtoInt(txtYear.Text), Utility.StrtoInt(txtMonth.Text), r.帳票番号, cSR.大阪製造部勤務グループ);
                lblNissu.Text = days.ToString();
            }
        }
Esempio n. 3
0
        /// ------------------------------------------------------------------------------------------
        /// <summary>
        ///     該当月1日からの「累計残業時間及び日曜を除く休日勤務時間」が60Hを超えた日以降の平日の
        ///     残業時間数および日曜を除く休日勤務時間数を算出する </summary>
        /// <param name="r">
        ///     MTYSDataSet.勤務票ヘッダRow</param>
        /// <param name="zan60">
        ///     60Hを超えた日以降の平日の残業時間数</param>
        /// <param name="kyujitsu60">
        ///     60Hを超えた日以降の日曜を除く休日勤務時間数</param>
        /// <returns>
        ///     true:終了</returns>
        /// ------------------------------------------------------------------------------------------
        private bool getOver60ZanTime(MTYSDataSet.勤務票ヘッダRow r, out int zan60, out int kyujitsu60)
        {
            int      zanKyu   = 0;
            int      zan      = 0;
            int      kyujitsu = 0;
            bool     over60   = false;
            DateTime eDate;
            string   w = string.Empty;

            zan60      = 0; // 残業60H超・平日
            kyujitsu60 = 0; // 残業60H超・休日

            var s = _mTbl.Where(a => a.ヘッダID == r.ID).OrderBy(a => a.ID);

            foreach (var t in s)
            {
                string sDate = r.年.ToString() + "/" + r.月.ToString() + "/" + t.日付;

                // 存在する日付と認識された場合
                if (DateTime.TryParse(sDate, out eDate))
                {
                    // 曜日を取得する
                    w = ("日月火水木金土").Substring(int.Parse(eDate.DayOfWeek.ToString("d")), 1);

                    zan = Utility.StrtoInt(t.時間外時) * 60 + Utility.StrtoInt(t.時間外分);

                    // 残業時間有り
                    if (zan > 0)
                    {
                        // 残業時間加算
                        zanKyu += zan;

                        // 60H超チェック
                        if (zanKyu > 3600)
                        {
                            // 2015/10/29 土曜日が平日扱いの日を条件に追加
                            if (w == "月" || w == "火" || w == "水" || w == "木" || w == "金" || w == "土")
                            {
                                if (!over60)
                                {
                                    // 今、60Hを超えたので60Hを超えた分をセット
                                    zan60 = zanKyu - 3600;

                                    // ステータスを60H超えにする
                                    over60 = true;
                                }
                                else
                                {
                                    // 既に60Hを超えているのでそのまま60H超平日残業時間に加算
                                    zan60 += zan;
                                }
                            }
                        }
                    }

                    // 日曜日以外の休日勤務時間数
                    if (w != "日")
                    {
                        kyujitsu = Utility.StrtoInt(t.休日出勤時) * 60 + Utility.StrtoInt(t.休日出勤分);

                        if (kyujitsu > 0)
                        {
                            // 休日勤務時間加算
                            zanKyu += kyujitsu;

                            // 60H超チェック
                            if (zanKyu > 3600)
                            {
                                if (!over60)
                                {
                                    // 今、60Hを超えたので60Hを超えた分をセット
                                    kyujitsu60 = zanKyu - 3600;

                                    // ステータスを60H超えにする
                                    over60 = true;
                                }
                                else
                                {
                                    // 既に60Hを超えているのでそのまま60H超休日勤務時間に加算
                                    kyujitsu60 += kyujitsu;
                                }
                            }
                        }
                    }
                }
            }

            return(true);
        }
Esempio n. 4
0
        ///----------------------------------------------------------------------------------
        /// <summary>
        ///     給与計算用受入データ集計処理</summary>
        /// <param name="m">
        ///     MTYSDataSet.勤務票ヘッダRow</param>
        ///----------------------------------------------------------------------------------
        private void setDataShain(MTYSDataSet.勤務票ヘッダRow r)
        {
            try
            {
                sShainNo           = r.人番号.ToString();
                sName              = r.氏名;
                sFuri              = Utility.NulltoStr(r.フリガナ);
                sShukkinSubekiDays = (r.計算用出勤日数 - r.生理分娩日数).ToString();

                // 2014/10/10 計算用日数で出勤日数を再計算する
                double sDays = getShukkinDays(r);
                int    d1    = (int)System.Math.Floor(sDays);
                int    d2    = (int)((sDays * 10) % 10);
                sShukkinDays = d1.ToString() + "." + d2.ToString();

                sKekkinDays     = r.勤日数合計.ToString() + ".0";
                sYuKyuDays      = r.休日数合計.ToString() + "." + r.休日数2.ToString();
                sTokuKyuDays    = r.特休日数合計.ToString() + ".0";
                sSeiriDays      = r.生理分娩日数.ToString() + ".0";
                sChikokuH       = hhmmTo30min(r.遅刻時間時, r.遅刻時間分);
                sSoutaiH        = hhmmTo30min(r.早退時間時, r.早退時間分);
                sZanH           = hhmmTo30min(r.残業時, r.残業分);
                sShinyaH        = hhmmTo30min(r.深夜時, r.深夜分);
                sKyujitsuH      = hhmmTo30min(r.休日勤務時, r.休日勤務分);
                sShukuH         = r.平日宿日直回数.ToString();
                sShukuK         = r.休日宿日直回数.ToString();
                sHoanH          = r.平日保安回数.ToString();
                sHoanK          = r.休日保安回数.ToString();
                sJisaDays       = r.時差出勤日数.ToString();
                s1LKinDays      = r._1L勤回数.ToString();
                s2KinDays       = r._2勤回数.ToString();
                sMaru3KinDays   = r.丸3勤回数.ToString();
                s3KinDays       = r._3勤回数.ToString();
                sShukujitsuDays = r.日祝日勤務回数.ToString();
                sKoujyoDays     = r.控除日数.ToString();

                // 60時間超残業・日曜以外休日勤務時間を取得
                int zan60      = 0;
                int kyujitsu60 = 0;
                getOver60ZanTime(r, out zan60, out kyujitsu60);

                // 残業60H超・平日
                if (zan60 > 0)
                {
                    sZan60HH = (zan60 / 60).ToString();
                    sZan60MH = (zan60 - (Utility.StrtoInt(sZan60HH) * 60)).ToString();
                    sZan60HH = sZan60HH + "." + sZan60MH.PadLeft(2, '0');
                }
                else
                {
                    sZan60HH = "0.00";
                }

                // 残業60H超・休日
                if (kyujitsu60 > 0)
                {
                    sZan60HK = (kyujitsu60 / 60).ToString();
                    sZan60MK = (kyujitsu60 - (Utility.StrtoInt(sZan60HK) * 60)).ToString();
                    sZan60HK = sZan60HK + "." + sZan60MK.PadLeft(2, '0');
                }
                else
                {
                    sZan60HK = "0.00";
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("給与計算用受入データ作成中" + Environment.NewLine + e.Message, "エラー", MessageBoxButtons.OK);
            }
        }