예제 #1
0
        public DettaglioMovimentoBancario(int idMovimento)
        {
            InitializeComponent();
            inizializza();

            _movimento = _movimentoBancarioService.GetById(idMovimento);
        }
예제 #2
0
        public SceltaOperazioneStorno(MovimentiBancariDTO movimento)
        {
            InitializeComponent();
            inizializza();

            _movimento = movimento;
        }
예제 #3
0
        public MovimentiBancariDTO[] GetAll()
        {
            try
            {
                IList<MovimentoBancario> lista = _daoFactory.GetMovimentoBancarioDao().GetAll();
                var movimenti = new MovimentiBancariDTO[lista.Count];

                var index = 0;
                foreach (var movimento in lista)
                {
                    movimenti[index] = setDto(movimento, false);
                    index++;
                }

                return movimenti;
            }
            catch (Exception ex)
            {
                
                _log.Error("Errore nel caricamento dei movimenti bancari: " + Utility.GetMethodDescription(), ex);
                throw;
            }
        }
예제 #4
0
 public DettaglioMovimentoBancario(MovimentiBancariDTO movimento)
 {
     InitializeComponent();
     _movimento = movimento;
 }
예제 #5
0
 private void listaMovimentiMouseUp(object sender, MouseEventArgs e)
 {
     _movimentoClick = null;
     if (e.Button == MouseButtons.Right)
     {
         _movimentoClick = DataGridHelper.GetCellEvent<MovimentiBancariDTO>(listaMovimenti, e);
         if (_movimentoClick != null)
             contextMenuStrip1.Show(listaMovimenti, e.X, e.Y);
     }
 }
예제 #6
0
        private MovimentiBancariDTO setDto(MovimentoBancario item, bool loadIdentificativoArchiviazione)
        {
            try
            {
                var movimentiBancariService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMovimentiBancariService>();
                if (item.Stato == StatoMovimentoBancarioEnum.DaVerificare)
                    movimentiBancariService.CheckMovimento(item);

                var dto = new MovimentiBancariDTO
                {
                    ID = item.ID,
                    Abi = item.Abi,
                    Cab = item.Cab,
                    ContoCorrente = item.ContoCorrente,
                    DataContabile = item.DataContabile,
                    DataValuta = item.DataValuta,
                    Importo = item.Importo,
                    Segno = item.Segno,
                    NumeroAssegno = item.NumeroAssegno,
                    Descrizione = item.Descrizione,
                    DescrizioneBreve = item.DescrizioneBreve,
                    NumeroCRO = item.NumeroCRO,
                    NumeroDistinta = item.NumeroDistinta,
                    AbiFornitore = item.AbiFornitore,
                    CabFornitore = item.CabFornitore,
                    NomeFornitore = item.NomeFornitore,
                    AbiOrdinante = item.AbiOrdinante,
                    CabOrdinante = item.CabOrdinante,
                    NomeOrdinante = item.NomeOrdinante
                };

                if (_causaliACBI.ContainsKey(item.Causale))
                {
                    dto.Causale = _causaliACBI[item.Causale].Codice;
                    dto.DescrizioneCausale = _causaliACBI[item.Causale].DescrizioneCompleta;
                }
                else
                    _log.ErrorFormat("Causale non trovata - {0} - causale:{1} - azienda:{2}", Utility.GetMethodDescription(), item.Causale, _info.Azienda);

                if (item.Fornitore != null)
                    dto.CodiceFornitore = item.Fornitore.ID;
                if (item.CodiceSoggetto != null)
                    dto.CodiceSoggetto = item.CodiceSoggetto.Value;


                if (item.File != null)
                    dto.CodiceFileCbi = item.File.ID;

                if (item.Condominio != null)
                {
                    dto.CodiceCondominio = item.Condominio.ID;
                    dto.DescrizioneCondominio = item.Condominio.DisplayName;
                }

                if (item.Esercizio != null)
                {
                    dto.CodiceEsercizio = item.Esercizio.ID;
                    dto.DescrizioneEsercizio = item.Esercizio.DisplayName;
                }

                if (item.Banca != null)
                    dto.CodiceBanca = item.Banca.ID;

                if (item.EvasioneBancaria != null)
                    dto.CodiceEvasioneBancaria = item.EvasioneBancaria.ID;

                dto.StatoMovimento = item.Stato;
                if (dto.StatoMovimento == StatoMovimentoBancarioEnum.DaContabilizzare && dto.CodiceEsercizio > 0)
                    dto.Selezionabile = true;
                else
                    dto.Selezionabile = false;

                if (item.EvasioneBancaria != null && loadIdentificativoArchiviazione)
                {
                    var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
                    foreach (var movimentoContabile in item.EvasioneBancaria.MovimentiContabili)
                    {
                        var pagamento = daoFactory.GetPagamentoDao().GetByMovimentoContabile(movimentoContabile);
                        if (pagamento != null)
                        {
                            // TODO: Aggiungere le fatture archiviate con ARCHIVA
                            if (pagamento.ScadenzaRiferimento.SpesaRiferimento.IsAbilitataArchiviazioneOttica)
                            {
                                var archiviazioneOtticaService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IArchiviazioneOtticaService>();
                                dto.IdentificativoDocumentoSpesa = archiviazioneOtticaService.GetIdentificativoArchiviazione(pagamento.ScadenzaRiferimento.SpesaRiferimento, false);
                            }
                            else
                            {
                                var documenti = pagamento.ScadenzaRiferimento.SpesaRiferimento.Documenti;
                                if (documenti != null && documenti.Count > 0)
                                {
                                    var documento = documenti.FirstOrDefault();
                                    if (documento != null)
                                        dto.IdentificativoDocumentoSpesa = documento.Checksum;
                                }
                            }
                        }
                    }
                }

                return dto;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nella conversione in DTO - {0} - id:{1}", ex, Utility.GetMethodDescription(), item.ID);
                throw;
            }

        }
        public void LoadData(MovimentiBancariDTO movimentoBancario)
        {
            _movimentoBancario = movimentoBancario;

            inizializza();

            CabDTO cabDto = _abiCabService.GetCabByCodice(_movimentoBancario.Abi, _movimentoBancario.Cab);
            if (cabDto != null)
            {
                _movimentoBancario.Abi += " - " + cabDto.DescrizioneAbi;
                _movimentoBancario.Cab += " - " + cabDto.DescrizioneCab;
            }

            movimentoBancarioBindingSource.DataSource = _movimentoBancario;
            
            sceltaCondominioCombo1.LoadData();
            if (_movimentoBancario.CodiceCondominio != null)
            {
                sceltaCondominioCombo1.SelectItem -=sceltaCondominioCombo1SelectItem;
                sceltaCondominioCombo1.SetCondominioInitial(_movimentoBancario.CodiceCondominio.Value);
                if (sceltaCondominioCombo1.CondominioSelected != null)
                {
                    esercizioDTOBindingSource.DataSource = sceltaCondominioCombo1.CondominioSelected.Esercizi;
                    esercizi.Value = _movimentoBancario.CodiceEsercizio;
                }
                sceltaCondominioCombo1.SelectItem += sceltaCondominioCombo1SelectItem;
            }

            importo.Text = _movimentoBancario.Importo.GetValueOrDefault().ToString("c");
            if (_movimentoBancario.Segno == "D")
                importo.Appearance.ForeColor = Color.Red;

            // ----------------------------------------------------------------------------------------
            // Se la causale è di Bonifico Attivo sostituisco il fornitore con l'ordinante
            // ----------------------------------------------------------------------------------------
            if (_movimentoBancario.Causale == "48")
            {
                groupFornitore.Visible = true;
                sceltaFornitoreCombo1.Visible = false;
                condomini.Visible = true;
                groupFornitore.Text = @"Ordinante";
                lblFornitore.Text = @"Condomino";
                abiFornitore.Text = _movimentoBancario.AbiOrdinante;
                cabFornitore.Text = _movimentoBancario.CabOrdinante;
                nomeFornitore.Text = _movimentoBancario.NomeOrdinante;
                condomini.Text = string.Empty;
                if (_movimentoBancario.CodiceCondominio != null && _movimentoBancario.CodiceCondominio > 0)
                {
                    soggettoCondominioDTOBindingSource.DataSource = _soggettoService.GetByCondominioId(_movimentoBancario.CodiceCondominio.Value);
                    if (_movimentoBancario.CodiceSoggetto > 0)
                        condomini.Value = _movimentoBancario.CodiceSoggetto;
                }
            }
            else if (_movimentoBancario.Causale == "26")
            {
                groupFornitore.Visible = true;
                sceltaFornitoreCombo1.Visible = true;
                sceltaFornitoreCombo1.LoadData();
                if (_movimentoBancario.CodiceFornitore > 0)
                    sceltaFornitoreCombo1.SetFornitoreInitial(_movimentoBancario.CodiceFornitore);
                lblFornitore.Text = @"Fornitore";
                condomini.Visible = false;
                abiFornitore.Text = _movimentoBancario.AbiFornitore;
                cabFornitore.Text = _movimentoBancario.CabFornitore;
                nomeFornitore.Text = _movimentoBancario.NomeFornitore;
            }
            else
                groupFornitore.Visible = false;

            if (!string.IsNullOrEmpty(abiFornitore.Text) && !string.IsNullOrEmpty(cabFornitore.Text))
            {
                CabDTO cabDtoFornitoreOrdinante = _abiCabService.GetCabByCodice(abiFornitore.Text, cabFornitore.Text);
                if (cabDtoFornitoreOrdinante != null)
                {
                    abiFornitore.Text += @" - " + cabDtoFornitoreOrdinante.DescrizioneAbi;
                    cabFornitore.Text += @" - " + cabDtoFornitoreOrdinante.DescrizioneCab;
                }
            }

            descrizione.Text = string.Empty;
            if (!string.IsNullOrEmpty(_movimentoBancario.DescrizioneBreve) && !string.IsNullOrEmpty(_movimentoBancario.DescrizioneBreve.Trim()))
                descrizione.Text = _movimentoBancario.DescrizioneBreve.Trim();
            if (!string.IsNullOrEmpty(_movimentoBancario.Descrizione) && !string.IsNullOrEmpty(_movimentoBancario.Descrizione.Trim()))
            {
                if (!string.IsNullOrEmpty(descrizione.Text))
                    descrizione.Text += Environment.NewLine;
                descrizione.Text += _movimentoBancario.Descrizione.Trim();
            }
        }
        public bool Contabilizza(MovimentiBancariDTO movimento)
        {
            var result = false;

            if (movimento.CodiceCondominio != null)
            {
                // ==========================================================================
                //  Maschera scelta causale - Se non si tratta di un movimento di storno
                // ==========================================================================
                var causaleBancaria = getMovimentoBancarioService().GetCausaleACBIByCodice(movimento.Causale);
                if (causaleBancaria != null && causaleBancaria.Codice != "68")
                {
                    // =================================================================================================
                    //  Scelta maschera di registrazione contabile
                    // =================================================================================================
                    // ---------------------------------------------------------------------------------------
                    // Controllo se è prevista una causale contabile legata alla causale bancaria selezionata
                    // ---------------------------------------------------------------------------------------
                    CausaleContabileDTO causaleContabile = null;
                    if (causaleBancaria.IdCausaleContabile != null)
                        causaleContabile = getTabelleContabiliService().GetCausaleById(causaleBancaria.IdCausaleContabile.Value);

                    EsercizioDTO esercizioAttuale = null;
                    CondominioDTO condominioAttuale = null;
                    if (movimento.CodiceCondominio != null)
                    {
                        condominioAttuale = getCondominioService().GetById(movimento.CodiceCondominio.Value, true);
                        var eserciziAperti = getEsercizioService().GetApertiByCondominio(movimento.CodiceCondominio.GetValueOrDefault());
                        if (eserciziAperti.Count == 1)
                            esercizioAttuale = eserciziAperti.SingleOrDefault();
                    }

                    var codiceCausaleContabile = string.Empty;
                    if (causaleContabile != null)
                        codiceCausaleContabile = causaleContabile.Codice;
                    else
                    {
                        if (movimento.CodiceSoggetto > 0)
                            codiceCausaleContabile = "RR";
                    }

                    // ---------------------------------------------------------------------------------------
                    // Se non ho tutte le informazioni chiedo all'utente causale e esercizio
                    // ---------------------------------------------------------------------------------------
                    if (esercizioAttuale == null || string.IsNullOrEmpty(codiceCausaleContabile))
                    {
                        var form = new SceltaCausale(movimento.CodiceCondominio.Value);
                        form.SetCausale(codiceCausaleContabile);

                        if (causaleBancaria.IdCausaleContabile != null)
                            form.SetCausale(causaleBancaria.IdCausaleContabile.Value);

                        if (form.ShowDialog() == DialogResult.OK)
                        {
                            condominioAttuale = form.Condominio;
                            esercizioAttuale = form.Esercizio;
                            causaleContabile = form.CausaleContabile;
                            codiceCausaleContabile = causaleContabile.Codice;
                            form.Dispose();
                        }
                        else
                        {
                            form.Dispose();
                            return false;
                        }
                    }

                    // ---------------------------------------------------------------------------------------
                    // Leggo contato patrimoniale Bancario
                    // ---------------------------------------------------------------------------------------
                    var contoPatrimoniale = getPianoContiService().GetBancarioByEsercizio(esercizioAttuale);
                    if (contoPatrimoniale != null)
                    {
                        Form formMovimento;

                        // ===============================================================================================
                        //  TODO: Introdurre driver per decidere che tipo di registrazione contabile deve essere eseguita
                        // -----------------------------------------------------------------------------------------------
                        //  Legato alla nuova modifica per autorizzazione delle registrazioni e nuova maschera di
                        //  registrazione fatture
                        // ===============================================================================================

                        // Versamento condomini
                        // ----------------------
                        if (codiceCausaleContabile == "RR")
                        {
                            var versamentiForm = ResolveComponent<IVersamentiSoggettiUI>();
                            formMovimento = versamentiForm.GetInserimentoVersamentoSoggetto(condominioAttuale, esercizioAttuale, movimento.Importo.GetValueOrDefault(), contoPatrimoniale, movimento.CodiceBanca, movimento.CodiceSoggetto, movimento.ID, movimento.DataContabile.GetValueOrDefault());
                        }
                        else if (codiceCausaleContabile == "SS")
                        {
                            formMovimento = new SceltaOperazioneStorno(movimento);
                        }
                        else

                        // Registrazione generica
                        // ----------------------
                        {
                            var incassoSpesa = Sfera.Enums.TipoMovimentoEnum.Spesa;
                            if (movimento.Segno == "C")
                                incassoSpesa = Sfera.Enums.TipoMovimentoEnum.Accredito;
                            var movimentiForm = ResolveComponent<IMovimentiContabiliUI>();
                            formMovimento = movimentiForm.GetInserimentoMovimentoContabile(causaleContabile, esercizioAttuale, movimento.Importo.GetValueOrDefault() * -1, contoPatrimoniale, movimento.CodiceBanca, movimento.DataContabile, movimento.DescrizioneBreve + " " + movimento.Descrizione, incassoSpesa, movimento.ID);
                        }

                        if (formMovimento.ShowDialog() == DialogResult.OK)
                            result = true;

                        formMovimento.Dispose();
                    }
                    else
                        CommonMessages.DisplayWarning("La Contabilizzazione non è ammessa." + Environment.NewLine + "Non è stato trovato il conto Banca");
                }

                // ==========================================================================
                //  Movimento di storno
                // ==========================================================================
                else
                {
                    var form = new SceltaOperazioneStorno(movimento);
                    if (form.ShowDialog() == DialogResult.OK)
                        result = true;

                    form.Dispose();
                }
            }

            return result;
        }
예제 #9
0
        public MovimentiBancariDTO SetContabilizzato(MovimentiBancariDTO movimentoDto, int? idMovimentoContabile)
        {
            try
            {
                var movimento = _daoFactory.GetMovimentoBancarioDao().GetById(movimentoDto.ID, false);
                movimento.Stato = StatoMovimentoBancarioEnum.Contabilizzato;
                movimentoDto.StatoMovimento = movimento.Stato;

                if (idMovimentoContabile != null)
                {
                    var movimentoPatrimoniale = _daoFactory.GetMovimentoContabileDao().GetById(idMovimentoContabile.Value, false);
                    movimentoPatrimoniale.Stato = StatoMovimentoContabileEnum.Evaso;

                    var evasione = new EvasioneBancaria($"Evasione automatica del {DateTime.Today:d}", null);
                    _daoFactory.GetEvasioneBancariaDao().SaveOrUpdate(evasione);

                    movimentoPatrimoniale.EvasioneBancaria = evasione;
                    movimento.EvasioneBancaria = evasione;
                }

                return movimentoDto;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato durante la contabilizzazione di un singolo movimento bancario - {0} - movimentoBnacario:{1} - movimentoContabile:{2}", ex, Utility.GetMethodDescription(), movimentoDto != null ? movimentoDto.ID.ToString(CultureInfo.InvariantCulture) : "<NULL>", idMovimentoContabile);
                throw;
            }
        }
예제 #10
0
		public MovimentiBancariDTO SetMovimentoBancarioContabilizzato(MovimentiBancariDTO movimento, int? idMovimentoContabile, UserInfo userinfo)
		{
			var windsorRep = new WindsorConfigRepository();
			try
			{
				windsorRep.BeginTransaction(userinfo);
                var movimentiBancari = windsorRep.GetContainer(userinfo.Azienda).Resolve<IMovimentiBancariService>();
                var item = movimentiBancari.SetContabilizzato(movimento, idMovimentoContabile);
				windsorRep.Commit();
				return item;
			}
			catch (Exception ex)
			{
                _log.ErrorFormat("Errore nella esecuzione della funzione - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), userinfo.Azienda);
                windsorRep.Rollback();
				throw;
			}
		}
예제 #11
0
        public string AnnullaEvasione(MovimentiBancariDTO movimento)
        {
            var result = string.Empty;
            if (movimento.CodiceEvasioneBancaria != null && movimento.CodiceEvasioneBancaria > 0)
                result = GetServiceClient().AnnullaEvasioneBancaria(movimento.CodiceEvasioneBancaria.Value, GetUserInfo());
            else if (movimento.StatoMovimento == StatoMovimentoBancarioEnum.Contabilizzato)
                result = AnnullaEvasioneManualeBancaria(movimento.ID);
            CloseService();

            return result;
        }
예제 #12
0
        public string AggiornaMovimento(MovimentiBancariDTO movimento, EsercizioDTO esercizio, CondominioDTO condominio, FornitoreDTO fornitore, SoggettoCondominioDTO soggetto)
        {
            int? idEsercizio = null;
            int? idCondominio = null;
            int? idFornitore = null;
            int? idSoggetto = null;
            if (condominio != null)
                idCondominio = condominio.ID;
            if (esercizio != null)
                idEsercizio = esercizio.ID;
            if (fornitore != null)
                idFornitore = fornitore.ID;
            if (soggetto != null)
                idSoggetto = soggetto.ID;

            var messaggio = GetServiceClient().AggiornaMovimentoBancario(movimento.ID, idEsercizio, idCondominio, idFornitore, idSoggetto, GetUserInfo());
            if (string.IsNullOrEmpty(messaggio))
            {
                if (condominio != null)
                {
                    movimento.CodiceCondominio = condominio.ID;
                    movimento.DescrizioneCondominio = condominio.DisplayName;
                }
                if (esercizio != null)
                {
                    movimento.CodiceEsercizio = esercizio.ID;
                    movimento.DescrizioneEsercizio = esercizio.DisplayName;
                }
                if (fornitore != null)
                {
                    movimento.CodiceFornitore = fornitore.ID;
                    movimento.NomeFornitore = fornitore.DisplayNominativo;
                }
                if (soggetto != null)
                {
                    movimento.CodiceSoggetto = soggetto.ID;
                    movimento.NomeOrdinante = soggetto.DisplayNominativo;
                }
            }

            CloseService();

            return messaggio;
        }
예제 #13
0
 public MovimentiBancariDTO ContabilizzaSingolo(MovimentiBancariDTO movimento, int? idMovimentoContabilePatrimoniale)
 {
     var result = GetServiceClient().SetMovimentoBancarioContabilizzato(movimento, idMovimentoContabilePatrimoniale, GetUserInfo());
     CloseService();
     return result;
 }