/// <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>
        /// Salveaza o lichidate
        /// </summary>
        private void btnSalveaza_Click()
        {
            /*
             * Modified:  Cristina Raluca Muntean
             * Date:      10.09.2005
             * Descriere: Modificarea consta in validarea datelor de intrare, a statusului angajatului(lichidat/nu este lichidat)
             * si a generarii situatiei lunare conform cu noile date corespunzatoare lichidarii.
             */

            //Modificat: Oprescu Claudia
            //Descriere: Se face mai intai validarea datelor introduse si apoi daca angajatul nu este lichidat se face lichidarea lui
            //			 Daca este deja lichidat se face actualizare la datele lichidarii, adica se sterge cea veche si se adauga una noua
            int idAng = GetAngajat();

            ErrHandler.MyErrHandler.WriteError("LichidareAngajat.ascx - start - Salveaza() - idAng: " + idAng.ToString());
            try
            {
                Salaries.Data.LichidareStruct lichidare = new Salaries.Data.LichidareStruct();
                Salaries.Business.Angajat     angajat   = new Salaries.Business.Angajat();
                angajat.AngajatId = GetAngajat();
                angajat.LoadAngajat();

                lichidare.AngajatID = this.GetAngajat();

                //variabila booleana care indica daca au fost completate toate campurile obligatorii
                bool fill = true;
                //variabila booleana care indica daca au fost completate corect campurile
                bool correct = true;

                //se verifica daca au fost completate campurile
                if (txtNrInregistrare.Text == "" || txtDataLichidare.Text == "" || txtDataInregistrare.Text == "")
                {
                    fill = false;
                }
                try
                {
                    lichidare.NrInregistrare   = txtNrInregistrare.Text;
                    lichidare.DataLichidare    = Utilities.ConvertText2DateTime(txtDataLichidare.Text);
                    lichidare.MotivDePlecareId = int.Parse(((System.Web.UI.HtmlControls.HtmlInputHidden)Page.FindControl("txtMotivDePlecareHidden")).Value);

                    lichidare.NrArticol         = txtNrArticol.Text;
                    lichidare.AvansuriDecontare = decimal.Parse(txtAvansuriDecontare.Text);
                    lichidare.Abonamente        = decimal.Parse(txtAbonamente.Text);
                    lichidare.TicheteMasa       = decimal.Parse(txtTicheteMasa.Text);
                    lichidare.EchipamentLucru   = decimal.Parse(txtEchipamentLucru.Text);
                    lichidare.Laptop            = decimal.Parse(txtLaptop.Text);
                    lichidare.TelServiciu       = decimal.Parse(txtTelServiciu.Text);
                    lichidare.ObiecteInventar   = decimal.Parse(txtObiecteInventar.Text);
                    lichidare.Carti             = decimal.Parse(txtCarti.Text);
                    lichidare.CD = decimal.Parse(txtCD.Text);

                    lichidare.DataInregistrare = Utilities.ConvertText2DateTime(txtDataInregistrare.Text);
                    if (txtLunaRetinere.Text == "")
                    {
                        lichidare.LunaRetinere = Utilities.ConvertText2DateTime("1.1.1753");
                    }
                    else
                    {
                        lichidare.LunaRetinere = Utilities.ConvertText2DateTime(txtLunaRetinere.Text);
                    }
                }
                catch (Exception)
                {
                    //in cazul in care apare o eroare la conversie inseamna ca nu au fost completate corect campurile
                    correct = false;
                }

                Salaries.Business.Luni luni     = new Salaries.Business.Luni(this.GetAngajator());
                Salaries.Data.LunaData lunaData = luni.GetLunaActiva();

                //daca au fost completate toate campurile corect si data lichidarii se afla in luna activa se poate realiza efectiv lichidarea
                if (fill && correct)
                {
                    if ((lunaData.Data.Month == DateTime.Parse(txtDataLichidare.Text).Date.Month&& lunaData.Data.Year == DateTime.Parse(txtDataLichidare.Text).Date.Year) ||
                        (DateTime.Parse(txtDataLichidare.Text).Date.Day == 1) && (DateTime.Parse(txtDataLichidare.Text).Date.Month == lunaData.Data.Month + 1) && (lunaData.Data.Year == DateTime.Parse(txtDataLichidare.Text).Date.Year) ||
                        (DateTime.Parse(txtDataLichidare.Text).Date.Day == 1) && (DateTime.Parse(txtDataLichidare.Text).Date.Month == 1) && (lunaData.Data.Month == 12) && (lunaData.Data.Year + 1 == DateTime.Parse(txtDataLichidare.Text).Date.Year))
                    {
                        SiemensTM.Classes.IntervaleAngajat intervaleAngajat = new SiemensTM.Classes.IntervaleAngajat(lichidare.AngajatID);
                        //sterge toate intervalele orare, inclusiv capetele de interval
                        intervaleAngajat.DeleteIntervaleAngajatPerioada(lichidare.DataLichidare, DateTime.MaxValue, true);
                        //initializeaza luna pentru angajatul in cauza
                        intervaleAngajat.InitializeOreLucrateLunaAngajat(lunaData.Data, objAngajat.DataDeLa, lichidare.DataLichidare);

                        //se genereaza situatia lunara a angajatului
                        //Salaries.Business.SituatieLunaraAngajat sla = new Salaries.Business.SituatieLunaraAngajat( lichidare.AngajatID );
                        //sla.GenerareSituatieLunaraAngajat( this.GetCurrentMonth(), this.GetAngajator());

                        //Adaugat:		Oprescu Claudia
                        //Descriere:	Se verifica sa nu existe deja o lichidare pentru luna activa.
                        //				Daca exista atunci se actualizeaza acea inregistrare.
                        //				Daca nu exista se adauga o inregistrare noua.
                        int lichidareID = new Salaries.Business.Lichidare().CheckIfLichidareCanBeAdded(lichidare.AngajatID, lichidare.DataLichidare);
                        if (lichidareID == 0)
                        {
                            new Salaries.Business.Lichidare().AddLichidare(lichidare);
                        }
                        else
                        {
                            lichidare.LichidareID = lichidareID;
                            new Salaries.Business.Lichidare().UpdateLichidare(lichidare);
                        }

                        //Modified: Cristina Raluca Muntean
                        //se genereaza situatia lunara a angajatului
                        SiemensTM.Classes.SituatieAngajat situatieLunaraAng = new SiemensTM.Classes.SituatieAngajat(this.GetAngajat());
                        //Added: Ionel Popa -> daca este lichidat in prima zi a lunii i se sterge situatia lunara
                        Salaries.Business.Luni activeMonth = new Salaries.Business.Luni(this.GetAngajator(), lunaData.LunaId);
                        if (activeMonth.Data == lichidare.DataLichidare)
                        {
                            Salaries.Business.SituatieLunaraAngajat sla = new Salaries.Business.SituatieLunaraAngajat(this.GetAngajat());
                            sla.DeleteSituatieAngajat(GetCurrentMonth(), this.GetAngajat());
                        }
                        else
                        {
                            //Modificat:	Oprescu Claudia
                            //Descriere:	Se apeleaza metoda pentru generarea situatiei lunare a angajatului
                            //				La generarea situatiei se calculeaza numarul de zile de concediu de odihna neefectuat si efectuat in avans
                            situatieLunaraAng.GenerareSituatieLunaraAngajatLichidat();
                        }

                        //javascript
                        StringBuilder jScript = new StringBuilder();
                        jScript.Append("<script language=\"JavaScript\">");
                        jScript.Append("window.open('../Comunicari/comunicare.aspx?id=" + objAngajat.AngajatId + "',null,'status=yes,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=yes')");
                        jScript.Append("</script>");

                        AdaugaInSesiune();

                        Response.Write(jScript.ToString());
                    }
                    else
                    {
                        //este afisat mesajul de eroare
                        Response.Write("<script>alert( 'Data lichidarii angajatului trebuie sa faca parte din luna activa!' );</script>");
                    }
                }
                else
                {
                    //in functie de eroare este afisat mesajul corespunzator
                    if (!correct)
                    {
                        Response.Write("<script>alert( 'Datele introduse nu sunt corecte!' );</script>");
                    }
                    if (!fill)
                    {
                        Response.Write("<script>alert( 'Trebuie sa completati toate datele!' );</script>");
                    }
                }
            }
            catch (Exception ex)
            {
                litError.Text  = "The following error occurred: <br>";
                litError.Text += ex.Message;
                ErrHandler.MyErrHandler.WriteError("LichidareAngajat.ascx - start - Salveaza() - idAng: " + idAng.ToString() + " - " + ex.Message);
            }
            ErrHandler.MyErrHandler.WriteError("LichidareAngajat.ascx - end - Salveaza() - idAng: " + idAng.ToString());
        }