public void SalvaPianificazione(PianificazioneDS ds)
        {
            PianificazioneAdapter a = new PianificazioneAdapter(DbConnection, DbTransaction);

            a.UpdateTable(ds.PIANIFICAZIONE_LANCIO.TableName, ds);
            a.UpdateTable(ds.PIANIFICAZIONE_FASE.TableName, ds);
        }
        public void UpdateTable(string tablename, PianificazioneDS ds)
        {
            string query = string.Format(CultureInfo.InvariantCulture, "SELECT * FROM {0}", tablename);

            using (DbDataAdapter a = BuildDataAdapter(query))
            {
                try
                {
                    a.ContinueUpdateOnError = false;
                    DataTable        dt  = ds.Tables[tablename];
                    DbCommandBuilder cmd = BuildCommandBuilder(a);
                    a.UpdateCommand = cmd.GetUpdateCommand();
                    a.DeleteCommand = cmd.GetDeleteCommand();
                    a.InsertCommand = cmd.GetInsertCommand();
                    a.Update(dt);
                }
                catch (DBConcurrencyException ex)
                {
                }
                catch
                {
                    throw;
                }
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            lblMessage.Text = string.Empty;

            dtAl.Value = DateTime.Today.AddDays(+7);

            dtDal.Value = DateTime.Today.AddDays(-1);

            using (PianificazioneBusiness bPianificazione = new PianificazioneBusiness())
            {
                _dsPianificazione = new PianificazioneDS();
                bPianificazione.FillTABFAS(_dsPianificazione);

                List <string> reparti = new List <string>();
                reparti.Add(" ");
                reparti.AddRange(_dsPianificazione.TABFAS.Where(x => !x.IsCODICECLIFOPREDFASENull()).OrderBy(x => x.CODICECLIFOPREDFASE).Select(x => x.CODICECLIFOPREDFASE).Distinct().ToList());

                _fasi = _dsPianificazione.TABFAS.ToList();

                ddlReparto.Items.AddRange(reparti.ToArray());
            }

            ddlTipoODL.Items.Add(" ");
            ddlTipoODL.Items.Add("PIANIFICATO");
            ddlTipoODL.Items.Add("APERTO");
            ddlTipoODL.SelectedIndex = 0;
        }
        public void FillPIAN_CATENA_COMMESSA(PianificazioneDS ds)
        {
            string select = @"SELECT * from PIAN_CATENA_COMMESSA";

            using (DbDataAdapter da = BuildDataAdapter(select))
            {
                da.Fill(ds.PIAN_CATENA_COMMESSA);
            }
        }
        public void FillUSR_PRD_MOVFASIAperti(PianificazioneDS ds)
        {
            string select = @"SELECT * FROM USR_PRD_MOVFASI WHERE QTADATER > 0 AND IDTIPOMOVFASE <> 'ODM0000001'";

            using (DbDataAdapter da = BuildDataAdapter(select))
            {
                da.Fill(ds.USR_PRD_MOVFASI);
            }
        }
        public void FillTABFAS(PianificazioneDS ds)
        {
            string select = @" select * from gruppo.TABFAS ";

            using (DbDataAdapter da = BuildDataAdapter(select))
            {
                da.Fill(ds.TABFAS);
            }
        }
        public void FillUSR_PRD_LANCIODAperti(PianificazioneDS ds)
        {
            string select = @"SELECT DISTINCT LA.* FROM USR_PRD_LANCIOD LA 
                            INNER JOIN USR_PRD_FASI FA ON FA.IDLANCIOD = LA.IDLANCIOD
                            INNER JOIN USR_PRD_MOVFASI MF ON MF.IDPRDFASE = FA.IDPRDFASE
                            WHERE MF.QTADATER > 0";

            using (DbDataAdapter da = BuildDataAdapter(select))
            {
                da.Fill(ds.USR_PRD_LANCIOD);
            }
        }
        public void FillPIANIFICAZIONE_LANCIOByIdLancio(PianificazioneDS ds, decimal IDLANCIO)
        {
            string select = @"SELECT * FROM PIANIFICAZIONE_LANCIO WHERE IDLANCIO = $P{IDLANCIO}";

            ParamSet ps = new ParamSet();

            ps.AddParam("IDLANCIO", DbType.Decimal, IDLANCIO);

            using (DbDataAdapter da = BuildDataAdapter(select, ps))
            {
                da.Fill(ds.PIANIFICAZIONE_LANCIO);
            }
        }
        public void FillPIANIFICAZIONE_LANCIO(PianificazioneDS ds, string IDLANCIOD)
        {
            string select = @"SELECT * FROM PIANIFICAZIONE_LANCIO WHERE IDLANCIOD = $P{IDLANCIOD}";

            ParamSet ps = new ParamSet();

            ps.AddParam("IDLANCIOD", DbType.String, IDLANCIOD);

            using (DbDataAdapter da = BuildDataAdapter(select, ps))
            {
                da.Fill(ds.PIANIFICAZIONE_LANCIO);
            }
        }
        public void FillUSR_PRD_FASIByIDLANCIOD(PianificazioneDS ds, string IDLANCIOD)
        {
            string select = @"SELECT * FROM USR_PRD_FASI WHERE IDLANCIOD = $P{IDLANCIOD}";

            ParamSet ps = new ParamSet();

            ps.AddParam("IDLANCIOD", DbType.String, IDLANCIOD);

            using (DbDataAdapter da = BuildDataAdapter(select, ps))
            {
                da.Fill(ds.USR_PRD_FASI);
            }
        }
        public void FillUSR_INFRA_FASE_TO_FASE(PianificazioneDS ds, DateTime dataLimiteRicerche)
        {
            string select = @"select * from siglapp.usr_infra_fase_to_fase where datavr >  $P{DATALIMITE} ";

            ParamSet ps = new ParamSet();

            ps.AddParam("DATALIMITE", DbType.DateTime, dataLimiteRicerche);

            using (DbDataAdapter da = BuildDataAdapter(select, ps))
            {
                da.Fill(ds.USR_INFRA_FASE_TO_FASE);
            }
        }
        public void FillMAGAZZ(PianificazioneDS ds, List <string> IDMAGAZZ)
        {
            string inCOndition = ConvertToStringForInCondition(IDMAGAZZ);

            string select = @"SELECT * FROM GRUPPO.MAGAZZ WHERE IDMAGAZZ in ( {0} )";

            select = string.Format(select, inCOndition);

            using (DbDataAdapter da = BuildDataAdapter(select))
            {
                da.Fill(ds.MAGAZZ);
            }
        }
        public void FillUSR_PRD_FASI_ConAccantonatoDaLavorare(PianificazioneDS ds)
        {
            string select = @"select distinct fa.* from usr_prd_fasi fa 
                                inner join usr_accto_con_doc doc on doc.iddestinazione = fa.idprdfase
                                inner join usr_accto_con con on con.idacctocon = doc.idacctocon
                                where idprdfasepadre is null and con.origine in (0,1,2)
                                ";

            using (DbDataAdapter da = BuildDataAdapter(select))
            {
                da.Fill(ds.USR_PRD_FASI);
            }
        }
        public void FillPIANIFICAZIONE_STATICA(PianificazioneDS ds, DateTime dataInizio, DateTime dataFine)
        {
            string dtIizio = dataInizio.ToString("dd/MM/yyyy");
            string dtFine  = dataFine.ToString("dd/MM/yyyy");

            string select = string.Format(@" 
                            select * from PIANIFICAZIONE_STATICA
                                where data >=TO_DATE('{0}','DD/MM/YYYY') and data <=TO_DATE('{1}','DD/MM/YYYY') ", dtIizio, dtFine);

            using (DbDataAdapter da = BuildDataAdapter(select))
            {
                da.Fill(ds.PIANIFICAZIONE_STATICA);
            }
        }
        public void FillUSR_PRD_FASI_Sorelle(PianificazioneDS ds, string IDPRDFASE)
        {
            string select = @"select FA.* FROM usr_prd_fasi fa
                                inner join usr_prd_fasi ma on ma.idlanciod = fa.idlanciod
                                where ma.IDPRDFASE =  $P{IDPRDFASE} ";

            ParamSet ps = new ParamSet();

            ps.AddParam("IDPRDFASE", DbType.String, IDPRDFASE);

            using (DbDataAdapter da = BuildDataAdapter(select, ps))
            {
                da.Fill(ds.USR_PRD_FASI);
            }
        }
        public void FillUSR_PRD_FASIDaIDPRDMATE(PianificazioneDS ds, string IDPRDMATE)
        {
            string select = @" select * FROM usr_prd_fasi fa
                                inner join usr_prd_mate ma on ma.idprdfase = fa.idprdfase
                                where ma.idprdmate =  $P{IDPRDMATE}  ";

            ParamSet ps = new ParamSet();

            ps.AddParam("IDPRDMATE", DbType.String, IDPRDMATE);

            using (DbDataAdapter da = BuildDataAdapter(select, ps))
            {
                da.Fill(ds.USR_PRD_FASI);
            }
        }
        public void FillUSR_PRD_FASI_INFRAGRUPPO(PianificazioneDS ds, string IDPRDFASE_FROM)
        {
            string select = @"select * from usr_prd_fasi fa
                    inner join siglapp.usr_infra_fase_to_fase infra on infra.idprdfase_to = fa.idprdfase
                    where infra.idprdfase_from =  $P{IDPRDFASE_FROM} ";

            ParamSet ps = new ParamSet();

            ps.AddParam("IDPRDFASE_FROM", DbType.String, IDPRDFASE_FROM);

            using (DbDataAdapter da = BuildDataAdapter(select, ps))
            {
                da.Fill(ds.USR_PRD_FASI);
            }
        }
        public void FillUSR_PRD_FASI_FaseRipartenzaCommessaDaIDORIGINE_Tipo_1(PianificazioneDS ds, string IDPRDMOVMATE)
        {
            string select = @"select fa1.* FROM  usr_prd_mate ma 
                                inner join usr_prd_fasi fa1 on fa1.idprdfase = ma.idprdfase
                                where ma.idprdmate =  $P{IDPRDMOVMATE} ";

            ParamSet ps = new ParamSet();

            ps.AddParam("IDPRDMOVMATE", DbType.String, IDPRDMOVMATE);

            using (DbDataAdapter da = BuildDataAdapter(select, ps))
            {
                da.Fill(ds.USR_PRD_FASI);
            }
        }
        public void FillUSR_PRD_MOVFASIByIDLANCIOD(PianificazioneDS ds, string IDLANCIOD)
        {
            string select = @"SELECT MF.* FROM USR_PRD_MOVFASI MF 
                                INNER JOIN USR_PRD_FASI FA ON MF.IDPRDFASE = FA.IDPRDFASE
                                WHERE FA.IDLANCIOD = $P{IDLANCIOD}";

            ParamSet ps = new ParamSet();

            ps.AddParam("IDLANCIOD", DbType.String, IDLANCIOD);

            using (DbDataAdapter da = BuildDataAdapter(select, ps))
            {
                da.Fill(ds.USR_PRD_MOVFASI);
            }
        }
        public void FillUSR_ACCTO_CON(PianificazioneDS ds, string IDPRDFASE)
        {
            string select = @" select * from usr_accto_con con 
                            inner join usr_accto_con_doc doc on doc.idacctocon = con.idacctocon
                            where doc.destinazione=1
                            and doc.iddestinazione =  $P{IDPRDFASE} ";

            ParamSet ps = new ParamSet();

            ps.AddParam("IDPRDFASE", DbType.String, IDPRDFASE);

            using (DbDataAdapter da = BuildDataAdapter(select, ps))
            {
                da.Fill(ds.USR_ACCTO_CON);
            }
        }
        public void FillPIANIFICAZIONE_FASEPerCommessa(PianificazioneDS ds, string commessa)
        {
            string select = @"SELECT FA.* FROM PIANIFICAZIONE_FASE FA
                                INNER JOIN PIANIFICAZIONE_LANCIO LA ON LA.IDLANCIO = FA.IDLANCIO
                                WHERE LA.NOMECOMMESSA LIKE $P<COMMESSA>";

            ParamSet ps = new ParamSet();

            commessa = string.Format("%{0}%", commessa);
            ps.AddParam("COMMESSA", DbType.String, commessa);

            using (DbDataAdapter da = BuildDataAdapter(select, ps))
            {
                da.Fill(ds.PIANIFICAZIONE_FASE);
            }
        }
        public void FillUSR_PRD_FASI_FaseRipartenzaCommessaDaIDORIGINE_Tipo_2(PianificazioneDS ds, string IDPRDFLUSSOMOVMATE)
        {
            string select = @"select FA.* FROM usr_prd_fasi FA 
                                INNER JOIN usr_prd_movmate MM ON MM.IDPRDFASE = FA.IDPRDFASE                                
                                INNER JOIN usr_prd_flusso_movmate FMM ON FMM.idprdmovmate = MM.idprdmovmate
                                where FMM.idprdflussomovmate =  $P{IDPRDFLUSSOMOVMATE}";

            ParamSet ps = new ParamSet();

            ps.AddParam("IDPRDFLUSSOMOVMATE", DbType.String, IDPRDFLUSSOMOVMATE);

            using (DbDataAdapter da = BuildDataAdapter(select, ps))
            {
                da.Fill(ds.USR_PRD_FASI);
            }
        }
        public void FillUSR_PRD_FASI_ROOT(PianificazioneDS ds, DateTime dataInizio, DateTime dataFine)
        {
            string dtInizio = dataInizio.ToString("dd/MM/yyyy");

            dtInizio += " 00:00:01";
            string dtFine = dataFine.ToString("dd/MM/yyyy");

            dtFine += " 23:59:59";

            string select = @"SELECT * FROM PIANIFICAZIONE_FASE WHERE ( DATAINIZIO <= to_date('{1}','DD/MM/YYYY HH24:MI:SS') AND DATAINIZIO >= to_date('{0}','DD/MM/YYYY HH24:MI:SS') ) OR ( DATAFINE <= to_date('{1}','DD/MM/YYYY HH24:MI:SS') AND DATAFINE >= to_date('{0}','DD/MM/YYYY HH24:MI:SS') )";

            select = string.Format(select, dtInizio, dtFine);
            using (DbDataAdapter da = BuildDataAdapter(select))
            {
                da.Fill(ds.PIANIFICAZIONE_FASE);
            }
        }
        public void FillV_PIAN_AGGR_2(PianificazioneDS ds, DateTime dataInizio, DateTime dataFine, string reparto, string fase, string tipoODL)
        {
            string dtIizio = dataInizio.ToString("dd/MM/yyyy");
            string dtFine  = dataFine.ToString("dd/MM/yyyy");

            string select = string.Format(@" 
                            select distinct la.idmagazz,fa.idmagazz idmagazz_fase,nvl(TRIM(SE.RAGIONESOC),' ') AS SEGNALATORE,pf.modello as modellolancio,ar.modello ,pf.DESMAGAZZ AS descrizione,fa.datainizio,
                                fa.datafine,fa.codiceclifo as reparto,tf.codicefase,nvl(pb.FINITURA,' ') finitura,nvl(pb.materiale,' ')materiale,nvl(pb.pezzi,'0')pezzi,
                                fa.stato,fa.qtadater as qta, nvl(fior.idgruppo*1000+FIOR.ORDINE,-1) gruppo   
                                from PIANIFICAZIONE_RUNTIME fa
                                inner join gruppo.magazz ar on ar.idmagazz=fa.idmagazz
                                inner join usr_prd_lanciod la on la.idlanciod = fa.idlanciod
                                inner join gruppo.magazz pf on pf.idmagazz=la.idmagazz
                                inner join usr_prd_fasi prfa on fa.idprdfase = prfa.idprdfase
                                inner join gruppo.tabfas tf on tf.idtabfas = prfa.idtabfas
                                LEFT JOIN GRUPPO.CLIFO SE ON SE.CODICE = LA.SEGNALATORE 
                                left join gruppo.tabtipm mat on mat.idtabtipm = pf.idtabtipm
                                LEFT JOIN PEZZI_BARRA PB ON PB.IDMAGAZZ = fa.IDMAGAZZ AND PB.IDMAGAZZLANCIO=LA.IDMAGAZZ                                
                                left join finitura_ordine fior on fior.finitura=pb.finitura
                                where fa.qtadater>0 and fa.datainizio <=TO_DATE('{1}','DD/MM/YYYY') ", dtIizio, dtFine);

            if (!string.IsNullOrEmpty(reparto.Trim()))
            {
                select = select + string.Format(" AND fa.codiceclifo = '{0}'", reparto);
                if (!string.IsNullOrEmpty(fase.Trim()))
                {
                    select = select + string.Format(" AND tf.codicefase = '{0}'", fase);
                }
            }

            if (tipoODL == "APERTO")
            {
                select = select + string.Format(" AND fa.STATO = '{0}'", tipoODL);
            }

            if (tipoODL == "PIANIFICATO")
            {
                select = select + " AND fa.STATO <> 'APERTO'";
            }

            using (DbDataAdapter da = BuildDataAdapter(select))
            {
                da.Fill(ds.V_PIAN_AGGR_2);
            }
        }
        public void FillUSR_PRD_FASI_FaseFinaleCommessaDaIDORIGINE_Tipo_2(PianificazioneDS ds, string IDPRDFLUSSOMOVMATE)
        {
            string select = @"select FA1.* FROM usr_prd_fasi FA 
                                INNER JOIN usr_prd_movmate MM ON MM.IDPRDFASE = FA.IDPRDFASE                                
                                INNER JOIN usr_prd_flusso_movmate FMM ON FMM.idprdmovmate = MM.idprdmovmate
                                inner join usr_prd_fasi fa1 on fa1.idlanciod = fa.idlanciod
                                where FMM.idprdflussomovmate =  $P{IDPRDFLUSSOMOVMATE}
                                and fa1.idprdfasepadre is null";

            ParamSet ps = new ParamSet();

            ps.AddParam("IDPRDFLUSSOMOVMATE", DbType.String, IDPRDFLUSSOMOVMATE);

            using (DbDataAdapter da = BuildDataAdapter(select, ps))
            {
                da.Fill(ds.USR_PRD_FASI);
            }
        }
        public void FillUSR_PRD_MOVFASI(PianificazioneDS ds, List <string> IDPRDFASE)
        {
            string inCOndition = ConvertToStringForInCondition(IDPRDFASE);

            string select = @"SELECT * FROM ditta1.USR_PRD_MOVFASI WHERE IDPRDFASE IN ( {0} )";

            select = string.Format(select, inCOndition);

            using (DbDataAdapter da = BuildDataAdapter(select))
            {
                da.Fill(ds.USR_PRD_MOVFASI);
            }

            select = @"SELECT * FROM ditta2.USR_PRD_MOVFASI WHERE IDPRDFASE IN ( {0} )";
            select = string.Format(select, inCOndition);

            using (DbDataAdapter da = BuildDataAdapter(select))
            {
                da.Fill(ds.USR_PRD_MOVFASI);
            }
        }
        public void FillUSR_PRD_FASIAperti(PianificazioneDS ds)
        {
            PianificazioneAdapter a = new PianificazioneAdapter(DbConnection, DbTransaction);

            a.FillUSR_PRD_FASIAperti(ds);
        }
        public void FillPIAN_CATENA_COMMESSA(PianificazioneDS ds)
        {
            PianificazioneAdapter a = new PianificazioneAdapter(DbConnection, DbTransaction);

            a.FillPIAN_CATENA_COMMESSA(ds);
        }
        public void FillPIANIFICAZIONE_LANCIOByIdLancio(PianificazioneDS ds, decimal IDLANCIO)
        {
            PianificazioneAdapter a = new PianificazioneAdapter(DbConnection, DbTransaction);

            a.FillPIANIFICAZIONE_LANCIOByIdLancio(ds, IDLANCIO);
        }
        public void FillUSR_PRD_LANCIOD(PianificazioneDS ds, string IDLANCIOD)
        {
            PianificazioneAdapter a = new PianificazioneAdapter(DbConnection, DbTransaction);

            a.FillUSR_PRD_LANCIOD(ds, IDLANCIOD);
        }