예제 #1
0
        private void btnInserisciScadenza_Click(object sender, EventArgs e)
        {
            if (dgvODL.SelectedCells.Count == 0)
            {
                MessageBox.Show("Selezionare un ODL", "ATTENZIONE", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (nmQuantita.Value == 0)
            {
                MessageBox.Show("La quantità non può essere 0", "ATTENZIONE", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            int rowIndex = dgvODL.SelectedCells[0].RowIndex;

            decimal quantitaDaTerminare = (decimal)dgvODL.Rows[rowIndex].Cells[(int)Colonne.QUANTITADATERMINARE].Value;

            if (quantitaDaTerminare == 0)
            {
                MessageBox.Show("La quantità da terminare dell'ODL è 0. Non ci sono articoli da pianificare.", "ATTENZIONE", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            string  IDPRDMOVFASE = dgvODL.Rows[rowIndex].Cells[(int)Colonne.IDPRDMOVFASE].Value as string;
            decimal qtaODL       = (decimal)dgvODL.Rows[rowIndex].Cells[(int)Colonne.QUANTITA].Value;

            using (PrioritaBusiness bPriorita = new PrioritaBusiness())
            {
                if (VerificaCreazioneNuovaScadenza(qtaODL, IDPRDMOVFASE))
                {
                    dgvScadenze.DataSource = null;
                    PrioritaDS.RW_SCADENZERow nuovaScadenza = _dsPriorita.RW_SCADENZE.NewRW_SCADENZERow();
                    nuovaScadenza.IDSCADENZA   = bPriorita.GetID();
                    nuovaScadenza.IDPRDMOVFASE = IDPRDMOVFASE;
                    nuovaScadenza.DATA         = EstraiSoloData(dtScadenza.Value);
                    nuovaScadenza.QTA          = nmQuantita.Value;
                    _dsPriorita.RW_SCADENZE.AddRW_SCADENZERow(nuovaScadenza);
                }
                bPriorita.UpdateRW_SCADENZE(_dsPriorita);
                _dsPriorita.AcceptChanges();

                AssociaScadenze(IDPRDMOVFASE);
            }
            AggiornaColoreRiga(rowIndex, dgvScadenze.Rows.Count > 0);
        }
예제 #2
0
        private bool VerificaCreazioneNuovaScadenza(decimal qtaODL, string IDPRDMOVFASE)
        {
            decimal totaleInScadenza = _dsPriorita.RW_SCADENZE.Where(x => x.IDPRDMOVFASE == IDPRDMOVFASE).Sum(x => x.QTA);

            if (qtaODL < totaleInScadenza + nmQuantita.Value)
            {
                string messaggio = string.Format("La quantita indicata ({0}) sommata alle quanità già in scadenza ({1}) è superiore alla quantità dell'ODL ({2})", nmQuantita.Value, totaleInScadenza, qtaODL);
                MessageBox.Show(messaggio, "ATTENZIONE", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                return(false);
            }
            PrioritaDS.RW_SCADENZERow scadenzaEsistente = _dsPriorita.RW_SCADENZE.Where(x => x.DATA == EstraiSoloData(dtScadenza.Value) && x.IDPRDMOVFASE == IDPRDMOVFASE).FirstOrDefault();
            if (scadenzaEsistente != null)
            {
                MessageBox.Show("Esiste già una scadenza con questa data. La quantità indicata sarà sommata a quella già in tabella", "ATTENZIONE", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                scadenzaEsistente.QTA += nmQuantita.Value;
                return(false);
            }
            return(true);
        }