Example #1
0
    public static int CheckAssenze(string sMese, string sAnno, string persons_id, ref List <CheckAnomalia> ListaAnomalie)
    {
        // Funzione ritorna
        // 0 = nessun problema
        // 1 = warning
        // 2 = errore
        // La lista di oggetti contiene le anomalie secondo la struttura della class CheckAnomalia
        int iRet;

        ListaAnomalie.Clear();

        string dFirst = ASPcompatility.FormatDateDb("01/" + sMese.PadLeft(2, '0') + "/" + sAnno);
        string dLast  = ASPcompatility.FormatDateDb(DateTime.DaysInMonth(Convert.ToInt32(sAnno), Convert.ToInt32(sMese)).ToString() + "/" + sMese + "/" + sAnno);

        // selezione se ce ne sono le ore di richiesta assenza in stato da approvare
        DataTable dtAssenze = Database.GetData("Select FORMAT(a.date,'dd/MM/yyyy') as date, a.Projects_id, b.ProjectCode, b.Name as ProjectName from Hours as a JOIN Projects as b ON b.Projects_id = a.Projects_id WHERE ApprovalStatus='" + MyConstants.WF_REQUEST + "' AND Persons_id=" + persons_id + " AND date >= " + dFirst + " AND date <= " + dLast, null /* TODO Change to default(_) if this is not a reference type */);

        iRet = dtAssenze.Rows.Count; // numero anomalie

        // cicla sulle assenze non approvate
        foreach (DataRow rs in dtAssenze.Rows)
        {
            CheckAnomalia a = new CheckAnomalia();
            a.Data        = Convert.ToDateTime(rs["date"].ToString());
            a.Descrizione = "Richiesta assenza da approvare";
            a.ProjectName = rs["ProjectName"].ToString();

            ListaAnomalie.Add(a);
        }
        return(iRet);
    }
Example #2
0
    public static int CheckTicketHomeOffice(string sMese, string sAnno, string persons_id, ref List <CheckAnomalia> ListaAnomalie)
    {
        // Funzione ritorna
        // 0 = nessun problema
        // 1 = warning
        // 2 = errore
        // La lista di oggetti contiene le anomalie secondo la struttura della class CheckAnomalia

        int iRet = 0;

        ListaAnomalie.Clear();

        string dFirst = ASPcompatility.FormatDateDb("01/" + sMese.PadLeft(2, '0') + "/" + sAnno);
        string dLast  = ASPcompatility.FormatDateDb(DateTime.DaysInMonth(Convert.ToInt32(sAnno), Convert.ToInt32(sMese)).ToString() + "/" + sMese + "/" + sAnno);

        // carica ticket caricati nel mese
        DataTable dtTicket = Database.GetData("Select FORMAT(date,'dd/MM/yyyy') as date from Expenses where persons_id=" + persons_id + " AND TipoBonus_id<>'0' AND date >= " + dFirst + " AND date <= " + dLast, null /* TODO Change to default(_) if this is not a reference type */);

        DataTable dtHomeOffice = Database.GetData("SELECT FORMAT(date,'dd/MM/yyyy') AS date " +
                                                  " FROM Hours AS a " +
                                                  " WHERE LocationDescription LIKE '%" + ConfigurationManager.AppSettings["HOME_OFFICE"] + "%'  AND " +
                                                  " persons_id=" + persons_id + " AND date >= " + dFirst + " AND date <= " + dLast, null);

        // cicla sui ticket, controlla ticket caricati su giorni HOME OFFICE
        foreach (DataRow i in dtTicket.Rows)
        {
            // se il giorno è in Home Office alza un'anomalia
            if (dtHomeOffice.Select("date = '" + i["date"] + "'").Length != 0)
            {
                // Alza anomalia e carica lista
                iRet = 1;

                CheckAnomalia a = new CheckAnomalia();
                a.Data        = Convert.ToDateTime(i["date"]);
                a.Tipo        = "M";
                a.Descrizione = "Ticket caricato su giornata in HOME OFFICE";

                ListaAnomalie.Add(a);
            }
        }

        return(iRet);
    }
Example #3
0
    public static int CheckSpese(string sMese, string sAnno, string persons_id, ref List <CheckAnomalia> ListaAnomalie)
    {
        // Funzione ritorna
        // 0 = nessun problema
        // 1 = warning
        // 2 = errore
        // La lista di oggetti contiene le anomalie secondo la struttura della class CheckAnomalia
        int iRet;

        ListaAnomalie.Clear();

        string dFirst = ASPcompatility.FormatDateDb("01/" + sMese.PadLeft(2, '0') + "/" + sAnno);
        string dLast  = ASPcompatility.FormatDateDb(DateTime.DaysInMonth(Convert.ToInt32(sAnno), Convert.ToInt32(sMese)).ToString() + "/" + sMese + "/" + sAnno);

        // carica spese nel mese della persona per il controllo
        DataTable dtProgettiMese = Database.GetData("Select FORMAT(date,'dd/MM/yyyy') as date, Projects_id from Hours WHERE Persons_id=" + persons_id + " AND date >= " + dFirst + " AND date <= " + dLast, null /* TODO Change to default(_) if this is not a reference type */);

        // seleziona tutte le spese del mese, considera le spese standard e i rimborsi trasferta
        DataTable dt = Database.GetData("SELECT a.Projects_id, Amount, date, b.ProjectCode, c.ExpenseCode, c.UnitOfMeasure FROM Expenses As a " + " JOIN Projects As b On b.Projects_id  = a.Projects_id " + " JOIN ExpenseType As c On c.ExpenseType_id  = a.ExpenseType_Id " + " WHERE ( a.TipoBonus_Id = 0 Or a.TipoBonus_Id = 1 ) And Persons_id=" + persons_id + " And Date >= " + dFirst + " And Date <= " + dLast + " ORDER BY date", null /* TODO Change to default(_) if this is not a reference type */);

        // se non ci sono stati carichi esce con errore
        if (dtProgettiMese.Rows.Count == 0)
        {
            return(1);
        }

        DataRow[] drRows;
        string    sdata;

        if ((dt != null) & dt.Rows.Count > 0)
        {
            // cicla sulla spese del mese
            foreach (DataRow rs in dt.Rows)
            {
                sdata = string.Format("{0:dd/MM/yyyy}", rs["date"]);

                // verifica se esistono ore caricate per lo stesso progetto

                drRows = null;
                drRows = dtProgettiMese.Select("date = '" + sdata + "' AND Projects_id = " + rs["Projects_id"].ToString());

                if (drRows.Count() == 0)
                {
                    CheckAnomalia a = new CheckAnomalia();
                    a.Data          = Convert.ToDateTime(rs["date"].ToString());
                    a.Tipo          = "M";
                    a.Descrizione   = "Spesa caricata su commessa non presente nel giorno";
                    a.ExpenseCode   = rs["ExpenseCode"].ToString();
                    a.ProjectCode   = rs["ProjectCode"].ToString();
                    a.UnitOfMeasure = rs["UnitOfMeasure"].ToString();
                    a.Amount        = Convert.ToDouble(rs["Amount"].ToString());

                    ListaAnomalie.Add(a);
                }
            }
        }

        if (ListaAnomalie.Count > 0)
        {
            iRet = 1;
        }
        else
        {
            iRet = 0;
        }

        return(iRet);
    }
Example #4
0
    public static int CheckTicketAssenti(string sMese, string sAnno, string persons_id, ref List <CheckAnomalia> ListaAnomalie)
    {
        // Funzione ritorna
        // 0 = nessun problema
        // 1 = warning
        // 2 = errore
        // La lista di oggetti contiene le anomalie secondo la struttura della class CheckAnomalia

        int    f;
        string sDate;

        DataRow[] drRow;

        int iRet = 0;

        ListaAnomalie.Clear();

        string dFirst = ASPcompatility.FormatDateDb("01/" + sMese.PadLeft(2, '0') + "/" + sAnno);
        string dLast  = ASPcompatility.FormatDateDb(DateTime.DaysInMonth(Convert.ToInt32(sAnno), Convert.ToInt32(sMese)).ToString() + "/" + sMese + "/" + sAnno);

        // carica ticket caricati nel mese
        DataTable dtTicket = Database.GetData("Select FORMAT(date,'dd/MM/yyyy') as date from Expenses where persons_id=" + persons_id + " AND TipoBonus_id<>'0' AND date >= " + dFirst + " AND date <= " + dLast, null /* TODO Change to default(_) if this is not a reference type */);

        // carica date in cui sono presenti ferie / malattie / festività
        DataTable dtFerie = Database.GetData("SELECT FORMAT(date,'dd/MM/yyyy') AS date " +
                                             " FROM Hours AS a " +
                                             " INNER JOIN Projects AS b ON b.projects_id = a.projects_id " +
                                             " WHERE b.ProjectCode IN " + ConfigurationManager.AppSettings["CODICI_FERIE"] + "  AND " +
                                             " persons_id=" + persons_id + " AND date >= " + dFirst + " AND date <= " + dLast, null);

        DataTable dtHomeOffice = Database.GetData("SELECT FORMAT(date,'dd/MM/yyyy') AS date " +
                                                  " FROM Hours AS a " +
                                                  " WHERE LocationDescription LIKE '%" + ConfigurationManager.AppSettings["HOME_OFFICE"] + "%'  AND " +
                                                  " persons_id=" + persons_id + " AND date >= " + dFirst + " AND date <= " + dLast, null);

        //dtFerie.PrimaryKey = new DataColumn[] { dtFerie.Columns["hours_id"] };

        // cicla sui giorni del mese, controllo giorni senza ticket
        for (f = 1; f <= DateTime.DaysInMonth(Convert.ToInt32(sAnno), Convert.ToInt32(sMese)); f++)
        {
            sDate = f.ToString().PadLeft(2, '0') + "/" + sMese.PadLeft(2, '0') + "/" + sAnno;

            // giorno lavorativo

            if ((int)Convert.ToDateTime(sDate).DayOfWeek != 6 & (int)Convert.ToDateTime(sDate).DayOfWeek != 0)
            {
                // controlla che non sia festivo e non sia una giornata di Smart Working
                if (!MyConstants.DTHoliday.Rows.Contains(sDate) && (dtFerie.Rows.Count == 0 || dtFerie.Select("date = '" + sDate + "'").Length == 0) &&
                    (dtHomeOffice.Select("date = '" + sDate + "'").Length == 0))
                {
                    // controlla che sia caricato un ticket
                    drRow = null;
                    drRow = dtTicket.Select("date = '" + sDate + "'");

                    if (drRow.Count() == 0)
                    {
                        // Alza anomalia e carica lista
                        iRet = 1;

                        CheckAnomalia a = new CheckAnomalia();
                        a.Data        = Convert.ToDateTime(sDate);
                        a.Tipo        = "M";
                        a.Descrizione = "Ticket o rimborso assente";

                        ListaAnomalie.Add(a);
                    }
                }
            }
        }

        return(iRet);
    }