Exemplo n.º 1
0
 /// <summary>
 /// Abilita le azioni per ogni entità.
 /// </summary>
 protected void AbilitaAzioni()
 {
     CicloGiorni((oreGiorno, suffissoData, giorno) =>
     {
         foreach (DataRowView azione in _entitaAzioni)
         {
             if (azione["Giorno"] is DBNull || azione["Giorno"].ToString().Contains(suffissoData))
             {
                 Range cellaAzione = new Range(_definedNames.GetRowByName(azione["SiglaEntita"]), _definedNames.GetColFromName(azione["SiglaAzione"], suffissoData));
                 _ws.Range[cellaAzione.ToString()].Interior.Pattern    = Excel.XlPattern.xlPatternNone;
                 _ws.Range[cellaAzione.ToString()].Interior.ColorIndex = 2;
             }
         }
     });
 }
Exemplo n.º 2
0
        public void AggiornaColori()
        {
            if (Workbook.Mercato != "MSD1")
            {
                SplashScreen.UpdateStatus("Aggiorno colori");

                DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView;
                categoriaEntita.RowFilter = "SiglaCategoria = '" + _siglaCategoria + "' AND IdApplicazione = " + Workbook.IdApplicazione;
                DataView informazioni = Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE].DefaultView;

                foreach (DataRowView entita in categoriaEntita)
                {
                    informazioni.RowFilter = "SiglaEntita = '" + entita["SiglaEntita"] + "' AND SiglaTipologiaInformazione <> 'CHECK' AND Visibile = '1' AND IdApplicazione = " + Workbook.IdApplicazione;
                    foreach (DataRowView info in informazioni)
                    {
                        object siglaEntita = info["SiglaEntitaRif"] is DBNull ? info["SiglaEntita"] : info["SiglaEntitaRif"];
                        Range  rng         = _definedNames.Get(siglaEntita, info["SiglaInformazione"], Date.SuffissoDATA1).Extend(colOffset: Date.GetOreGiorno(Workbook.DataAttiva));
                        string quarter     = Regex.Match(info["SiglaInformazione"].ToString(), @"Q\d").Value;
                        quarter = quarter == "" ? "Q1" : quarter;

                        var rif =
                            (from r in categoriaEntita.Table.AsEnumerable()
                             where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["SiglaEntita"].Equals(siglaEntita)
                             select new { SiglaEntita = r["Gerarchia"] is DBNull ? r["SiglaEntita"] : r["Gerarchia"], Riferimento = r["Riferimento"] }).First();

                        Range rngMercato = new Range(_definedNamesSheetMercato.GetRowByName(rif.SiglaEntita, "UM", "T") + 2, _definedNamesSheetMercato.GetColFromName("RIF" + rif.Riferimento, "PROGRAMMA" + quarter)).Extend(rowOffset: Date.GetOreGiorno(Workbook.DataAttiva));

                        for (int j = 0; j < rngMercato.Rows.Count; j++)
                        {
                            _ws.Range[rng.Columns[j].ToString()].Interior.ColorIndex = _wsMercato.Range[rngMercato.Rows[j].ToString()].DisplayFormat.Interior.ColorIndex;
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        public static Dictionary <string, int> GetGOTODictionary(string siglaEntita, string siglaInformazione, DefinedNames dn)
        {
            Dictionary <string, int> gotoDictionary = new Dictionary <string, int>();

            DataView definizioneOfferta = Workbook.Repository[DataBase.TAB.DEFINIZIONE_OFFERTA].DefaultView;

            definizioneOfferta.RowFilter = "SiglaEntita ='" + siglaEntita + "' AND SiglaInformazione = '" + siglaInformazione + "' AND IdMercato = " + Workbook.Mercato.Substring(2, Workbook.Mercato.Length - 2);

            if (definizioneOfferta.Count == 0)
            {
                return(null);
            }

            DataTable entitaInformazione = Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE];

            foreach (DataRowView offerta in definizioneOfferta)
            {
                string desInformazioneCombo = entitaInformazione.AsEnumerable()
                                              .Where(r => r["SiglaEntita"].Equals(offerta["SiglaEntita"]) &&
                                                     (r["SiglaEntitaRif"] is DBNull || r["SiglaEntitaRif"].Equals(offerta["SiglaEntitaCombo"])) &&
                                                     r["SiglaInformazione"].Equals(offerta["SiglaInformazioneCombo"]))
                                              .Select(r => r["DesInformazione"].ToString())
                                              .FirstOrDefault();

                object entitaCalcolo = offerta["SiglaEntitaCalcolo"] is DBNull ? offerta["SiglaEntitaCombo"] : offerta["SiglaEntitaCalcolo"];
                object infoCalcolo   = offerta["SiglaInformazioneCalcolo"] is DBNull ? offerta["SiglaInformazioneCombo"] : offerta["SiglaInformazioneCalcolo"];

                gotoDictionary.Add(desInformazioneCombo, dn.GetRowByName(entitaCalcolo, infoCalcolo));
            }

            return(gotoDictionary);
        }
Exemplo n.º 4
0
Arquivo: Sheet.cs Projeto: fberga/Iren
        public static Range[] GetRangeGiornoGas(DateTime giorno, DataRowView info, DefinedNames definedNames)
        {
            int row = definedNames.GetRowByName(info["SiglaEntita"], info["SiglaInformazione"], Date.GetSuffissoData(giorno));

            int gasDayStart    = TimeZone.CurrentTimeZone.IsDaylightSavingTime(giorno) ? 7 : 6;
            int remainingHours = 24 - Date.GetOreGiorno(giorno) + gasDayStart;

            Range rng1 = new Range(row, definedNames.GetColData1H1() + gasDayStart, 1, Date.GetOreGiorno(giorno) - gasDayStart);
            Range rng2 = new Range(row + 1, definedNames.GetColData1H1(), 1, remainingHours);

            return(new Range[] { rng1, rng2 });
        }
Exemplo n.º 5
0
        protected override bool EsportaAzioneInformazione(object siglaEntita, object siglaAzione, object desEntita, object desAzione, DateTime dataRif, string[] mercati)
        {
            DataView entitaAzione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE].DefaultView;

            entitaAzione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione = '" + siglaAzione + "' AND IdApplicazione = " + Workbook.IdApplicazione;
            if (entitaAzione.Count == 0)
            {
                return(false);
            }

            switch (siglaAzione.ToString())
            {
            case "MAIL":
                //carico i path di export
                List <UserConfigElement> cfgPaths = new List <UserConfigElement>();

                var cfgPath = Workbook.GetUsrConfigElement("pathExportFileFMS");
                cfgPaths.Add(cfgPath);
                cfgPath = Workbook.GetUsrConfigElement("pathExportFileXSD");
                cfgPaths.Add(cfgPath);
                cfgPath = Workbook.GetUsrConfigElement("pathExportFileRS");
                cfgPaths.Add(cfgPath);

                //verifico che siano tutti raggiungibili
                foreach (var p in cfgPaths)
                {
                    string path = PreparePath(p);
                    if (!Directory.Exists(path))
                    {
                        System.Windows.Forms.MessageBox.Show(p.Desc + " '" + path + "' non raggiungibile.", Simboli.NomeApplicazione + " - ERRORE!!!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);

                        return(false);
                    }
                }

                Globals.ThisWorkbook.Application.ScreenUpdating = false;

                var oldActiveWindow = Globals.ThisWorkbook.Application.ActiveWindow;
                Globals.ThisWorkbook.Worksheets[Workbook.Mercato].Activate();

                Range rng = new Range(_defNamesMercato.GetRowByName(siglaEntita, "DATA"), 1, Date.GetOreGiorno(Workbook.DataAttiva) + 5, _defNamesMercato.GetLastCol());

                bool result = InviaMail(Workbook.Mercato, siglaEntita, rng);

                oldActiveWindow.Activate();

                Globals.ThisWorkbook.Application.ScreenUpdating = true;
                return(result);
            }

            return(true);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Aggiunge la funzione ottimo per l'entità da ottimizzare.
        /// </summary>
        /// <param name="siglaEntita">Entità da ottimizzare.</param>
        protected virtual void AddOpt(object siglaEntita)
        {
            _entitaInformazioni.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaTipologiaInformazione = 'OTTIMO' AND IdApplicazione = " + Workbook.IdApplicazione;

            if (_entitaInformazioni.Count > 0)
            {
                object siglaEntitaInfo = _entitaInformazioni[0]["SiglaEntitaRif"] is DBNull ? _entitaInformazioni[0]["SiglaEntita"] : _entitaInformazioni[0]["SiglaEntitaRif"];
                Range  rng             = new Range(_definedNames.GetRowByName(siglaEntitaInfo, _entitaInformazioni[0]["SiglaInformazione"]), _definedNames.GetFirstCol());
                try { Workbook.WB.Names.Item("WBMAX").Delete(); }
                catch { }
                double width = Workbook.Sheets[_sheet].Range[rng.ToString()].ColumnWidth;
                Workbook.Application.Run("wbBest", "'" + _sheet + "'!" + rng.ToString(), "Maximize");
                Workbook.Sheets[_sheet].Range[rng.ToString()].ColumnWidth = width;
            }
        }
Exemplo n.º 7
0
        private void RipristinaValoriDaRepositori()
        {
            DataTable dt  = Workbook.Repository[tableName : ALL_OLD_VALUE];
            DataTable dtm = Workbook.Repository[tableName : MODIFICA];

            DataRow[] drs;

            Sheet.Protected = false;

            foreach (DataRow dr in dt.Rows)
            {
                string data     = dr["Data"].ToString();
                string suffData = Date.GetSuffissoData(new DateTime(int.Parse(data.Substring(0, 4)), int.Parse(data.Substring(4, 2)), int.Parse(data.Substring(6, 2))));
                string suffOra  = Date.GetSuffissoOra(int.Parse(data.Substring(8, 2)));
                int    col      = _definedNames.GetColFromDate(suffData, suffOra);
                int    row      = _definedNames.GetRowByName(dr["SiglaEntita"].ToString() + Simboli.UNION[0] + dr["SiglaInformazione"].ToString());

                _ws.Cells[row, col].Value2 = dr["Valore"].ToString() == "0" ? "" : dr["Valore"];

                _ws.Cells[row, col].ClearComments();

                if (!dr["Commento"].Equals(""))
                {
                    _ws.Cells[row, col].AddComment(dr["Commento"]);
                }

                drs = dtm.Select("SiglaEntita = '" + dr["SiglaEntita"].ToString() + "' AND SiglaInformazione = '" +
                                 dr["SiglaInformazione"].ToString() + "' AND Data = '" +
                                 dr["Data"].ToString() + "'");
                if (drs.Count() > 0)
                {
                    dtm.Rows.Remove(drs.FirstOrDefault());
                }
            }

            Sheet.Protected = true;
            dt.Clear();
        }
Exemplo n.º 8
0
        protected override void ScriviCella(Excel.Worksheet ws, DefinedNames definedNames, object siglaEntita, DataRowView info, string suffissoData, string suffissoOra, object risultato, bool saveToDB, bool fromCarica)
        {
            base.ScriviCella(ws, definedNames, siglaEntita, info, suffissoData, suffissoOra, risultato, saveToDB, fromCarica);

            //se l'informazione è visibile la devo scrivere anche nei fogli dei mercati
            DataView informazioni = new DataView(Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE]);

            informazioni.RowFilter = "SiglaEntita = '" + siglaEntita + "' OR SiglaEntitaRif = '" + siglaEntita + "' AND SiglaInformazione = '" + info["SiglaInformazione"] + "' AND IdApplicazione = " + Workbook.IdApplicazione;
            bool visible = false;

            foreach (DataRowView r in informazioni)
            {
                if (r["Visibile"].Equals("1"))
                {
                    visible = true;
                }
            }

            if (visible)
            {
                DataTable entita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA];

                var rif =
                    (from r in entita.AsEnumerable()
                     where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["SiglaEntita"].Equals(siglaEntita)
                     select new { SiglaEntita = r["Gerarchia"] is DBNull ? r["SiglaEntita"] : r["Gerarchia"], Riferimento = r["Riferimento"] }).First();

                string quarter = Regex.Match(info["SiglaInformazione"].ToString(), @"Q\d").Value;
                quarter = quarter == "" ? "Q1" : quarter;

                Range rngMercato = new Range(_definedNamesSheetMercato.GetRowByName(rif.SiglaEntita, "UM", "T") + 2, _definedNamesSheetMercato.GetColFromName("RIF" + rif.Riferimento, "PROGRAMMA" + quarter));
                rngMercato.StartRow += (Date.GetOraFromSuffissoOra(suffissoOra) - 1);

                _wsMercato.Range[rngMercato.ToString()].Value = risultato;
            }
        }
Exemplo n.º 9
0
        public override void Range(object Sh, Excel.Range Target)
        {
            if (Workbook.CategorySheets.Contains(Target.Worksheet))
            {
                //Se la funzione scrive in altre celle, ricordarsi di disabilitare gli handler per la modifica delle celle
                //Workbook.WB.SheetChange -= Handler.StoreEdit;
                Workbook.RemoveStdStoreEdit();
                Workbook.WB.SheetChange -= this.Range;


                Excel.Worksheet ws        = Target.Worksheet;
                Excel.Worksheet wsMercato = Workbook.Sheets[Workbook.Mercato];

                bool wasProtected = wsMercato.ProtectContents;
                if (wasProtected)
                {
                    wsMercato.Unprotect(Workbook.Password);
                    ws.Unprotect(Workbook.Password);
                }

                DefinedNames definedNames        = new DefinedNames(ws.Name);
                DefinedNames definedNamesMercato = new DefinedNames(Workbook.Mercato);

                DataTable entita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA];

                string[] ranges = Target.Address.Split(',');

                foreach (string range in ranges)
                {
                    Range rng = new Range(range);

                    foreach (Range cell in rng.Cells)
                    {
                        string[] parts = definedNames.GetNameByAddress(cell.StartRow, cell.StartColumn).Split(Simboli.UNION[0]);

                        string siglaEntita       = parts[0];
                        string siglaInformazione = parts[1];
                        string suffissoData      = parts[2];
                        string suffissoOra       = parts[3];

                        var rif =
                            (from r in entita.AsEnumerable()
                             where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["SiglaEntita"].Equals(siglaEntita)
                             select new { SiglaEntita = r["Gerarchia"] is DBNull ? r["SiglaEntita"] : r["Gerarchia"], Riferimento = r["Riferimento"] }).First();

                        string quarter = Regex.Match(siglaInformazione, @"Q\d").Value;
                        quarter = quarter == "" ? "Q1" : quarter;

                        Range rngMercato = new Range(definedNamesMercato.GetRowByName(rif.SiglaEntita, "UM", "T") + 2, definedNamesMercato.GetColFromName("RIF" + rif.Riferimento, "PROGRAMMA" + quarter));
                        rngMercato.StartRow += (Date.GetOraFromSuffissoOra(suffissoOra) - 1);

                        wsMercato.Range[rngMercato.ToString()].Value  = ws.Range[cell.ToString()].Value;
                        ws.Range[cell.ToString()].Interior.ColorIndex = wsMercato.Range[rngMercato.ToString()].DisplayFormat.Interior.ColorIndex;
                    }
                }

                if (wasProtected)
                {
                    wsMercato.Protect(Workbook.Password);
                    ws.Protect(Workbook.Password);
                }

                //Se la funzione scrive in altre celle, ricordarsi di riabilitare gli handler per la modifica delle celle
                //Workbook.WB.SheetChange += Handler.StoreEdit;
                Workbook.AddStdStoreEdit();
                Workbook.WB.SheetChange += this.Range;
            }
        }
Exemplo n.º 10
0
        private void btnApplica_Click(object sender, EventArgs e)
        {
            Workbook.ScreenUpdating = false;
            Sheet.Protected         = false;

            btnApplica.Enabled = false;
            btnAnnulla.Enabled = false;
            btnMeteo.Enabled   = false;

            if (_toProcessDates.Count == 0)
            {
                MessageBox.Show("Non è stata selezionata alcuna data...", Simboli.NomeApplicazione, MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else if (treeViewUP.Nodes.OfType <TreeNode>().Where(n => n.Checked).ToArray().Length == 0)
            {
                MessageBox.Show("Non è stata selezionata alcuna unità...", Simboli.NomeApplicazione, MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                SplashScreen.Show();
                Workbook.Application.EnableEvents = false;
                Workbook.ScreenUpdating           = false;
                Workbook.Application.Calculation  = Excel.XlCalculation.xlCalculationManual;

                bool caricaOrGenera = false;
                bool loaded         = false;

                bool g_mp_mgp = false;

                DataView entitaProprieta = Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA].DefaultView;

                ThroughAllNodes(treeViewAzioni.Nodes, nodoAzione =>
                {
                    if (loaded && Regex.Match(nodoAzione.Name, @"\w[^\d]+").Value == "GENERA")
                    {
                        Workbook.Application.CalculateFull();
                        Workbook.ScreenUpdating = false;
                        loaded = false;
                    }

                    if (nodoAzione.Checked && nodoAzione.Nodes.Count == 0)
                    {
                        TreeNode[] nodiEntita = treeViewUP.Nodes.OfType <TreeNode>().Where(node => node.Checked).ToArray();
                        _azioni.RowFilter     = "SiglaAzione = '" + nodoAzione.Name + "' AND IdApplicazione = " + Workbook.IdApplicazione;
                        if (!g_mp_mgp)
                        {
                            g_mp_mgp = nodoAzione.Name == "G_MP_MGP";
                        }

                        ThroughAllNodes(treeViewUP.Nodes, nodoEntita =>
                        {
                            foreach (DateTime date in _toProcessDates)
                            {
                                string suffissoData = Date.GetSuffissoData(date);

                                if (nodoEntita.Checked && nodoEntita.Nodes.Count == 0)
                                {
                                    entitaProprieta.RowFilter = "SiglaEntita = '" + nodoEntita.Name + "' AND SiglaProprieta LIKE '%GIORNI_STRUTTURA' AND IdApplicazione = " + Workbook.IdApplicazione;
                                    int intervalloGiorni      = Struct.intervalloGiorni;
                                    if (entitaProprieta.Count > 0)
                                    {
                                        intervalloGiorni = int.Parse("" + entitaProprieta[0]["Valore"]);
                                    }

                                    if (date <= Workbook.DataAttiva.AddDays(intervalloGiorni))
                                    {
                                        string nomeFoglio = DefinedNames.GetSheetName(nodoEntita.Name);
                                        bool presente;

                                        DataView entitaAzione  = new DataView(Workbook.Repository[DataBase.TAB.ENTITA_AZIONE]);
                                        entitaAzione.RowFilter = "SiglaEntita = '" + nodoEntita.Name + "' AND SiglaAzione = '" + nodoAzione.Name + "' AND IdApplicazione = " + Workbook.IdApplicazione;

                                        if (entitaAzione.Count > 0 && (entitaAzione[0]["Giorno"] is DBNull || entitaAzione[0]["Giorno"].ToString().Contains(Date.GetSuffissoData(date))))
                                        {
                                            SplashScreen.UpdateStatus("[" + date.ToShortDateString() + "] " + nodoAzione.Parent.Text + " " + nodoAzione.Text + ": " + nodoEntita.Text);

                                            //string[] mercati = null;
                                            string[] mercati = null;
                                            if (Workbook.Repository.Applicazione["ModificaDinamica"].Equals("1"))
                                            {
                                                mercati = groupMercati.Controls
                                                          .OfType <CheckBox>()
                                                          .Where(c => c.Checked)
                                                          .Select(c => Regex.Match(c.Text, @"\d+").Value)
                                                          .OrderBy(s => s)
                                                          .ToArray();
                                            }
                                            else if (Workbook.IdApplicazione == 18)
                                            {
                                                mercati = new string[] { Regex.Match(Workbook.Mercato, @"\d+").Value };
                                            }

                                            switch (Regex.Match(nodoAzione.Parent.Name, @"\w[^\d]+").Value)
                                            {
                                            case "CARICA":
                                                presente = _carica.AzioneInformazione(nodoEntita.Name, nodoAzione.Name, nodoAzione.Parent.Name, date, mercati);
                                                _r.AggiornaRiepilogo(nodoEntita.Name, nodoAzione.Name, presente, date);
                                                caricaOrGenera = true;
                                                loaded         = true;
                                                break;

                                            case "GENERA":
                                                presente = _carica.AzioneInformazione(nodoEntita.Name, nodoAzione.Name, nodoAzione.Parent.Name, date, mercati);
                                                _r.AggiornaRiepilogo(nodoEntita.Name, nodoAzione.Name, presente, date);
                                                caricaOrGenera = true;
                                                break;

                                            case "ESPORTA":
                                                presente = _esporta.RunExport(nodoEntita.Name, nodoAzione.Name, nodoEntita.Text, nodoAzione.Text, date, mercati);
                                                if (presente)
                                                {
                                                    _r.AggiornaRiepilogo(nodoEntita.Name, nodoAzione.Name, presente, date);
                                                }
                                                break;
                                            }

                                            if (_azioni[0]["Relazione"] != DBNull.Value && Struct.visualizzaRiepilogo)
                                            {
                                                string[] azioneRelazione = _azioni[0]["Relazione"].ToString().Split(';');

                                                DefinedNames definedNames = new DefinedNames("Main");

                                                foreach (string relazione in azioneRelazione)
                                                {
                                                    _azioni.RowFilter = "SiglaAzione = '" + relazione + "' AND IdApplicazione = " + Workbook.IdApplicazione;

                                                    Range rng = new Range(definedNames.GetRowByName(nodoEntita.Name), definedNames.GetColFromName(relazione, suffissoData));
                                                    if (Workbook.Main.Range[rng.ToString()].Interior.ColorIndex != 2)
                                                    {
                                                        Workbook.Main.Range[rng.ToString()].Value = "RI" + _azioni[0]["Gerarchia"];
                                                        Style.RangeStyle(Workbook.Main.Range[rng.ToString()], fontSize: 8, bold: true, foreColor: 3, backColor: 6, align: Excel.XlHAlign.xlHAlignCenter);
                                                    }
                                                }
                                                _azioni.RowFilter = "SiglaAzione = '" + nodoAzione.Name + "' AND IdApplicazione = " + Workbook.IdApplicazione;
                                            }
                                        }
                                    }
                                }
                            }
                        });
                        switch (Regex.Match(nodoAzione.Parent.Name, @"\w[^\d]+").Value)
                        {
                        case "CARICA":
                            Workbook.InsertLog(Core.DataBase.TipologiaLOG.LogCarica, "Carica: " + nodoAzione.Text);
                            break;

                        case "GENERA":
                            Workbook.InsertLog(Core.DataBase.TipologiaLOG.LogGenera, "Genera: " + nodoAzione.Text);
                            break;

                        case "ESPORTA":
                            Workbook.InsertLog(Core.DataBase.TipologiaLOG.LogEsporta, "Esporta: " + nodoAzione.Text);
                            break;
                        }
                    }
                });

                Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationAutomatic;

                if (caricaOrGenera)
                {
                    SplashScreen.UpdateStatus("Salvo su DB");
                    Sheet.SalvaModifiche();
                    DataBase.SalvaModificheDB();
                    if (Workbook.IdApplicazione == 5 && g_mp_mgp)
                    {
                        SplashScreen.UpdateStatus("Aggiorno rendimenti");
                        Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationManual;

                        ThroughAllNodes(treeViewUP.Nodes, nodoEntita =>
                        {
                            if (nodoEntita.Checked && nodoEntita.Nodes.Count == 0)
                            {
                                _categoriaEntita.RowFilter = "SiglaEntita = '" + nodoEntita.Name + "' AND IdApplicazione = " + Workbook.IdApplicazione;

                                if (_categoriaEntita[0]["SiglaCategoria"].Equals("IREN_60T"))
                                {
                                    foreach (DateTime date in _toProcessDates)
                                    {
                                        _carica.AzioneInformazione(nodoEntita.Name, "RENDIMENTO", "CARICA", date, null);
                                    }
                                }
                            }
                        });
                        Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationAutomatic;
                        SplashScreen.UpdateStatus("Salvo su DB");
                        Sheet.SalvaModifiche();
                        DataBase.SalvaModificheDB();
                    }
                }

                Workbook.Application.EnableEvents = true;
                Workbook.ScreenUpdating           = true;
                SplashScreen.Close();
            }

            btnApplica.Enabled = true;
            btnAnnulla.Enabled = true;
            btnMeteo.Enabled   = true;

            Sheet.Protected         = true;
            Workbook.ScreenUpdating = true;
        }
Exemplo n.º 11
0
        /// <summary>
        /// Formatta il blocco entità.
        /// </summary>
        /// <param name="siglaEntita">Sigla entità.</param>
        /// <param name="desEntita">Descrizione.</param>
        /// <param name="codiceRUP">Codice RUP.</param>
        protected void FormattaBloccoEntita(object siglaEntita, object desEntita, object codiceRUP)
        {
            Range rngMercatoPrec = new Range();
            //Titolo
            Range rng = new Range(_definedNames.GetRowByName(siglaEntita, "T"), _struttura.colBlock, 1, 10);

            Style.RangeStyle(_ws.Range[rng.ToString()], fontSize: 12, merge: true, bold: true, align: Excel.XlHAlign.xlHAlignCenter, borders: "[top:medium,right:medium,bottom:medium,left:medium]");
            _ws.Range[rng.ToString()].Value     = "PROGRAMMA A 15 MINUTI " + desEntita;
            _ws.Range[rng.ToString()].RowHeight = 25;

            //Data
            rng = new Range(_definedNames.GetRowByName(siglaEntita, "DATA"), _struttura.colBlock, 1, 5);
            Style.RangeStyle(_ws.Range[rng.ToString()], fontSize: 10, bold: true, align: Excel.XlHAlign.xlHAlignCenter, borders: "[top:medium,right:medium,bottom:medium,left:medium,insidev:medium]", numberFormat: "dd/MM/yyyy");
            _ws.Range[rng.ToString()].RowHeight        = 18;
            _ws.Range[rng.Columns[0].ToString()].Value = "Data";
            _ws.Range[rng.Columns[1, 3].ToString()].Merge();
            _ws.Range[rng.Columns[1].ToString()].Value = Workbook.DataAttiva;
            _ws.Range[rng.Columns[4].ToString()].Value = _mercato;

            //Tabella
            DataTable categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA];
            DataView  informazioni    = Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE].DefaultView;

            List <DataRow> entitaRif =
                (from r in categoriaEntita.AsEnumerable()
                 where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["Gerarchia"].Equals(siglaEntita)
                 select r).ToList();

            bool hasEntitaRif = entitaRif.Count > 0;
            int  numEntita    = Math.Max(entitaRif.Count, 1);

            rng = new Range(_definedNames.GetRowByName(siglaEntita, "UM", "T"), _struttura.colBlock, 1, 5 * numEntita);
            for (int i = 0; i < numEntita; i++)
            {
                informazioni.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND Visibile = '1' " + (hasEntitaRif ? "AND SiglaEntitaRif = '" + entitaRif[i]["SiglaEntita"] + "'" : "") + " AND IdApplicazione = " + _appID;

                //range grande come tutta la tabella
                rng = new Range(_definedNames.GetRowByName(siglaEntita, "UM", "T"), _definedNames.GetColFromName("RIF" + (i + 1), "PROGRAMMAQ1") - 1, Date.GetOreGiorno(Workbook.DataAttiva) + 2, 5);

                Style.RangeStyle(_ws.Range[rng.ToString()], borders: "[top:medium,right:medium,bottom:medium,left:medium,insideH:thin,insideV:thin]", align: Excel.XlHAlign.xlHAlignCenter, numberFormat: "general");
                Style.RangeStyle(_ws.Range[rng.Rows[1, rng.Rows.Count - 1].Columns[0].ToString()], backColor: 15, bold: true, align: Excel.XlHAlign.xlHAlignLeft);
                Style.RangeStyle(_ws.Range[rng.Rows[0].ToString()], backColor: 15, bold: true, fontSize: 11);
                Style.RangeStyle(_ws.Range[rng.Rows[1].ToString()], backColor: 15, bold: true);
                _ws.Range[rng.Rows[0].Columns[1, rng.Columns.Count - 1].ToString()].Merge();
                if (hasEntitaRif)
                {
                    _ws.Range[rng.Rows[0].ToString()].Value = new object[] { "UM", entitaRif[i]["CodiceRUP"] is DBNull ? entitaRif[i]["DesEntita"] : entitaRif[i]["CodiceRUP"] }
                }
                ;
                else
                {
                    _ws.Range[rng.Rows[0].ToString()].Value = new object[] { "UM", codiceRUP is DBNull ? desEntita : codiceRUP }
                };

                for (int h = 1; h <= Date.GetOreGiorno(Workbook.DataAttiva); h++)
                {
                    _ws.Range[rng.Columns[0].Rows[h + 1].ToString()].Value = "Ora " + h;
                }

                var isOrario = informazioni
                               .OfType <DataRowView>()
                               .Any(r => r["SiglaInformazione"].ToString().StartsWith("PROGRAMMA_"));

                if (!isOrario)
                {
                    for (int j = 0; j < 4; j++)
                    {
                        _ws.Range[rng.Rows[1].Columns[j + 1].ToString()].Value = 15 * j + "-" + 15 * (j + 1);
                    }
                }
                else
                {
                    _ws.Range[rng.Cells[1, 1].ToString()].Value = "0-60";
                }

                //TODO controllare che non ci siano problemi
                if (_mercato != "MSD1")
                {
                    string mercatoPrec = Simboli.GetMercatoPrec(_mercato);
                    //calcolo il range nel foglio del mercato precedente (non è detto che siano nella stessa posizione (anche se non ha senso che non lo siano...))
                    rngMercatoPrec = new Range(_definedNamesMercatoPrec.GetRowByName(siglaEntita, "UM", "T"), _definedNamesMercatoPrec.GetColFromName("RIF" + (i + 1), "PROGRAMMAQ1") - 1, Date.GetOreGiorno(Workbook.DataAttiva) + 2, 5);

                    Excel.FormatCondition condGreater = _ws.Range[rng.Rows[2, rng.Rows.Count - 1].Columns[1, 4].ToString()].FormatConditions.Add(Excel.XlFormatConditionType.xlExpression, Formula1: "=" + rng.Cells[2, 1] + " > '" + mercatoPrec + "'!" + rngMercatoPrec.Cells[2, 1]);
                    condGreater.Interior.ColorIndex = Struct.COLORE_VARIAZIONE_POSITIVA;

                    Excel.FormatCondition condLess = _ws.Range[rng.Rows[2, rng.Rows.Count - 1].Columns[1, 4].ToString()].FormatConditions.Add(Excel.XlFormatConditionType.xlExpression, Formula1: "=" + rng.Cells[2, 1] + " < '" + mercatoPrec + "'!" + rngMercatoPrec.Cells[2, 1]);
                    condLess.Interior.ColorIndex = Struct.COLORE_VARIAZIONE_NEGATIVA;
                }
            }
        }