예제 #1
0
파일: Aggiorna.cs 프로젝트: fberga/Iren
        private void AggiornaCmbStagioni()
        {
            //seleziono la stagione nella combo
            string name = DefinedNames.GetSheetName("CT_TORINO");

            if (name != "")
            {
                Excel.Worksheet ws           = Workbook.Sheets[name];
                DefinedNames    definedNames = new DefinedNames(ws.Name);
                Range           rng          = definedNames.Get("CT_TORINO", "STAGIONE", Date.SuffissoDATA1, Date.GetSuffissoOra(1));

                bool enabledEvents = Workbook.Application.EnableEvents;
                if (enabledEvents)
                {
                    Workbook.Application.EnableEvents = false;
                }

                ((RibbonDropDown)Globals.Ribbons.GetRibbon <ToolsExcelRibbon>().Controls["cmbStagione"]).SelectedItemIndex = (int)(ws.Range[rng.ToString()].Value ?? 1) - 1;

                if (enabledEvents)
                {
                    Workbook.Application.EnableEvents = true;
                }
            }
        }
예제 #2
0
        private void btnImporta_Click(object sender, EventArgs e)
        {
            SplashScreen.Show();
            Workbook.ScreenUpdating          = false;
            Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationManual;
            Sheet.Protected = false;

            foreach (var c in _commonInfo)
            {
                if (tvEntitaInformazioni.Nodes[c.SiglaEntita].Checked)
                {
                    SplashScreen.UpdateStatus("Importo dati per " + c.DesEntita);
                    string          foglio       = DefinedNames.GetSheetName(c.SiglaEntita);
                    Excel.Worksheet ws           = Workbook.Sheets[foglio];
                    DefinedNames    definedNames = new DefinedNames(foglio);

                    foreach (var kv in c.Info)
                    {
                        if (tvEntitaInformazioni.Nodes[c.SiglaEntita].Nodes[kv.Key.ToString()].Checked)
                        {
                            var values =
                                from r in _tabellaImportXML.AsEnumerable()
                                where r["SiglaEntita"].Equals(c.SiglaEntita) && r["SiglaInformazione"].Equals(kv.Key) &&
                                (r["Data"].ToString().Substring(0, 8).CompareTo(Workbook.DataAttiva.ToString("yyyyMMdd")) >= 0)
                                select new { Data = r["Data"], Valore = r["Valore"] };

                            foreach (var val in values)
                            {
                                string suffissoData = Date.GetSuffissoData(val.Data.ToString());
                                string suffissoOra  = Date.GetSuffissoOra(val.Data);

                                Range rng = new Range();
                                if (definedNames.TryGet(out rng, c.SiglaEntita, kv.Key, suffissoData, suffissoOra))
                                {
                                    object tmpVal = null;
                                    double conv;
                                    if (Double.TryParse(val.Valore.ToString(), out conv))
                                    {
                                        tmpVal = conv;
                                    }
                                    else
                                    {
                                        tmpVal = val.Valore;
                                    }

                                    ws.Range[rng.ToString()].Value = tmpVal;
                                }
                            }
                        }
                    }
                }
            }

            Sheet.Protected = true;
            Workbook.Application.Calculation = Excel.XlCalculation.xlCalculationAutomatic;
            SplashScreen.Close();
            Workbook.ScreenUpdating = true;
        }
예제 #3
0
        /// <summary>
        /// Funizione ereditata dall'interfaccia che viene richiamata nella parte base dell'algoritmo per eseguire l'ottimizzazione.
        /// </summary>
        /// <param name="siglaEntita">Entità da ottimizzare.</param>
        public virtual void EseguiOttimizzazione(object siglaEntita)
        {
            try
            {
                Workbook.Application.Run("wbSetGeneralOptions", Arg3: "120", Arg13: "1");

                _sheet        = DefinedNames.GetSheetName(siglaEntita);
                _definedNames = new DefinedNames(_sheet, DefinedNames.InitType.CheckNaming);

                string desEntita =
                    (from r in Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].AsEnumerable()
                     where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["SiglaEntita"].Equals(siglaEntita)
                     select r["DesEntita"].ToString()).First();

                _entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta LIKE '%GIORNI_STRUTTURA' AND IdApplicazione = " + Workbook.IdApplicazione;
                if (_entitaProprieta.Count > 0)
                {
                    _dataFine = Workbook.DataAttiva.AddDays(int.Parse(_entitaProprieta[0]["Valore"].ToString()));
                }
                else
                {
                    _dataFine = Workbook.DataAttiva.AddDays(Struct.intervalloGiorni);
                }

                CheckObj chkObj = _definedNames.Checks.Where(chk => chk.SiglaEntita.Equals(siglaEntita)).FirstOrDefault();
                if (chkObj != null)
                {
                    Excel.Range rng = Workbook.Sheets[_sheet].Range[chkObj.Range.ToString()];

                    foreach (Excel.Range cell in rng.Cells)
                    {
                        if (cell.Value.Equals("ERRORE"))
                        {
                            SplashScreen.Close();
                            System.Windows.Forms.MessageBox.Show("Non è possibile ottimizzare l'UP selezionata perché sono presenti degli errori. Controllare i check!", Simboli.NomeApplicazione + " - ATTENZIONE!!!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
                            return;
                        }
                    }
                }

                OmitConstraints();
                AddAdjust(siglaEntita);
                AddConstraints(siglaEntita);
                AddOpt(siglaEntita);
                SplashScreen.Close();

                Execute(siglaEntita);
                DeleteExistingAdjust();

                Workbook.InsertLog(PSO.Core.DataBase.TipologiaLOG.LogGenera, "Eseguita ottimizzazione " + desEntita);
            }
            catch (Exception e)
            {
                SplashScreen.Close();
                Workbook.Application.ScreenUpdating = true;
                System.Windows.Forms.MessageBox.Show("Si è verificato un errore nel processo di ottimizzazione. Il messaggio dice '" + e.Message + "'", Simboli.NomeApplicazione + " - ERRORE!!!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
            }
        }
예제 #4
0
        public override bool AzioneInformazione(object siglaEntita, object siglaAzione, object azionePadre, DateTime giorno, string[] mercati, object parametro = null)
        {
            bool isGenera = azionePadre.Equals("GENERA");

            if (isGenera)
            {
                azionePadre = "CARICA";
            }

            bool o = base.AzioneInformazione(siglaEntita, siglaAzione, azionePadre, giorno, mercati, parametro);

            if (isGenera)
            {
                azionePadre = "GENERA";
            }

            //non ho fatto nulla, la connessione non si apre e l'azione padre è CARICA... rientro nel caso del caricamento da XML
            if (o == false && !DataBase.OpenConnection() && azionePadre.Equals("CARICA"))
            {
                //tipo file da caricare
                string    tf = siglaAzione.ToString();
                DataTable azioneInformazione = CaricaXML("pathExportFile" + tf, "formatoNomeFile" + tf, siglaEntita, tf) ?? new DataTable();

                if (azioneInformazione.Rows.Count == 0)
                {
                    DataBase.InsertApplicazioneRiepilogo(siglaEntita, siglaAzione, giorno, false);
                    return(false);
                }
                else
                {
                    string       sheet        = DefinedNames.GetSheetName(siglaEntita);
                    DefinedNames definedNames = new DefinedNames(sheet);

                    ScriviInformazione(siglaEntita, azioneInformazione.DefaultView, definedNames);
                    DataBase.InsertApplicazioneRiepilogo(siglaEntita, siglaAzione, giorno);
                }
            }

            DataBase.CloseConnection();
            string name = DefinedNames.GetSheetName(siglaEntita);
            Sheet  s    = new Sheet(Workbook.Sheets[name]);

            s.AggiornaColori();

            return(o);
        }
예제 #5
0
        public void AggiornaPrevisione(object siglaEntita)
        {
            DateTime dataFine = Workbook.DataAttiva.AddDays(Struct.intervalloGiorni);
            int      mainRow  = _definedNames.GetRowByName(Date.SuffissoDATA1);
            int      mainCol  = 0;

            DataView entitaInformazione = new DataView(Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE]);

            entitaInformazione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione;
            string nomeFoglio = DefinedNames.GetSheetName(siglaEntita);

            Excel.Worksheet ws           = Workbook.WB.Sheets[nomeFoglio];
            DefinedNames    definedNames = new DefinedNames(nomeFoglio, DefinedNames.InitType.Naming);

            //copio nel main il valore dei totali
            foreach (DataRowView info in entitaInformazione)
            {
                int col = definedNames.GetFirstCol();
                int row = definedNames.GetRowByNameSuffissoData(siglaEntita, info["SiglaInformazione"], Date.SuffissoDATA1);

                Array rngTotali = ws.Range[Range.GetRange(row, col + 25, Struct.intervalloGiorni)].Value as Array;

                int i = 1;
                for (DateTime giorno = Workbook.DataAttiva; giorno < dataFine; giorno = giorno.AddDays(1))
                {
                    Range[] rngGiornoGas = Sheet.GetRangeGiornoGas(giorno, info, definedNames);

                    Array primoGiorno   = ws.Range[rngGiornoGas[0].ToString()].Value as Array;
                    Array secondoGiorno = ws.Range[rngGiornoGas[1].ToString()].Value as Array;

                    if (!(primoGiorno.OfType <double>().Any() || secondoGiorno.OfType <double>().Any()))
                    {
                        rngTotali.SetValue(null, i, 1);
                    }

                    i++;
                }

                mainCol = _definedNames.GetColFromName(siglaEntita);
                Excel.Range rngMain = Workbook.Main.Range[Range.GetRange(mainRow, mainCol, Struct.intervalloGiorni)];
                rngMain.Value = rngTotali;
            }
        }
예제 #6
0
        /// <summary>
        /// Controlla da LocalDB se ho cambiato entità dal ciclo precedente. Se sì, aggiorno la sigla entità, il nome del foglio, la data fine ed inizializzo la struttra dei nomi con questi parametri. Tutti parametri sono passati per riferimento e servono nei passaggi successivi dell'algoritmo.
        /// </summary>
        /// <param name="info">La riga delle informazioni da cui prendere i dati</param>
        /// <param name="siglaEntita">La variabile su cui salvare la Sigla Entità</param>
        /// <param name="nomeFoglio">La variabile su cui salvare il nome del foglio</param>
        /// <param name="dataFine">La variabile su cui salvare la data fine</param>
        /// <param name="definedNames">La struttura dei nomi inizializzata sul nuovo foglio</param>
        private void Helper(DataRowView info, ref string siglaEntita, ref string nomeFoglio, ref DateTime dataFine, ref DefinedNames definedNames)
        {
            if (!info["SiglaEntita"].Equals(siglaEntita))
            {
                siglaEntita = info["SiglaEntita"].ToString();
                _entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta LIKE '%GIORNI_STRUTTURA' AND IdApplicazione = " + Workbook.IdApplicazione;
                if (_entitaProprieta.Count > 0)
                {
                    dataFine = Workbook.DataAttiva.AddDays(int.Parse(_entitaProprieta[0]["Valore"].ToString()));
                }
                else
                {
                    dataFine = Workbook.DataAttiva.AddDays(Struct.intervalloGiorni);
                }

                nomeFoglio = DefinedNames.GetSheetName(siglaEntita);

                if (definedNames == null || nomeFoglio != definedNames.Sheet)
                {
                    definedNames = new DefinedNames(nomeFoglio);
                }
            }
        }
예제 #7
0
파일: Esporta.cs 프로젝트: fberga/Iren
        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);
            }

            DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView;

            categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione;
            object codiceRUP = categoriaEntita[0]["CodiceRUP"];

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

            entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'IMP_COD_IF' AND IdApplicazione = " + Workbook.IdApplicazione;
            object codiceIF = entitaProprieta[0]["Valore"];

            DataView entitaAzioneInformazione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE_INFORMAZIONE].DefaultView;

            entitaAzioneInformazione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione = '" + siglaAzione + "' AND IdApplicazione = " + Workbook.IdApplicazione;

            string       nomeFoglio   = DefinedNames.GetSheetName(siglaEntita);
            DefinedNames definedNames = new DefinedNames(nomeFoglio);

            switch (siglaAzione.ToString())
            {
            case "E_MP_MGP":
                DataTable dt = new DataTable("E_MP_MGP")
                {
                    Columns =
                    {
                        { "Campo1",       typeof(string) },
                        { "Campo2",       typeof(string) },
                        { "UP",           typeof(string) },
                        { "Campo3",       typeof(string) },
                        { "Data",         typeof(string) },
                        { "Ora",          typeof(string) },
                        { "Informazione", typeof(string) },
                        { "Valore",       typeof(string) }
                    }
                };

                string suffissoData = Date.GetSuffissoData(dataRif);
                foreach (DataRowView info in entitaAzioneInformazione)
                {
                    object siglaEntitaRif = (info["SiglaEntitaRif"] is DBNull ? info["SiglaEntita"] : info["SiglaEntitaRif"]);

                    Excel.Worksheet ws    = Workbook.Sheets[nomeFoglio];
                    Range           range = definedNames.Get(siglaEntitaRif, info["SiglaInformazione"], suffissoData);
                    range.Extend(0, definedNames.GetDayOffset(suffissoData) - 1);
                    Excel.Range rng = ws.Range[range.ToString()];

                    object[,] tmpVal = rng.Value;
                    object[] values = tmpVal.Cast <object>().ToArray();

                    for (int i = 0, length = values.Length; i < length; i++)
                    {
                        DataRow row = dt.NewRow();

                        row["Campo1"] = nomeFoglio == "Iren Termo" ? "AHRP" : "AIHRP";
                        row["Campo2"] = "Prod";
                        row["UP"]     = codiceIF;
                        if (definedNames.IsDefined(siglaEntitaRif, "UNIT_COMM"))
                        {
                            row["Campo3"] = "17";
                        }
                        else
                        {
                            row["Campo3"] = "NA";
                        }
                        row["Data"]         = dataRif.ToString("yyyy/MM/dd");
                        row["Ora"]          = i + 1;
                        row["Informazione"] = info["SiglaInformazione"].Equals("PMAX") ? "Pmax" : "Pmin";
                        row["Valore"]       = values[i] ?? 0;

                        dt.Rows.Add(row);
                    }
                }

                string pathStr = PreparePath(Workbook.GetUsrConfigElement("pathExportMP_MGP"));

                if (Directory.Exists(pathStr))
                {
                    if (!ExportToCSV(System.IO.Path.Combine(pathStr, "AEM_" + (nomeFoglio == "Iren Termo" ? "AHRP_" : "AIHRP_") + codiceIF + "_" + dataRif.ToString("yyyyMMdd") + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfffffff") + ".csv"), dt))
                    {
                        return(false);
                    }
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("Il percorso '" + pathStr + "' non è raggiungibile.", Simboli.NomeApplicazione, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                    return(false);
                }

                break;
            }
            return(true);
        }
예제 #8
0
        /// <summary>
        /// Launcher dell'azione di caricamento/generazione dei dati.
        /// </summary>
        /// <param name="siglaEntita">Sigla dell'entità di cui caricare/generare i dati.</param>
        /// <param name="siglaAzione">Sigla dell'azione per cui è richiesto il caricamento dei dati.</param>
        /// <param name="azionePadre">Sigla dell'azione padre (di solito CARICAx o GENERA).</param>
        /// <param name="giorno">Data di riferimento.</param>
        /// <param name="mercati">Mercati da considerare nell'azione.</param>
        /// <param name="parametro">Parametro da specificare alla storedProcedure CARICA_AZIONE_INFORMAZIONE nel caso sia necessario.</param>
        /// <returns>True se il caricamento va a buon fine.</returns>
        public override bool AzioneInformazione(object siglaEntita, object siglaAzione, object azionePadre, DateTime giorno, string[] mercati, object parametro = null)
        {
            DefinedNames definedNames = new DefinedNames(DefinedNames.GetSheetName(siglaEntita));

            try
            {
                AzzeraInformazione(siglaEntita, siglaAzione, definedNames, giorno, mercati, azionePadre.ToString().StartsWith("CARICA"));
                if (DataBase.OpenConnection())
                {
                    if (azionePadre.Equals("GENERA"))
                    {
                        if (mercati != null)
                        {
                            foreach (string mercato in mercati)
                            {
                                SpecMercato m = Simboli.MercatiMB["MB" + mercato];
                                ElaborazioneInformazione(siglaEntita, siglaAzione, definedNames, giorno, m.Inizio, Math.Min(Date.GetOreGiorno(giorno), m.Fine));
                            }
                        }
                        else
                        {
                            ElaborazioneInformazione(siglaEntita, siglaAzione, definedNames, giorno);
                        }
                        DataBase.InsertApplicazioneRiepilogo(siglaEntita, siglaAzione, giorno);
                    }
                    else
                    {
                        DataTable azioneInformazione = null;
                        if (mercati != null)
                        {
                            azioneInformazione = DataBase.Select(DataBase.SP.CARICA_AZIONE_INFORMAZIONE, "@SiglaEntita=" + siglaEntita + ";@SiglaAzione=" + siglaAzione + ";@Parametro=" + String.Join(",", mercati) + ";@Data=" + giorno.ToString("yyyyMMdd"));
                        }
                        else
                        {
                            azioneInformazione = DataBase.Select(DataBase.SP.CARICA_AZIONE_INFORMAZIONE, "@SiglaEntita=" + siglaEntita + ";@SiglaAzione=" + siglaAzione + ";@Parametro=" + parametro + ";@Data=" + giorno.ToString("yyyyMMdd"));
                        }

                        if (azioneInformazione != null)
                        {
                            if (azioneInformazione.Rows.Count == 0)
                            {
                                DataBase.InsertApplicazioneRiepilogo(siglaEntita, siglaAzione, giorno, false);
                                return(false);
                            }
                            else
                            {
                                ScriviInformazione(siglaEntita, azioneInformazione.DefaultView, definedNames);
                                DataBase.InsertApplicazioneRiepilogo(siglaEntita, siglaAzione, giorno);
                            }
                        }
                    }

                    Sheet s = new Sheet(Workbook.Sheets[definedNames.Sheet]);
                    s.AggiornaGrafici();
                    return(true);
                }
                else
                {
                    if (azionePadre.Equals("GENERA"))
                    {
                        ElaborazioneInformazione(siglaEntita, siglaAzione, definedNames, giorno);

                        Sheet s = new Sheet(Workbook.Sheets[definedNames.Sheet]);
                        s.AggiornaGrafici();

                        return(true);
                    }

                    return(false);
                }
            }
            catch (Exception e)
            {
                Workbook.InsertLog(PSO.Core.DataBase.TipologiaLOG.LogErrore, "CaricaAzioneInformazione [" + siglaEntita + ", " + siglaAzione + "]: " + e.Message);
                System.Windows.Forms.MessageBox.Show(e.Message, Simboli.NomeApplicazione + " - ERRORE!!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                return(false);
            }
        }
예제 #9
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);
            }

            DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView;

            categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione;
            object codiceRUP = categoriaEntita[0]["CodiceRUP"];

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

            entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'IMP_COD_IF' AND IdApplicazione = " + Workbook.IdApplicazione;
            object codiceIF = entitaProprieta[0]["Valore"];

            DataView entitaAzioneInformazione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE_INFORMAZIONE].DefaultView;

            entitaAzioneInformazione.RowFilter = "SiglaEntitaRif = '" + siglaEntita + "' AND SiglaAzione = '" + siglaAzione + "' AND IdApplicazione = " + Workbook.IdApplicazione;

            string       nomeFoglio   = DefinedNames.GetSheetName(siglaEntita);
            DefinedNames definedNames = new DefinedNames(nomeFoglio, DefinedNames.InitType.Naming);

            Excel.Worksheet ws = Workbook.Sheets[nomeFoglio];

            switch (siglaAzione.ToString())
            {
            case "E_UNIT_COMM":
                DataTable dt = new DataTable("E_UNIT_COMM")
                {
                    Columns =
                    {
                        { "Campo1",   typeof(string) },
                        { "Campo2",   typeof(string) },
                        { "UP",       typeof(string) },
                        { "Campo3",   typeof(string) },
                        { "Data",     typeof(string) },
                        { "Ora",      typeof(string) },
                        { "Campo4",   typeof(string) },
                        { "UnitComm", typeof(string) },
                        { "Campo5",   typeof(string) }
                    }
                };

                string suffissoData = Date.GetSuffissoData(dataRif);
                int    oreData      = Date.GetOreGiorno(dataRif);
                foreach (DataRowView info in entitaAzioneInformazione)
                {
                    object siglaEntitaRif = (info["SiglaEntitaRif"] is DBNull ? siglaEntita: info["SiglaEntitaRif"]);

                    Range rng = definedNames.Get(siglaEntitaRif, info["SiglaInformazione"], suffissoData).Extend(colOffset: oreData);

                    //object[,] values = ws.Range[rng.ToString()].Value;
                    //bool empty = true;
                    //foreach (object value in values)
                    //{
                    //    if(value != null)
                    //    {
                    //        empty = false;
                    //        break;
                    //    }
                    //}

                    //if (!empty)
                    //{
                    for (int i = 0; i < rng.Columns.Count; i++)
                    {
                        DataRow row = dt.NewRow();

                        row["Campo1"]   = "ASSET";
                        row["Campo2"]   = "Produzione";
                        row["UP"]       = codiceIF;
                        row["Campo3"]   = "NA";
                        row["Data"]     = dataRif.ToString("dd/MM/yyyy");
                        row["Ora"]      = (i + 1).ToString("00") + ".00";
                        row["Campo4"]   = "ASSETTO";
                        row["UnitComm"] = ws.Range[rng.Columns[i].ToString()].Value;
                        row["Campo5"]   = DateTime.Now.ToString("dd/MM/yyyy HH:mm");

                        dt.Rows.Add(row);
                    }
                    //}
                }

                string pathStr = PreparePath(Workbook.GetUsrConfigElement("pathCaricatoreImpianti"));

                if (Directory.Exists(pathStr))
                {
                    if (dt.AsEnumerable().Any(r => r["UnitComm"] != DBNull.Value) &&
                        ExportToCSV(System.IO.Path.Combine(pathStr, "AEM_ASSET_" + codiceIF + "_" + dataRif.ToString("yyyyMMdd") + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfffffff") + ".csv"), dt))
                    {
                        return(true);
                    }
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("Il percorso '" + pathStr + "' non è raggiungibile.", Simboli.NomeApplicazione, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                }
                break;
            }
            return(false);
        }
예제 #10
0
파일: Esporta.cs 프로젝트: fberga/Iren
        protected bool CreaOfferteXML_GME(object siglaEntita, object siglaAzione, string exportPath, DateTime dataRif)
        {
            try
            {
                string          nomeFoglio   = DefinedNames.GetSheetName(siglaEntita);
                DefinedNames    definedNames = new DefinedNames(nomeFoglio);
                Excel.Worksheet ws           = Workbook.Sheets[nomeFoglio];

                string suffissoData = Date.GetSuffissoData(dataRif);
                int    oreGiorno    = Date.GetOreGiorno(dataRif);

                DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView;
                categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione;
                object codiceRUP = categoriaEntita[0]["CodiceRUP"];

                DataView entitaAzioneInformazione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE_INFORMAZIONE].DefaultView;
                entitaAzioneInformazione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione ='" + siglaAzione + "' AND SiglaInformazione LIKE 'OFFERTA_MGP_E%' AND IdApplicazione = " + Workbook.IdApplicazione;

                DataView entitaProprieta = Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA].DefaultView;
                entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'COMPANY_NAME' AND IdApplicazione = " + Workbook.IdApplicazione;
                object companyName = entitaProprieta[0]["Valore"];

                entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'COMPANY_IDENTIFIER' AND IdApplicazione = " + Workbook.IdApplicazione;
                object companyID = entitaProprieta[0]["Valore"];

                XNamespace ns             = XNamespace.Get("urn:XML-PIPE");
                XNamespace xsi            = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
                XNamespace xsd            = XNamespace.Get("http://www.w3.org/2001/XMLSchema");
                XNamespace schemaLocation = XNamespace.Get("urn:XML-PIPE PIPEDocument.xsd");

                string referenceNumber = codiceRUP.ToString().Replace("_", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss");

                XElement PIPEDocument = new XElement(ns + "PIPEDocument",
                                                     new XAttribute("ReferenceNumber", referenceNumber.Length > 30 ? referenceNumber.Substring(0, 30) : referenceNumber),
                                                     new XAttribute("CreationDate", DateTime.Now.ToString("yyyyMMddHHmmss")),
                                                     new XAttribute("Version", "1.0"),
                                                     new XAttribute(XNamespace.Xmlns + "xsi", xsi),
                                                     new XAttribute(XNamespace.Xmlns + "xsd", xsd),
                                                     new XAttribute(xsi + "schemaLocation", schemaLocation),
                                                     new XElement(ns + "TradingPartnerDirectory",
                                                                  new XElement(ns + "Sender",
                                                                               new XElement(ns + "TradingPartner",
                                                                                            new XAttribute("PartnerType", "Market Participant"),
                                                                                            new XElement(ns + "CompanyName", companyName),
                                                                                            new XElement(ns + "CompanyIdentifier", companyID)
                                                                                            )
                                                                               ),
                                                                  new XElement(ns + "Recipient",
                                                                               new XElement(ns + "TradingPartner",
                                                                                            new XAttribute("PartnerType", "Operator"),
                                                                                            new XElement(ns + "CompanyName", "GME SPA"),
                                                                                            new XElement(ns + "CompanyIdentifier", "IDGME")
                                                                                            )
                                                                               )
                                                                  )
                                                     );

                entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'OFFERTA_MGP_TIPO_OFFERTA' AND IdApplicazione = " + Workbook.IdApplicazione;

                foreach (DataRowView info in entitaAzioneInformazione)
                {
                    string gradino        = Regex.Match(info["SiglaInformazione"].ToString(), @"\d+").Value;
                    object siglaEntitaRif = info["SiglaEntitaRif"] is DBNull ? siglaEntita : info["SiglaEntitaRif"];
                    Range  rngEnergia     = definedNames.Get(siglaEntitaRif, "OFFERTA_MGP_E" + gradino).Extend(colOffset: oreGiorno);
                    Range  rngPrezzo      = definedNames.Get(siglaEntitaRif, "OFFERTA_MGP_P" + gradino).Extend(colOffset: oreGiorno);

                    for (int i = 0; i < oreGiorno; i++)
                    {
                        decimal valoreOfferta = GetDecimal(ws, rngEnergia.Columns[i]); // (decimal)(ws.Range[rngEnergia.Columns[i].ToString()].Value ?? 0);
                        decimal prezzoOfferta = GetDecimal(ws, rngPrezzo.Columns[i]);  // (decimal)(ws.Range[rngPrezzo.Columns[i].ToString()].Value ?? 0);

                        if (valoreOfferta != 0)
                        {
                            object tipoOfferta = entitaProprieta[0]["Valore"].Equals("MISTA") ? (valoreOfferta < 0 ? "ACQ" : "VEN") : entitaProprieta[0]["Valore"];

                            XElement bidSubmittal = new XElement(ns + "BidSubmittal",
                                                                 new XAttribute("MarketParticipantNumber", codiceRUP + "_" + dataRif.ToString("yyyyMMdd") + "_" + (i + 1) + "_G" + gradino),
                                                                 new XAttribute("ReplacementIndicator", "Yes"),
                                                                 new XAttribute("PredefinedOffer", "No"),
                                                                 new XAttribute("Purpose", tipoOfferta.Equals("VEN") ? "Sell" : "Buy"),
                                                                 new XElement(ns + "Market", "MGP"),
                                                                 new XElement(ns + "Date", dataRif.ToString("yyyyMMdd")),
                                                                 new XElement(ns + "Hour", i + 1),
                                                                 new XElement(ns + "UnitReferenceNumber", codiceRUP),
                                                                 new XElement(ns + "BidQuantity",
                                                                              new XAttribute("UnitOfMeasure", "MWh"), Math.Abs(valoreOfferta).ToString(CultureInfo.InstalledUICulture)),
                                                                 new XElement(ns + "EnergyPrice", prezzoOfferta.ToString(CultureInfo.InstalledUICulture))
                                                                 );

                            PIPEDocument.Add(new XElement(ns + "PIPTransaction", bidSubmittal));
                        }
                    }
                }

                XDocument offerteSuggerite = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "yes"),
                                                           PIPEDocument
                                                           );

                string filename = "Suggerite_MGP_" + codiceRUP.ToString() + "_GME.xml";
                offerteSuggerite.Save(Path.Combine(exportPath, filename));

                return(true);
            }
            catch
            {
                return(false);
            }
        }
예제 #11
0
파일: Esporta.cs 프로젝트: fberga/Iren
        protected bool CreaOfferteSuggeriteXML(object siglaEntita, object siglaAzione, string exportPath, DateTime dataRif, string[] mercati)
        {
            try
            {
                string          nomeFoglio   = DefinedNames.GetSheetName(siglaEntita);
                DefinedNames    definedNames = new DefinedNames(nomeFoglio);
                Excel.Worksheet ws           = Workbook.Sheets[nomeFoglio];

                string suffissoData = Date.GetSuffissoData(dataRif);
                int    oreGiorno    = Date.GetOreGiorno(dataRif);

                DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView;
                categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione;
                object codiceRUP = categoriaEntita[0]["CodiceRUP"];
                //bool isTermo = categoriaEntita[0]["SiglaCategoria"].Equals("IREN_60T");

                DataView entitaParametro = Workbook.Repository[DataBase.TAB.ENTITA_PARAMETRO].DefaultView;
                entitaParametro.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND idParametro = 903 AND CONVERT(DataIV, System.Int32) <= " + dataRif.ToString("yyyyMMdd") + " AND CONVERT(DataFV, System.Int32) >= " + dataRif.ToString("yyyyMMdd") + " AND IdApplicazione = " + Workbook.IdApplicazione;

                //decimal calcoloPPA = (decimal)entitaParametro[0]["Valore"];

                XNamespace ns             = XNamespace.Get("urn:XML-BIDMGM");
                XNamespace xsi            = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
                XNamespace schemaLocation = XNamespace.Get("urn:XML-BIDMGM BM_SuggestedOfferMSD.xsd");

                string referenceNumber = codiceRUP.ToString().Replace("_", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss");


                foreach (string mercato in mercati)
                {
                    XElement suggested = new XElement(ns + "Suggested");

                    // verifico il mercato MB e le ore di quel mercato
                    SpecMercato m = Simboli.MercatiMB["MB" + mercato];
                    //controllo se ci sono dei vincoli di orario
                    int oraInizio = m.Inizio - 1;
                    int oraFine   = Math.Min(oreGiorno, m.Fine);


                    XElement coordinate = new XElement(ns + "Coordinate",
                                                       new XAttribute("Mercato", "MB" + mercato),
                                                       new XAttribute("IDUnit", codiceRUP),
                                                       new XAttribute("FlowDate", dataRif.ToString("yyyyMMdd"))
                                                       );

                    //cambioassetto
                    Range  rng     = new Range();
                    Range  rng1    = new Range();
                    string prezzo  = "";
                    string energia = "";
                    if (definedNames.TryGet(out rng, siglaEntita, "CAMBIO_ASSETTO_MB"))
                    {
                        //rng.StartColumn -= 1;
                        prezzo  = (ws.Range[rng.ToString()].Value ?? "0").ToString().Replace(".", ",");
                        energia = "0";
                        XElement gradino = new XElement(ns + "CambioAssetto");
                        for (int j = oraInizio; j < oraFine; j++)
                        {
                            gradino.Add(new XElement(ns + "SG1", (j + 1),
                                                     new XAttribute("PRE", prezzo),
                                                     new XAttribute("QUA", energia),
                                                     new XAttribute("AZIONE", "VEN")
                                                     )
                                        );
                        }

                        coordinate.Add(gradino);
                    }

                    //spegnimento
                    rng     = definedNames.Get(siglaEntita, "OFFERTA_MB_G0AE", suffissoData).Extend(colOffset: oreGiorno);
                    rng1    = definedNames.Get(siglaEntita, "OFFERTA_MB_G0AP", suffissoData).Extend(colOffset: oreGiorno);
                    energia = "0";
                    prezzo  = "0";
                    if (!ws.Range[rng.ToString()].EntireRow.Hidden)
                    {
                        XElement gradino = new XElement(ns + "Spegnimento");
                        for (int j = oraInizio; j < oraFine; j++)
                        {
                            energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");
                            prezzo  = (ws.Range[rng1.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");

                            gradino.Add(new XElement(ns + "SG1", (j + 1),
                                                     new XAttribute("PRE", prezzo),
                                                     new XAttribute("QUA", energia),
                                                     new XAttribute("AZIONE", "ACQ")
                                                     )
                                        );
                        }
                        coordinate.Add(gradino);
                    }

                    //minimo
                    rng     = definedNames.Get(siglaEntita, "OFFERTA_MB_G0VE", suffissoData).Extend(colOffset: oreGiorno);
                    rng1    = definedNames.Get(siglaEntita, "OFFERTA_MB_G0VP", suffissoData).Extend(colOffset: oreGiorno);
                    energia = "0";
                    prezzo  = "0";
                    if (!ws.Range[rng.ToString()].EntireRow.Hidden)
                    {
                        XElement gradino = new XElement(ns + "Minimo");
                        for (int j = oraInizio; j < oraFine; j++)
                        {
                            energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");
                            prezzo  = (ws.Range[rng1.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");

                            gradino.Add(new XElement(ns + "SG1", (j + 1),
                                                     new XAttribute("PRE", prezzo),
                                                     new XAttribute("QUA", energia),
                                                     new XAttribute("AZIONE", "VEN")
                                                     )
                                        );
                        }
                        coordinate.Add(gradino);
                    }

                    //riserva secondaria
                    rng     = definedNames.Get(siglaEntita, "OFFERTA_MB_G4VE", suffissoData).Extend(colOffset: oreGiorno);
                    rng1    = definedNames.Get(siglaEntita, "OFFERTA_MB_G4VP", suffissoData).Extend(colOffset: oreGiorno);
                    energia = "0";
                    prezzo  = "0";
                    if (!ws.Range[rng.ToString()].EntireRow.Hidden)
                    {
                        XElement gradino = new XElement(ns + "RisSecondaria");
                        for (int j = oraInizio; j < oraFine; j++)
                        {
                            energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");
                            prezzo  = (ws.Range[rng1.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");

                            gradino.Add(new XElement(ns + "SG1", (j + 1),
                                                     new XAttribute("PRE", prezzo),
                                                     new XAttribute("QUA", energia),
                                                     new XAttribute("AZIONE", "VEN")
                                                     )
                                        );
                        }

                        rng     = definedNames.Get(siglaEntita, "OFFERTA_MB_G4AE", suffissoData).Extend(colOffset: oreGiorno);
                        rng1    = definedNames.Get(siglaEntita, "OFFERTA_MB_G4AP", suffissoData).Extend(colOffset: oreGiorno);
                        energia = "0";
                        prezzo  = "0";

                        for (int j = oraInizio; j < oraFine; j++)
                        {
                            energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");
                            prezzo  = (ws.Range[rng1.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");

                            gradino.Add(new XElement(ns + "SG2", (j + 1),
                                                     new XAttribute("PRE", prezzo),
                                                     new XAttribute("QUA", energia),
                                                     new XAttribute("AZIONE", "ACQ")
                                                     )
                                        );
                        }

                        coordinate.Add(gradino);
                    }

                    //altri servizi
                    XElement altriServizi = new XElement(ns + "AltriServizi");

                    bool aggiungi = false;
                    int  sgId     = 0;
                    for (int k = 1; k < 4; k++)
                    {
                        rng     = definedNames.Get(siglaEntita, "OFFERTA_MB_G" + k + "VE", suffissoData).Extend(colOffset: oreGiorno);
                        rng1    = definedNames.Get(siglaEntita, "OFFERTA_MB_G" + k + "VP", suffissoData).Extend(colOffset: oreGiorno);
                        energia = "0";
                        prezzo  = "0";
                        if (!ws.Range[rng.ToString()].EntireRow.Hidden)
                        {
                            aggiungi = true;
                            sgId++;
                            for (int j = oraInizio; j < oraFine; j++)
                            {
                                energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");
                                prezzo  = (ws.Range[rng1.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");

                                XElement sg = new XElement(ns + ("SG" + sgId), (j + 1),
                                                           new XAttribute("PRE", prezzo),
                                                           new XAttribute("QUA", energia),
                                                           new XAttribute("AZIONE", "VEN")
                                                           );

                                /*if (calcoloPPA == 1 && k == 1 && j == 0)
                                 *  sg.Add(new XAttribute("RifStand", "MI1"));*/

                                altriServizi.Add(sg);
                            }

                            rng     = definedNames.Get(siglaEntita, "OFFERTA_MB_G" + k + "AE", suffissoData).Extend(colOffset: oreGiorno);
                            rng1    = definedNames.Get(siglaEntita, "OFFERTA_MB_G" + k + "AP", suffissoData).Extend(colOffset: oreGiorno);
                            energia = "0";
                            prezzo  = "0";
                            sgId++;
                            for (int j = oraInizio; j < oraFine; j++)
                            {
                                energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");
                                prezzo  = (ws.Range[rng1.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");

                                altriServizi.Add(new XElement(ns + ("SG" + sgId), (j + 1),
                                                              new XAttribute("PRE", prezzo),
                                                              new XAttribute("QUA", energia),
                                                              new XAttribute("AZIONE", "ACQ")
                                                              )
                                                 );
                            }
                        }
                    }
                    if (aggiungi)
                    {
                        coordinate.Add(altriServizi);
                    }

                    //accensione
                    rng     = new Range();
                    energia = "0";
                    prezzo  = "0";
                    if (definedNames.TryGet(out rng, siglaEntita, "ACCENSIONE_MB"))
                    {
                        //AGGIUNTO FIL
                        rng = rng.Extend(colOffset: oreGiorno);
                        //prezzo = (ws.Range[rng.ToString()].Value ?? "0").ToString().Replace(".", ",");

                        XElement gradino = new XElement(ns + "Accensione");
                        for (int j = oraInizio; j < oraFine; j++)
                        {
                            //FIL
                            //energia = (ws.Range[rng.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");

                            object[,] prz = ws.Range[rng.Columns[j].ToString()].MergeArea.Value;

                            //TODO controllare se non esiste mergearea...va in errore!!

                            prezzo = (prz[1, 1] ?? "0").ToString().Replace(".", ",");

                            gradino.Add(new XElement(ns + "SG1", (j + 1),
                                                     new XAttribute("PRE", prezzo),
                                                     new XAttribute("QUA", energia),
                                                     new XAttribute("AZIONE", "VEN")
                                                     )
                                        );
                        }

                        coordinate.Add(gradino);
                    }

                    suggested.Add(coordinate);



                    XDocument offerteSuggerite = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "yes"),
                                                               new XElement(ns + "BMTransaction-SUGMSD",
                                                                            new XAttribute("ReferenceNumber", referenceNumber.Length > 30 ? referenceNumber.Substring(0, 30) : referenceNumber),
                                                                            new XAttribute(XNamespace.Xmlns + "xsi", xsi),
                                                                            new XAttribute(xsi + "schemaLocation", schemaLocation),
                                                                            suggested
                                                                            )
                                                               );
                    string filename = "Suggerite_MB_" + codiceRUP.ToString() + "_" + DateTime.Now.ToString("yyyyMMddhhmmss") + "_MB" + mercato + ".xml";
                    offerteSuggerite.Save(Path.Combine(exportPath, filename));
                }
                return(true);
            }
            catch
            {
                return(false);
            }
        }
예제 #12
0
파일: EsportaXML.cs 프로젝트: fberga/Iren
        public void RunExport()
        {
            DataTable categoriaEntita    = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA];
            DataView  categorie          = Workbook.Repository[DataBase.TAB.CATEGORIA].DefaultView;
            DataView  entitaInformazione = Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE].DefaultView;

            foreach (DataRow entita in categoriaEntita.Rows)
            {
                object siglaEntita = entita["SiglaEntita"];
                string nomeFoglio  = DefinedNames.GetSheetName(siglaEntita);
                if (nomeFoglio != "")
                {
                    DefinedNames definedNames = new DefinedNames(nomeFoglio);

                    Excel.Worksheet ws = Workbook.Sheets[nomeFoglio];

                    bool hasData0H24 = definedNames.HasData0H24;

                    entitaInformazione.RowFilter = "(SiglaEntita = '" + siglaEntita + "' OR SiglaEntitaRif = '" + siglaEntita + "') AND Editabile = '1' AND IdApplicazione = " + Workbook.IdApplicazione;

                    DataTable entitaProprieta  = Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA];
                    int       intervalloGiorni =
                        (from r in entitaProprieta.AsEnumerable()
                         where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["SiglaEntita"].Equals(siglaEntita) && r["SiglaProprieta"].ToString().EndsWith("GIORNI_STRUTTURA")
                         select int.Parse(r["Valore"].ToString())).FirstOrDefault();

                    DateTime dataFine = Workbook.DataAttiva.AddDays(Math.Max(
                                                                        (from r in entitaProprieta.AsEnumerable()
                                                                         where r["IdApplicazione"].Equals(Workbook.IdApplicazione) && r["SiglaEntita"].Equals(siglaEntita) && r["SiglaProprieta"].ToString().EndsWith("GIORNI_STRUTTURA")
                                                                         select int.Parse(r["Valore"].ToString())).FirstOrDefault(), Struct.intervalloGiorni));

                    foreach (DataRowView info in entitaInformazione)
                    {
                        object siglaEntitaRif = info["SiglaEntitaRif"] is DBNull ? info["SiglaEntita"] : info["SiglaEntitaRif"];

                        if (Struct.tipoVisualizzazione == "O")
                        {
                            //prima cella della riga da salvare (non considera Data0H24)
                            Range rng = definedNames.Get(siglaEntitaRif, info["SiglaInformazione"], Date.SuffissoDATA1).Extend(colOffset: Date.GetOreIntervallo(dataFine));
                            Handler.StoreEdit(ws.Range[rng.ToString()], 0, true, DataBase.TAB.EXPORT_XML);
                        }
                        else
                        {
                            for (DateTime giorno = Workbook.DataAttiva; giorno <= dataFine; giorno = giorno.AddDays(1))
                            {
                                Range rng = definedNames.Get(siglaEntitaRif, info["SiglaInformazione"], Date.GetSuffissoData(giorno)).Extend(colOffset: Date.GetOreGiorno(giorno));
                                Handler.StoreEdit(ws.Range[rng.ToString()], 0, true, DataBase.TAB.EXPORT_XML);
                            }
                        }
                    }
                }
            }

            //preparo l'export


            string directory = Path.Combine(Workbook.Repository.Applicazione["PathDatiComuniEmergenza"].ToString(), Simboli.NomeApplicazione.Replace(" ", ""));
            string fileName  = Path.Combine(directory, Simboli.NomeApplicazione.Replace(" ", "").ToUpperInvariant() + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xml");

            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }

            DataTable export = Workbook.Repository[DataBase.TAB.EXPORT_XML];

            export.WriteXml(fileName);

            //svuoto la tabella alla fine dell'utilizzo
            export.Clear();
        }
예제 #13
0
파일: FormAzioni.cs 프로젝트: fberga/Iren
        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;
        }
예제 #14
0
파일: Esporta.cs 프로젝트: fberga/Iren
        protected bool CreaDatiTopiciUnitaXML(object siglaEntita, object siglaAzione, string exportPath, DateTime dataRif)
        {
            try
            {
                string          nomeFoglio   = DefinedNames.GetSheetName(siglaEntita);
                DefinedNames    definedNames = new DefinedNames(nomeFoglio);
                Excel.Worksheet ws           = Workbook.Sheets[nomeFoglio];

                string suffissoData = Date.GetSuffissoData(dataRif);
                int    oreGiorno    = Date.GetOreGiorno(dataRif);

                DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView;
                categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione;
                object codiceRUP = categoriaEntita[0]["CodiceRUP"];
                //bool isTermo = categoriaEntita[0]["SiglaCategoria"].Equals("IREN_60T");

                DataView entitaAzioneInformazione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE_INFORMAZIONE].DefaultView;
                entitaAzioneInformazione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione = '" + siglaAzione + "' AND IdApplicazione = " + Workbook.IdApplicazione;

                XNamespace ns = XNamespace.Get("urn:XML-BIDMGM");

                XElement unit = new XElement(ns + "Unit", new XAttribute("StartDate", dataRif.ToString("yyyyMMdd")), new XAttribute("IDUnit", codiceRUP));

                for (int i = 0; i < oreGiorno; i++)
                {
                    string[] values = new string[7];
                    int      j      = 0;
                    foreach (DataRowView info in entitaAzioneInformazione)
                    {
                        object siglaEntitaRif = info["SiglaEntitaRif"] is DBNull ? siglaEntita : info["SiglaEntitaRif"];
                        Range  rng            = definedNames.Get(siglaEntitaRif, info["SiglaInformazione"], suffissoData, Date.GetSuffissoOra(i + 1));
                        values[j++] = Math.Abs(GetDecimal(ws, rng)).ToString(CultureInfo.InstalledUICulture);
                    }

                    unit.Add(
                        new XElement(ns + "PR", i + 1,
                                     new XAttribute("OPTIMAL", values[0] ?? "0"),
                                     new XAttribute("MaxPower", values[1] ?? "0"),
                                     new XAttribute("MinTech", values[2] ?? "0"),
                                     new XAttribute("ReqPow", values[3] ?? "0"),
                                     new XAttribute("COST", values[4] ?? "0"),
                                     new XAttribute("COST2", values[5] ?? "0"),
                                     new XAttribute("PumpingPower", values[6] ?? "0")
                                     )
                        );
                }

                XNamespace xsi            = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
                XNamespace schemaLocation = XNamespace.Get("urn:XML-BIDMGM BM_DatiTopiciUnita.xsd");

                XDocument datiTopiciUnita = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "yes"),
                                                          new XElement(ns + "BMTransaction-DTU",
                                                                       new XAttribute("ReferenceNumber", codiceRUP.ToString().Replace("_", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss")),
                                                                       new XAttribute(XNamespace.Xmlns + "xsi", xsi),
                                                                       new XAttribute(xsi + "schemaLocation", schemaLocation),
                                                                       new XElement(ns + "DatiTopiciUnit",
                                                                                    unit))
                                                          );

                string filename = "DatiTopici_" + codiceRUP.ToString().ToUpperInvariant() + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xml";
                datiTopiciUnita.Save(Path.Combine(exportPath, filename));

                return(true);
            }
            catch
            {
                return(false);
            }
        }
예제 #15
0
파일: Esporta.cs 프로젝트: fberga/Iren
        protected bool CreaOfferteSuggeriteXML(object siglaEntita, object siglaAzione, string exportPath, DateTime dataRif)
        {
            try
            {
                string          nomeFoglio   = DefinedNames.GetSheetName(siglaEntita);
                DefinedNames    definedNames = new DefinedNames(nomeFoglio);
                Excel.Worksheet ws           = Workbook.Sheets[nomeFoglio];

                string suffissoData = Date.GetSuffissoData(dataRif);
                int    oreGiorno    = Date.GetOreGiorno(dataRif);

                DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView;
                categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione;
                object codiceRUP = categoriaEntita[0]["CodiceRUP"];

                DataView entitaAzioneInformazione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE_INFORMAZIONE].DefaultView;
                entitaAzioneInformazione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione ='" + siglaAzione + "' AND SiglaInformazione LIKE 'OFFERTA_MGP_E%' AND IdApplicazione = " + Workbook.IdApplicazione;

                DataView entitaProprieta = Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA].DefaultView;
                entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'OFFERTA_MGP_TIPO_OFFERTA' AND IdApplicazione = " + Workbook.IdApplicazione;

                XNamespace ns             = XNamespace.Get("urn:XML-BIDMGM");
                XNamespace xsi            = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
                XNamespace schemaLocation = XNamespace.Get("urn:XML-BIDMGM BM_SuggestedOffer.xsd");

                string referenceNumber = codiceRUP.ToString().Replace("_", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss");

                XElement BMTransaction = new XElement(ns + "BMTransaction-SUG",
                                                      new XAttribute("ReferenceNumber", referenceNumber.Length > 30 ? referenceNumber.Substring(0, 30) : referenceNumber),
                                                      new XAttribute(XNamespace.Xmlns + "xsi", xsi),
                                                      new XAttribute(xsi + "schemaLocation", schemaLocation),
                                                      new XElement(ns + "Suggested",
                                                                   new XElement(ns + "Coordinate",
                                                                                new XAttribute("Mercato", "MGP"),
                                                                                new XAttribute("IDUnit", codiceRUP),
                                                                                new XAttribute("FlowDate", dataRif.ToString("yyyyMMdd"))
                                                                                )
                                                                   )
                                                      );

                foreach (DataRowView info in entitaAzioneInformazione)
                {
                    string gradino        = Regex.Match(info["SiglaInformazione"].ToString(), @"\d+").Value;
                    object siglaEntitaRif = info["SiglaEntitaRif"] is DBNull ? siglaEntita : info["SiglaEntitaRif"];
                    Range  rngEnergia     = definedNames.Get(siglaEntitaRif, "OFFERTA_MGP_E" + gradino).Extend(colOffset: oreGiorno);
                    Range  rngPrezzo      = definedNames.Get(siglaEntitaRif, "OFFERTA_MGP_P" + gradino).Extend(colOffset: oreGiorno);

                    for (int i = 0; i < oreGiorno; i++)
                    {
                        decimal valoreOfferta = GetDecimal(ws, rngEnergia.Columns[i]); // (decimal)(ws.Range[rngEnergia.Columns[i].ToString()].Value ?? 0);
                        decimal prezzoOfferta = GetDecimal(ws, rngPrezzo.Columns[i]);  // (decimal)(ws.Range[rngPrezzo.Columns[i].ToString()].Value ?? 0);

                        object tipoOfferta = entitaProprieta[0]["Valore"].Equals("MISTA") ? (valoreOfferta < 0 ? "ACQ" : "VEN") : entitaProprieta[0]["Valore"];

                        XElement sg = new XElement(ns + ("SG" + gradino),
                                                   new XAttribute("PRE", prezzoOfferta.ToString(CultureInfo.InstalledUICulture)),
                                                   new XAttribute("QUA", Math.Abs(valoreOfferta).ToString(CultureInfo.InstalledUICulture)),
                                                   new XAttribute("AZIONE", tipoOfferta),
                                                   (i + 1)
                                                   );

                        BMTransaction.Element(ns + "Suggested").Element(ns + "Coordinate").Add(sg);
                    }
                }

                XDocument offerteSuggerite = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "yes"),
                                                           BMTransaction
                                                           );

                string filename = "Suggerite_MGP_" + codiceRUP.ToString() + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xml";
                offerteSuggerite.Save(Path.Combine(exportPath, filename));

                return(true);
            }
            catch
            {
                return(false);
            }
        }
예제 #16
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 "E_VDT":

                string pathStr = PreparePath(Workbook.GetUsrConfigElement("pathExportSisComTerna"));

                if (Directory.Exists(pathStr))
                {
                    if (!CreaVariazioneDatiTecniciXML(siglaEntita, pathStr))
                    {
                        return(false);
                    }
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("Il percorso '" + pathStr + "' non è raggiungibile.", Simboli.NomeApplicazione + " - ERRORE!!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);

                    return(false);
                }

                break;

            case "MAIL":
                Workbook.ScreenUpdating = false;
                string       nomeFoglio   = DefinedNames.GetSheetName(siglaEntita);
                DefinedNames definedNames = new DefinedNames(nomeFoglio, DefinedNames.InitType.Naming);

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

                List <Range> export = new List <Range>();

                //titolo entità
                export.Add(new Range(definedNames.GetRowByNameSuffissoData(siglaEntita, "T", Date.SuffissoDATA1), definedNames.GetFirstCol() - 2).Extend(colOffset: 2 + Date.GetOreGiorno(Workbook.DataAttiva)));

                //data
                export.Add(new Range(Globals.ThisWorkbook.Application.ActiveWindow.SplitRow - 1, definedNames.GetFirstCol() - 2).Extend(colOffset: 2 + Date.GetOreGiorno(Workbook.DataAttiva)));

                //ora
                export.Add(new Range(Globals.ThisWorkbook.Application.ActiveWindow.SplitRow, definedNames.GetFirstCol() - 2).Extend(colOffset: 2 + Date.GetOreGiorno(Workbook.DataAttiva)));


                DataView entitaAzioneInformazione = Workbook.Repository[DataBase.TAB.ENTITA_AZIONE_INFORMAZIONE].DefaultView;
                entitaAzioneInformazione.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaAzione = '" + siglaAzione + "' AND IdApplicazione = " + Workbook.IdApplicazione;
                foreach (DataRowView info in entitaAzioneInformazione)
                {
                    export.Add(new Range(definedNames.GetRowByNameSuffissoData(siglaEntita, info["SiglaInformazione"], Date.SuffissoDATA1), definedNames.GetFirstCol() - 2).Extend(colOffset: 2 + Date.GetOreGiorno(Workbook.DataAttiva)));
                }

                if (InviaMail(nomeFoglio, siglaEntita, export))
                {
                }

                oldActiveWindow.Activate();

                Workbook.ScreenUpdating = true;
                break;
            }
            return(true);
        }
예제 #17
0
        protected bool CreaVariazioneDatiTecniciXML(object siglaEntita, string exportPath)
        {
            try
            {
                DataView entitaAssetto = Workbook.Repository[DataBase.TAB.ENTITA_ASSETTO].DefaultView;
                entitaAssetto.RowFilter = "SiglaEntita = '" + siglaEntita + "'";

                string          nomeFoglio   = DefinedNames.GetSheetName(siglaEntita);
                DefinedNames    definedNames = new DefinedNames(nomeFoglio);
                Excel.Worksheet ws           = Workbook.Sheets[nomeFoglio];

                DateTime giorno       = Workbook.DataAttiva;
                string   suffissoData = Date.GetSuffissoData(giorno);
                int      oreGiorno    = Date.GetOreGiorno(Workbook.DataAttiva);

                DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView;
                categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione;
                object codiceRUP = categoriaEntita[0]["CodiceRUP"];
                bool   isTermo   = categoriaEntita[0]["SiglaCategoria"].Equals("IREN_60T");

                XElement inserisci = new XElement("INSERISCI");

                bool salta3aOra = oreGiorno == 25;
                int  ora        = 0;
                for (int i = 0; i < oreGiorno; i++)
                {
                    if (salta3aOra && ora == 2)
                    {
                        salta3aOra = false;
                        continue;
                    }

                    string start = giorno.ToString("yyyy-MM-dd") + "T" + ora.ToString("00") + ":00:00";
                    string end   = giorno.ToString("yyyy-MM-dd") + "T" + (oreGiorno - i > 1 ? (ora + 1).ToString("00") + ":00:00" : "23:59:00");

                    XElement vdt = new XElement("VDT", new XAttribute("DATAORAINIZIO", start), new XAttribute("DATAORAFINE", end),
                                                new XElement("CODICEETSO", codiceRUP),
                                                new XElement("IDMOTIVAZIONE", "VDT_VIN_TEC_UNI_PRO"),
                                                new XElement("NOTE", "Vincoli Tecnologici dell'Unita di Produzione")
                                                );

                    foreach (DataRowView assetto in entitaAssetto)
                    {
                        for (int j = 1; j <= (int)assetto["NumeroFasce"]; j++)
                        {
                            Range  rng      = definedNames.Get(siglaEntita, "PSMIN_ASSETTO" + assetto["Riferimento"] + "_FASCIA" + j, suffissoData, Date.GetSuffissoOra(i + 1));
                            Range  rngCorr  = definedNames.Get(siglaEntita, "PSMIN_CORRETTA_ASSETTO" + assetto["Riferimento"] + "_FASCIA" + j, suffissoData, Date.GetSuffissoOra(i + 1));
                            string psminVal = (ws.Range[rngCorr.ToString()].Value ?? ws.Range[rng.ToString()].Value).ToString().Replace(',', '.');

                            rng     = definedNames.Get(siglaEntita, "PSMAX_ASSETTO" + assetto["Riferimento"] + "_FASCIA" + j, suffissoData, Date.GetSuffissoOra(i + 1));
                            rngCorr = definedNames.Get(siglaEntita, "PSMAX_CORRETTA_ASSETTO" + assetto["Riferimento"] + "_FASCIA" + j, suffissoData, Date.GetSuffissoOra(i + 1));
                            string psmaxVal = (ws.Range[rngCorr.ToString()].Value ?? ws.Range[rng.ToString()].Value).ToString().Replace(',', '.');

                            rng = definedNames.Get(siglaEntita, "PTMIN_ASSETTO" + assetto["Riferimento"] + "_FASCIA" + j, suffissoData, Date.GetSuffissoOra(i + 1));
                            string ptminVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.');

                            rng = definedNames.Get(siglaEntita, "PTMAX_ASSETTO" + assetto["Riferimento"] + "_FASCIA" + j, suffissoData, Date.GetSuffissoOra(i + 1));
                            string ptmaxVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.');

                            rng = definedNames.Get(siglaEntita, "TRISP_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1));
                            string trispVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.');

                            rng = definedNames.Get(siglaEntita, "GPA_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1));
                            string gpaVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.');

                            rng = definedNames.Get(siglaEntita, "GPD_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1));
                            string gpdVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.');

                            rng = definedNames.Get(siglaEntita, "TAVA_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1));
                            string tavaVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.');

                            rng = definedNames.Get(siglaEntita, "TARA_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1));
                            string taraVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.');

                            rng = definedNames.Get(siglaEntita, "BRS_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1));
                            string brsVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.');

                            string tderampaVal = null;
                            if (isTermo)
                            {
                                rng         = definedNames.Get(siglaEntita, "TDERAMPA_ASSETTO" + assetto["Riferimento"], suffissoData, Date.GetSuffissoOra(i + 1));
                                tderampaVal = (ws.Range[rng.ToString()].Value).ToString().Replace(',', '.');
                            }
                            if (ptminVal != "" && ptmaxVal != "")
                            {
                                vdt.Add(new XElement("FASCIA",
                                                     new XElement("PSMIN", psminVal),
                                                     new XElement("PSMAX", psmaxVal),
                                                     new XElement("ASSETTO",
                                                                  new XElement("IDASSETTO", assetto["IdAssetto"]),
                                                                  new XElement("PTMIN", ptminVal),
                                                                  new XElement("PTMAX", ptmaxVal),
                                                                  new XElement("TRISP", trispVal),
                                                                  new XElement("GPA", gpaVal),
                                                                  new XElement("GPD", gpdVal),
                                                                  new XElement("TAVA", tavaVal),
                                                                  new XElement("TARA", taraVal),
                                                                  new XElement("BRS", brsVal),
                                                                  (isTermo && tderampaVal != null ? new XElement("TDERAMPA", tderampaVal) : null)
                                                                  )
                                                     )
                                        );
                            }
                        }
                    }
                    if (isTermo)
                    {
                        Range rngProfiloPQNR = definedNames.Get(siglaEntita, "PQNR_PROFILO", suffissoData);
                        if (ws.Range[rngProfiloPQNR.ToString()].Value == null)
                        {
                            SplashScreen.Close();
                            System.Windows.Forms.MessageBox.Show("Non è stato definito alcun profilo PQNR per l'UP " + siglaEntita + ": l'esportazione verrà interrotta per questa UP. Compilare il suo profilo per poter esportare.", Simboli.NomeApplicazione + " - ERRORE!!!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                            SplashScreen.Show();

                            return(false);
                        }


                        XElement pqnr = new XElement("PQNR");
                        for (int j = 1; j <= 24; j++)
                        {
                            Range  rng     = definedNames.Get(siglaEntita, "PQNR" + j, suffissoData, Date.GetSuffissoOra(i + 1));
                            object pqnrVal = ws.Range[rng.ToString()].Value;
                            if (pqnrVal != null)
                            {
                                pqnr.Add(new XElement("Q", pqnrVal.ToString()));
                            }
                        }
                        vdt.Add(pqnr);
                    }

                    inserisci.Add(vdt);
                    ora++;
                }

                XDocument variazioneDatiTecnici = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "yes"),
                                                                new XElement("FLUSSO", new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"),
                                                                             inserisci)
                                                                );

                string filename = "VDT_" + codiceRUP.ToString().ToUpperInvariant() + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xml";
                variazioneDatiTecnici.Save(Path.Combine(exportPath, filename));

                return(true);
            }
            catch (Exception e)
            {
                Workbook.InsertLog(PSO.Core.DataBase.TipologiaLOG.LogErrore, "SistemaComandi.Esporta.CreaVariazioneDatiTecniciXML [" + siglaEntita + "]: " + e.Message);

                return(false);
            }
        }
예제 #18
0
파일: Esporta.cs 프로젝트: fberga/Iren
        protected bool CreaOfferteSuggeriteXML(object siglaEntita, object siglaAzione, string exportPath, DateTime dataRif, string mercato)
        {
            try
            {
                string          nomeFoglio   = DefinedNames.GetSheetName(siglaEntita);
                DefinedNames    definedNames = new DefinedNames(nomeFoglio);
                Excel.Worksheet ws           = Workbook.Sheets[nomeFoglio];

                string suffissoData = Date.GetSuffissoData(dataRif);
                int    oreGiorno    = Date.GetOreGiorno(dataRif);

                DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView;
                categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione + " AND Gerarchia is NULL";
                object codiceRUP = categoriaEntita[0]["CodiceRUP"];
                // Create an instance of the XmlSerializer class;
                // specify the type of object to be deserialized.
                XmlSerializer    serializer = new XmlSerializer(typeof(BMTransactionSUG));
                BMTransactionSUG bmt        = new BMTransactionSUG();
                if (Workbook.DaConsole)
                {
                    bmt.ApplySendAutomaticSpecified = true;
                    bmt.ApplySendAutomatic          = YESNO.YES;
                    bmt.OperatorCreator             = Workbook.NomeUtente;
                }
                else
                {
                    bmt.ApplySendAutomaticSpecified = false;
                }

                //schemalocation non viene creato nel file xml e non so come impstarlo
                // XNamespace schemaLocation = XNamespace.Get("urn:XML-BIDMGM BM_SuggestedOfferMSD.xsd");
                //Data e ora creazione Offerta

                bmt.DataCreazione = (DateTime.Now.Date).ToString("yyyyMMdd");
                bmt.OraCreazione  = (DateTime.Now.TimeOfDay.TotalMilliseconds).ToString();
                //bmt.OraCreazione = (DateTime.Now.TimeOfDay).ToString("HHmmss");
                //Reference Number
                string referenceNumber = codiceRUP.ToString().Replace("_", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss");
                bmt.ReferenceNumber = referenceNumber;

                /* XNamespace ns = XNamespace.Get("urn:XML-BIDMGM");
                 * XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
                 * XNamespace schemaLocation = XNamespace.Get("urn:XML-BIDMGM BM_SuggestedOfferMSD.xsd");
                 */
                //Dictionary<string, SpecMercato> Mi = new Dictionary<string, SpecMercato>();
                List <Tuple <string, TimeSpan, TimeSpan, int, bool> > mercatoMI = new List <Tuple <string, TimeSpan, TimeSpan, int, bool> >();
                mercatoMI = Simboli.MercatiMI;
                //Oggetto offerta suggerita
                bmt.Suggested = new Suggested();
                // Numero delle Entità selezionate (in questo metodo sempre una) oggetto del mercato.
                //TODO INSERIRE TUTTE LE ENTITA' SELEZIONATE
                int numEntità = 1;
                // verifico il mercato MI e le ore di quel mercato
                //controllo se ci sono dei vincoli di orario
                // Prima ora di mercato
                int oraInizio = mercatoMI.Where(x => x.Item1 == "MI" + mercato).FirstOrDefault().Item4;
                int oraFine   = oreGiorno;

                // Intervallo ore oggetto di mercato (fine-inizio)
                int intervalloOreMercato = oraFine - oraInizio + 1;
                // Array delle offete di mercato della unità selezionata
                bmt.Suggested.Coordinate = new SuggestedCoordinate[numEntità];

                // Offeta di mercato di una UP/UC
                bmt.Suggested.Coordinate[0] = new SuggestedCoordinate();
                // Data oggetto dell'offerta
                bmt.Suggested.Coordinate[0].FlowDate = dataRif.ToString("yyyyMMdd");
                // ID dell'unità
                bmt.Suggested.Coordinate[0].IDUnit = codiceRUP.ToString();
                // Mercato
                ElencoMercatiEnergia EnumMercato = (ElencoMercatiEnergia)Enum.Parse(typeof(ElencoMercatiEnergia), "MI" + mercato);
                bmt.Suggested.Coordinate[0].Mercato = EnumMercato;
                Range  rngAV   = new Range();
                Range  rngVe   = new Range();
                Range  rngVp   = new Range();
                Range  rngBi   = new Range();
                string prezzo  = "";
                string energia = "";
                string codBil  = "";
                int    sgId    = 0;
                for (int k = 1; k < 5; k++)
                {
                    /**/
                    rngAV   = definedNames.Get(siglaEntita, "OFFERTA_MI" + mercato + "_G" + k + "TIPO", suffissoData).Extend(colOffset: oreGiorno);
                    rngVe   = definedNames.Get(siglaEntita, "OFFERTA_MI" + mercato + "_G" + k + "E", suffissoData).Extend(colOffset: oreGiorno);
                    rngVp   = definedNames.Get(siglaEntita, "OFFERTA_MI" + mercato + "_G" + k + "P", suffissoData).Extend(colOffset: oreGiorno);
                    rngBi   = definedNames.Get(siglaEntita, "OFFERTA_MI" + mercato + "_G" + k + "CB", suffissoData).Extend(colOffset: oreGiorno);
                    energia = "0";
                    prezzo  = "0";
                    if (!ws.Range[rngVe.ToString()].EntireRow.Hidden)
                    {
                        sgId++;
                        switch (sgId)
                        {
                        case 1:
                            // Array offerte ACQ/VEN per UP/UC Primo gradino
                            bmt.Suggested.Coordinate[0].SG1 = new SuggestedCoordinateSG1[intervalloOreMercato];
                            for (int j = 0; j < intervalloOreMercato; j++)
                            {
                                // Dettaglio ACQ/VEN per ora j
                                bmt.Suggested.Coordinate[0].SG1[j] = new SuggestedCoordinateSG1();
                                //Quantità
                                energia = (ws.Range[rngVe.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");
                                bmt.Suggested.Coordinate[0].SG1[j].QUA = energia;

                                //Codice Bilanciamento
                                codBil = (ws.Range[rngBi.Columns[j].ToString()].Value ?? "").ToString();
                                bmt.Suggested.Coordinate[0].SG1[j].BILANC = codBil;
                                if (string.IsNullOrEmpty(codBil))
                                {
                                    prezzo = (ws.Range[rngVp.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");
                                }
                                else
                                {
                                    prezzo = "";
                                }
                                //Prezzo
                                bmt.Suggested.Coordinate[0].SG1[j].PRE = prezzo;

                                // Azione ACQ/VEN
                                //                                        bmt.Suggested.Coordinate[0].SG1[j].AZIONE =           TipoAzione.ACQ;
                                if (string.IsNullOrEmpty(prezzo) && string.IsNullOrEmpty(energia))
                                {
                                    bmt.Suggested.Coordinate[0].SG1[j].AZIONESpecified = false;
                                }
                                else
                                {
                                    bmt.Suggested.Coordinate[0].SG1[j].AZIONESpecified = true;
                                    bmt.Suggested.Coordinate[0].SG1[j].AZIONE          = (TipoAzione)Enum.Parse(typeof(TipoAzione), (ws.Range[rngAV.Columns[j].ToString()].Value ?? "0").ToString());
                                }

                                // Ora oggetto del mercato.
                                bmt.Suggested.Coordinate[0].SG1[j].Value = (oraInizio + j).ToString();
                            }
                            break;

                        case 2:
                            // Array offerte ACQ/VEN per UP/UC Secondo gradino
                            bmt.Suggested.Coordinate[0].SG2 = new SuggestedCoordinateSG2[intervalloOreMercato];
                            for (int j = 0; j < intervalloOreMercato; j++)
                            {
                                // Dettaglio ACQ/VEN per ora j
                                bmt.Suggested.Coordinate[0].SG2[j] = new SuggestedCoordinateSG2();

                                //Quantità
                                energia = (ws.Range[rngVe.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");
                                bmt.Suggested.Coordinate[0].SG2[j].QUA = energia;
                                //Codice Bilanciamento
                                codBil = (ws.Range[rngBi.Columns[j].ToString()].Value ?? "").ToString();
                                if (string.IsNullOrEmpty(codBil))
                                {
                                    prezzo = (ws.Range[rngVp.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");
                                }
                                else
                                {
                                    prezzo = "";
                                }
                                //Prezzo
                                bmt.Suggested.Coordinate[0].SG2[j].PRE    = prezzo;
                                bmt.Suggested.Coordinate[0].SG2[j].BILANC = codBil;

                                /*****************************************************************************************/
                                // Azione ACQ/VEN
                                if (string.IsNullOrEmpty(prezzo) && string.IsNullOrEmpty(energia))
                                {
                                    bmt.Suggested.Coordinate[0].SG2[j].AZIONESpecified = false;
                                }
                                else
                                {
                                    bmt.Suggested.Coordinate[0].SG2[j].AZIONESpecified = true;
                                    bmt.Suggested.Coordinate[0].SG2[j].AZIONE          = (TipoAzione)Enum.Parse(typeof(TipoAzione), (ws.Range[rngAV.Columns[j].ToString()].Value ?? "0").ToString());
                                }
                                /*****************************************************************************************/
                                // Ora oggetto del mercato.
                                bmt.Suggested.Coordinate[0].SG2[j].Value = (oraInizio + j).ToString();
                            }
                            break;

                        case 3:
                            // Array offerte ACQ/VEN per UP/UC Terzo gradino
                            bmt.Suggested.Coordinate[0].SG3 = new SuggestedCoordinateSG3[intervalloOreMercato];
                            for (int j = 0; j < intervalloOreMercato; j++)
                            {
                                // Dettaglio ACQ/VEN per ora j
                                bmt.Suggested.Coordinate[0].SG3[j] = new SuggestedCoordinateSG3();
                                //Quantità
                                energia = (ws.Range[rngVe.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");
                                bmt.Suggested.Coordinate[0].SG3[j].QUA = energia;
                                //Codice Bilanciamento
                                codBil = (ws.Range[rngBi.Columns[j].ToString()].Value ?? "").ToString();
                                if (string.IsNullOrEmpty(codBil))
                                {
                                    prezzo = (ws.Range[rngVp.Columns[j].ToString()].Value ?? "0").ToString().Replace(".", ",");
                                }
                                else
                                {
                                    prezzo = "";
                                }
                                bmt.Suggested.Coordinate[0].SG3[j].BILANC = codBil;
                                //Prezzo
                                bmt.Suggested.Coordinate[0].SG3[j].PRE = prezzo;
                                /***************************************************************************************/
                                // Azione ACQ/VEN
                                if (string.IsNullOrEmpty(prezzo) && string.IsNullOrEmpty(energia))
                                {
                                    bmt.Suggested.Coordinate[0].SG3[j].AZIONESpecified = false;
                                }
                                else
                                {
                                    bmt.Suggested.Coordinate[0].SG3[j].AZIONESpecified = true;
                                    bmt.Suggested.Coordinate[0].SG3[j].AZIONE          = (TipoAzione)Enum.Parse(typeof(TipoAzione), (ws.Range[rngAV.Columns[j].ToString()].Value ?? "0").ToString());
                                }

                                // Ora oggetto del mercato.
                                bmt.Suggested.Coordinate[0].SG3[j].Value = (oraInizio + j).ToString();
                            }
                            break;
예제 #19
0
        protected bool CreaOfferteSuggeriteXML_GME(object siglaEntita, object siglaAzione, string exportPath, DateTime dataRif, string mercato)
        {
            try
            {
                string          nomeFoglio   = DefinedNames.GetSheetName(siglaEntita);
                DefinedNames    definedNames = new DefinedNames(nomeFoglio);
                Excel.Worksheet ws           = Workbook.Sheets[nomeFoglio];

                string suffissoData = Date.GetSuffissoData(dataRif);
                int    oreGiorno    = Date.GetOreGiorno(dataRif);

                DataView categoriaEntita = Workbook.Repository[DataBase.TAB.CATEGORIA_ENTITA].DefaultView;
                categoriaEntita.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND IdApplicazione = " + Workbook.IdApplicazione;
                object codiceRUP = categoriaEntita[0]["CodiceRUP"];
                //bool isTermo = categoriaEntita[0]["SiglaCategoria"].Equals("IREN_60T");

                DataView entitaParametro = Workbook.Repository[DataBase.TAB.ENTITA_PARAMETRO].DefaultView;
                entitaParametro.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND idParametro = 903 AND DataIV <= '" + dataRif.ToString("yyyyMMdd") + "01' AND DataFV >= '" + dataRif.ToString("yyyyMMdd") + "25' AND IdApplicazione = " + Workbook.IdApplicazione;

                decimal calcoloPPA = (decimal)entitaParametro[0]["Valore"];

                XNamespace ns  = XNamespace.Get("urn:XML-PIPE");
                XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
                XNamespace xsd = XNamespace.Get("http://www.w3.org/2001/XMLSchema");

                string referenceNumber = codiceRUP.ToString().Replace("_", "") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss");

                DataView entitaProprieta = Workbook.Repository[DataBase.TAB.ENTITA_PROPRIETA].DefaultView;
                entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'COMPANY_NAME' AND IdApplicazione = " + Workbook.IdApplicazione;
                object companyName = entitaProprieta[0]["Valore"];

                entitaProprieta.RowFilter = "SiglaEntita = '" + siglaEntita + "' AND SiglaProprieta = 'COMPANY_IDENTIFIER' AND IdApplicazione = " + Workbook.IdApplicazione;
                object companyID = entitaProprieta[0]["Valore"];

                XElement PIPEDocument = new XElement(ns + "PIPEDocument",
                                                     new XAttribute("ReferenceNumber", referenceNumber.Length > 30 ? referenceNumber.Substring(0, 30) : referenceNumber),
                                                     new XAttribute("CreationDate", DateTime.Now.ToString("yyyyMMddHHmmss")),
                                                     new XAttribute("Version", "1.0"),
                                                     new XAttribute(XNamespace.Xmlns + "xsi", xsi),
                                                     new XAttribute(XNamespace.Xmlns + "xsd", xsd),
                                                     new XElement(ns + "TradingPartnerDirectory",
                                                                  new XElement(ns + "Sender",
                                                                               new XElement(ns + "TradingPartner",
                                                                                            new XAttribute("PartnerType", "Market Participant"),
                                                                                            new XElement(ns + "CompanyName", companyName),
                                                                                            new XElement(ns + "CompanyIdentifier", companyID)
                                                                                            )
                                                                               ),
                                                                  new XElement(ns + "Recipient",
                                                                               new XElement(ns + "TradingPartner",
                                                                                            new XAttribute("PartnerType", "Operator"),
                                                                                            new XElement(ns + "CompanyName", companyName),
                                                                                            new XElement(ns + "CompanyIdentifier", companyID)
                                                                                            )
                                                                               )
                                                                  )
                                                     );

                string[] informazioni = { "OFFERTA_MSD_G0", "OFFERTA_MSD_G1", "OFFERTA_MSD_G2", "OFFERTA_MSD_G3", "OFFERTA_MSD_G4" };
                string[] gradini      = { "AS", "GR1", "GR2", "GR3", "RS" };

                for (int i = 0; i < oreGiorno; i++)
                {
                    XElement bidSubmittal = new XElement(ns + "BidSubmittal",
                                                         new XAttribute("PredefinedOffer", "No"),
                                                         new XElement(ns + "Market", mercato),
                                                         new XElement(ns + "Date", dataRif.ToString("yyyyMMdd")),
                                                         new XElement(ns + "Hour", i + 1),
                                                         new XElement(ns + "UnitReferenceNumber", codiceRUP));

                    Range  rng;
                    string presentedOffer;
                    string energia;
                    string prezzo;

                    for (int j = 0; j < informazioni.Length; j++)
                    {
                        //Vendita
                        rng            = definedNames.Get(siglaEntita, informazioni[j] + "VE", suffissoData, Date.GetSuffissoOra(i + 1));
                        presentedOffer = "No";
                        energia        = "0";
                        prezzo         = "0";
                        if (!ws.Range[rng.ToString()].EntireRow.Hidden)
                        {
                            presentedOffer = "Yes";
                            energia        = (ws.Range[rng.ToString()].Value ?? "0").ToString().Replace(".", ",");

                            rng = definedNames.Get(siglaEntita, informazioni[j] + "VP", suffissoData, Date.GetSuffissoOra(i + 1));
                            if (ws.Range[rng.ToString()].Value != null)
                            {
                                prezzo = ws.Range[rng.ToString()].Value.ToString().Replace(".", ",");
                            }
                        }

                        bidSubmittal.Add(new XElement(ns + "Offer",
                                                      new XAttribute("PresentedOffer", presentedOffer),
                                                      new XAttribute("Purpose", "Sell"),
                                                      new XAttribute("Scope", gradini[j]),
                                                      new XElement(ns + "BidQuantity", energia,
                                                                   new XAttribute("UnitOfMeasure", "MWh")),
                                                      new XElement(ns + "EnergyPrice", prezzo),
                                                      new XElement(ns + "SourceOffer", "SPOT"))
                                         );

                        //Acquisto
                        rng            = definedNames.Get(siglaEntita, informazioni[j] + "AE", suffissoData, Date.GetSuffissoOra(i + 1));
                        presentedOffer = "No";
                        energia        = "0";
                        prezzo         = "0";
                        if (!ws.Range[rng.ToString()].EntireRow.Hidden)
                        {
                            presentedOffer = "Yes";
                            energia        = (ws.Range[rng.ToString()].Value ?? "0").ToString().Replace(".", ",");

                            rng = definedNames.Get(siglaEntita, informazioni[j] + "AP", suffissoData, Date.GetSuffissoOra(i + 1));

                            if (ws.Range[rng.ToString()].Value != null)
                            {
                                prezzo = ws.Range[rng.ToString()].Value.ToString().Replace(".", ",");
                            }
                        }

                        bidSubmittal.Add(new XElement(ns + "Offer",
                                                      new XAttribute("PresentedOffer", presentedOffer),
                                                      new XAttribute("Purpose", "Buy"),
                                                      new XAttribute("Scope", gradini[j]),
                                                      new XElement(ns + "BidQuantity", energia,
                                                                   new XAttribute("UnitOfMeasure", "MWh")),
                                                      new XElement(ns + "EnergyPrice", prezzo),
                                                      new XElement(ns + "SourceOffer", "SPOT"))
                                         );
                    }

                    //Accensione - Vendita
                    presentedOffer = "Yes";
                    prezzo         = "0";
                    energia        = "0";
                    if (definedNames.TryGet(out rng, siglaEntita, "ACCENSIONE_MSD"))
                    {
                        //aggiusto la colonna che mi ritorna DATA1.H1
                        //rng.StartColumn -= 1;
                        if (ws.Range[rng.ToString()].Value != null)
                        {
                            prezzo = ws.Range[rng.ToString()].Value.ToString().Replace(".", ",");
                        }
                    }

                    bidSubmittal.Add(new XElement(ns + "Offer",
                                                  new XAttribute("PresentedOffer", presentedOffer),
                                                  new XAttribute("Purpose", "Sell"),
                                                  new XAttribute("Scope", "AC"),
                                                  new XElement(ns + "BidQuantity", energia,
                                                               new XAttribute("UnitOfMeasure", "MWh")),
                                                  new XElement(ns + "EnergyPrice", prezzo),
                                                  new XElement(ns + "SourceOffer", "SPOT"))
                                     );

                    //Cambio Assetto - Vendita
                    presentedOffer = "Yes";
                    prezzo         = "0";
                    if (definedNames.TryGet(out rng, siglaEntita, "CAMBIO_ASSETTO_MSD"))
                    {
                        //aggiusto la colonna che mi ritorna DATA1.H1
                        //rng.StartColumn -= 1;
                        if (ws.Range[rng.ToString()].Value != null)
                        {
                            prezzo = ws.Range[rng.ToString()].Value.ToString().Replace(".", ",");
                        }
                    }

                    bidSubmittal.Add(new XElement(ns + "Offer",
                                                  new XAttribute("PresentedOffer", presentedOffer),
                                                  new XAttribute("Purpose", "Sell"),
                                                  new XAttribute("Scope", "CA"),
                                                  new XElement(ns + "BidQuantity", energia,
                                                               new XAttribute("UnitOfMeasure", "MWh")),
                                                  new XElement(ns + "EnergyPrice", prezzo),
                                                  new XElement(ns + "SourceOffer", "SPOT"))
                                     );

                    if (calcoloPPA == 1)
                    {
                        bidSubmittal.Add(new XAttribute("RifStand", "MI1"));
                    }

                    PIPEDocument.Add(new XElement(ns + "PIPTransaction", bidSubmittal));
                }

                XDocument offerteSuggerite = new XDocument(new XDeclaration("1.0", "ISO-8859-1", "yes"),
                                                           PIPEDocument
                                                           );

                string filename = "Suggerite_MSD_" + codiceRUP.ToString() + "_GME.xml";
                offerteSuggerite.Save(Path.Combine(exportPath, filename));

                return(true);
            }
            catch
            {
                return(false);
            }
        }