public void RemoveScrittura(ScrittureDTO scrittura) { Scrittura s = _conto.FindNodeById(scrittura.Id) as Scrittura; if (s == null) { return; } _conto.Remove(scrittura.Id, null); RaiseChangeEvent(); }
public void RemoveScrittura(ScrittureDTO scrittura) { Conto c = _bilancio.FindNodeById(scrittura.ParentId) as Conto; if (c == null) { throw new InvalidOperationException("Tentativo di rimuovere una scrittura ad un elemento diverso da un conto"); } Scrittura s = c.FindNodeById(scrittura.Id) as Scrittura; if (s == null) { return; } //if (s.TipoOperazione == TipoOperazione.Accantonamento) // c.Remove(scrittura.Id, _bilancio.AccantonamentoFinale); //else if (s.TipoOperazione == TipoOperazione.Cassa) // c.Remove(scrittura.Id, _bilancio.CassaFinale); //else if (s.TipoOperazione == TipoOperazione.Banca1) // c.Remove(scrittura.Id, _bilancio.Banca1Finale); //else if (s.TipoOperazione == TipoOperazione.Banca2) // c.Remove(scrittura.Id, _bilancio.Banca2Finale); //else if (s.TipoOperazione == TipoOperazione.Banca3) // c.Remove(scrittura.Id, _bilancio.Banca3Finale); //else c.Remove(scrittura.Id, _bilancio);//gestione della cancellazione scritture di contropartita RaiseChangeEvent(); }
internal ScrittureDTO GetScritturaContropartita(ScrittureDTO _current) { //if (_current.TipoOperazione == "Contropartita") //{ //BilancioFenealgest.DomainLayer.Conto.TipoConto c = Conto.CalculateTipoConto(_current.ParentId); ////se la contropartita è nulla vuol dire che ho passato l'intero bilancio ////***************************** ////definisco l'id della classificazione dove ricercare il conto //string idClassificazione = ""; //if (c == BilancioFenealgest.DomainLayer.Conto.TipoConto.Entrate) // //dovro' cercare la scrittura di contropartita nelle spese // idClassificazione = "S"; //else // //dovro' cercare la scrittura di contropartita nelle entrate // idClassificazione = "E"; ////rimuovo la scrittura previa ricerca //Classificazione clas = _bilancio.FindNodeById(idClassificazione) as Classificazione; Conto conto = _bilancio.FindNodeById(_current.IdContropartita) as Conto; //cerco la scritttura Scrittura s1 = conto.FindNodeById(_current.Id) as Scrittura; if (s1 == null) { throw new Exception("Scrittura di partita doppia non trovata"); } return(ScrittureConverter.ConvertToScritturaDTO(s1)); //} //else //{ // Conto c; // switch (_current.TipoOperazione) // { // case "Cassa": // c = _bilancio.CassaFinale; // break; // case "Banca2": // c = _bilancio.Banca2Finale; // break; // case "Banca1": // c = _bilancio.Banca1Finale; // break; // case "Banca3": // c = _bilancio.Banca3Finale; // break; // case "Accantonamento": // c = _bilancio.AccantonamentoFinale; // break; // default: // throw new ArgumentException("Tipo operazione sconosciuta!"); // } // Scrittura s1 = c.FindNodeById(_current.Id) as Scrittura; // if (s1 == null) // throw new Exception("Scrittura di partita doppia non trovata"); // return ScrittureConverter.ConvertToScritturaDTO(s1); //} }
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(); }