/// <summary> /// Creaza lista cu tipuri de intervale /// </summary> /// <param name="listObj"></param> /// <param name="AngajatID"></param> /// <param name="SelectedDate"></param> /// <param name="addComponent"></param> public void CreateTipIntervaleSelectBox(DropDownList listObj, long AngajatID, DateTime SelectedDate, bool addComponent) { TipuriIntervale tipuri = new TipuriIntervale(); DataSet ds = tipuri.GetTipuriIntervale(); DataTable myTable = new DataTable(); myTable = ds.Tables[0]; listObj.Items.Clear(); for (int i = 0; i < myTable.Rows.Count; i++) { double nrOreLucrateSapt = new SiemensTM.Classes.IntervaleAngajat(AngajatID).GetNrOreLucrateSaptamanaByDataInside(Utilities.ConvertToShort(SelectedDate), int.Parse(myTable.Rows[i]["TipIntervalID"].ToString())); double valMax = int.Parse(new SiemensTM.Classes.TipuriIntervale().GetTipInterval(int.Parse(myTable.Rows[i]["TipIntervalID"].ToString())).Tables[0].Rows[0]["NrMaximOreSapt"].ToString()); if (nrOreLucrateSapt < valMax || !addComponent) { DataRow myRow = myTable.Rows[i]; ListItem myItem = new ListItem(myRow["Denumire"].ToString(), myRow["TipIntervalID"].ToString()); listObj.Items.Add(myItem); } } }
/// <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()"); }