private decimal GetUltimoSaldo(int IdPrezioso, string Cassaforte, PreziosiDS ds) { if (!ds.RW_MOVIMENTI_PREZIOSI.Any(x => x.IDPREZIOSO == IdPrezioso && x.CASSAFORTE == Cassaforte)) { return(0); } DateTime data = ds.RW_MOVIMENTI_PREZIOSI.Where(x => x.IDPREZIOSO == IdPrezioso && x.CASSAFORTE == Cassaforte).Max(x => x.DATA); if (data != null) { PreziosiDS.RW_MOVIMENTI_PREZIOSIRow riga = ds.RW_MOVIMENTI_PREZIOSI.Where(x => x.IDPREZIOSO == IdPrezioso && x.DATA == data && x.CASSAFORTE == Cassaforte).FirstOrDefault(); if (riga != null) { return(riga.SALDOFINALE); } } return(0); }
public bool SalvaMovimentoPreziosoCassaforteB(int IdPrezioso, string Operazione, decimal Quantita, string Causale, string ConnectedUser) { try { PreziosiDS ds = new PreziosiDS(); using (PreziosiBusiness bPreziosi = new PreziosiBusiness()) { bPreziosi.FillRW_MOVIMENTI_PREZIOSI(ds); bPreziosi.FillRW_PREZIOSI(ds); decimal saldoA = GetUltimoSaldo(IdPrezioso, "A", ds); decimal saldoB = GetUltimoSaldo(IdPrezioso, "B", ds); string prezioso = ds.RW_PREZIOSI.Where(x => x.IDPREZIOSO == IdPrezioso).Select(x => x.MATERIALE).FirstOrDefault(); if (Operazione == "P") { if (saldoB < Quantita) { return(false); } decimal nuovoSaldoB = saldoB - Quantita; PreziosiDS.RW_MOVIMENTI_PREZIOSIRow movimentoB = ds.RW_MOVIMENTI_PREZIOSI.NewRW_MOVIMENTI_PREZIOSIRow(); movimentoB.CASSAFORTE = "B"; movimentoB.DATA = DateTime.Now; movimentoB.IDPREZIOSO = IdPrezioso; movimentoB.NOTA = Causale; movimentoB.QUANTITA = -1 * Quantita; movimentoB.SALDOFINALE = nuovoSaldoB; movimentoB.SALDOINIZIALE = saldoB; movimentoB.UTENTE = ConnectedUser; ds.RW_MOVIMENTI_PREZIOSI.AddRW_MOVIMENTI_PREZIOSIRow(movimentoB); bPreziosi.UpdatePreziosiDS(ds.RW_MOVIMENTI_PREZIOSI.TableName, ds); InviaMailCassaforteB(-1 * Quantita, Causale, ConnectedUser, prezioso, saldoB, nuovoSaldoB); } } return(true); } catch { return(false); } }