Пример #1
0
        public SheetExport(Excel.Worksheet ws)
        {
            _ws      = ws;
            _mercato = ws.Name;
            _appID   = Workbook.Repository[DataBase.TAB.MERCATI].AsEnumerable()
                       .Where(r => r["DesMercato"].Equals(_mercato))
                       .Select(r => (int)r["IdApplicazioneMercato"])
                       .FirstOrDefault();

            AggiornaParametriSheet();

            _definedNames = new DefinedNames(_mercato);
            if (_mercato != "MSD1")
            {
                _definedNamesMercatoPrec = new DefinedNames(Simboli.GetMercatoPrec(_mercato));
            }
        }
Пример #2
0
 public override void SetMercatoAttivo()
 {
     Workbook.Mercato = Simboli.GetActiveMarket(DateTime.Now.Hour);
 }
Пример #3
0
        private void ChangeSelectionToIncrement(Excel.Range Target)
        {
            // Descrizione Combo / Riga Calcolo
            //offerta_dictionary = new Dictionary<string, int>();
            // SiglaInformazione riga selezionata / SiglaInformazione riga calcolo
            //calcolo_dictionary = new Dictionary<string, string>();

            _gotoDictionary = new Dictionary <string, int>();

            btnApplica.Enabled = false;

            comboBox_VaiA.DataSource     = null;
            comboBox_applicaA.DataSource = null;

            groupQuantità.Visible = false;
            groupPrezzo.Visible   = false;

            lbErrore.Text       = "";
            lbErrore.ForeColor  = Color.Red;
            btnApplica.Enabled  = false;
            _selectionIsCorrect = false;

            if (Target.Rows.Count > 1)
            {
                foreach (Excel.Range row in Target.Rows)
                {
                    if (row.EntireRow.Hidden)
                    {
                        lbErrore.Text = "ERRORE: Nel range selezionato ci sono righe nascoste.";
                        return;
                    }
                }
                lbErrore.ForeColor = Color.DarkOrange;
                lbErrore.Text      = "ATTENZIONE: Nel range selezionato ci sono più righe.";
            }
            foreach (Excel.Range row in Target.Rows)
            {
                if (!_definedNames.IsEditable(row.Row))
                {
                    lbErrore.Text = "ERRORE: Il range selezionato contiene delle righe non modificabili.";
                    return;
                }
            }

            int firstCol = _definedNames.GetFirstCol();

            if (Target.Column < firstCol + Simboli.GetMarketOffsetMI(Workbook.Mercato, Workbook.DataAttiva))
            {
                lbErrore.Text = "ERRORE: Il range selezionato contiene celle appartenenti a mercati chiusi.";
                return;
            }

            /* Controllo se la riga selezionata è corretta per l'operazione richiesta */
            string name_col_row_selected = _definedNames.GetNameByRow(Target.Row).FirstOrDefault();
            string siglaEntita           = name_col_row_selected.Split('.').First();
            string siglaInformazione     = name_col_row_selected.Split('.').Last();

            is_price    = is_Name_Match_Price(name_col_row_selected);
            is_quantity = is_Name_Match_Quantity(name_col_row_selected);

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

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

            //if (definizioneOfferta.Count == 0)
            //{
            //    lbErrore.Text = "ERRORE: Non ci sono opzioni attive per questa funzione.";
            //    return;
            //}

            //DataView informazioni = Workbook.Repository[DataBase.TAB.ENTITA_INFORMAZIONE].DefaultView;

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

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

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

            //    _gotoDictionary.Add(desInformazioneCombo, _definedNames.GetRowByName(entitaCalcolo, infoCalcolo));
            //}

            _gotoDictionary = OfferteMIHelper.GetGOTODictionary(siglaEntita, siglaInformazione, _definedNames);

            if (_gotoDictionary == null)
            {
                lbErrore.Text = "ERRORE: Non ci sono opzioni attive per questa funzione.";
                return;
            }

            if (is_price)
            {
                groupQuantità.Visible = false;
                groupPrezzo.Visible   = true;

                comboBox_applicaA.DataSource    = new BindingSource(_gotoDictionary, null);
                comboBox_applicaA.ValueMember   = "Value";
                comboBox_applicaA.DisplayMember = "Key";
                comboBox_applicaA.SelectedIndex = -1;
            }
            else if (is_quantity)
            {
                groupQuantità.Visible = true;
                groupPrezzo.Visible   = false;

                comboBox_VaiA.DataSource    = new BindingSource(_gotoDictionary, null);
                comboBox_VaiA.ValueMember   = "Value";
                comboBox_VaiA.DisplayMember = "Key";
                comboBox_VaiA.SelectedIndex = -1;
            }
            else
            {
                lbErrore.Text = "ERRORE: Il range selezionato non si riferisce a quantità o prezzi.";
                return;
            }

            _selectionIsCorrect = true;

            if (_valuesAreCorrect)
            {
                btnApplica.Enabled = true;
            }

            btnRipristina.Enabled = false;

            _origRng = Target;

            Handler.SaveOriginValues(Target, tableName: ALL_OLD_VALUE);
            if (is_price)
            {
                Excel.Range rng = _ws.Range[_ws.Cells[Target.Row - 2, Target.Column], _ws.Cells[Target.Row - 2, Target.Column + Target.Columns.Count - 1]];
                Handler.SaveOriginValues(rng, tableName: ALL_OLD_VALUE);
            }
            if (is_quantity)
            {
                Excel.Range rng = _ws.Range[_ws.Cells[Target.Row - 1, Target.Column], _ws.Cells[Target.Row - 1, Target.Column + Target.Columns.Count - 1]];
                Handler.SaveOriginValues(rng, tableName: ALL_OLD_VALUE);
            }
        }
Пример #4
0
        private void ChangeSelectionToIncrement(Excel.Range Target)
        {
            lbErrore.Text       = "";
            lbErrore.ForeColor  = Color.Red;
            btnApplica.Enabled  = false;
            _selectionIsCorrect = false;
            if (Target.Rows.Count > 1)
            {
                foreach (Excel.Range row in Target.Rows)
                {
                    if (row.EntireRow.Hidden)
                    {
                        lbErrore.Text = "ERRORE: Nel range selezionato ci sono righe nascoste.";
                        return;
                    }
                }
                lbErrore.ForeColor = Color.DarkOrange;
                lbErrore.Text      = "ATTENZIONE: Nel range selezionato ci sono più righe.";
            }
            foreach (Excel.Range row in Target.Rows)
            {
                if (!_definedNames.IsEditable(row.Row))
                {
                    lbErrore.Text = "ERRORE: Il range selezionato contiene delle righe non modificabili.";
                    return;
                }
            }

            int marketOffset = Workbook.Repository.Applicazione["ModificaDinamica"].Equals("1") ? Simboli.GetMarketOffset(DateTime.Now.Hour) : 0;
            int firstCol     = _definedNames.GetColFromDate(Date.SuffissoDATA1);

            if (Target.Column < firstCol + marketOffset)
            {
                lbErrore.Text = "ERRORE: Il range selezionato contiene celle appartenenti a mercati chiusi.";
                return;
            }

            _selectionIsCorrect = true;

            if (_valuesAreCorrect)
            {
                btnApplica.Enabled = true;
            }

            btnRipristina.Enabled = false;

            if (Target.Cells.Count == 1)
            {
                _origVal       = new object[1, 1];
                _origVal[0, 0] = Target.Value;
            }
            else
            {
                _origVal = Target.Value;
            }

            _origRng = Target;
        }
Пример #5
0
        /// <summary>
        /// Formatta il blocco entità.
        /// </summary>
        /// <param name="siglaEntita">Sigla entità.</param>
        /// <param name="desEntita">Descrizione.</param>
        /// <param name="codiceRUP">Codice RUP.</param>
        protected void FormattaBloccoEntita(object siglaEntita, object desEntita, object codiceRUP)
        {
            Range rngMercatoPrec = new Range();
            //Titolo
            Range rng = new Range(_definedNames.GetRowByName(siglaEntita, "T"), _struttura.colBlock, 1, 10);

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

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

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

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

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

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

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

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

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

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

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

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

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

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