/// <summary>
        /// Sterge o intrerupere CIM
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnStergeDate_Click()
        {
            ErrHandler.MyErrHandler.WriteError("RetineriAngajat.ascx - start - StergeRetinere() - angID: " + AngajatID + " - " + txtDataStart.Text + " - " + txtDataEnd.Text);
            int retinereId = Convert.ToInt32(txtRetinereID.Value);

            Salaries.Business.RetineriRecurenteAngajat ret = new Salaries.Business.RetineriRecurenteAngajat();
            ret.GetRetinere(retinereId);
            DateTime dataStart = ret.RetAng.DataInceput;
            DateTime dataEnd   = ret.RetAng.DataSfarsit;
            DateTime data1     = new DateTime(dataStart.Year, dataStart.Month, 1);
            DateTime data2;

            if (dataEnd.Month != 12)
            {
                data2 = new DateTime(dataEnd.Year, dataEnd.Month + 1, 1);
                data2 = data2.AddDays(-1);
            }
            else
            {
                data2 = new DateTime(dataEnd.Year, dataEnd.Month, 31);
            }

            if (data1.CompareTo(ret.RetAng.DataInceput) != 0 && data1 < dataStartLunaActiva)
            {
                Response.Write("<script> alert('Nu se pot modifica retinerile pentru lunile anterioare'); </script>");
                return;
            }
            //if (data1.CompareTo(ret.RetAng.DataInceput) >= 0 && data2 >= dataStartLunaActiva )
            if ((data1.CompareTo(ret.RetAng.DataInceput) > 0 || (data1.CompareTo(ret.RetAng.DataInceput) == 0 && (data1.CompareTo(dataStartLunaActiva) < 0))) &&
                data2 >= dataStartLunaActiva)
            {
                Response.Write("<script> alert('Se va updata intervalul astfel incat sa ramana doar perioada dinaintea lunii active.'); </script>");
                //se face update la retinerea deja existenta...se modifica data sfarsit si anume pana la luna activa
                ret.RetAng.DataSfarsit = dataStartLunaActiva.AddDays(-1);
                ret.UpdateRetinereRecurentaAngajat();
                LoadRetineriAngajat();
                this.txtDataStart.Text = "";
                this.txtDataEnd.Text   = "";
                return;
            }

            //daca am perioada activa trebuie sa modific valorile retinerilor
            //actualizarea retinerilor
            if (ret.RetAng.DataInceput <= dataStartLunaActiva && dataStartLunaActiva <= ret.RetAng.DataSfarsit)
            {
                Salaries.Business.TipuriRetineriValori tipuri = new Salaries.Business.TipuriRetineriValori();
                tipuri.UpdateValoareRetinere((int)lunaID, AngajatID, ret.RetAng.TipRetinere, 0);
            }
            ret.DeleteRetinereRecurentaAngajat();

            Salaries.Business.SituatieLunaraAngajat sitAngajat = new Salaries.Business.SituatieLunaraAngajat(AngajatID);
            sitAngajat.GenerareSituatieLunaraAngajat((int)AngajatID, (int)lunaID);

            LoadRetineriAngajat();
            this.txtDataStart.Text = "";
            this.txtDataEnd.Text   = "";

            ErrHandler.MyErrHandler.WriteError("RetineriAngajat.ascx - end - StergeRetinere() - angID: " + AngajatID);
        }
        private void btnGenerati_Click(object sender, System.EventArgs e)
        {
            // Situatia lunara a angajatului.
            Salaries.Business.SituatieLunaraAngajat situatieLunara     = new Salaries.Business.SituatieLunaraAngajat(objAngajat.AngajatId);
            Salaries.Data.InfoSituatieLunara        infoSituatieLunara = situatieLunara.GetSituatieLunaraAngajat(objAngajat.AngajatId, lunaData.LunaId);
            // Datele necesare comunicarii care nu sunt completate.
            string dateNecesareF = string.Empty;

            if (ExistaToateDatele() && infoSituatieLunara.SituatieID != -1)
            {
                // Sunt introduse in sesiune tipul comunicarii, numarul acesteia si suma
                // Tipul comunicarii.
                Session["TipComunicare"] = "comunicare prima.xml";
                // Numarul comunicarii.
                Session["Numar"] = txtNrCom.Text;
                // Valoarea primei.
                Session["Suma"] = infoSituatieLunara.PrimaProiect.ToString("N", Salaries.Business.VariabileGlobale.numberInfoFormatWithDigits);
                // Data inregistrarii declaratiei.
                Session["DataInregistrarii"] = txtDataInregistrarii.Text;
                // Numele managerului general.
                Session["ManagerGeneral"] = txtManagerGeneral.Text;
                // Numele directorului economic.
                Session["DirectorEconomic"] = txtDirectorEconomic.Text;
                //este generata comunicarea
                lblEroare.Text = "Comunicarea a fost generata.";

                Response.Redirect("Comunicari/comunicare.aspx?id=" + objAngajat.AngajatId);
            }
            else
            {
                if (dateNecesare == string.Empty)
                {
                    lblEroare.Text = "Pentru a genera comnunicarea trebuie sa generati situatia lunara a angajatului.";
                }
                else
                {
                    // Se stabileste separatorul.
                    char[] sep = { ':' };

                    // Se face impartirea in functie de separator.
                    Array aDate = dateNecesare.Split(sep);

                    for (int i = 0; i < aDate.Length - 2; i++)
                    {
                        dateNecesareF += aDate.GetValue(i).ToString() + ", ";
                    }

                    dateNecesareF += aDate.GetValue(aDate.Length - 2).ToString();

                    lblEroare.Text = "Pentru a genera comnunicarea trebuie sa mai completati urmatoarele campuri: " + dateNecesareF;
                }
            }
        }
        /// <summary>
        /// Se trece la urmatoarea pagina in lista
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void listDataGrid_PageIndexChanged(Object sender, DataGridPageChangedEventArgs e)
        {
            Salaries.Business.SituatieLunaraAngajat ist = new Salaries.Business.SituatieLunaraAngajat(AngajatID);
            DataSet dt = ist.GetAllSituatiiLunareAngajatDataSet();

            CompletareTitlu();

            listDataGrid.CurrentPageIndex = e.NewPageIndex;
            DataView dv = dt.Tables[0].DefaultView;

            listDataGrid.DataSource = dv;
            listDataGrid.DataBind();
        }
コード例 #4
0
        private void btnGenerati_Click(object sender, System.EventArgs e)
        {
            Salaries.Data.LunaData lunaAnterioara = luni.GetDetaliiByData(lunaData.Data.AddMonths(-1));

            // Situatia lunara a angajatului.
            Salaries.Business.SituatieLunaraAngajat situatieLunara = new Salaries.Business.SituatieLunaraAngajat(objAngajat.AngajatId);
            // Situatia lunara din luna curenta.
            Salaries.Data.InfoSituatieLunara infoSituatieLunara = situatieLunara.GetSituatieLunaraAngajat(objAngajat.AngajatId, lunaData.LunaId);
            // Situatia lunara de pe luna precedenta.
            Salaries.Data.InfoSituatieLunara infoSituatieLunaraAnt = situatieLunara.GetSituatieLunaraAngajat(objAngajat.AngajatId, lunaAnterioara.LunaId);

            Salaries.Business.Salariu salariu = new Salaries.Business.Salariu();
            salariu.AngajatID = objAngajat.AngajatId;

            // Valoarea indexata a venitului brut.
            float sumaMajorareSalariuBrut = 0;

            sumaMajorareSalariuBrut = float.Parse(objAngajat.SalariuBaza.ToString()) - salariu.CalculVenitBrutIndexat();

            if (infoSituatieLunara.SituatieID != -1 && infoSituatieLunaraAnt.SituatieID != -1)
            {
                // Tipul comunicarii.
                Session["TipComunicare"] = "comunicare majorare.xml";
                // Numarul comunicarii.
                Session["Numar"] = txtNrCom.Text;
                // Data inregistrarii comunicarii.
                Session["DataInregistrarii"] = txtDataInregistrarii.Text;
                // Salariul brut anterior.
                Session["SalariuBrutAnterior"] = infoSituatieLunaraAnt.SalariuBaza.ToString();
                // Indemnizatie conducere anterioara.
                Session["IndemnizatieConducereAnterioara"] = infoSituatieLunaraAnt.IndemnizatieConducere.ToString();
                // Suma cu care a fost majorat salariu de incadrare.
                Session["SumaMajorareSalariuBrut"] = sumaMajorareSalariuBrut.ToString();
                // Numele managerului general.
                Session["ManagerGeneral"] = txtManagerGeneral.Text;
                // Numele directorului economic.
                Session["DirectorEconomic"] = txtDirectorEconomic.Text;

                Response.Redirect("Comunicari/comunicare.aspx?id=" + objAngajat.AngajatId);

                lblEroare.Text = "Comunicarea a fost generata.";
            }
            else
            {
                lblEroare.Text = "Angajatul nu are situatii lunare generate!";
            }
        }
        private void Page_Load(object sender, System.EventArgs e)
        {
            //Modificat: Cristina Muntean ... se permite modificarea pontajului numai daca luna selectata de
            //utilizator este luna activa a angajatorului sau daca exista situatie lunara pentru angajatul selectat

            //luna selectata de utilizator
            int lunaCurentaID = int.Parse(this.Session[SiemensHR.InterfataSalarii.Classes.Definitions.LunaCurentaKey].ToString());
            //id-ul angajatului selectat in dropdownlist
            int angajatID = this.GetAngajat();

            Salaries.Business.Angajat objAngajat = new Salaries.Business.Angajat();
            objAngajat.AngajatId = angajatID;
            objAngajat.LoadAngajat();

            //luna activa a angajatorului
            Salaries.Business.Luni luna     = new Salaries.Business.Luni(objAngajat.AngajatorId);
            Salaries.Data.LunaData lunaData = luna.GetLunaActiva();

            //se obtine situatie lunara a angajatului
            Salaries.Business.SituatieLunaraAngajat situatieLunaraAng  = new Salaries.Business.SituatieLunaraAngajat(objAngajat.AngajatId);
            Salaries.Data.InfoSituatieLunara        infoSituatieLunara = situatieLunaraAng.GetSituatieLunaraAngajat(objAngajat.AngajatId, lunaData.LunaId);

            //daca luna selectata de utilizator nu este luna activa sau daca nu exista o situatie lunara pentru angajatul selectat
            //atunci se permite doar vizualizarea pontajului,altfel se permite si modificarea acestuia
            if ((lunaCurentaID != lunaData.LunaId) || (infoSituatieLunara.SituatieID == -1))
            {
                //HtmlTableCell IntervaleContainer este ascunsa
                IntervaleContainer.Style.Add("display", "none");
            }
            else
            {
                //HtmlTableCell IntervaleContainer este facuta vizibila
                IntervaleContainer.Style.Add("display", "");
            }

            ClientSelectedDate1 = (System.Web.UI.HtmlControls.HtmlInputHidden)Page.FindControl("ClientSelectedDate");
            this.DoQuickLogin(this.GetAngajat());
        }
コード例 #6
0
        private void btnGenerati_Click(object sender, System.EventArgs e)
        {
            // Date luna anterioara.
            Salaries.Data.LunaData lunaAnterioara = luni.GetDetaliiByData(lunaData.Data.AddMonths(-1));
            // Situatia lunara a angajatului.
            Salaries.Business.SituatieLunaraAngajat situatieLunara = new Salaries.Business.SituatieLunaraAngajat(objAngajat.AngajatId);
            // Situatia lunara din luna curenta.
            Salaries.Data.InfoSituatieLunara infoSituatieLunara = situatieLunara.GetSituatieLunaraAngajat(objAngajat.AngajatId, lunaData.LunaId);
            // Situatia lunara de pe luna precedenta.
            Salaries.Data.InfoSituatieLunara infoSituatieLunaraAnt = situatieLunara.GetSituatieLunaraAngajat(objAngajat.AngajatId, lunaAnterioara.LunaId);

            Salaries.Business.Salariu salariu = new Salaries.Business.Salariu();
            salariu.AngajatID = objAngajat.AngajatId;

            // true, daca este luna incheie un trimestru, false altfel
            bool lnSfDeTrim = false;
            // Suma cu care a fost majorat salariul angajatului.
            float sumaMajorare = 0;

            // Valoarea indexata a venitului brut.
            float venitBrutIndexat = 0;

            int lunaCurenta = int.Parse(luni.GetLunaActiva().Data.Month.ToString());

            switch (lunaCurenta)
            {
            case LUNA_INDEXARE_1:
                lnSfDeTrim = true;
                break;

            case LUNA_INDEXARE_2:
                lnSfDeTrim = true;
                break;
            }

            venitBrutIndexat = salariu.CalculVenitBrutIndexat();

            /*
             *      Se verifica daca este cazul sa se genereze o astfel de comunicare.
             * Anul este impartit in patru trimestre(lunile 1-3,4-6,7-9,10-12)
             * Indexarea se reflecta in salariul din ultima luna a trimestrului. Cum
             * salariul primit in luna activa este de pe luna anterioara, indexarea
             * trebuie sa fie facuta in fiecare din lunile 1,4,7 si 10.Se verifica, de asemenea,
             * daca angajatul a lucrat cel putin o luna pe trimestrul anterior.
             */
            if ((lnSfDeTrim) && (venitBrutIndexat != 0))
            {
                // Sunt introduse in sesiune datele referitoare la comunicare.
                // Tipul comunicarii.
                Session["TipComunicare"] = "comunicare indexare.xml";
                // Numarul comunicarii.
                Session["Numar"] = txtNrCom.Text;
                // Data inregistrarii comunicarii.
                Session["DataInregistrarii"] = txtDataInregistrarii.Text;
                // Procentul inflatiei.
                Session["ProcentIndexare"] = (salariu.CalculProcentIndexareAngajat() - 1) * 100;
                // Este calculata valoarea majorarii.
                sumaMajorare = (infoSituatieLunara.IndemnizatieConducere - infoSituatieLunaraAnt.IndemnizatieConducere) +
                               (infoSituatieLunara.SalariuBaza - salariu.CalculVenitBrutIndexat());
                // Valoare majorare.
                Session["SumaMajorare"] = sumaMajorare;
                // Numele managerului general.
                Session["ManagerGeneral"] = txtManagerGeneral.Text;
                // Numele directorului economic.
                Session["DirectorEconomic"] = txtDirectorEconomic.Text;

                Response.Redirect("Comunicari/comunicare.aspx?id=" + objAngajat.AngajatId);

                lblEroare.Text = "Comunicarea a fost generata.";
            }
            // Altfel este afisat un mesaj de eroare.
            else
            {
                if (!lnSfDeTrim)
                {
                    lblEroare.Text = "Pe aceasta luna nu trebuie generata o astfel de comunicare!";
                }
                if (venitBrutIndexat == 0)
                {
                    lblEroare.Text = "Acestui angajat nu trebuie sa ii fie indexat salariul!";
                }
            }
        }
        /// <summary>
        /// Modifica o intrerupere CIM
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnModificaDate_Click()
        {
            ErrHandler.MyErrHandler.WriteError("RetineriAngajat.ascx - start - ModificaRetinere() - angID: " + AngajatID + " - " + txtDataStart.Text + " - " + txtDataEnd.Text);
            try
            {
                int retinereId = Convert.ToInt32(txtRetinereID.Value);
                Salaries.Business.RetineriRecurenteAngajat ret = new Salaries.Business.RetineriRecurenteAngajat();
                ret.GetRetinere(retinereId);
                Salaries.Business.RetineriRecurenteAngajat retinereVeche = ret;
                DateTime dataStart        = SiemensTM.utils.Utilities.ConvertText2DateTime(txtDataStart.Text /*DateStart.Value*/);
                DateTime dataEnd          = SiemensTM.utils.Utilities.ConvertText2DateTime(txtDataEnd.Text /*DateEnd.Value*/);
                string   tipRetinere      = ddlTipuriRetineri.SelectedValue;
                string   denumireRetinere = txtRetinere.Text;
                decimal  valoare          = decimal.Parse(txtValoare.Text);
                bool     alerta           = chkAlerta.Checked;
                DateTime data1            = new DateTime(dataStart.Year, dataStart.Month, 1);
                DateTime data2;
                if (dataEnd.Month != 12)
                {
                    data2 = new DateTime(dataEnd.Year, dataEnd.Month + 1, 1);
                    data2 = data2.AddDays(-1);
                }
                else
                {
                    data2 = new DateTime(dataEnd.Year, dataEnd.Month, 31);
                }

                //daca noile date sunt inaintea lunii active
                if (data1.CompareTo(ret.RetAng.DataInceput) != 0 && data1 < dataStartLunaActiva)
                {
                    Response.Write("<script> alert('Nu se pot modifica retinerile pentru lunile anterioare') </script>");
                    return;
                }
                if ((data1.CompareTo(ret.RetAng.DataInceput) > 0 || (data1.CompareTo(ret.RetAng.DataInceput) == 0 && (data1.CompareTo(dataStartLunaActiva) < 0))) &&
                    data2 >= dataStartLunaActiva && valoare != ret.RetAng.Valoare)
                {
                    Response.Write("<script> alert('Se vor realiza doua intervale separate pentru ca difera valorile retinerii pentru lunile anterioare si cele viitoare'); </script>");
                    //se face update la retinerea deja existenta...se modifica data sfarsit si anume pana la luna activa
                    ret.RetAng.DataSfarsit = dataStartLunaActiva.AddDays(-1);
                    ret.UpdateRetinereRecurentaAngajat();
                    //se adauga o noua inregistrare cu noua retinere
                    ret.RetAng.AngajatID        = AngajatID;
                    ret.RetAng.IdRetinere       = 0;
                    ret.RetAng.TipRetinere      = tipRetinere;
                    ret.RetAng.DenumireRetinere = denumireRetinere;
                    ret.RetAng.DataInceput      = dataStartLunaActiva;
                    ret.RetAng.DataSfarsit      = data2;
                    ret.RetAng.Valoare          = valoare;
                    ret.RetAng.Alerta           = alerta;
                    ret.InsertRetinereRecurentaAngajat();

                    //daca am perioada activa trebuie sa modific valorile retinerilor
                    //actualizarea retinerilor
                    if (ret.RetAng.DataInceput <= dataStartLunaActiva && dataStartLunaActiva <= ret.RetAng.DataSfarsit)
                    {
                        Salaries.Business.TipuriRetineriValori tipuri = new Salaries.Business.TipuriRetineriValori();
                        tipuri.UpdateValoareRetinere((int)lunaID, AngajatID, ret.RetAng.TipRetinere, ret.RetAng.Valoare);
                    }

                    LoadRetineriAngajat();
                    this.txtDataStart.Text = "";
                    this.txtDataEnd.Text   = "";
                    return;
                }

                // in rest	se face modificare...inseamna ca se modifica doar alerta sau datele astfel incat sa nu influeneteze
                ret = new Salaries.Business.RetineriRecurenteAngajat();
                ret.RetAng.AngajatID        = AngajatID;
                ret.RetAng.IdRetinere       = retinereId;
                ret.RetAng.TipRetinere      = tipRetinere;
                ret.RetAng.DenumireRetinere = denumireRetinere;
                ret.RetAng.DataInceput      = data1;
                ret.RetAng.DataSfarsit      = data2;
                ret.RetAng.Valoare          = valoare;
                ret.RetAng.Alerta           = alerta;
                ret.UpdateRetinereRecurentaAngajat();

                //daca am perioada activa trebuie sa modific valorile retinerilor
                //actualizarea retinerilor
                if (ret.RetAng.DataInceput <= dataStartLunaActiva && dataStartLunaActiva <= ret.RetAng.DataSfarsit && retinereVeche.RetAng.Valoare != ret.RetAng.Valoare)
                {
                    Salaries.Business.TipuriRetineriValori tipuri = new Salaries.Business.TipuriRetineriValori();
                    tipuri.UpdateValoareRetinere((int)lunaID, AngajatID, ret.RetAng.TipRetinere, ret.RetAng.Valoare);
                }

                Salaries.Business.SituatieLunaraAngajat sitAngajat = new Salaries.Business.SituatieLunaraAngajat(AngajatID);
                sitAngajat.GenerareSituatieLunaraAngajat((int)AngajatID, (int)lunaID);

                LoadRetineriAngajat();
                this.txtDataStart.Text = "";
                this.txtDataEnd.Text   = "";
            }
            catch (Exception ex)
            {
                litError.Text  = "The following error occurred: <br>";
                litError.Text += ex.Message;
                ErrHandler.MyErrHandler.WriteError("RetineriAngajat.ascx - error - ModificaRetinere() - angID: " + AngajatID + " - " + ex.Message);
            }
            ErrHandler.MyErrHandler.WriteError("RetineriAngajat.ascx - end - ModificaRetinere() - angID: " + AngajatID);
        }
        /// <summary>
        /// Adauga o retinere
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdauga_Click()
        {
            ErrHandler.MyErrHandler.WriteError("RetineriAngajat.ascx - start - AdaugaRetinere() - angID: " + AngajatID + " - " + txtDataStart.Text + " - " + txtDataEnd.Text);
            try
            {
                DateTime dataStart        = SiemensTM.utils.Utilities.ConvertText2DateTime(txtDataStart.Text /*DateStart.Value*/);
                DateTime dataEnd          = SiemensTM.utils.Utilities.ConvertText2DateTime(txtDataEnd.Text /*DateEnd.Value*/);
                string   denumireRetinere = txtRetinere.Text;
                decimal  valoare          = decimal.Parse(txtValoare.Text);
                string   tipRetinere      = ddlTipuriRetineri.SelectedValue;
                bool     alerta           = chkAlerta.Checked;
                int      retinereId       = Convert.ToInt32(txtRetinereID.Value);

                DateTime data1 = new DateTime(dataStart.Year, dataStart.Month, 1);
                DateTime data2;
                if (dataEnd.Month != 12)
                {
                    data2 = new DateTime(dataEnd.Year, dataEnd.Month + 1, 1);
                    data2 = data2.AddDays(-1);
                }
                else
                {
                    data2 = new DateTime(dataEnd.Year, dataEnd.Month, 31);
                }
                //data de start as cam vrea sa fie in luna activa pentru a nu avea probleme cu legaturile catre tipul de retinere
                if (data1 != dataStartLunaActiva || data2 < dataStartLunaActiva)
                {
                    Response.Write("<script> alert('Data de inceput trebuie sa fie in luna activa si data de sfarsit trebuie sa fie dupa data de inceput!'); </script>");
                    return;
                }

                //sa verific daca pot adauga, daca nu exista inca o retinere cu acelasi tip de retinere si perioada intersectatat
                Salaries.Business.RetineriRecurenteAngajat ret = new Salaries.Business.RetineriRecurenteAngajat();
                ret.RetAng.AngajatID        = AngajatID;
                ret.RetAng.IdRetinere       = retinereId;
                ret.RetAng.TipRetinere      = tipRetinere;
                ret.RetAng.DenumireRetinere = denumireRetinere;
                ret.RetAng.DataInceput      = data1;
                ret.RetAng.DataSfarsit      = data2;
                ret.RetAng.Valoare          = valoare;
                ret.RetAng.Alerta           = alerta;
                if (ret.VerificaIntersectieNrRetineri() == 0)
                {
                    ret.InsertRetinereRecurentaAngajat();
                }
                else
                {
                    Response.Write("<script> alert('Nu se poate introduce acelasi tip de retinere pentru perioade ce se intersecteaza!'); </script>");
                }

                //daca am perioada activa trebuie sa modific valorile retinerilor
                //actualizarea retinerilor
                if (ret.RetAng.DataInceput <= dataStartLunaActiva && dataStartLunaActiva <= ret.RetAng.DataSfarsit)
                {
                    Salaries.Business.TipuriRetineriValori tipuri = new Salaries.Business.TipuriRetineriValori();
                    tipuri.UpdateValoareRetinere((int)lunaID, AngajatID, ret.RetAng.TipRetinere, ret.RetAng.Valoare);
                }

                Salaries.Business.SituatieLunaraAngajat sitAngajat = new Salaries.Business.SituatieLunaraAngajat(AngajatID);
                sitAngajat.GenerareSituatieLunaraAngajat((int)AngajatID, (int)lunaID);

                LoadRetineriAngajat();
                this.txtDataStart.Text = "";
                this.txtDataEnd.Text   = "";
            }
            catch (Exception ex)
            {
                litError.Text  = "The following error occurred: <br>";
                litError.Text += ex.Message;
                ErrHandler.MyErrHandler.WriteError("RetineriAngajat.ascx - error - - angID: " + AngajatID + " - " + ex.Message);
            }
            ErrHandler.MyErrHandler.WriteError("RetineriAngajat.ascx - end - AdaugaRetinere() - angID: " + AngajatID);
        }
        /// <summary>
        /// Initializeaza luna
        /// </summary>
        private void InitializareLunaClick()
        {
            ErrHandler.MyErrHandler.WriteError("InitializareLuna.ascx - start - click_initializareLuna()");
            // Va contine salariile indexate ale angajatilor.
            DataSet dsSalariiIndexate = new DataSet();

            Salaries.Business.Luni luna = new Salaries.Business.Luni(this.GetAngajator());
            ArrayList categs            = new ArrayList();

            /*
             * Adaugat:		Oprescu Claudia
             * Data:		24.04.2007
             * Descriere:	Daca exista angajati carora le-a expirat contractul de munca, nu se permite initializarea lunii pentru care trebuie facuta indexarea
             */
            if (performIndexing && ((this.SelectedDate.Month == 4) || (this.SelectedDate.Month == 10)))
            {
                Salaries.Business.Angajat angajati = new Salaries.Business.Angajat();
                Salaries.Business.IstoricSchimbareDateAngajat dataPosibilaIndexare = new Salaries.Business.IstoricSchimbareDateAngajat();
                dataPosibilaIndexare.DataStart = luna.GetLunaActiva().Data;
                while (dataPosibilaIndexare.DataEsteZiSarbatoare())
                {
                    dataPosibilaIndexare.DataStart = dataPosibilaIndexare.DataStart.AddDays(1);
                }
                DataSet dsAngajatiExpiraContract = angajati.GetAngajatiExpiraContractLunaCurenta(dataPosibilaIndexare.DataStart);
                if (dsAngajatiExpiraContract.Tables[0].Rows.Count != 0)
                {
                    Response.Write("<script> alert('Exista angajati carora le-a expirat contractul de munca, adica data de sfarsit a contractului este mai mica decat prima zi lucratoare a lunii curente. \\nPentru a vizualiza acesti angajati, accesati modulul Home al aplicatiei. \\nVa rugam actualizati data de sfarsit a contractului pentru acesti angajati pentru a se putea efectua indexarea. \\nVa multumim!'); </script>");
                    return;
                }
            }

            InitializeOreLucrateLunaAngajati();

            if (this.lstCategorii.SelectedIndex == 0)
            {
                for (int i = 1; i < this.lstCategorii.Items.Count; i++)
                {
                    categs.Add(int.Parse(this.lstCategorii.Items[i].Value));
                }
            }
            else
            {
                categs.Add(this.lstCategorii.SelectedValue);
            }

            /*
             * Adaugat:  Muntean Raluca Cristina
             * Data:     29.12.2005
             * Descriere:Sunt calculate salariile indexate ale angajatilor
             * si introduce schimbarea in baza de date.
             *
             * Modificat:
             *		- Ionel Popa - 18.12.2006: indexarea se face o data la sase luni: aprilie si octombrie
             */
            if (performIndexing && ((this.SelectedDate.Month == 4) || (this.SelectedDate.Month == 10)))
            {
                ErrHandler.MyErrHandler.WriteError("InitializareLuna.ascx - click_initializareLuna() - start - indexare");
                //a fost exectuata indexare si campul pentru specificarea indexarii este inactiv
                tdIndexare.Disabled      = true;
                indexareCheckBox.Checked = true;

                ErrHandler.MyErrHandler.WriteError("InitializareLuna.ascx - click_initializareLuna() - start - calcul salarii indexate");
                dsSalariiIndexate = luna.CalculSalariiIndexate(this.GetAngajator());
                ErrHandler.MyErrHandler.WriteError("InitializareLuna.ascx - click_initializareLuna() - end - calcul salarii indexate");

                Salaries.Business.Angajat ang = new Salaries.Business.Angajat();
                Salaries.Business.IstoricSchimbareDateAngajat isda;
                Salaries.Data.LunaData lunaActiva = luna.GetLunaActiva();
                string dataLunaActiva             = lunaActiva.Data.ToShortDateString();

                //Se creaza noul interval de schimbari:
                //Va contine ca data de start inceputul lunii si ca data de sfarsit DataTime.MaxValue
                Salaries.Business.IstoricSchimbareDateAngajat intsch = new Salaries.Business.IstoricSchimbareDateAngajat();
                intsch.DataEnd   = DateTime.MaxValue;
                intsch.DataStart = DateTime.Parse(dataLunaActiva);
                //se stabileste data de inceput a schimbarii
                //daca este o zi de sarbatoare, se va lua data urmatoare
                while (intsch.DataEsteZiSarbatoare())
                {
                    intsch.DataStart = intsch.DataStart.AddDays(1);
                }

                Salaries.Business.IstoricSchimbareDateAngajat interv;
                //Un angajat poate avea cel putin un interval care se termina inaintea datei de inceput a intervalului de schimbare
                //In acest caz retinem acest interval
                //Salaries.Business.IstoricSchimbareDateAngajat possibleLastInterval;

                ErrHandler.MyErrHandler.WriteError("InitializareLuna.ascx - click_initializareLuna() - start - schimbare date angajat(sal indexat)");
                foreach (DataRow angajatRow in dsSalariiIndexate.Tables[0].Rows)
                {
                    ang.AngajatId = long.Parse(angajatRow["AngajatID"].ToString());
                    ang.LoadAngajat();

                    //Se initializeaza schimbarile angajatului
                    isda             = new Salaries.Business.IstoricSchimbareDateAngajat();
                    isda.AngajatId   = ang.AngajatId;
                    isda.DataStart   = intsch.DataStart;
                    intsch.AngajatId = ang.AngajatId;

                    if (!ang.IsLichidat)
                    {
                        interv = new Salaries.Business.IstoricSchimbareDateAngajat();
                        DataSet existaCapat = new DataSet();

                        //Se verifica daca data de angajare este diferita de inceputul intervalului de schimbare
                        //In cazul in care sunt egale ... nu se face indexarea

                        /*if(ang.DataDeLa != intsch.DataStart)
                         * {
                         *      //Se extrage intervalul precedent intervalului de schimbare
                         *      isda.DataStart = intsch.DataStart.AddDays( -1 );
                         *      interv = isda.GetIntervalSchimbareByDataInside();
                         *      //In cazul in care angajatul a fost angajat pe o perioada determinata e posibil sa nu existe un interval care sa includa aceasta data
                         *      if( interv.ProgramLucru == -1)
                         *      {
                         *              interv = isda.GetLastIntervalSchimbare();
                         *              //Se seteaza doar DataEnd pentru ca aceasta e necesara mai jos in InsertCapatIntervalSchimbareAngajat/UpdateCapatIntervalSchimbareAngajat
                         *              interv.DataStart = intsch.DataStart.AddDays( -1 );
                         *              //Initializam si acest interval
                         *              possibleLastInterval = isda.GetLastIntervalSchimbare();
                         *              possibleLastInterval.DataStart = intsch.DataStart.AddDays( -1 );
                         *              isda.CategorieId = interv.CategorieId;
                         *              possibleLastInterval.CategorieId = isda.GetCategorieCorspunzatoareDinLunaActiva();
                         *      }
                         *      else
                         *      {
                         *              isda.CategorieId = interv.CategorieId;
                         *              interv.CategorieId = isda.GetCategorieCorspunzatoareDinLunaActiva();
                         *              //Initializam si acest interval
                         *              isda.DataStart = intsch.DataStart.AddDays( -1 );
                         *              possibleLastInterval = isda.GetIntervalSchimbareByDataInside();
                         *              isda.CategorieId = interv.CategorieId;
                         *              possibleLastInterval.CategorieId = isda.GetCategorieCorspunzatoareDinLunaActiva();
                         *      }
                         *
                         *
                         *      //Se verifica daca data de start a intervalului de schimbare este capat de interval
                         *      //Aceasta verificare este necesara pentru ca intervalele sa fie continue
                         *      //De ex: in cazul in care exista un capat mai mic decat capatul de start al intervalului de schimbare acesta este actualizat cu capatul de start al intervalului de schimbare
                         *      //!!Prin actiunea de mai jos se seteaza ca si capat de interval ultima zi a lunii precedente
                         *      isda.DataStart = intsch.DataStart.AddDays( -1 );
                         *      existaCapat = isda.GetCapatIntervalAngajatZi();
                         *      if ( existaCapat == null || existaCapat.Tables[ 0 ].Rows.Count == 0 )
                         *      {
                         *              //Daca nu exista un capat de interval acesta va fi inserat
                         *              interv.InsertCapatIntervalSchimbareAngajat();
                         *      }
                         *      else
                         *      {
                         *              //Daca exista un capat de interval acesta este actualizat
                         *              interv.IntervalAngajatId = int.Parse( existaCapat.Tables[ 0 ].Rows[ 0 ][ "IntervalAngajatID" ].ToString());
                         *              interv.UpdateCapatIntervalSchimbareAngajat();
                         *      }
                         *
                         *      //Se actulizeaza salariul de baza cu cel indexat
                         *      intsch.SalariuBaza = decimal.Parse( angajatRow["SalariuIndexat"].ToString() );
                         *      //Se insereaza schimbarea pentru angajatul curent
                         *      intsch.InsertSchimbareSalariuBaza();
                         *
                         *      //Se seteaza ca si capat de interval inceputul lunii active
                         *      isda.DataStart = intsch.DataStart;
                         *      interv = isda.GetIntervalSchimbareByDataInside();
                         *      if( interv.ProgramLucru == -1)
                         *      {
                         *              interv = possibleLastInterval;
                         *              interv.DataStart = DateTime.Parse(dataLunaActiva );
                         *      }
                         *      interv.SalariuBaza = intsch.SalariuBaza;
                         *      isda.CategorieId = interv.CategorieId;
                         *      interv.CategorieId = isda.GetCategorieCorspunzatoareDinLunaActiva();
                         *
                         *      isda.DataStart = intsch.DataStart;
                         *      existaCapat = isda.GetCapatIntervalAngajatZi();
                         *      if( existaCapat == null || existaCapat.Tables[ 0 ].Rows.Count == 0 )
                         *      {
                         *              interv.InsertCapatIntervalSchimbareAngajat();
                         *      }
                         *      else
                         *      {
                         *              interv.IntervalAngajatId = int.Parse( existaCapat.Tables[ 0 ].Rows[ 0 ][ "IntervalAngajatID" ].ToString());
                         *              interv.UpdateCapatIntervalSchimbareAngajat();
                         *      }
                         * }*/

                        //Se verifica daca data de angajare este diferita de inceputul intervalului de schimbare
                        //In cazul in care sunt egale ... nu se face indexarea
                        if (ang.DataDeLa != intsch.DataStart)
                        {
                            //Se extrage intervalul precedent intervalului de schimbare
                            isda.DataStart = intsch.DataStart.AddDays(-1);
                            //daca este o zi de sarbatoare, se va trece la ziua anterioara pana se va gasi o zi care nu este sarbatoare
                            while (isda.DataEsteZiSarbatoare())
                            {
                                isda.DataStart = isda.DataStart.AddDays(-1);
                            }
                            interv             = isda.GetIntervalSchimbareByDataInside();
                            isda.CategorieId   = interv.CategorieId;
                            interv.CategorieId = isda.GetCategorieCorspunzatoareDinLunaActiva();

                            //Se verifica daca data de start a intervalului de schimbare este capat de interval
                            //Aceasta verificare este necesara pentru ca intervalele sa fie continue
                            //De ex: in cazul in care exista un capat mai mic decat capatul de start al intervalului de schimbare acesta este actualizat cu capatul de start al intervalului de schimbare
                            //!!Prin actiunea de mai jos se seteaza ca si capat de interval ultima zi a lunii precedente
                            isda.DataStart = intsch.DataStart.AddDays(-1);
                            //daca este o zi de sarbatoare, se va trece la ziua anterioara pana se va gasi o zi care nu este sarbatoare
                            while (isda.DataEsteZiSarbatoare())
                            {
                                isda.DataStart = isda.DataStart.AddDays(-1);
                            }
                            existaCapat = isda.GetCapatIntervalAngajatZi( );
                            if (existaCapat == null || existaCapat.Tables[0].Rows.Count == 0)
                            {
                                //Daca nu exista un capat de interval acesta va fi inserat
                                interv.InsertCapatIntervalSchimbareAngajat();
                            }
                            else
                            {
                                //Daca exista un capat de interval acesta este actualizat
                                interv.IntervalAngajatId = int.Parse(existaCapat.Tables[0].Rows[0]["IntervalAngajatID"].ToString());
                                interv.UpdateCapatIntervalSchimbareAngajat();
                            }
                        }

                        //Se actulizeaza salariul de baza cu cel indexat
                        intsch.SalariuBaza = decimal.Parse(angajatRow["SalariuIndexat"].ToString());
                        //Se insereaza schimbarea pentru angajatul curent
                        intsch.InsertSchimbareSalariuBaza();

                        //Se seteaza ca si capat de interval inceputul lunii active
                        isda.DataStart     = intsch.DataStart;
                        interv             = isda.GetIntervalSchimbareByDataInside();
                        interv.SalariuBaza = intsch.SalariuBaza;
                        isda.CategorieId   = interv.CategorieId;
                        interv.CategorieId = isda.GetCategorieCorspunzatoareDinLunaActiva();

                        isda.DataStart = intsch.DataStart;
                        existaCapat    = isda.GetCapatIntervalAngajatZi();
                        if (existaCapat == null || existaCapat.Tables[0].Rows.Count == 0)
                        {
                            interv.InsertCapatIntervalSchimbareAngajat();
                        }
                        else
                        {
                            interv.IntervalAngajatId = int.Parse(existaCapat.Tables[0].Rows[0]["IntervalAngajatID"].ToString());
                            interv.UpdateCapatIntervalSchimbareAngajat();
                        }
                    }
                }
                ErrHandler.MyErrHandler.WriteError("InitializareLuna.ascx - click_initializareLuna() - end - schimbare date angajat(sal indexat)");
                ErrHandler.MyErrHandler.WriteError("InitializareLuna.ascx - click_initializareLuna() - end - indexare");
            }

            ErrHandler.MyErrHandler.WriteError("InitializareLuna.ascx - click_initializareLuna() - start - adaugarea etichetelor asociate retinerilor");
            //Adaugat:		Oprescu Claudia
            //Descriere:	La initializarea fiecarei luni se adauga etichetele asociate acesteia
            Salaries.Business.TypesOfRestraints tr = new Salaries.Business.TypesOfRestraints();
            tr.InsertLabel(this.GetCurrentMonth());

            //Descriere:	Pentru fiecare angajat se adauga valori pentru retinerea din luna nou adaugata
            Salaries.Business.Angajat angajat = new Salaries.Business.Angajat();
            DataSet angajatiID = angajat.GetAngajatIDAll();

            foreach (DataRow dr in angajatiID.Tables[0].Rows)
            {
                long AngajatID = long.Parse(dr["AngajatID"].ToString());
                Salaries.Business.TipuriRetineriValori trv = new Salaries.Business.TipuriRetineriValori();
                trv.InsertRetineriValori(this.GetCurrentMonth(), AngajatID);
            }
            ErrHandler.MyErrHandler.WriteError("InitializareLuna.ascx - click_initializareLuna() - end - adaugarea etichetelor asociate retinerilor");

            ErrHandler.MyErrHandler.WriteError("InitializareLuna.ascx - click_initializareLuna() - start - generare situatii lunare");
            for (int i = 0; i < categs.Count; i++)
            {
                int CategorieID = int.Parse(categs[i].ToString());

                DataSet CategorieAngajati = new Salaries.Business.CategoriiAngajat().GetCategorieAngajati(CategorieID);

                foreach (DataRow dr in CategorieAngajati.Tables[0].Rows)
                {
                    long AngajatID = long.Parse(dr["AngajatID"].ToString());

                    Salaries.Business.SituatieLunaraAngajat sla = new Salaries.Business.SituatieLunaraAngajat(AngajatID);
                    sla.GenerareSituatieLunaraAngajat(this.GetCurrentMonth(), this.GetAngajator());

                    //se adauga valorile retinerilor pentru un angajat dintr-o luna
                    //Salaries.Business.TipuriRetineriValori().InsertRetineriValori(this.GetCurrentMonth(), this.GetAngajator());

                    Salaries.Data.InfoSituatieLunara isl = sla.GetSituatieLunaraAngajat(AngajatID, this.GetCurrentMonth());

                    //Salaries.Business.SituatieLunaraAngajat sla = new Salaries.Business.SituatieLunaraAngajat(AngajatID);

                    Salaries.Data.InfoSituatieLunara x = new Salaries.Data.InfoSituatieLunara();

                    x.SituatieID                = -1;
                    x.AngajatID                 = AngajatID;
                    x.LunaID                    = this.GetCurrentMonth();
                    x.NrZileLuna                = isl.NrZileLuna;
                    x.NrOreConcediuBoala        = isl.NrOreConcediuBoala;
                    x.NrOreConcediuOdihna       = isl.NrOreConcediuOdihna;
                    x.NrOreEvenimDeoseb         = isl.NrOreEvenimDeoseb;
                    x.NrOreInvoire              = isl.NrOreInvoire;
                    x.NrOreObligatiiCetatenesti = isl.NrOreObligatiiCetatenesti;
                    x.NrOreAbsenteNemotivate    = isl.NrOreAbsenteNemotivate;
                    x.NrOreConcediuFaraPlata    = isl.NrOreConcediuFaraPlata;
                    x.NrOreLucrate              = isl.NrOreLucrate;
                    //x.NrOreSup100Proc = isl.NrOreSup100Proc;
                    //x.NrOreSup50Proc = isl.NrOreSup50Proc;
                    x.NrOreSup100Proc = int.Parse(this.txtNrOreSup100Proc.Text);
                    x.NrOreSup50Proc  = int.Parse(this.txtNrOreSup50Proc.Text);

                    x.PrimeSpeciale     = decimal.Parse(this.txtPrimeSpeciale.Text);
                    x.SporActivitatiSup = decimal.Parse(this.txtSporActivitatiSup.Text);
                    x.EmergencyService  = decimal.Parse(this.txtEmergencyService.Text);
                    x.AlteDrepturi      = decimal.Parse(this.txtAlteDrepturi.Text);
                    x.AlteDrepturiNet   = decimal.Parse(this.txtAlteDrepturiNet.Text);
                    x.Avans             = decimal.Parse(this.txtAvans.Text);
                    x.PrimaProiect      = decimal.Parse(this.txtPrimaProiect.Text);

                    //se calculeaza suma pe care trebuie sa o plateasca cei scutiti de contributia la sanatate
                    int lunaID = this.GetCurrentMonth();
                    x.RetinereSanatate = 0;
                    x.CategorieID      = CategorieID;

                    sla.AddSituatieLunaraAngajat(x, true);

                    //distribuie orele suplimentare
                    //ore 100%
                    lunaID = this.GetCurrentMonth();
                    Salaries.Business.Luni l  = new Salaries.Business.Luni(this.GetAngajator());
                    Salaries.Data.LunaData ld = l.GetDetalii(lunaID);
                    int tipIntervalID         = new SiemensTM.Classes.IntervaleAngajat(AngajatID).GetTipIntervalIDByName(Salaries.Business.SituatieLunaraAngajat.denumireOreLucrate[1]);;
                    int valEroare             = new SiemensTM.Classes.IntervaleAngajat(AngajatID).DistribuieOreSuplimentareTip(ld.Data, tipIntervalID, x.NrOreSup50Proc, 0, 0);

                    /*if ( valEroare == 1 )
                     * {
                     *      Response.Write( "<script>alert( 'Numarul de ore suplimentare 100% depaseste numarul de ore disponibile!' );</script>" );
                     * }*/

                    //ore 200%
                    tipIntervalID = new SiemensTM.Classes.IntervaleAngajat(AngajatID).GetTipIntervalIDByName(Salaries.Business.SituatieLunaraAngajat.denumireOreLucrate[2]);;
                    valEroare     = new SiemensTM.Classes.IntervaleAngajat(AngajatID).DistribuieOreSuplimentareTip(ld.Data, tipIntervalID, x.NrOreSup100Proc, 0, 1);

                    //Reportare
                    sla.ReporteazaDiferentaCorectiTichete(lunaID);
                    sla.GenerareSituatieLunaraAngajat(this.GetCurrentMonth(), this.GetAngajator());

                    /*if ( valEroare == 1 )
                     * {
                     *      Response.Write( "<script>alert( 'Numarul de ore suplimentare 200% depaseste numarul de ore disponibile!' );</script>" );
                     * }*/
                }
            }
            ErrHandler.MyErrHandler.WriteError("InitializareLuna.ascx - click_initializareLuna() - end - generare situatii lunare");
            ErrHandler.MyErrHandler.WriteError("InitializareLuna.ascx - end - click_initializareLuna()");
        }
 /// <summary>
 /// Populeaza lista cu tichete
 /// </summary>
 public void PopulareGrid()
 {
     Salaries.Business.SituatieLunaraAngajat ist = new Salaries.Business.SituatieLunaraAngajat(AngajatID);
     listDataGrid.DataSource = ist.GetAllSituatiiLunareAngajatDataSet();
     listDataGrid.DataBind();
 }
        /// <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());
        }