Exemplo n.º 1
0
        /// <summary>
        /// Metodo utilizzato dal client per inserire una nuova scrittura nel conto
        /// </summary>
        /// <param name="part">Questa è la scrittura che deve essere inserita nel conto già correttamente valorizzata</param>
        /// <param name="contoContropartita">il conto di contropartita è
        /// il conto dove la scrittura gemella deve essere aggiunta per la quadratura di tutto il bliancio</param>
        /// <param name="scritturaPartitaDoppia">il parametro partita doppia serve per indicare  se la scrittura corrente è la
        /// scrittura che sarà scritta nella contropartita: lo stesso metodo è utilizzato per aggiungere la scrittura al conto principale che al conto di contropartita.
        /// Se sto aggiungendo la scrittura al conto principale allora il parametro sarà negativo. Vedi implementazione....</param>
        public virtual void Add(Scrittura part, Conto contoContropartita, bool scritturaPartitaDoppia)
        {
            if (scritturaPartitaDoppia == false)
            {
                if (contoContropartita != null)
                {
                    if (this.Id.Equals(contoContropartita.Id))
                    {
                        throw new Exception("Impossibile scrivere una scrittura in partita doppia sullo stesso conto!");
                    }
                }
            }

            part.ParentId = this.Id;



            if (scritturaPartitaDoppia)
            {
                _sublist.Add(part);
                return;
            }

            AddScritturaPartitaDoppia(contoContropartita, part);
        }
Exemplo n.º 2
0
        internal Scrittura(Scrittura scrittura, bool negateImporto, string descrizioneConto)
        {
            _id = scrittura.Id;

            _autoGenerated = true;

            if (negateImporto)
            {
                _importo = scrittura.Importo * -1;
            }
            else
            {
                _importo = scrittura.Importo;
            }

            // _causale = "(CONTO: " + descrizioneConto +")" + scrittura.Causale;
            _causale = "******" + scrittura.Causale;

            _date = scrittura.Date;

            _numeroPezza = scrittura.NumeroPezza;

            _tipoOperazione = scrittura.TipoOperazione;

            _parentId = scrittura.ParentId;
        }
Exemplo n.º 3
0
        private void AddScritturaPartitaDoppia(Conto contoContropartita, Scrittura scrittura)
        {
            //mi serve per impostare il nome del campo contropartita su ogni scrittura
            //presente sul conto
            string nomeContropartita = contoContropartita.Description;

            scrittura.Contropartita   = nomeContropartita;
            scrittura.IdContropartita = contoContropartita.Id;

            //aggiungo l'elemento alla lista
            _sublist.Add(scrittura);
            //aggiungo l'elemnto alla cassa
            Scrittura s = new Scrittura(scrittura, Conto.NegateImportoOperazione(this, contoContropartita), _description);

            s.ParentName = contoContropartita.Description;
            //se invece sto inserendo la scrittura
            //di contropartita ne scrivo il conto di contropartita
            s.Contropartita   = this._description;
            s.IdContropartita = this._id;
            contoContropartita.Add(s, contoContropartita, true);
        }
Exemplo n.º 4
0
        public bool Matches(Scrittura scrittura)
        {
            bool result = true;


            if (FilterByDate)
            {
                if (scrittura.Date.Date < DateFrom.Date)
                {
                    return(false);
                }
                if (scrittura.Date.Date > DateTo.Date)
                {
                    return(false);
                }
            }


            if (!NotFilterAutogenerated)
            {
                if (scrittura.AutoGenerated)
                {
                    return(false);
                }
            }

            if (!string.IsNullOrEmpty(FilterCausale))
            {
                if (!scrittura.Causale.ToLower().Contains(FilterCausale.ToLower()))
                {
                    return(false);
                }
            }

            if (!string.IsNullOrEmpty(FilterPezza))
            {
                if (!scrittura.NumeroPezza.ToLower().Contains(FilterPezza.ToLower()))
                {
                    return(false);
                }
            }

            if (!string.IsNullOrEmpty(FilterRiferimento1))
            {
                if (!scrittura.Riferimento1.ToLower().Contains(FilterRiferimento1.ToLower()))
                {
                    return(false);
                }
            }
            if (!string.IsNullOrEmpty(FilterRiferimento2))
            {
                if (!scrittura.Riferimento2.ToLower().Contains(FilterRiferimento2.ToLower()))
                {
                    return(false);
                }
            }
            if (!string.IsNullOrEmpty(FilterRiferimento3))
            {
                if (!scrittura.Riferimento3.ToLower().Contains(FilterRiferimento3.ToLower()))
                {
                    return(false);
                }
            }


            return(result);
        }
Exemplo n.º 5
0
 public override void Add(Scrittura part, Conto cassa, bool partitaDoppia)
 {
     throw new InvalidOperationException("Tentativo di aggiungere sottoelementi ad un conto gestito a saldo");
 }
Exemplo n.º 6
0
        public void Remove(string idScrittura, AbstractBilancio cp)
        {
            Scrittura s = FindNodeById(idScrittura) as Scrittura;

            if (s == null)
            {
                return;
            }

            //commento la riga di codice che verifica la presenza di una
            //scrittura autogenerata in un conto finanziario. Tale scrittura puo'
            //trovarsi in qualsiasi tipo di conto.
            //if (CalculateTipoConto() == TipoConto.Finanza)
            if (s.AutoGenerated == true)
            {
                throw new InvalidOperationException("Impossibile eliminare una scrittura autogenerata. Per eliminarla procedere alla eliminazione della scrittura dal relativo conto!");
            }


            //se il conto di contropartita risulta nullo vuol dire che devo cercare la scrittura
            //di cotropartita nell'albero delle entrate o delle uscite a seconda che il tipoConto
            //sia entrate o uscite
            //if (contoContropartita != null)
            //{

            BilancioNew bil = cp as BilancioNew;

            if (bil == null)
            {
                throw new InvalidOperationException("Impossibile convertire la contropartita di una partita di giro in un oggetto Bilancio da cui ricercare i conto di contropartita!!!");
            }

            Conto contoContropartita = bil.FindNodeById(s.IdContropartita) as Conto;

            Scrittura s1 = contoContropartita.FindNodeById(s.Id) as Scrittura;

            if (s1 != null)
            {
                contoContropartita.Remove(s1);
            }
            //}
            //else
            //{
            //    TipoConto c = CalculateTipoConto();
            //    //se la contropartita è nulla vuol dire che ho passato l'intero bilancio
            //    Bilancio bil = cp as Bilancio;
            //    // se è nullo c'è un errore imprevisto
            //    if (bil == null)
            //        throw new InvalidOperationException("Impossibile convertire la contropartita di una partita di giro in un oggetto Bilancio da cui ricercare i conto di contropartita!!!");

            //    //*****************************
            //    //definisco l'id della classificazione dove ricercare il conto
            //    string idClassificazione = "";

            //    if (c == 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 = bil.FindNodeById(idClassificazione) as Classificazione;
            //    //cerco la scritttura
            //    Scrittura s1 = clas.FindNodeById(s.Id) as Scrittura;
            //    if (s1 != null)
            //    {
            //        //ne recupero il conto padre
            //        Conto cc = clas.FindNodeById(s1.ParentId) as Conto;
            //        //la elimino dal conto
            //        cc.Remove(s1);
            //    }


            //    //*************************************************

            //}



            _sublist.Remove(s);
        }