public static SuratPengesahanHospitalModel GetByNoPekerja(string noPekerja)
        {
            SuratPengesahanHospitalModel model     = new SuratPengesahanHospitalModel();
            ApplicationDbContext         db        = new ApplicationDbContext();
            HR_MAKLUMAT_PERIBADI         mPeribadi = db.HR_MAKLUMAT_PERIBADI
                                                     .Where(s => s.HR_NO_PEKERJA == noPekerja).FirstOrDefault();
            HR_MAKLUMAT_PEKERJAAN mPekerjaan = db.HR_MAKLUMAT_PEKERJAAN
                                               .Where(s => s.HR_NO_PEKERJA == noPekerja).FirstOrDefault();
            List <HR_MAKLUMAT_TANGGUNGAN> mTanggungan = db.HR_MAKLUMAT_TANGGUNGAN
                                                        .Where(s => s.HR_NO_PEKERJA == noPekerja).ToList();

            model.NamaPekerja = mPeribadi.HR_NAMA_PEKERJA;
            model.NoPekerja   = noPekerja;
            model.NoKPBaru    = mPeribadi.HR_NO_KPBARU;


            if (mPekerjaan.HR_JAWATAN != null)
            {
                string jawatanString = db.HR_JAWATAN
                                       .Where(s => s.HR_KOD_JAWATAN == mPekerjaan.HR_JAWATAN)
                                       .Select(s => s.HR_NAMA_JAWATAN).FirstOrDefault();
                model.Jawatan = jawatanString;
            }
            model.GredGaji            = mPekerjaan.HR_GRED;
            model.GajiBulanan         = mPekerjaan.HR_GAJI_POKOK == null? 0: mPekerjaan.HR_GAJI_POKOK.Value;
            model.IsRawatanSendiri    = true;
            model.TarikhString        = DateTime.Now.ToString("dd/MM/yyyy");
            model.IsHospital          = true;
            model.HospitalName        = string.Empty;
            model.IsPengesahanMajikan = false;

            model.MaklumatTanggungan = MaklumatTanggunganModel.GetListTanggungan(mTanggungan);

            return(model);
        }
Example #2
0
        public static List <BonusSambilanDetailModel> GetBonusSambilanDetailData(int month, int year)
        {
            ApplicationDbContext            db        = new ApplicationDbContext();
            List <HR_BONUS_SAMBILAN_DETAIL> tableList = HR_BONUS_SAMBILAN_DETAIL.GetBonusSambilanDetailData(month, year);

            List <BonusSambilanDetailModel> outputList = new List <BonusSambilanDetailModel>();

            foreach (HR_BONUS_SAMBILAN_DETAIL y in tableList)
            {
                BonusSambilanDetailModel d        = new BonusSambilanDetailModel();
                HR_MAKLUMAT_PERIBADI     maklumat = db.HR_MAKLUMAT_PERIBADI
                                                    .Where(m => m.HR_NO_PEKERJA == y.HR_NO_PEKERJA).FirstOrDefault();
                HR_MAKLUMAT_PEKERJAAN kerja = db.HR_MAKLUMAT_PEKERJAAN
                                              .Where(m => m.HR_NO_PEKERJA == y.HR_NO_PEKERJA).FirstOrDefault();
                d.BulanBonus      = y.HR_BULAN_BONUS;
                d.TahunBonus      = y.HR_TAHUN_BONUS;
                d.Nama            = maklumat.HR_NAMA_PEKERJA;
                d.NoPekerja       = y.HR_NO_PEKERJA;
                d.NoKadPengenalan = y.HR_NO_KPBARU;
                d.NoAkaunBank     = kerja.HR_NO_AKAUN_BANK;
                d.NoKWSP          = kerja.HR_NO_KWSP;
                d.TarikhLantikan  = kerja.HR_TARIKH_LANTIKAN;
                d.Jan             = y.HR_JANUARI;
                d.Feb             = y.HR_FEBRUARI;
                d.Mac             = y.HR_MAC;
                d.April           = y.HR_APRIL;
                d.Mei             = y.HR_MEI;
                d.Jun             = y.HR_JUN;
                d.Julai           = y.HR_JULAI;
                d.Ogos            = y.HR_OGOS;
                d.September       = y.HR_SEPTEMBER;
                d.Oktober         = y.HR_OKTOBER;
                d.November        = y.HR_NOVEMBER;
                d.Disember        = y.HR_DISEMBER;
                d.JumlahGaji      = y.HR_JUMLAH_GAJI;
                d.GajiPurata      = y.HR_GAJI_PURATA;
                d.BonusDiterima   = y.HR_BONUS_DITERIMA;
                d.BonusLayak      = y.HR_BONUS_LAYAK;
                d.Catatan         = y.HR_CATATAN;
                d.MinBulan        = y.HR_BULAN_START;
                d.MaxBulan        = y.HR_BULAN_END;
                if (y.HR_MUKTAMAD > 0)
                {
                    d.IsMuktamad = true;
                }
                else
                {
                    d.IsMuktamad = false;
                }
                outputList.Add(d);
            }
            //sort by nama
            outputList = outputList.OrderBy(x => x.Nama).ToList();

            return(outputList);
        }
Example #3
0
        public static List <TextFileModel> GetPerkesoSambilanSukan(int bulan, int tahun)
        {
            List <TextFileModel> report = new List <TextFileModel>();

            SPGContext           spgDb = new SPGContext();
            ApplicationDbContext db    = new ApplicationDbContext();

            string[] kwspSambilan = new string[]
            {
                "P0160",
                "P0163"
            };

            //N = sambilan, A = sukan
            List <string> list_pekerja = db.HR_MAKLUMAT_PEKERJAAN
                                         .Where(s => s.HR_TARAF_JAWATAN == "A").Select(x => x.HR_NO_PEKERJA).ToList();

            var potongList = spgDb.PA_TRANSAKSI_PEMOTONGAN
                             .Where(s => s.PA_BULAN_POTONGAN == bulan &&
                                    s.PA_TAHUN_POTONGAN == tahun &&
                                    kwspSambilan.Contains(s.PA_KOD_PEMOTONGAN) &&
                                    list_pekerja.Contains(s.PA_NO_PEKERJA))
                             .GroupBy(s => new { s.PA_NO_PEKERJA, s.PA_BULAN_POTONGAN, s.PA_TAHUN_POTONGAN })
                             .Select(g => new
            {
                PA_No_Pekerja         = g.Key.PA_NO_PEKERJA,
                PA_Jumlah_Pemontongan = g.Sum(x => x.PA_JUMLAH_PEMOTONGAN),
                PA_Bulan = g.Key.PA_BULAN_POTONGAN,
                PA_Tahun = g.Key.PA_TAHUN_POTONGAN
            })
                             .ToList();

            foreach (var item in potongList)
            {
                HR_MAKLUMAT_PERIBADI maklumatPeribat = db.HR_MAKLUMAT_PERIBADI
                                                       .Where(s => s.HR_NO_PEKERJA == item.PA_No_Pekerja).FirstOrDefault();
                HR_MAKLUMAT_PEKERJAAN kerja = db.HR_MAKLUMAT_PEKERJAAN
                                              .Where(m => m.HR_NO_PEKERJA == item.PA_No_Pekerja).FirstOrDefault();
                string tarikhKerja = string.Format("{0:ddMMyyyy}", DateTime.Now);
                if (kerja != null)
                {
                    tarikhKerja = string.Format("{0:ddMMyyyy}", kerja.HR_TARIKH_MASUK);
                }

                if (maklumatPeribat != null)
                {
                    TextFileModel m = new TextFileModel();
                    m.String1 = "B3200000538V";
                    m.String2 = maklumatPeribat.HR_NO_KPBARU;
                    m.String3 = maklumatPeribat.HR_NAMA_PEKERJA;
                    m.String4 = string.Format("{0}{1}", bulan.ToString().PadLeft(2, '0'), tahun);
                    try
                    {
                        decimal totalCaruman = Convert.ToDecimal(spgDb.PA_TRANSAKSI_CARUMAN
                                                                 .Where(p => p.PA_NO_PEKERJA == item.PA_No_Pekerja &&
                                                                        p.PA_BULAN_CARUMAN == item.PA_Bulan &&
                                                                        p.PA_TAHUN_CARUMAN == item.PA_Tahun &&
                                                                        p.PA_KOD_CARUMAN == "C0034")
                                                                 .Sum(p => p.PA_JUMLAH_CARUMAN));
                        decimal totalPemotongan = Convert.ToDecimal(item.PA_Jumlah_Pemontongan);
                        decimal totalSum        = decimal.Round((totalCaruman + totalPemotongan) * 100);
                        m.String5 = string.Format("{0}{1}", totalSum, tarikhKerja);
                    }
                    catch
                    {
                        m.String5 = string.Empty;
                    }
                    report.Add(m);
                }
            }
            return(report);
        }
        //will be used in to Store claculation Related to Transaksi Sambilan

        public static AgreementModels Maklumat(string HR_PEKERJA,
                                               int?tahunbekerja,
                                               int?bulanbekerja,
                                               int?tahundibayar,
                                               int?bulandibayar,
                                               string tahunbulannotis, string tahunbulanbonus, string bulankiradari, string bulankirahingga,
                                               decimal?jumlahot, int?jumlahhari)
        {
            ApplicationDbContext db = new ApplicationDbContext();
            MajlisContext        mc = new MajlisContext();

            db.Configuration.ProxyCreationEnabled = false;

            int consHariBekerja = PageSejarahModel.ConstHariBekerja; //value is 21

            //Cari Maklumat Pekerjaan
            HR_MAKLUMAT_PEKERJAAN userMaklumat = db.HR_MAKLUMAT_PEKERJAAN.Where(s => s.HR_NO_PEKERJA == HR_PEKERJA).SingleOrDefault();
            List <string>         listElaunKa  = PageSejarahModel.ListElaunKa;

            if (userMaklumat != null)
            {
                GE_JABATAN  userJabatan  = mc.GE_JABATAN.Where(s => s.GE_KOD_JABATAN == userMaklumat.HR_JABATAN).SingleOrDefault();
                GE_BAHAGIAN userBahagian = mc.GE_BAHAGIAN.Where(s => s.GE_KOD_BAHAGIAN == userMaklumat.HR_BAHAGIAN && s.GE_KOD_JABATAN == userMaklumat.HR_JABATAN).SingleOrDefault();

                //dapatkan Transaksi Sambilan Detail. ada banyak kod: C0020, E0064, E0164, E0234, GAJPS, P0015, P0035
                List <HR_TRANSAKSI_SAMBILAN_DETAIL> userTransaksiDetail = db.HR_TRANSAKSI_SAMBILAN_DETAIL
                                                                          .Where(s => s.HR_NO_PEKERJA == HR_PEKERJA &&
                                                                                 s.HR_BULAN_BEKERJA == bulanbekerja &&
                                                                                 s.HR_BULAN_DIBAYAR == bulandibayar &&
                                                                                 s.HR_TAHUN == tahundibayar &&
                                                                                 s.HR_TAHUN_BEKERJA == tahunbekerja).ToList();

                HR_MAKLUMAT_PERIBADI  userPeribadi  = db.HR_MAKLUMAT_PERIBADI.SingleOrDefault(s => s.HR_NO_PEKERJA == HR_PEKERJA);
                HR_MAKLUMAT_PEKERJAAN userPekerjaan = db.HR_MAKLUMAT_PEKERJAAN.SingleOrDefault(s => s.HR_NO_PEKERJA == HR_PEKERJA);
                HR_JAWATAN            jawatan       = db.HR_JAWATAN.SingleOrDefault(s => s.HR_KOD_JAWATAN == userPekerjaan.HR_JAWATAN);

                HR_MAKLUMAT_PEKERJAAN mpekerjaan = db.HR_MAKLUMAT_PEKERJAAN.Where(s => s.HR_NO_PEKERJA == HR_PEKERJA).SingleOrDefault();

                AgreementModels kerjaelaun = new AgreementModels();

                //if (transaksisambilandetail.Count != 0 && transaksisambilan.Count != 0)
                if (userTransaksiDetail.Count != 0)
                {
                    //kalau ada tranaksi, ambik gaji dan potongan dari tranasksi
                    decimal gajiSehari = PageSejarahModel.GetGajiSehari(db, HR_PEKERJA);
                    HR_TRANSAKSI_SAMBILAN_DETAIL gaji = userTransaksiDetail.SingleOrDefault(s => s.HR_KOD_IND == "G");
                    kerjaelaun.GAJISEHARI = gajiSehari.ToString("0.00");
                    kerjaelaun.GAJIPOKOK  = gaji.HR_JUMLAH;
                    kerjaelaun.GAJIPER3   = (gaji.HR_JUMLAH / 3).Value.ToString("0.00");

                    //elaun
                    List <HR_TRANSAKSI_SAMBILAN_DETAIL> elaunka = userTransaksiDetail
                                                                  .Where(s => listElaunKa.Contains(s.HR_KOD)).ToList();
                    List <HR_TRANSAKSI_SAMBILAN_DETAIL> elaunot = userTransaksiDetail
                                                                  .Where(s => s.HR_KOD == "E0164").ToList();
                    List <HR_TRANSAKSI_SAMBILAN_DETAIL> elaunlain = userTransaksiDetail
                                                                    .Where(s => s.HR_KOD_IND == "E" &&
                                                                           (!listElaunKa.Contains(s.HR_KOD) && s.HR_KOD != "E0164")).ToList();

                    //potongan
                    List <HR_TRANSAKSI_SAMBILAN_DETAIL> potonganksdk = userTransaksiDetail
                                                                       .Where(s => s.HR_KOD == "P0015").ToList();
                    List <HR_TRANSAKSI_SAMBILAN_DETAIL> potonganlain = userTransaksiDetail
                                                                       .Where(s => s.HR_KOD_IND == "P" && (s.HR_KOD != "P0015" && s.HR_KOD != "P0035")).ToList();
                    HR_MAKLUMAT_ELAUN_POTONGAN potonganKWSP = PageSejarahModel.GetPotonganKWSP(db, HR_PEKERJA, kerjaelaun.GAJIPOKOK.Value);

                    kerjaelaun.JABATAN     = userJabatan.GE_KETERANGAN_JABATAN;
                    kerjaelaun.BAHAGIAN    = userBahagian.GE_KETERANGAN;
                    kerjaelaun.NOKP        = userPeribadi.HR_NO_KPBARU;
                    kerjaelaun.JAWATAN     = jawatan.HR_NAMA_JAWATAN;
                    kerjaelaun.JAMBEKERJA  = elaunot.SingleOrDefault().HR_JAM_HARI;
                    kerjaelaun.HARIBEKERJA = gaji.HR_JAM_HARI;

                    //elaun
                    kerjaelaun.ELAUNKA         = elaunka.Sum(s => s.HR_JUMLAH).Value.ToString("0.00");
                    kerjaelaun.JUMLAHBAYARANOT = elaunot.Sum(s => s.HR_JUMLAH).Value.ToString("0.00");
                    kerjaelaun.ELAUNLAIN       = elaunlain.Sum(s => s.HR_JUMLAH).Value.ToString("0.00");

                    //potongan
                    decimal potonganSocso = PageSejarahModel.GetPotonganSocso(db, gaji.HR_JUMLAH.Value, elaunot.Sum(s => s.HR_JUMLAH).Value);
                    kerjaelaun.POTONGANSOCSO = potonganSocso;
                    kerjaelaun.POTONGANKWSP  = potonganKWSP.HR_JUMLAH;
                    kerjaelaun.POTONGANKSDK  = potonganksdk.Sum(s => s.HR_JUMLAH).Value.ToString("0.00");
                    kerjaelaun.POTONGLAIN    = potonganlain.Sum(s => s.HR_JUMLAH).Value.ToString("0.00");

                    kerjaelaun.TUNGGAKANIND = userTransaksiDetail
                                              .Where(s => s.HR_KOD == "GAJPS").SingleOrDefault().HR_TUNGGAKAN_IND;

                    //calculation
                    var gajikasar = gaji.HR_JUMLAH
                                    + elaunka.Sum(s => s.HR_JUMLAH)
                                    + elaunlain.Sum(s => s.HR_JUMLAH)
                                    + elaunot.Sum(s => s.HR_JUMLAH);
                    kerjaelaun.GAJIKASAR = gajikasar.Value.ToString("0.00");
                    var gajiSebelumKWSP = gajikasar
                                          - potonganSocso
                                          - potonganksdk.Sum(s => s.HR_JUMLAH)
                                          - potonganlain.Sum(s => s.HR_JUMLAH);
                    kerjaelaun.GAJISEBELUMKWSP = gajiSebelumKWSP.Value.ToString("0.00");
                    //gaji bersih = gaji pokok + elaun - potongan
                    var bersih = kerjaelaun.GAJIPOKOK
                                 + elaunka.Sum(s => s.HR_JUMLAH)
                                 + elaunot.Sum(s => s.HR_JUMLAH)
                                 + elaunlain.Sum(s => s.HR_JUMLAH)
                                 - potonganSocso
                                 - potonganKWSP.HR_JUMLAH
                                 - potonganksdk.Sum(s => s.HR_JUMLAH)
                                 - potonganlain.Sum(s => s.HR_JUMLAH);

                    kerjaelaun.GAJIBERSIH = decimal.Parse(bersih.Value.ToString("0.00"));
                    kerjaelaun.MUKTAMAD   = gaji.HR_MUKTAMAD;

                    return(kerjaelaun);
                }
                else if (userTransaksiDetail.Count == 0)
                {
                    //gaji related
                    var gajiSehari = PageSejarahModel.GetGajiSehari(db, HR_PEKERJA);
                    kerjaelaun.GAJISEHARI = gajiSehari.ToString("0.00");
                    decimal gajiPokok = PageSejarahModel.GetGajiPokok(db, HR_PEKERJA, jumlahhari.Value);
                    kerjaelaun.GAJIPOKOK = gajiPokok;
                    decimal?gajiper3 = kerjaelaun.GAJIPOKOK / 3;
                    kerjaelaun.GAJIPER3 = gajiper3.Value.ToString("0.00");

                    List <HR_MAKLUMAT_ELAUN_POTONGAN> potonganksdk = PageSejarahModel.GetPotonganKSDK(db, HR_PEKERJA);
                    List <HR_MAKLUMAT_ELAUN_POTONGAN> potonganlain = PageSejarahModel.GetPotonganLain(db, HR_PEKERJA);
                    HR_MAKLUMAT_ELAUN_POTONGAN        potonganKWSP = PageSejarahModel.GetPotonganKWSP(db, HR_PEKERJA, kerjaelaun.GAJIPOKOK.Value);
                    List <HR_MAKLUMAT_ELAUN_POTONGAN> elaunka      = PageSejarahModel.GetElaunKa(db, HR_PEKERJA);
                    List <HR_MAKLUMAT_ELAUN_POTONGAN> elaunLain    = PageSejarahModel.GetElaunLain(db, HR_PEKERJA);

                    //semua Elaun
                    int     jumlahHariInt = Convert.ToInt32(jumlahhari != null ? jumlahhari : 0);
                    decimal jumlahJamOT   = Convert.ToDecimal(jumlahot != null ? jumlahot : 0);
                    var     elaunot       = PageSejarahModel.GetElaunOT(db, HR_PEKERJA, jumlahHariInt, jumlahJamOT);
                    kerjaelaun.JUMLAHBAYARANOT = elaunot.ToString("0.00");
                    kerjaelaun.ELAUNKA         = elaunka.Sum(s => s.HR_JUMLAH).Value.ToString("0.00");
                    kerjaelaun.ELAUNLAIN       = elaunLain.Sum(s => s.HR_JUMLAH).Value.ToString("0.00");

                    //semua potongan
                    decimal potonganSocso = PageSejarahModel.GetPotonganSocso(db, gajiPokok, elaunot);
                    kerjaelaun.POTONGANSOCSO = potonganSocso;
                    kerjaelaun.POTONGANKWSP  = potonganKWSP.HR_JUMLAH;
                    kerjaelaun.POTONGANKSDK  = potonganksdk.Sum(s => s.HR_JUMLAH).Value.ToString("0.00");
                    kerjaelaun.POTONGLAIN    = potonganlain.Sum(s => s.HR_JUMLAH).Value.ToString("0.00");

                    //other info
                    kerjaelaun.JABATAN  = userJabatan.GE_KETERANGAN_JABATAN;
                    kerjaelaun.BAHAGIAN = userBahagian.GE_KETERANGAN;
                    kerjaelaun.NOKP     = userPeribadi.HR_NO_KPBARU;
                    kerjaelaun.JAWATAN  = jawatan.HR_NAMA_JAWATAN;

                    decimal?gajikasar = kerjaelaun.GAJIPOKOK
                                        + elaunka.Sum(s => s.HR_JUMLAH)
                                        + elaunLain.Sum(s => s.HR_JUMLAH)
                                        + elaunot;
                    kerjaelaun.GAJIKASAR = gajikasar.Value.ToString("0.00");
                    //double? gajikasar1 = (double)gajikasar * 0.11;
                    var gajiSebelumKWSP = gajikasar
                                          - potonganSocso
                                          - potonganksdk.Sum(s => s.HR_JUMLAH)
                                          - potonganlain.Sum(s => s.HR_JUMLAH);
                    kerjaelaun.GAJISEBELUMKWSP = gajiSebelumKWSP.Value.ToString("0.00");
                    //gaji bersih = gaji pokok + elaun - potongan
                    var bersih = kerjaelaun.GAJIPOKOK
                                 + elaunka.Sum(s => s.HR_JUMLAH)
                                 + elaunLain.Sum(s => s.HR_JUMLAH)
                                 + elaunot
                                 - potonganSocso
                                 - potonganKWSP.HR_JUMLAH
                                 - potonganksdk.Sum(s => s.HR_JUMLAH)
                                 - potonganlain.Sum(s => s.HR_JUMLAH);
                    kerjaelaun.GAJIBERSIH = decimal.Parse(bersih.Value.ToString("0.00"));
                    return(kerjaelaun);
                }
            }

            return(null);
        }
        public static List <PekerjaReportModel> GetPerkesoSambilanSukan
            (int bulanProses, int tahunProses, bool isSukan)
        {
            SPGContext           spgDb = new SPGContext();
            ApplicationDbContext db    = new ApplicationDbContext();

            //N = sambilan, A = sukan
            List <string> list_pekerja = new List <string>();

            if (isSukan)
            {
                list_pekerja = PageSejarahModel.ListPekerjaSukan;
            }
            else
            {
                list_pekerja = PageSejarahModel.ListPekerjaSambilan;
            }

            var listGaji = db.HR_TRANSAKSI_SAMBILAN_DETAIL
                           .Where(s => s.HR_BULAN_DIBAYAR == bulanProses &&
                                  s.HR_TAHUN == tahunProses &&
                                  s.HR_KOD_IND == "G" &&
                                  list_pekerja.Contains(s.HR_NO_PEKERJA)).ToList();

            List <PekerjaReportModel> pekerja = new List <PekerjaReportModel>();

            int counter = 0;

            foreach (var item in listGaji)
            {
                var bulanBekerja = item.HR_BULAN_BEKERJA;
                var tahunBekerja = item.HR_TAHUN_BEKERJA;
                var bulanDibayar = item.HR_BULAN_DIBAYAR;
                var tahunDibayar = item.HR_TAHUN;

                HR_MAKLUMAT_PERIBADI maklumatPeribat = db.HR_MAKLUMAT_PERIBADI
                                                       .Where(s => s.HR_NO_PEKERJA == item.HR_NO_PEKERJA)
                                                       .FirstOrDefault();

                var detail = PageSejarahModel.GetTRANSAKSI_SAMBILAN_DETAIL
                                 (db, item.HR_NO_PEKERJA, tahunDibayar, bulanDibayar,
                                 tahunBekerja, bulanBekerja);
                var sosco = PageSejarahModel.GetPotonganSocso(db, detail);

                if (maklumatPeribat != null)
                {
                    PekerjaReportModel m = new PekerjaReportModel();
                    counter++;
                    m.Bil             = counter;
                    m.NamaPekerja     = maklumatPeribat.HR_NAMA_PEKERJA;
                    m.NoKesSosial     = string.Empty;
                    m.NoKadPengenalan = maklumatPeribat.HR_NO_KPBARU;
                    try
                    {
                        decimal totalVal = Convert.ToDecimal
                                               (sosco.HR_CARUMAN_PEKERJA);
                        totalVal    = decimal.Round(totalVal);
                        m.CarumanRM = totalVal;
                    }
                    catch
                    {
                        m.CarumanRM = 0;
                    }
                    pekerja.Add(m);
                }
            }
            return(pekerja);
        }
Example #6
0
        /// <summary>
        /// Output BONUS_SAMBILAN_DETAIL data from HR_TRANSAKSI_SAMBILAN_DETAIL
        /// </summary>
        /// <param name="startMonth">start of month (if not Jan)</param>
        /// <param name="month">bulan bonus dibayar</param>
        /// <param name="year">tahun bonus dibayar</param>
        /// <returns>List BonusSambilanDetailModel</returns>
        public static List <BonusSambilanDetailModel> GetDetailsFromTransaksi
            (int startMonth, int month, int year, int endMonth)
        {
            ApplicationDbContext db = new ApplicationDbContext();

            //get list of pekerja tidak aktif
            List <string> listHR_TidakAktif = db.HR_MAKLUMAT_PERIBADI
                                              .Where(s => s.HR_AKTIF_IND == "T" &&
                                                     s.HR_ALASAN != "A17").Select(s => s.HR_NO_PEKERJA).Distinct().ToList();

            //exclude bulan dibayar (month) and filter out tidak aktif
            List <string> listHR_PEKERJA = db.HR_TRANSAKSI_SAMBILAN_DETAIL
                                           .Where(s => s.HR_BULAN_BEKERJA >= startMonth &&
                                                  s.HR_BULAN_BEKERJA <= endMonth &&
                                                  s.HR_TAHUN == year &&
                                                  !listHR_TidakAktif.Contains(s.HR_NO_PEKERJA))
                                           .Select(s => s.HR_NO_PEKERJA).Distinct().ToList();

            List <BonusSambilanDetailModel> outputList = new List <BonusSambilanDetailModel>();

            foreach (string hr_pekerja in listHR_PEKERJA)
            {
                BonusSambilanDetailModel            det       = new BonusSambilanDetailModel();
                List <HR_TRANSAKSI_SAMBILAN_DETAIL> elaunlain =
                    db.HR_TRANSAKSI_SAMBILAN_DETAIL.
                    Where(x => x.HR_NO_PEKERJA == hr_pekerja &&
                          x.HR_TAHUN == year &&
                          x.HR_BULAN_BEKERJA >= startMonth &&
                          x.HR_BULAN_BEKERJA <= endMonth
                          //&& x.HR_BULAN_DIBAYAR == month
                          ).ToList();

                HR_MAKLUMAT_PERIBADI maklumat = db.HR_MAKLUMAT_PERIBADI
                                                .Where(m => m.HR_NO_PEKERJA == hr_pekerja).FirstOrDefault();
                HR_MAKLUMAT_PEKERJAAN kerja = db.HR_MAKLUMAT_PEKERJAAN
                                              .Where(m => m.HR_NO_PEKERJA == hr_pekerja).FirstOrDefault();
                det.BulanBonus      = month;
                det.TahunBonus      = year;
                det.Nama            = maklumat.HR_NAMA_PEKERJA;
                det.NoPekerja       = hr_pekerja;
                det.NoKadPengenalan = maklumat.HR_NO_KPBARU;
                det.NoAkaunBank     = kerja.HR_NO_AKAUN_BANK;
                det.NoKWSP          = kerja.HR_NO_KWSP;
                det.TarikhLantikan  = kerja.HR_TARIKH_LANTIKAN;

                int totalBulanBerkhidmat = 0;

                det.Jan = GetGajiPokok(db, elaunlain, 1);
                if (det.Jan > 0)
                {
                    totalBulanBerkhidmat++;
                }
                det.Feb = GetGajiPokok(db, elaunlain, 2);
                if (det.Feb > 0)
                {
                    totalBulanBerkhidmat++;
                }
                det.Mac = GetGajiPokok(db, elaunlain, 3);
                if (det.Mac > 0)
                {
                    totalBulanBerkhidmat++;
                }
                det.April = GetGajiPokok(db, elaunlain, 4);
                if (det.April > 0)
                {
                    totalBulanBerkhidmat++;
                }
                det.Mei = GetGajiPokok(db, elaunlain, 5);
                if (det.Mei > 0)
                {
                    totalBulanBerkhidmat++;
                }
                det.Jun = GetGajiPokok(db, elaunlain, 6);
                if (det.Jun > 0)
                {
                    totalBulanBerkhidmat++;
                }
                det.Julai = GetGajiPokok(db, elaunlain, 7);
                if (det.Julai > 0)
                {
                    totalBulanBerkhidmat++;
                }
                det.Ogos = GetGajiPokok(db, elaunlain, 8);
                if (det.Ogos > 0)
                {
                    totalBulanBerkhidmat++;
                }
                det.September = GetGajiPokok(db, elaunlain, 9);
                if (det.September > 0)
                {
                    totalBulanBerkhidmat++;
                }
                det.Oktober = GetGajiPokok(db, elaunlain, 10);
                if (det.Oktober > 0)
                {
                    totalBulanBerkhidmat++;
                }
                det.November = GetGajiPokok(db, elaunlain, 11);
                if (det.November > 0)
                {
                    totalBulanBerkhidmat++;
                }
                det.Disember = GetGajiPokok(db, elaunlain, 12);
                if (det.Disember > 0)
                {
                    totalBulanBerkhidmat++;
                }
                det.JumlahGaji = GetSumGajiPokok(elaunlain);
                det.MinBulan   = startMonth;
                det.MaxBulan   = endMonth;

                int totalBulanDikira = endMonth - startMonth + 1;
                if (totalBulanBerkhidmat > 0)
                {
                    det.GajiPurata = det.JumlahGaji == null ?
                                     0 : decimal.Round(Convert.ToDecimal(det.JumlahGaji) / totalBulanBerkhidmat, 3);
                }
                //new changes:
                decimal totalGajiPokok = GetSumGajiPokok(elaunlain);
                decimal bonusLayak     = totalGajiPokok / totalBulanDikira;
                det.BonusLayak    = bonusLayak;
                det.BonusDiterima = bonusLayak * (decimal)1.0; //temp start with decimal 1.0
                det.IsMuktamad    = false;

                if (!IsNoData(det))
                {
                    outputList.Add(det);
                }
            }
            //sort by Nama
            outputList = outputList.OrderBy(x => x.Nama).ToList();
            return(outputList);
        }
Example #7
0
        /// <summary>
        /// Output BONUS_SAMBILAN_DETAIL data from HR_TRANSAKSI_SAMBILAN_DETAIL
        /// </summary>
        /// <param name="startMonth">start of month (if not Jan)</param>
        /// <param name="month">bulan bonus dibayar</param>
        /// <param name="year">tahun bonus dibayar</param>
        /// <returns>List BonusSambilanDetailModel</returns>
        public static List <BonusSambilanDetailModel> GetDetailsFromTransaksi
            (int startMonth, int month, int year, int endMonth)
        {
            ApplicationDbContext db             = new ApplicationDbContext();
            List <string>        listHR_PEKERJA = db.HR_TRANSAKSI_SAMBILAN_DETAIL
                                                  .Where(s => s.HR_BULAN_DIBAYAR == month &&
                                                         s.HR_BULAN_BEKERJA >= startMonth &&
                                                         s.HR_BULAN_BEKERJA <= endMonth &&
                                                         s.HR_TAHUN == year).Select(s => s.HR_NO_PEKERJA).Distinct().ToList();

            List <BonusSambilanDetailModel> outputList = new List <BonusSambilanDetailModel>();

            foreach (string hr_pekerja in listHR_PEKERJA)
            {
                BonusSambilanDetailModel            det       = new BonusSambilanDetailModel();
                List <HR_TRANSAKSI_SAMBILAN_DETAIL> elaunlain =
                    db.HR_TRANSAKSI_SAMBILAN_DETAIL.
                    Where(x => x.HR_NO_PEKERJA == hr_pekerja &&
                          x.HR_TAHUN == year &&
                          x.HR_BULAN_BEKERJA >= startMonth &&
                          x.HR_BULAN_BEKERJA <= endMonth &&
                          x.HR_BULAN_DIBAYAR == month).ToList();

                HR_MAKLUMAT_PERIBADI maklumat = db.HR_MAKLUMAT_PERIBADI
                                                .Where(m => m.HR_NO_PEKERJA == hr_pekerja).FirstOrDefault();
                HR_MAKLUMAT_PEKERJAAN kerja = db.HR_MAKLUMAT_PEKERJAAN
                                              .Where(m => m.HR_NO_PEKERJA == hr_pekerja).FirstOrDefault();
                det.BulanBonus      = month;
                det.TahunBonus      = year;
                det.Nama            = maklumat.HR_NAMA_PEKERJA;
                det.NoPekerja       = hr_pekerja;
                det.NoKadPengenalan = maklumat.HR_NO_KPBARU;
                det.NoAkaunBank     = kerja.HR_NO_AKAUN_BANK;
                det.NoKWSP          = kerja.HR_NO_KWSP;
                det.TarikhLantikan  = kerja.HR_TARIKH_LANTIKAN;

                det.Jan = elaunlain
                          .Where(c => c.HR_BULAN_BEKERJA == 1).Sum(c => c.HR_JUMLAH);
                det.Feb = elaunlain
                          .Where(c => c.HR_BULAN_BEKERJA == 2).Sum(c => c.HR_JUMLAH);
                det.Mac = elaunlain
                          .Where(c => c.HR_BULAN_BEKERJA == 3).Sum(c => c.HR_JUMLAH);
                det.April = elaunlain
                            .Where(c => c.HR_BULAN_BEKERJA == 4).Sum(c => c.HR_JUMLAH);
                det.Mei = elaunlain
                          .Where(c => c.HR_BULAN_BEKERJA == 5).Sum(c => c.HR_JUMLAH);
                det.Jun = elaunlain
                          .Where(c => c.HR_BULAN_BEKERJA == 6).Sum(c => c.HR_JUMLAH);
                det.Julai = elaunlain
                            .Where(c => c.HR_BULAN_BEKERJA == 7).Sum(c => c.HR_JUMLAH);
                det.Ogos = elaunlain
                           .Where(c => c.HR_BULAN_BEKERJA == 8).Sum(c => c.HR_JUMLAH);
                det.September = elaunlain
                                .Where(c => c.HR_BULAN_BEKERJA == 9).Sum(c => c.HR_JUMLAH);
                det.Oktober = elaunlain
                              .Where(c => c.HR_BULAN_BEKERJA == 10).Sum(c => c.HR_JUMLAH);
                det.November = elaunlain
                               .Where(c => c.HR_BULAN_BEKERJA == 11).Sum(c => c.HR_JUMLAH);
                det.Disember = elaunlain
                               .Where(c => c.HR_BULAN_BEKERJA == 12).Sum(c => c.HR_JUMLAH);
                det.JumlahGaji = elaunlain.Sum(c => c.HR_JUMLAH);
                det.MinBulan   = startMonth;
                det.MaxBulan   = endMonth;
                int totalBulan = endMonth - startMonth + 1;
                if (totalBulan > 0)
                {
                    det.GajiPurata = det.JumlahGaji == null ?
                                     0 : decimal.Round(Convert.ToDecimal(det.JumlahGaji) / totalBulan, 3);
                }
                det.IsMuktamad = false;
                outputList.Add(det);
            }
            //sort by Nama
            outputList = outputList.OrderBy(x => x.Nama).ToList();
            return(outputList);
        }
Example #8
0
        private static void InsertToSPG(ApplicationDbContext sppDb, SPGContext spgDb,
                                        List <HR_TRANSAKSI_SAMBILAN_DETAIL> sppTrans)
        {
            List <string> noPekerja_all =
                sppTrans.Select(s => s.HR_NO_PEKERJA).Distinct().ToList();
            int bulanDibayar = sppTrans.Where(s => s.HR_KOD == "GAJPS").Select(s => s.HR_BULAN_DIBAYAR).FirstOrDefault();
            int tahunDibayar = sppTrans.Where(s => s.HR_KOD == "GAJPS").Select(s => s.HR_TAHUN).FirstOrDefault();

            foreach (var noPekerja in noPekerja_all)
            {
                HR_MAKLUMAT_PEKERJAAN mPekerjaan = sppDb.HR_MAKLUMAT_PEKERJAAN
                                                   .Where(s => s.HR_NO_PEKERJA == noPekerja).FirstOrDefault();
                HR_MAKLUMAT_PERIBADI mPeribadi = sppDb.HR_MAKLUMAT_PERIBADI
                                                 .Where(s => s.HR_NO_PEKERJA == noPekerja).FirstOrDefault();
                PA_REPORT spgReport = spgDb.PA_REPORT
                                      .Where(s => s.PA_NO_PEKERJA == noPekerja &&
                                             s.PA_TAHUN == bulanDibayar &&
                                             s.PA_BULAN == tahunDibayar).FirstOrDefault();

                decimal gajiPokok = sppDb.HR_TRANSAKSI_SAMBILAN_DETAIL
                                    .Where(s => s.HR_KOD == "GAJPS" &&
                                           s.HR_NO_PEKERJA == noPekerja &&
                                           s.HR_BULAN_DIBAYAR == bulanDibayar &&
                                           s.HR_TAHUN == tahunDibayar)
                                    .Select(s => s.HR_JUMLAH).Sum().Value;

                if (spgReport == null)
                {
                    //insert
                    spgReport = new PA_REPORT
                    {
                        PA_NO_PEKERJA     = noPekerja,
                        PA_BULAN          = (byte)bulanDibayar,
                        PA_TAHUN          = (short)tahunDibayar,
                        PA_JABATAN        = mPekerjaan.HR_JABATAN,
                        PA_BAHAGIAN       = mPekerjaan.HR_BAHAGIAN,
                        PA_UNIT           = mPekerjaan.HR_UNIT,
                        PA_KAKITANGAN_IND = mPekerjaan.HR_KAKITANGAN_IND,
                        PA_TARAF_JAWATAN  = mPekerjaan.HR_TARAF_JAWATAN,
                        PA_STATUS_KWSP    = mPekerjaan.HR_STATUS_KWSP,
                        PA_STATUS_SOCSO   = mPekerjaan.HR_STATUS_SOCSO,
                        PA_STATUS_PENCEN  = mPekerjaan.HR_STATUS_PENCEN,
                        PA_STATUS_PCB     = mPekerjaan.HR_STATUS_PCB,
                        PA_GRED           = mPekerjaan.HR_GRED,
                        PA_MATRIKS_GAJI   = mPekerjaan.HR_MATRIKS_GAJI,
                        PA_KOD_BANK       = mPekerjaan.HR_KOD_BANK,
                        //number 8,2
                        PA_CC_KENDERAAN    = mPeribadi.HR_CC_KENDERAAN,
                        PA_NO_KENDERAAN    = mPeribadi.HR_NO_KENDERAAN,
                        PA_JENIS_KENDERAAN = mPeribadi.HR_JENIS_KENDERAAN,
                        PA_NO_AKAUN_BANK   = mPekerjaan.HR_NO_AKAUN_BANK,
                        //date
                        PA_BULAN_KENAIKAN_GAJI = mPekerjaan.HR_BULAN_KENAIKAN_GAJI,
                        PA_JAWATAN             = mPekerjaan.HR_JAWATAN,
                        //number 8,2
                        PA_GAJI_POKOK = gajiPokok
                    };
                    spgDb.PA_REPORT.Add(spgReport);
                    spgDb.SaveChanges();
                }
                else
                {
                    //update
                    spgReport.PA_NO_PEKERJA     = noPekerja;
                    spgReport.PA_BULAN          = (byte)bulanDibayar;
                    spgReport.PA_TAHUN          = (short)tahunDibayar;
                    spgReport.PA_JABATAN        = mPekerjaan.HR_JABATAN;
                    spgReport.PA_BAHAGIAN       = mPekerjaan.HR_BAHAGIAN;
                    spgReport.PA_UNIT           = mPekerjaan.HR_UNIT;
                    spgReport.PA_KAKITANGAN_IND = mPekerjaan.HR_KAKITANGAN_IND;
                    spgReport.PA_TARAF_JAWATAN  = mPekerjaan.HR_TARAF_JAWATAN;
                    spgReport.PA_STATUS_KWSP    = mPekerjaan.HR_STATUS_KWSP;
                    spgReport.PA_STATUS_SOCSO   = mPekerjaan.HR_STATUS_SOCSO;
                    spgReport.PA_STATUS_PENCEN  = mPekerjaan.HR_STATUS_PENCEN;
                    spgReport.PA_STATUS_PCB     = mPekerjaan.HR_STATUS_PCB;
                    spgReport.PA_GRED           = mPekerjaan.HR_GRED;
                    spgReport.PA_MATRIKS_GAJI   = mPekerjaan.HR_MATRIKS_GAJI;
                    spgReport.PA_KOD_BANK       = mPekerjaan.HR_KOD_BANK;
                    //number 8,2
                    spgReport.PA_CC_KENDERAAN    = mPeribadi.HR_CC_KENDERAAN;
                    spgReport.PA_NO_KENDERAAN    = mPeribadi.HR_NO_KENDERAAN;
                    spgReport.PA_JENIS_KENDERAAN = mPeribadi.HR_JENIS_KENDERAAN;
                    spgReport.PA_NO_AKAUN_BANK   = mPekerjaan.HR_NO_AKAUN_BANK;
                    //date
                    spgReport.PA_BULAN_KENAIKAN_GAJI = mPekerjaan.HR_BULAN_KENAIKAN_GAJI;
                    spgReport.PA_JAWATAN             = mPekerjaan.HR_JAWATAN;
                    //number 8,2
                    spgReport.PA_GAJI_POKOK = gajiPokok;

                    try
                    {
                        spgDb.Entry(spgReport).State = EntityState.Modified;
                        spgDb.SaveChanges();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.ToString());
                    }
                }
            }
        }
Example #9
0
        public static List <PekerjaReportModel> GetPerkesoSukan(int bulan, int tahun)
        {
            SPGContext           spgDb = new SPGContext();
            ApplicationDbContext db    = new ApplicationDbContext();

            string[] kwspSambilan = new string[]
            {
                "P0160",
                "P0163"
            };

            //N = sambilan, A = sukan
            List <string> list_pekerja = db.HR_MAKLUMAT_PEKERJAAN
                                         .Where(s => s.HR_TARAF_JAWATAN == "A").Select(x => x.HR_NO_PEKERJA).ToList();

            var potongList = spgDb.PA_TRANSAKSI_PEMOTONGAN
                             .Where(s => s.PA_BULAN_POTONGAN == bulan &&
                                    s.PA_TAHUN_POTONGAN == tahun &&
                                    kwspSambilan.Contains(s.PA_KOD_PEMOTONGAN) &&
                                    list_pekerja.Contains(s.PA_NO_PEKERJA))
                             .GroupBy(s => new { s.PA_NO_PEKERJA, s.PA_BULAN_POTONGAN, s.PA_TAHUN_POTONGAN })
                             .Select(g => new
            {
                PA_No_Pekerja         = g.Key.PA_NO_PEKERJA,
                PA_Jumlah_Pemontongan = g.Sum(x => x.PA_JUMLAH_PEMOTONGAN),
                PA_Bulan = g.Key.PA_BULAN_POTONGAN,
                PA_Tahun = g.Key.PA_TAHUN_POTONGAN
            })
                             .ToList();


            List <PekerjaReportModel> pekerja = new List <PekerjaReportModel>();

            int counter = 0;

            foreach (var item in potongList)
            {
                HR_MAKLUMAT_PERIBADI maklumatPeribat = db.HR_MAKLUMAT_PERIBADI
                                                       .Where(s => s.HR_NO_PEKERJA == item.PA_No_Pekerja).FirstOrDefault();

                if (maklumatPeribat != null)
                {
                    PekerjaReportModel m = new PekerjaReportModel();
                    counter++;
                    m.Bil             = counter;
                    m.NamaPekerja     = maklumatPeribat.HR_NAMA_PEKERJA;
                    m.NoKesSosial     = string.Empty;
                    m.NoKadPengenalan = maklumatPeribat.HR_NO_KPBARU;
                    try
                    {
                        decimal totalVal = Convert.ToDecimal(item.PA_Jumlah_Pemontongan); //* Convert.ToDecimal(caruman);
                        totalVal    = decimal.Round(totalVal);
                        m.CarumanRM = totalVal;
                    }
                    catch
                    {
                        m.CarumanRM = 0;
                    }
                    pekerja.Add(m);
                }
            }
            return(pekerja);
        }