public void AddScrittura(ScrittureDTO scrittura) { Scrittura s = new Scrittura(_conto.Id); s.TipoOperazione = TipoOperazione.Banca1; s.Importo = Convert.ToDouble(scrittura.Importo); s.Causale = scrittura.Causale; s.Date = scrittura.Date.Date; s.NumeroPezza = scrittura.NumeroPezza; s.ParentName = _conto.Description; _conto.Add(s, null, false); scrittura.ParentId = _conto.Id; scrittura.ParentName = _conto.Description; scrittura.Id = s.Id; RaiseChangeEvent(); }
private void AddScrittura(string idConto, ScrittureDTO scrittura, Conto contropartita) { if (contropartita == null) { throw new InvalidOperationException("Contropartita nulla"); } Conto c = _bilancio.FindNodeById(idConto) as Conto; if (c == null) { throw new InvalidOperationException("Tentativo di aggingere una scrittura ad un elemento diverso da un conto"); } //prima di aggiungere la scrittura devo eseguire una validazione sulle possibili operazioni di cassa ValidateOperazioniDiuCassa(c, contropartita, scrittura.Importo); Scrittura s = new Scrittura(idConto); // s.TipoOperazione = (TipoOperazione)Enum.Parse(typeof(TipoOperazione), scrittura.TipoOperazione); s.Importo = Convert.ToDouble(scrittura.Importo); s.Causale = scrittura.Causale; s.Date = scrittura.Date.Date; s.NumeroPezza = scrittura.NumeroPezza; s.ParentName = c.Description; s.Riferimento1 = scrittura.Riferimento1; s.Riferimento2 = scrittura.Riferimento2; s.Riferimento3 = scrittura.Riferimento3; //if (s.TipoOperazione == TipoOperazione.Cassa) // c.Add(s, _bilancio.CassaFinale, false); //else if (s.TipoOperazione == TipoOperazione.Accantonamento) // c.Add(s, _bilancio.AccantonamentoFinale, false); //else if (s.TipoOperazione == TipoOperazione.Banca1) // c.Add(s, _bilancio.Banca1Finale, false); //else if (s.TipoOperazione == TipoOperazione.Banca2) // c.Add(s, _bilancio.Banca2Finale, false); //else if (s.TipoOperazione == TipoOperazione.Banca3) // c.Add(s, _bilancio.Banca3Finale, false); //else c.Add(s, contropartita, false); scrittura.ParentId = c.Id; scrittura.ParentName = c.Description; scrittura.Contropartita = s.Contropartita; scrittura.IdContropartita = s.IdContropartita; scrittura.Id = s.Id; RaiseChangeEvent(); }
public void UpdateScrittura(ScrittureDTO scrittura, string contropartitaId) { Conto contropartita = _bilancio.FindNodeById(contropartitaId) as Conto; Conto c = _bilancio.FindNodeById(scrittura.ParentId) as Conto; if (c == null) { throw new InvalidOperationException("Tentativo di aggiornare una scrittura ad un elemento diverso da un conto"); } if (contropartita == null) { throw new InvalidOperationException("Tentativo di aggiornare una scrittura con contropartita nulla"); } //prima di aggiungere la scrittura devo eseguire una validazione sulle possibili operazioni di cassa ValidateOperazioniDiuCassa(c, contropartita, scrittura.Importo); Scrittura s = c.FindNodeById(scrittura.Id) as Scrittura; if (s == null) { throw new InvalidOperationException("Tentativo di aggiornare una scrittura non presente nel conto"); } //se si tratta di una scrittura autogenerata if (s.AutoGenerated) { s.Importo = Convert.ToDouble(scrittura.Importo); s.Causale = scrittura.Causale; s.Date = scrittura.Date.Date; s.NumeroPezza = scrittura.NumeroPezza; return; } //verifico preventivamente la possibilità di fare una scrittura in partita doppia sullo //stesso conto //********************************** Conto fin = null; //TipoOperazione tip = (TipoOperazione)Enum.Parse(typeof(TipoOperazione), scrittura.TipoOperazione); //if (tip == TipoOperazione.Cassa) // fin = _bilancio.CassaFinale; //else if (tip == TipoOperazione.Accantonamento) // fin = _bilancio.AccantonamentoFinale; //else if (tip == TipoOperazione.Banca1) // fin = _bilancio.Banca1Finale; //else if (tip == TipoOperazione.Banca2) // fin = _bilancio.Banca2Finale; //else if (tip == TipoOperazione.Banca3) // fin = _bilancio.Banca3Finale; //else fin = contropartita; if (fin != null) { if (c.Id.Equals(fin.Id)) { throw new Exception("Impossibile scrivere una scrittura in partita doppia sullo stesso conto!"); } } //********************************** //a questo punto rimuovo la scrittura precedente RemoveScrittura(scrittura); //eaggiungo la nuova scrittura Scrittura s1 = new Scrittura(); // s1.TipoOperazione = tip; s1.Importo = Convert.ToDouble(scrittura.Importo); s1.Causale = scrittura.Causale; s1.Date = scrittura.Date.Date; s1.NumeroPezza = scrittura.NumeroPezza; s1.Id = scrittura.Id; s1.ParentName = c.Description; s1.Riferimento1 = scrittura.Riferimento1; s1.Riferimento2 = scrittura.Riferimento2; s1.Riferimento3 = scrittura.Riferimento3; //if (s1.TipoOperazione == TipoOperazione.Cassa) // c.Add(s1, _bilancio.CassaFinale, false); //else if (s1.TipoOperazione == TipoOperazione.Accantonamento) // c.Add(s1, _bilancio.AccantonamentoFinale, false); //else if (s1.TipoOperazione == TipoOperazione.Banca1) // c.Add(s1, _bilancio.Banca1Finale, false); //else if (s1.TipoOperazione == TipoOperazione.Banca2) // c.Add(s1, _bilancio.Banca2Finale, false); //else if (s1.TipoOperazione == TipoOperazione.Banca3) // c.Add(s1, _bilancio.Banca3Finale, false); //else c.Add(s1, fin, false); scrittura.ParentName = c.Description; scrittura.Contropartita = s1.Contropartita; RaiseChangeEvent(); }