/// <summary> /// Procedura genereaza situatia lunara unui angajat care a fost lichidat /// </summary> public void GenerareSituatieLunaraAngajatLichidat() { Salaries.Business.Angajat angajat = new Salaries.Business.Angajat(); angajat.AngajatId = AngajatID; angajat.LoadAngajat(); //este obtinuta prima zi a lunii active Salaries.Business.Luni luna = new Salaries.Business.Luni(angajat.AngajatorId, settings); Salaries.Data.LunaData lunaActiva = luna.GetLunaActiva(); Salaries.Business.PontajAngajat pontajAngajat = new Salaries.Business.PontajAngajat(this.AngajatID, settings); DataSet dsIntervaleAngajat = pontajAngajat.GetIntervaleAngajat(lunaActiva.LunaId); //daca nu au fost initializate orele unui angajat, se face aceasta initializare if (dsIntervaleAngajat.Tables[0].Rows.Count == 0) { //intervale angajat IntervaleAngajat intervAng = new IntervaleAngajat(AngajatID, settings); //sunt intializate orele lucrate de catre angajat intervAng.InitializeOreLucrateLunaAngajat(lunaActiva.Data, angajat.DataDeLa, angajat.DataLichidare); } //situatia lunara a unui angajat Salaries.Business.SituatieLunaraAngajat situatieLunaraAng = new Salaries.Business.SituatieLunaraAngajat(AngajatID, settings); //se genereaza situatia lunara a angajatului situatieLunaraAng.GenerareSituatieLunaraAngajatLichidat(lunaActiva.LunaId, angajat.AngajatorId); }
/// <summary> /// Procedura genereaza situatia lunara a unui angajat /// </summary> /// <param name="lunaID">Id-ul lunii pentru care se genereaza</param> /// <param name="angajatorID">Id-ul angajatorului</param> public void GenerareSituatieLunaraAngajat(int lunaID, int angajatorID) { //try //{ Angajat angajat = new Angajat(); angajat.AngajatId = AngajatID; angajat.LoadAngajat(); PontajAngajat pa = new PontajAngajat(this.AngajatID, settings); Salaries.Data.InfoSituatieLunara isl = this.GetSituatieLunaraAngajat(this.AngajatID, lunaID); int nrZileLucratoareLunaTotal = pa.GetNrZileLuna(lunaID); TimeSpan nrOreTotaleLucrateLuna = pa.GetAngajatNrOreLucrateLuna(lunaID); int nrZileTotaleAbsentateLuna = pa.GetAngajatNrZileAbsenteTotalLuna(lunaID); Data.IntervaleSchimbariLuna [] intervSL = pa.GetIntervaleSchimbariLuna(lunaID); bool validareStergere = true; /* * Modified: Cristina Raluca Muntean * Date: 1.09.2005 * Description: Initial salariul si indemnizatia de conducere nu se puteau schimba decat pe data de 1 a lunii. * S-a revenit asupra acestei decizii si se doreste sa existe posibilitatea modificarii salariului de baza si * a indemnizatiei de conducere in orice zi a lunii. Va exista in continuare tot o singura situatie lunara, iar * salariul de baza si indemnizatia de conducere se vor calcula conform formulelei: * sumaRezultatat = suma perioada I/nr zile lucratoare*nr zile lucrate in perioada + suma perioada II/nr zile lucratoare*nr zile lucrate in perioada +... * */ int [] nrZileLucratoareLuna = new int[intervSL.Length]; int nrZileEvenimenteDeosebiteLuna = 0; int nrZileInvoireLuna = 0; int nrZileConcediuOdihnaLuna = 0; float nrZileCOneefectuat = 0; float nrZileCOefectInAvans = 0; int nrZileConcediuBoalaLuna = 0; int nrZileConcediuBoalaLunaFirma = 0; int nrZileConcediuBoalaLunaBASS = 0; int nrZileObligatiiCetatenesti = 0; int nrZileAbsenteNemotivate = 0; int nrZileConcediuFaraPlata = 0; int nrZileLucratoareDelegatieInterna = 0; int nrZileLucratoareDelegatieExterna = 0; decimal diurnaImpozabila = 0; int nrZileTotalDelegatieInterna = 0; int nrZileTotalDelegatieExterna = 0; float nrOreLucrate = 0; float nrOreSuplimentare50 = 0; float nrOreSuplimentare100 = 0; float [] salariuBaza = new float[intervSL.Length]; float [] indemnizatieConducere = new float[intervSL.Length]; int nrZileEmergencyService = 0; int programLucru = 0; int invaliditate = 0; int categorieID = 0; decimal angajatSporActivitateSupLuna = 0; decimal angajatEmergencyServiceLuna = 0; decimal angajatPrimeSpecialeLuna = 0; decimal angajatAlteDrepturiLuna = 0; decimal angajatAlteDrepturiNetLuna = 0; decimal angajatAjutorDeces = 0; //S-au adaugat retinerile pentru un angajt decimal angajatAvansLuna = 0; decimal angajatRetinere1 = 0; decimal angajatRetinere2 = 0; decimal angajatRetinere3 = 0; decimal angajatRetinere4 = 0; decimal angajatRetinere5 = 0; decimal angajatRetinere6 = 0; decimal angajatRetinere7 = 0; decimal angajatRegularizareLuna = 0; decimal angajatPrimaProiectLuna = 0; decimal angajatRetinereSanatateLuna = 0; decimal angajatDrepturiInNaturaLuna = 0; //Lungu Andreea float corectiiTicheteLuna = 0; int i = -1; foreach (Data.IntervaleSchimbariLuna interv in intervSL) { i++; nrZileLucratoareLuna[i] = pa.GetNrZileLucratoarePerioada(interv.DataStart, interv.DataEnd); TimeSpan nrOreLucrateLuna = pa.GetAngajatNrOreTipLucrate(interv.DataStart, interv.DataEnd, denumireOreLucrate[0]); TimeSpan nrOreSuplimentare50Luna = pa.GetAngajatNrOreTipLucrate(interv.DataStart, interv.DataEnd, denumireOreLucrate[1]); TimeSpan nrOreSuplimentare100Luna = pa.GetAngajatNrOreTipLucrate(interv.DataStart, interv.DataEnd, denumireOreLucrate[2]); //tre facut pe intervale de timp si pt absente nrZileEvenimenteDeosebiteLuna += pa.GetAngajatNrZileAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[0]); nrZileInvoireLuna += pa.GetAngajatNrZileAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[1]); nrZileConcediuOdihnaLuna += pa.GetAngajatNrZileAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[2]) + pa.GetAngajatNrZileAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[11]); nrZileCOneefectuat = isl.NrZileConcediuOdihnaNeefectuat; nrZileCOefectInAvans = isl.NrZileConcediuOdihnaEfectuatInAvans; nrZileConcediuBoalaLuna += pa.GetAngajatNrZileAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[3]) + pa.GetAngajatNrZileAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[4]); nrZileConcediuBoalaLunaFirma += pa.GetNrZileConcediuBoalaFirma(lunaID); nrZileConcediuBoalaLunaBASS += pa.GetNrZileConcediuBoalaBASS(lunaID); nrZileObligatiiCetatenesti += pa.GetAngajatNrZileAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[5]); nrZileAbsenteNemotivate += pa.GetAngajatNrZileAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[6]); nrZileConcediuFaraPlata += pa.GetAngajatNrZileAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[7]); nrZileLucratoareDelegatieInterna += pa.GetAngajatNrZileAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[8]); nrZileLucratoareDelegatieExterna += pa.GetAngajatNrZileAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[9]); diurnaImpozabila = isl.DiurnaImpozabila; nrZileTotalDelegatieInterna += pa.GetAngajatNrZileCuSarbatoriAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[8]); nrZileTotalDelegatieExterna += pa.GetAngajatNrZileCuSarbatoriAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[9]); nrZileEmergencyService += pa.GetAngajatNrZileCuSarbatoriAbsenteTipLuna(interv.DataStart, interv.DataEnd, codAbsente[10]); angajatSporActivitateSupLuna = isl.SporActivitatiSup; angajatEmergencyServiceLuna = isl.EmergencyService; angajatPrimeSpecialeLuna = isl.PrimeSpeciale; angajatAlteDrepturiLuna = isl.AlteDrepturi; angajatAlteDrepturiNetLuna = isl.AlteDrepturiNet; angajatAjutorDeces = isl.AjutorDeces; angajatAvansLuna = isl.Avans; angajatRetinere1 = isl.Retineri1; angajatRetinere2 = isl.Retineri2; angajatRetinere3 = isl.Retineri3; angajatRetinere4 = isl.Retineri4; angajatRetinere5 = isl.Retineri5; angajatRetinere6 = isl.Retineri6; angajatRetinere7 = isl.Retineri7; angajatRegularizareLuna = isl.Regularizare; angajatPrimaProiectLuna = isl.PrimaProiect; angajatRetinereSanatateLuna = isl.RetinereSanatate; angajatDrepturiInNaturaLuna = isl.DrepturiInNatura; nrOreLucrate += nrOreLucrateLuna.Days * 24 + nrOreLucrateLuna.Hours + (float)nrOreLucrateLuna.Minutes / 60; nrOreSuplimentare50 += nrOreSuplimentare50Luna.Days * 24 + nrOreSuplimentare50Luna.Hours + (float)nrOreSuplimentare50Luna.Minutes / 60; nrOreSuplimentare100 += nrOreSuplimentare100Luna.Days * 24 + nrOreSuplimentare100Luna.Hours + (float)nrOreSuplimentare100Luna.Minutes / 60; //Lungu Andreea //nrTicheteLuna = isl.NrTichete; //daca angajatul e cu functia de baza aici si proportional cu programul de lucru //nrTicheteLuna = angajat.ProgramLucru * (nrOreLucrate - nrZileLucratoareDelegatieExterna - nrZileLucratoareDelegatieInterna) / 8; corectiiTicheteLuna = isl.CorectiiTichete; programLucru = interv.ProgramLucru; salariuBaza[i] = interv.SalariuBaza; indemnizatieConducere[i] = interv.IndemnizatieConducere; invaliditate = interv.Invaliditate; categorieID = interv.CategorieID; } //este adaugata situatia lunara a angajatului in cauza Salaries.Data.InfoSituatieLunara x = new Salaries.Data.InfoSituatieLunara(); x.SituatieID = -1; x.AngajatID = this.AngajatID; x.LunaID = lunaID; x.CategorieID = categorieID; x.ProgramLucru = programLucru; //este calculat salariul de baza x.SalariuBaza = CalculSumaFinala(salariuBaza, nrZileLucratoareLuna, nrZileLucratoareLunaTotal); //este calculata indemnizatia de conducere x.IndemnizatieConducere = CalculSumaFinala(indemnizatieConducere, nrZileLucratoareLuna, nrZileLucratoareLunaTotal); x.Invaliditate = invaliditate; x.NrZileLuna = CalculNrZileLucrate(nrZileLucratoareLuna); x.NrOreLucrate = nrOreLucrate; x.NrOreSup50Proc = nrOreSuplimentare50; x.NrOreSup100Proc = nrOreSuplimentare100; x.NrOreEvenimDeoseb = nrZileEvenimenteDeosebiteLuna; x.NrOreInvoire = nrZileInvoireLuna; x.NrOreConcediuOdihna = nrZileConcediuOdihnaLuna; x.NrZileConcediuOdihnaNeefectuat = nrZileCOneefectuat; x.NrZileConcediuOdihnaEfectuatInAvans = nrZileCOefectInAvans; x.NrOreConcediuBoala = nrZileConcediuBoalaLuna; x.NrOreConcediuBoalaFirma = nrZileConcediuBoalaLunaFirma; x.NrOreConcediuBoalaBASS = nrZileConcediuBoalaLunaBASS; x.NrOreObligatiiCetatenesti = nrZileObligatiiCetatenesti; x.NrOreAbsenteNemotivate = nrZileAbsenteNemotivate; x.NrOreConcediuFaraPlata = nrZileConcediuFaraPlata; x.NrOreLucrateDelegatieInterna = nrZileLucratoareDelegatieInterna; x.NrOreLucrateDelegatieExterna = nrZileLucratoareDelegatieExterna; x.DiurnaImpozabila = diurnaImpozabila; x.NrOreTotalDelegatieInterna = nrZileTotalDelegatieInterna; x.NrOreTotalDelegatieExterna = nrZileTotalDelegatieExterna; x.NrOreEmergencyService = nrZileEmergencyService; //Lungu Andreea - 31.08.2010 //daca angajatul e cu functia de baza aici si proportional cu programul de lucru float nrOreLucrateFinal = x.NrOreLucrate + angajat.ProgramLucru * x.NrOreLucrateDelegatieInterna + angajat.ProgramLucru * x.NrOreLucrateDelegatieExterna; if (angajat.ModIncadrare == 0) { x.NrTichete = angajat.ProgramLucru * (nrOreLucrateFinal / angajat.ProgramLucru - x.NrOreLucrateDelegatieExterna - x.NrOreLucrateDelegatieInterna) / 8; } else { x.NrTichete = 0; } x.CorectiiTichete = corectiiTicheteLuna; //nr total tichete x.NrTotalTichete = (int)Math.Ceiling(x.NrTichete + x.CorectiiTichete); if (x.NrTotalTichete < 0) { //x.NrTotalTichete = (int) Math.Ceiling(x.NrTichete); x.NrTotalTichete = 0; } x.SporActivitatiSup = Convert.ToDecimal(angajatSporActivitateSupLuna); x.EmergencyService = Convert.ToDecimal(angajatEmergencyServiceLuna); x.PrimeSpeciale = Convert.ToDecimal(angajatPrimeSpecialeLuna); x.AlteDrepturi = Convert.ToDecimal(angajatAlteDrepturiLuna); x.AlteDrepturiNet = Convert.ToDecimal(angajatAlteDrepturiNetLuna); x.AjutorDeces = Convert.ToDecimal(angajatAjutorDeces); x.Avans = Convert.ToDecimal(angajatAvansLuna); x.Retineri1 = Convert.ToDecimal(angajatRetinere1); x.Retineri2 = Convert.ToDecimal(angajatRetinere2); x.Retineri3 = Convert.ToDecimal(angajatRetinere3); x.Retineri4 = Convert.ToDecimal(angajatRetinere4); x.Retineri5 = Convert.ToDecimal(angajatRetinere5); x.Retineri6 = Convert.ToDecimal(angajatRetinere6); x.Retineri7 = Convert.ToDecimal(angajatRetinere7); x.Regularizare = Convert.ToDecimal(angajatRegularizareLuna); x.PrimaProiect = Convert.ToDecimal(angajatPrimaProiectLuna); x.RetinereSanatate = Convert.ToDecimal(angajatRetinereSanatateLuna); x.DrepturiInNatura = Convert.ToDecimal(angajatDrepturiInNaturaLuna); /* * Modified: Cristina Raluca Muntean * Date: 13.09.2005 * A fost facuta aceasta modificare deoarece daca se lichida angajatul din prima zi, deci * nu se mai putea genera situatia lunara pe baza pontajului, atunci la adaugare era aruncata * o exceptie si ramanea vechea situatie. */ //In cazul in care nu exista date pentru situatia lunara, aceasta se //sterge(aceasta se poate intampla daca a fost lichidat angajatul din prima zi a lunii). if ((x.NrZileLuna == 0) && (x.CategorieID == 0) && (x.ProgramLucru == 0)) { this.DeleteSituatieAngajat(int.Parse(x.LunaID.ToString()), int.Parse(x.AngajatID.ToString())); } else { //Daca exista date pentru situatia lunara, atunci se sterge vechea situatie //lunara si se adauga situatia cu noile date. this.AddSituatieLunaraAngajat(x, validareStergere); validareStergere = false; } //} //catch //{} }