Esempio n. 1
0
        //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)
        {
            if (jumlahhari == null)
            {
                jumlahhari = 0;
            }

            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.FirstOrDefault(s => s.HR_NO_PEKERJA == HR_PEKERJA);
                HR_MAKLUMAT_PEKERJAAN userPekerjaan = db.HR_MAKLUMAT_PEKERJAAN.FirstOrDefault(s => s.HR_NO_PEKERJA == HR_PEKERJA);
                HR_JAWATAN            jawatan       = db.HR_JAWATAN.FirstOrDefault(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();
                    //include socso from list of exclude
                    List <HR_TRANSAKSI_SAMBILAN_DETAIL> potonganlain = userTransaksiDetail
                                                                       .Where(s => s.HR_KOD_IND == "P" &&
                                                                              s.HR_KOD != "P0015" &&
                                                                              s.HR_KOD != "P0035" &&
                                                                              s.HR_KOD != "P0160")
                                                                       .ToList();
                    HR_TRANSAKSI_SAMBILAN_DETAIL potonganKWSP = userTransaksiDetail
                                                                .Where(s => PageSejarahModel.ListKodKWSP.Contains(s.HR_KOD))
                                                                .FirstOrDefault();

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

                    //check for null
                    if (elaunot.FirstOrDefault() != null)
                    {
                        kerjaelaun.JAMBEKERJA       = elaunot.FirstOrDefault().HR_JAM_HARI;
                        kerjaelaun.JAMBEKERJASTRING = elaunot.FirstOrDefault()
                                                      .HR_JAM_HARI.Value.ToString("0.0000");
                    }
                    else
                    {
                        kerjaelaun.JAMBEKERJA       = 0;
                        kerjaelaun.JAMBEKERJASTRING = "0.0000";
                    }

                    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 = 0;
                    try
                    {
                        potonganSocso = userTransaksiDetail
                                        .Where(s => PageSejarahModel.ListKodPerkeso
                                               .Contains(s.HR_KOD))
                                        .FirstOrDefault().HR_JUMLAH.Value;
                    }
                    catch
                    {
                    }
                    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     totalElaunka   = elaunka.Sum(s => s.HR_JUMLAH);
                    var     totalElaunLain = elaunlain.Sum(s => s.HR_JUMLAH);
                    var     totalElaunot   = elaunot.Sum(s => s.HR_JUMLAH);
                    decimal gajikasar      = PageSejarahModel.GetGajiKasar
                                                 (gaji.HR_JUMLAH.Value,
                                                 totalElaunka,
                                                 totalElaunLain,
                                                 totalElaunot.Value);
                    kerjaelaun.GAJIKASAR = gajikasar.ToString("0.00");
                    var gajiSebelumKWSP = gajikasar;
                    kerjaelaun.GAJISEBELUMKWSP = gajiSebelumKWSP.ToString("0.00");
                    //gaji bersih = gaji pokok + elaun - potongan
                    var bersih = gajikasar
                                 - 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);
                    List <HR_MAKLUMAT_ELAUN_POTONGAN> elaunkaDaily   = PageSejarahModel.GetElaunKa_Daily(db, HR_PEKERJA);
                    List <HR_MAKLUMAT_ELAUN_POTONGAN> elaunLainDaily = PageSejarahModel.GetElaunLain_Daily(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");
                    var elaunka_bulan   = PageSejarahModel.GetElaun_Bulanan(elaunkaDaily.Sum(s => s.HR_JUMLAH), jumlahHariInt);
                    var elaunLain_bulan = PageSejarahModel.GetElaun_Bulanan(elaunLainDaily.Sum(s => s.HR_JUMLAH), jumlahHariInt);
                    kerjaelaun.ELAUNKA   = elaunka_bulan.ToString("0.00");
                    kerjaelaun.ELAUNLAIN = elaunLain_bulan.ToString("0.00");
                    //kerjaelaun.ELAUNKA = elaunkaDaily.Sum(s => s.HR_JUMLAH).Value.ToString("0.00");
                    //kerjaelaun.ELAUNLAIN = elaunLainDaily.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 = PageSejarahModel
                                        .GetGajiKasar(gajiPokok, elaunka_bulan, elaunLain_bulan, elaunot);
                    kerjaelaun.GAJIKASAR = gajiKasar.ToString("0.00");

                    //semua potongan
                    HR_KWSP potonganKWSP = PageSejarahModel
                                           .GetPotonganKWSP(db, gajiKasar);
                    decimal potonganSocso = PageSejarahModel
                                            .GetPotonganSocso(db, gajiKasar);
                    kerjaelaun.POTONGANSOCSO = potonganSocso;
                    kerjaelaun.POTONGANKWSP  = potonganKWSP != null ? potonganKWSP.HR_CARUMAN_PEKERJA : 0.00M;
                    kerjaelaun.POTONGANKSDK  = potonganksdk.Sum(s => s.HR_JUMLAH).Value.ToString("0.00");
                    kerjaelaun.POTONGLAIN    = potonganlain.Sum(s => s.HR_JUMLAH).Value.ToString("0.00");

                    var gajiSebelumKWSP = gajiKasar;
                    kerjaelaun.GAJISEBELUMKWSP = gajiSebelumKWSP.ToString("0.00");
                    //gaji bersih = gaji pokok + elaun - potongan
                    var bersih = gajiKasar
                                 - potonganSocso
                                 - potonganKWSP.HR_CARUMAN_PEKERJA
                                 - 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> BorangASambilanSukan
            (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     gajiKasar = PageSejarahModel.GetGajiKasar(db, detail);
                HR_KWSP kwsp      = PageSejarahModel.GetPotonganKWSP(db, gajiKasar);

                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 = kwsp.HR_CARUMAN_PEKERJA;
                        totalVal    = decimal.Round(totalVal);
                        m.CarumanRM = totalVal;
                    }
                    catch
                    {
                        m.CarumanRM = 0;
                    }
                    pekerja.Add(m);
                }
            }
            return(pekerja);
        }