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); }
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); }