Пример #1
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;
            }

        }
Пример #2
0
 public MovimentiBancariDTO GetByDomainEntity(MovimentoBancario movimento)
 {
     try
     {
         return setDto(movimento, false);
     }
     catch (Exception ex)
     {
         if (movimento != null)
             _log.ErrorFormat("Errore nel caricamento dei movimenti bancari - {0} - id:{1}", ex, Utility.GetMethodDescription(), movimento.ID);
         else
             _log.ErrorFormat("Errore nel caricamento dei movimenti bancari - {0}  - Movimento --> null", ex, Utility.GetMethodDescription());
         throw;
     }
 }
Пример #3
0
 public void CheckMovimento(MovimentoBancario movimento)
 {
     checkMovimento(movimento);
 }
Пример #4
0
        private RisultatoElaborazioneCBI confermaMovimento(IList<MovimentiBancariControlloDuplicatiDTO> listaMovimentiBancari)
        {
            try
            {
                RisultatoElaborazioneCBI anomalie = null;

                if (_importo > 0 && _valuta != null && _dataContabile != null)
                {
                    try
                    {
                        var alreadyLoaded = isMovimentoAlreadyLoaded(_importo.GetValueOrDefault(), _segno, _valuta.GetValueOrDefault(), _dataContabile.GetValueOrDefault(), _descrizione, _descrizioneBreve, _causale, _abi, _cab, _contoCorrente, listaMovimentiBancari);
                        if (!alreadyLoaded)
                        {
                            var mov = new MovimentoBancario(_abi, _cab, _contoCorrente, _importo, _segno, _valuta, _dataContabile, _causale, _file)
                            {
                                NumeroAssegno = _numeroAssegno,
                                NumeroCRO = _numeroCRO,
                                NumeroDistinta = _numeroDistinta,
                                Descrizione = _descrizione,
                                DescrizioneBreve = _descrizioneBreve,
                                AbiFornitore = _abiFornitore,
                                CabFornitore = _cabFornitore,
                                NomeFornitore = _nomeFornitore,
                                AbiOrdinante = _abiOrdinante,
                                CabOrdinante = _cabOrdinante,
                                NomeOrdinante = _nomeOrdinante
                            };

                            var coord = new CoordinateBancarie {Abi = _abi, Cab = _cab, ContoCorrente = _contoCorrente};
                            mov.Banca = _daoFactory.GetDatiBancariCondominiDao().GetByIban(coord.CalcolaIBAN());

                            // -----------------------------------------------------
                            //  Movimenti inseriti come già evasi
                            // -----------------------------------------------------
                            if (mov.Causale == "56")
                                mov.Stato = StatoMovimentoBancarioEnum.Contabilizzato;

                            // -----------------------------------------------------
                            //  Condominio
                            // -----------------------------------------------------
                            if (mov.Banca != null)
                            {
                                mov.Condominio = mov.Banca.CondominioRiferimento;

                                // -------------------------------------------------
                                // Cerco di proporre un esercizio
                                // -------------------------------------------------
                                var esercizio = mov.Condominio.GetEsercizioByData(mov.DataValuta.GetValueOrDefault()) ?? mov.Condominio.GetCurrentEsercizioOrdinario();
                                if (esercizio != null)
                                    mov.Esercizio = esercizio;
                            }

                            checkMovimento(mov);

                            // -----------------------------------------------------
                            //  Cerco di proporre un fornitore
                            // -----------------------------------------------------
                            if (!string.IsNullOrEmpty(mov.NomeFornitore))
                            {
                                var fornitori = (from fornitore in _fornitori where fornitore.DisplayName.Replace(" ", "").ToUpper().Contains(mov.NomeFornitore.Replace(" ", "").ToUpper()) select fornitore).ToList();
                                if (fornitori.Count == 1)
                                    mov.Fornitore = _daoFactory.GetFornitoreDao().GetById(fornitori.First().ID, false);
                            }

                            // -----------------------------------------------------
                            //  Cerco di proporre un condomino
                            // -----------------------------------------------------
                            if (!string.IsNullOrEmpty(mov.NomeOrdinante))
                            {
                                SoggettoCondominio condomino = null;
                                IList<PersonaListaDTO> personeDto = (from persona in _personeAzienda where persona.DisplayName.Replace(" ", "").ToUpper().Contains(mov.NomeOrdinante.Replace(" ", "").ToUpper()) select persona).ToList();
                                foreach (var persona in personeDto)
                                {
                                    var soggettiCondominio = _daoFactory.GetSoggettoCondominioDao().GetByPersona(persona.ID);
                                    if (soggettiCondominio.Count == 1)
                                        condomino = soggettiCondominio[0];
                                }

                                if (condomino != null)
                                    mov.CodiceSoggetto = condomino.ID;
                            }

                            listaMovimentiBancari.Add(new MovimentiBancariControlloDuplicatiDTO(0, mov.Importo, mov.Segno, mov.DataValuta, mov.DataContabile, mov.DescrizioneBreve, mov.Descrizione, mov.Causale, mov.Abi, mov.Cab, mov.ContoCorrente));
                        }
                        else
                        {
                            anomalie = new RisultatoElaborazioneCBI();
                            anomalie.Warning += string.Format("E' stato <strong>SCARTATO</strong> perchè già presente in archivio il movimento importo: <strong>{0:c}</strong> - abi: <strong>{1}</strong> cab: <strong>{2}</strong> - conto: <strong>{3}</strong><br/>", _importo.GetValueOrDefault(), _abi, _cab, _contoCorrente);
                            anomalie.Riga = _descrizioneBreve + _descrizione;
                        }

                        _causale = null;
                        _valuta = null;
                        _dataContabile = null;
                        _segno = null;
                        _importo = null;
                        _numeroAssegno = null;
                        _numeroCRO = null;
                        _numeroDistinta = null;
                        _descrizione = null;
                        _descrizioneBreve = null;

                        _abiFornitore = null;
                        _cabFornitore = null;
                        _nomeFornitore = null;
                        _abiOrdinante = null;
                        _cabOrdinante = null;
                        _nomeOrdinante = null;
                    }
                    catch (Exception ex)
                    {
                        _log.ErrorFormat("La creazione del movimento bancario si è interrotta inaspettatamente - {0}", ex, Utility.GetMethodDescription());
                        anomalie = new RisultatoElaborazioneCBI { Anomalie = "La creazione del movimento bancario si è interrotta inaspettatamente." };
                    }
                }

                return anomalie;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato durante la conferma del movimento bancario - {0}", ex, Utility.GetMethodDescription());
                throw;
            }
        }
Пример #5
0
        private void checkMovimento(MovimentoBancario movimento)
        {
            if (movimento.Banca == null)
                movimento.Stato = StatoMovimentoBancarioEnum.Errato;
            else
            {
                var condominio = movimento.Banca.CondominioRiferimento;
                var causaleSottoconti = _causaliACBI[movimento.Causale].SottoConti.Where(item => item.SottoConto.ContoRiferimento.CondominioRiferimento.ID == condominio.ID);

                if (_causaliACBI.ContainsKey(movimento.Causale) && _causaliACBI[movimento.Causale].Contabilizzabile == "N")
                    movimento.Stato = StatoMovimentoBancarioEnum.NonContabilizzabile;
                else if (_causaliACBI.ContainsKey(movimento.Causale) && causaleSottoconti.Count() == 1)
                    movimento.Stato = StatoMovimentoBancarioEnum.DaContabilizzare;
                else if (_causaliACBI.ContainsKey(movimento.Causale))
                    movimento.Stato = StatoMovimentoBancarioEnum.DaVerificare;
                else
                {
                    movimento.Stato = StatoMovimentoBancarioEnum.Errato;
                    _log.WarnFormat("Non trovata la causale di movimento bancario - {0} - causale:{1}", Utility.GetMethodDescription(), movimento.Causale);
                }
            }
        }