Example #1
0
        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();
        }
Example #2
0
        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();
        }
Example #3
0
        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();
        }