private void UpdateSPSchedaHander(object sender, RowUpdatedEventArgs e)
        {
            if ((e.Status == UpdateStatus.Continue) && (e.StatementType == StatementType.Insert))
            {
                SchedeProcessoDS.SPSCHEDERow       row = (SchedeProcessoDS.SPSCHEDERow)e.Row;
                SchedeProcessoDS.SPSCHEDEDataTable dt  = row.Table as SchedeProcessoDS.SPSCHEDEDataTable;

                bool isIdentityReadOnly = dt.IDSPSCHEDAColumn.ReadOnly;
                dt.IDSPSCHEDAColumn.ReadOnly = false;
                try
                {
                    row.IDSPSCHEDA = (int)RetrievePostUpdateID <decimal>(e.Command, row);
                }
                finally
                {
                    dt.IDSPSCHEDAColumn.ReadOnly = isIdentityReadOnly;
                }
            }
        }
        private static SpScheda CreaScheda(SchedeProcessoDS.SPSCHEDERow riga, SchedeProcessoDS ds)
        {
            if (riga == null)
            {
                return(null);
            }
            SpScheda controllo = new SpScheda();

            controllo.IdSPScheda     = riga.IDSPSCHEDA;
            controllo.Master         = SPMaster.EstraiSPMaster(riga.IDSPMASTER);
            controllo.Codice         = riga.CODICE;
            controllo.Descrizione    = riga.DESCRIZIONE;
            controllo.Anagrafica     = riga.ANAGRAFICA;
            controllo.AreaProduzione = riga.AREAPRODUZIONE;
            controllo.Task           = riga.TASK;
            controllo.Cancellato     = riga.CANCELLATO;
            controllo.DataModifica   = riga.DATAMODIFICA;
            controllo.UtenteModifica = riga.UTENTEMODIFICA;
            controllo.ValoriScheda   = SPValoreScheda.EstraiListaSPValoreScheda(riga.IDSPSCHEDA, true, ds);
            controllo.Versione       = riga.VERSIONE;
            controllo.Stato          = riga.STATO;
            return(controllo);
        }
        public static string SalvaScheda(int idScheda, int IdSPMaster, string anagrafica, string codice, string descrizione, string areaProduzione, string task, List <ElementoScheda> controlli, List <ElementoScheda> obbligatori, string account)
        {
            SchedeProcessoDS ds = new SchedeProcessoDS();

            using (SchedeProcessoBusiness bScheda = new SchedeProcessoBusiness())
            {
                bScheda.GetSPScheda(idScheda, ds);
                //  bScheda.FillValoriSchede(ds, idScheda, true);
                codice = string.Empty;

                SchedeProcessoDS.SPSCHEDERow schedaPadre = ds.SPSCHEDE.Where(x => x.IDSPSCHEDA == idScheda).FirstOrDefault();
                int versione = 1;
                if (schedaPadre != null)
                {
                    versione          = schedaPadre.VERSIONE + 1;
                    schedaPadre.STATO = StatoSPScheda.STORICO;
                    codice            = schedaPadre.CODICE;
                }

                SchedeProcessoDS.SPSCHEDERow riga = ds.SPSCHEDE.NewSPSCHEDERow();
                riga.CODICE         = codice.ToUpper();
                riga.DESCRIZIONE    = descrizione.ToUpper();
                riga.IDSPMASTER     = IdSPMaster;
                riga.AREAPRODUZIONE = areaProduzione.ToUpper();
                riga.TASK           = task.ToUpper();
                riga.ANAGRAFICA     = anagrafica.ToUpper();
                riga.VERSIONE       = versione;
                riga.STATO          = StatoSPScheda.ATTIVA;
                riga.CANCELLATO     = false;
                riga.DATAMODIFICA   = DateTime.Now;
                riga.UTENTEMODIFICA = account.ToUpper();
                ds.SPSCHEDE.AddSPSCHEDERow(riga);

                //   int sequenza = 0;
                foreach (ElementoScheda controllo in obbligatori)
                {
                    if (!string.IsNullOrEmpty(controllo.Filename))
                    {
                        controllo.Valore = (controllo.Filename.Length > 30) ? controllo.Filename.Substring(0, 30) : controllo.Filename;
                    }
                    SPValoreScheda.SalvaValoreScheda(controllo.IDValore, controllo.IDElemento, riga.IDSPSCHEDA, controllo.Valore, controllo.Filedata, account, true, ds);
                }
                foreach (ElementoScheda controllo in controlli)
                {
                    if (!string.IsNullOrEmpty(controllo.Filename))
                    {
                        controllo.Valore = (controllo.Filename.Length > 30) ? controllo.Filename.Substring(0, 30) : controllo.Filename;
                    }
                    SPValoreScheda.SalvaValoreScheda(controllo.IDValore, controllo.IDElemento, riga.IDSPSCHEDA, controllo.Valore, controllo.Filedata, account, false, ds);
                }

                bScheda.UpdateTableSPScheda(ds);
                bScheda.UpdateTable(ds.SPVALORISCHEDE.TableName, ds);
                ds.AcceptChanges();
                if (string.IsNullOrEmpty(codice))
                {
                    riga.CODICE = string.Format("SP{0}", riga.IDSPSCHEDA.ToString().PadLeft(8, '0'));
                    bScheda.UpdateTableSPScheda(ds);
                }
                string messaggio = string.Format("Scheda creata correttamente. CODICE: {0}", riga.CODICE);
                return(messaggio);
            }
        }