/// <summary> /// Reinitializare ore (normale si suplimentare) /// </summary> /// <param name="angajatID">Id-ul angajatului</param> private void ReinitializeOreLunaActivaAngajat( long angajatID ) { //preluare ore normale si suplimentare Salaries.Data.LunaData lunaData = new Luni( this.GetAngajator()).GetLunaActiva(); PontajAngajat pa = new PontajAngajat( angajatID ); Salaries.Data.IntervaleSchimbariLuna []intervSL = pa.GetIntervaleSchimbariLuna( lunaData.LunaId ); float nrOreLucrate = 0; float nrOreSuplimentare50 = 0; float nrOreSuplimentare100 = 0; float []intervaleNrOreLucrate = new float[ intervSL.Length ]; int i=0; foreach( Salaries.Data.IntervaleSchimbariLuna interv in intervSL ) { int nrZileLucratoareLuna = pa.GetNrZileLucratoarePerioada( interv.DataStart, interv.DataEnd ); TimeSpan nrOreLucrateLuna = pa.GetAngajatNrOreTipLucrate( interv.DataStart, interv.DataEnd, Salaries.Business.SituatieLunaraAngajat.denumireOreLucrate[ 0 ] ); TimeSpan nrOreSuplimentare50Luna = pa.GetAngajatNrOreTipLucrate( interv.DataStart, interv.DataEnd, Salaries.Business.SituatieLunaraAngajat.denumireOreLucrate[ 1 ] ); TimeSpan nrOreSuplimentare100Luna = pa.GetAngajatNrOreTipLucrate( interv.DataStart, interv.DataEnd, Salaries.Business.SituatieLunaraAngajat.denumireOreLucrate[ 2 ] ); 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; intervaleNrOreLucrate[ i ] = nrOreLucrateLuna.Days*24+nrOreLucrateLuna.Hours+(float)nrOreLucrateLuna.Minutes/60; i++; } //stergere ore din luna activa SiemensTM.Classes.IntervaleAngajat ia = new SiemensTM.Classes.IntervaleAngajat( angajatID ); ia.DeleteIntervaleVizibileAngajatPerioada( lunaData.Data, new DateTime( lunaData.Data.Year, lunaData.Data.Month, DateTime.DaysInMonth( lunaData.Data.Year, lunaData.Data.Month ))); //reinitializarea angajatului for( i=0; i<intervaleNrOreLucrate.Length; i++ ) { //reinitializare pe intervale de zile ia.InitializeOreLucratePerioadaAngajatFromIntervalSchimbare( lunaData.Data, intervSL[ i ] ); } //initializeaza orele suplimentare 100% int tipIntervalID = new SiemensTM.Classes.IntervaleAngajat( angajatID ).GetTipIntervalIDByName( Salaries.Business.SituatieLunaraAngajat.denumireOreLucrate[ 1 ] ); double nrOreSuplimentare = nrOreSuplimentare50; double nrOreSuplimentare_old = 0; if( tipIntervalID > 0 ) { ia.DistribuieOreSuplimentareInRegimNormal( lunaData.Data, nrOreSuplimentare50, tipIntervalID, nrOreSuplimentare_old ); } //initializeaza orele suplimentare 200% tipIntervalID = new SiemensTM.Classes.IntervaleAngajat( angajatID ).GetTipIntervalIDByName( Salaries.Business.SituatieLunaraAngajat.denumireOreLucrate[ 2 ] ); nrOreSuplimentare = nrOreSuplimentare100; if( tipIntervalID > 0 ) { ia.DistribuieOreSuplimentareInRegimWeekendNoapte( lunaData.Data, nrOreSuplimentare, tipIntervalID, nrOreSuplimentare_old ); } }
/// <summary> /// 0 - nu a depasit nr de zile anuale; /// 10 - a depasit nr de zile anuale /// </summary> /// <param name="DataStart">Data de inceput a intervalului</param> /// <param name="DataEnd">Data de sfarsit a intervalului</param> /// <param name="IntervalID">Id-ul intervalului</param> /// <returns>Returneaza rezultatul verificarii</returns> public int VerificareDepasireZileCOAn(DateTime dataStart, DateTime dataEnd, int intervalID) { Salaries.Business.Angajat ang = new Salaries.Business.Angajat(); ang.AngajatId = AngajatID; ang.LoadAngajat(); PontajAngajat pontajAngajat = new PontajAngajat(this.AngajatID); DateTime primaZiAn = new DateTime(dataStart.Year, 1, 1); DateTime ultimaZiAn = new DateTime(dataStart.Year, 12, 31); int nrZileDisponibile = pontajAngajat.GetAngajatNrZileCODisponibileAn(primaZiAn, ultimaZiAn, ang.AngajatorId); int nrZileLuateAn = pontajAngajat.GetAngajatNrZileCOLuateAn(primaZiAn, ultimaZiAn, intervalID); int nrZileConcediuNou = pontajAngajat.GetNrZileLucratoareInterval(dataStart, dataEnd); //Modificat: Oprescu Claudia //Descriere: S-a adaugat si numarul de zile de concediu suplimentar int retVal = nrZileDisponibile + ang.NrZileCOSupl < (nrZileLuateAn + nrZileConcediuNou) ? 10 : 0; return(retVal); }