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 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; } }
public void CheckMovimento(MovimentoBancario movimento) { checkMovimento(movimento); }
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; } }
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); } } }