public ScadenzaFatturaDTO[] GetAllAperteByFornitoreCondominio(int idFornitore, int idCondominio) { try { var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); var lista = daoFactory.GetScadenzaFatturaDao().GetAperteByFornitoreCondominio(idFornitore, idCondominio); var listaDto = new ScadenzaFatturaDTO[lista.Count]; int index = 0; foreach (ScadenzaFattura item in lista) { listaDto[index] = setDto(item); index++; } return listaDto; } catch (Exception ex) { _log.Error("Errore nel caricamento delle scadenze delle fatture: " + Library.Utility.GetMethodDescription() + " - id:" + idFornitore, ex); throw; } }
private ScadenzaFattura manage(ScadenzaFatturaDTO dto) { ScadenzaFattura item = null; bool result; // Controllo sullo stato U, D, I switch (dto.Stato.ToUpper()) { case "U": result = update(dto, out item); if (!result) throw new Exception("Il dato sul database è più recente di quello utilizzato"); break; case "I": result = insert(dto, out item); if (!result) throw new Exception("Impossibile scrivere sul database"); break; } return item; }
private bool update(ScadenzaFatturaDTO dto, out ScadenzaFattura item) { var result = false; var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); try { item = daoFactory.GetScadenzaFatturaDao().GetById(dto.ID, false); // Solo se la scadenza non è stata pagata, oppure se l'importo da pagare è superiore a quello pagato, oppure l'importo pagato è uguale ma l'importo della ritenuta è diverso e la ritenuta non è stata ancora versata if (item.Stato == StatoSpesaEnum.Inserita || item.Stato == StatoSpesaEnum.Autorizzata || dto.Importo > item.Importo || (dto.Importo == item.Importo && dto.ImportoRitenuta != item.ImportoRitenuta && !item.Pagamenti.Any(pag => pag.RitenutaAcconto.Stato == StatoRitenutaEnum.Pagata))) { item.Importo = dto.Importo; item.ImportoRitenuta = dto.ImportoRitenuta; item.Scadenza = dto.Scadenza; item.SetStato(); result = true; } else result = true; } catch (Exception ex) { _log.Error("Errore nel salvataggio della scadenza Fattura/Spesa: " + Library.Utility.GetMethodDescription() + " - id:" + dto.ID.ToString(), ex); throw; } return result; }
private bool insert(ScadenzaFatturaDTO dto, out ScadenzaFattura item) { var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); item = null; try { item = new ScadenzaFattura(daoFactory.GetSpesaDao().GetById(dto.IdSpesa, false), dto.Scadenza, dto.Importo) {ImportoRitenuta = dto.ImportoRitenuta}; daoFactory.GetScadenzaFatturaDao().SaveOrUpdate(item); } catch (Exception ex) { _log.ErrorFormat("Errore nel salvataggio scadenza Fattura/Spesa - {0} - id:{1}", ex, Library.Utility.GetMethodDescription(), dto.ID); throw; } return true; }
private ScadenzaFatturaDTO setDto(ScadenzaFattura item) { var dto = new ScadenzaFatturaDTO { ID = item.ID, IdSpesa = item.SpesaRiferimento.ID, Importo = item.Importo, ImportoPagato = item.ImportoPagato, ImportoRitenuta = item.ImportoRitenuta, IdEsercizio = item.SpesaRiferimento.EsercizioRiferimento.ID, Esercizio = item.SpesaRiferimento.EsercizioRiferimento.DisplayName, IdCondominio = item.SpesaRiferimento.EsercizioRiferimento.CondominioRiferimento.ID, Condominio = item.SpesaRiferimento.EsercizioRiferimento.CondominioRiferimento.DisplayName }; dto.ImportoResiduoRitenuta = Common.ContabilitaHelper.GetImportoRitenuta(item.ID, dto.Importo.GetValueOrDefault() - dto.ImportoPagato.GetValueOrDefault(), _windsorRepository.GetContainer(_info.Azienda)); dto.Scadenza = item.Scadenza; dto.DisplayFornitore = item.SpesaRiferimento.FornitoreRiferimento.DisplayName; dto.DisplayDataDocumento = item.SpesaRiferimento.DataDocumento; dto.DisplayNumeroDocumento = item.SpesaRiferimento.NumeroDocumento; dto.DisplayTipoDocumento = item.SpesaRiferimento.TipoDocumento; var pagamenti = item.Pagamenti.Where(pag => pag.Stato != StatoSpesaEnum.Autorizzata).ToList(); if (pagamenti.Any()) { var pag = pagamenti.FirstOrDefault(); if (pag != null) { if (pag.RitenutaAcconto != null && pag.RitenutaAcconto.TestataRiferimento != null && pag.RitenutaAcconto.TestataRiferimento.Data != null) dto.DataPagamentoRitenuta = pag.RitenutaAcconto.TestataRiferimento.Data; if (pag.Conto != null) dto.IdContoPagamentoScadenza = pag.Conto.ID; if (pag.MovimentoContabile != null) { if (pag.MovimentoContabile.SottoContoRiferimento != null) dto.IdSottoContoPagamentoScadenza = pag.MovimentoContabile.SottoContoRiferimento.ID; else if (pag.MovimentoContabile.ContoCorrenteBancario != null) dto.IdSottoContoPagamentoScadenza = pag.MovimentoContabile.ContoCorrenteBancario.ID * -1; } } } dto.StatoScadenza = item.Stato; dto.Version = item.Version; // Pagamenti var rep = getPagamentoFatturaRepository(); var pagamentiDTO = new List<PagamentoDTO>(pagamenti.Count); pagamentiDTO.AddRange(from pagamento in pagamenti select rep.GetByDomainEntity(pagamento)); dto.Pagamenti = pagamentiDTO; return dto; }
public int? ManageDomainEntity(ScadenzaFatturaDTO dto) { try { return manage(dto).ID; } catch (Exception ex) { _log.Error("Errore nella gestione delle scadenze delle fatture: " + Library.Utility.GetMethodDescription() + " - id:" + dto.ID.ToString(), ex); throw; } }
private void calcolaImportiRiepilogo() { try { var tbIva = new DataTable("RiepilogoIva"); var dcId = new DataColumn("AliquotaIva", typeof(decimal)); tbIva.Columns.Add(dcId); tbIva.PrimaryKey = new[] { dcId }; var dc = new DataColumn("ImportoTotale", typeof(decimal)); tbIva.Columns.Add(dc); dc = new DataColumn("Imponibile", typeof(decimal)); tbIva.Columns.Add(dc); dc = new DataColumn("ImportoIva", typeof(decimal)); tbIva.Columns.Add(dc); decimal imponibileDocumento = 0; decimal imponibileRitenuta = 0; if (dettagliSpesa.ActiveTab?.Tag != null) setDettaglioDataSource((DettaglioSpesaDTO)dettagliSpesa.ActiveTab.Tag, null); var index = 0; foreach (var dettaglio in _spesa.Dettagli) { try { if (dettaglio != null) { // TODO: Da verificare perchè dettaglio.Imponibile è sempre = null decimal? importoImponibile = null; if (dettaglio.ImportoLordo != null && dettaglio.ImportoIva != null) importoImponibile = dettaglio.ImportoLordo - dettaglio.ImportoIva; else if (dettaglio.ImportoLordo != null) importoImponibile = dettaglio.ImportoLordo; if (index == 0) { if (_spesa.AltreSpese != null) { importoImponibile -= _spesa.AltreSpese.Value; altreSpese.Text = _spesa.AltreSpese.Value.ToString("c"); altreSpese.Tag = _spesa.AltreSpese.Value; } else { altreSpese.Text = string.Empty; altreSpese.Tag = null; } if (_spesa.AltreSpeseEsenti != null) { altreSpeseEsentiRiepilogo.Text = _spesa.AltreSpeseEsenti.Value.ToString("c"); altreSpeseEsentiRiepilogo.Tag = _spesa.AltreSpeseEsenti.Value; } else { altreSpeseEsentiRiepilogo.Text = string.Empty; altreSpeseEsentiRiepilogo.Tag = null; } if (_spesa.CassaProfessionisti != null) { importoImponibile -= _spesa.CassaProfessionisti.Value; cassaProfessionisti.Text = _spesa.CassaProfessionisti.Value.ToString("c"); cassaProfessionisti.Tag = _spesa.CassaProfessionisti.Value; } else { cassaProfessionisti.Text = string.Empty; cassaProfessionisti.Tag = null; } imponibileRitenuta -= speseEsentiRitenuta.Value; if (_spesa.IsRitenutaCalcoloImponibile) imponibileRitenuta += _spesa.CassaProfessionisti.GetValueOrDefault(); } if (dettaglio.AliquotaIva != null) { var row = tbIva.Rows.Find(Convert.ToDecimal(Decodifica.Instance.GetElement("CodiceIva", dettaglio.AliquotaIva).ValoreNumerico) * 100); if (row == null) { row = tbIva.NewRow(); row["AliquotaIva"] = Convert.ToDecimal(Decodifica.Instance.GetElement("CodiceIva", dettaglio.AliquotaIva).ValoreNumerico) * 100; row["ImportoTotale"] = dettaglio.ImportoLordo.GetValueOrDefault(); row["Imponibile"] = importoImponibile.GetValueOrDefault(); if (index == 0 && _spesa.CassaProfessionisti != null) row["Imponibile"] = (decimal)row["Imponibile"] + _spesa.CassaProfessionisti; row["ImportoIva"] = dettaglio.ImportoIva.GetValueOrDefault(); tbIva.Rows.Add(row); } else { row["ImportoTotale"] = (decimal)row["ImportoTotale"] + dettaglio.ImportoLordo.GetValueOrDefault(); row["Imponibile"] = (decimal)row["Imponibile"] + importoImponibile.GetValueOrDefault(); row["ImportoIva"] = (decimal)row["ImportoIva"] + dettaglio.ImportoIva.GetValueOrDefault(); } } if (dettaglio.SoggettoRitenutaAcconto != null && dettaglio.SoggettoRitenutaAcconto.Value && imponibile != null) imponibileRitenuta += importoImponibile.Value; if (importoImponibile != null) imponibileDocumento += importoImponibile.Value; index++; } } catch (Exception ex) { _log.WarnFormat("Errore nel caricamento delle scadenze - SINGOLO DETTAGLIO - {0} - dettaglio:{1} - sepsa:{2} - esercizio:{3}", ex, Utility.GetMethodDescription(), dettaglio.ID, _spesa.ID, _esercizio.ID); throw; } } riepilogoIva.DataSource = tbIva; imponibile.Text = imponibileDocumento.ToString("c"); imponibile.Tag = imponibileDocumento; decimal importoRitenuta = 0; try { if (sceltaFornitore.SelectedFornitore != null) importoRitenuta = Math.Round(imponibileRitenuta * ((decimal?)aliquotaRitenuta.Value).GetValueOrDefault(), 2, MidpointRounding.AwayFromZero); } catch (Exception ex) { var aliquota = "<NULL>"; if (aliquotaRitenuta.Value != null) aliquota = aliquotaRitenuta.Value.ToString(); _log.ErrorFormat("Calcolo della ritenuta - {0} - aliquota:{1} - spesa:{2} - esercizio:{3}", ex, Utility.GetMethodDescription(), aliquota, _spesa.ID, _esercizio.ID); throw; } ritenutaAcconto.Text = importoRitenuta.ToString("c"); ritenutaAcconto.Tag = importoRitenuta; _spesa.ImportoRitenuta = importoRitenuta; if (imponibile.Tag != null && riepilogoIva.DataSource != null) { decimal importoPagatoTotale; try { var importoImponibile = imponibile.Tag as decimal?; var totaleDocumento = importoImponibile.GetValueOrDefault(); var tb = (DataTable)riepilogoIva.DataSource; var importoIva = tb.Rows.Cast<DataRow>().Sum(row => (decimal)row["ImportoIva"]); ivaTotale.Text = importoIva.ToString("c"); totaleDocumento += importoIva; if (cassaProfessionisti.Tag != null) totaleDocumento += (decimal)cassaProfessionisti.Tag; if (altreSpese.Tag != null) totaleDocumento += (decimal)altreSpese.Tag; imponibileTotale.Text = cassaProfessionisti.Tag == null ? importoImponibile.GetValueOrDefault().ToString("c") : (importoImponibile.GetValueOrDefault() + (decimal)cassaProfessionisti.Tag).ToString("c"); totaleImporto.Text = totaleDocumento.ToString("c"); importoPagatoTotale = totaleDocumento; if (altreSpeseEsentiRiepilogo.Tag != null) importoPagatoTotale += (decimal)altreSpeseEsentiRiepilogo.Tag; if (ritenutaAcconto.Tag != null) importoPagatoTotale -= (decimal)ritenutaAcconto.Tag; importoPagato.Text = importoPagatoTotale.ToString("c"); importoPagato.Tag = importoPagatoTotale; } catch (Exception ex) { _log.ErrorFormat("Calcola Importi - {0} - spesa:{1} - esercizio:{2}", ex, Utility.GetMethodDescription(), _spesa.ID, _esercizio.ID); throw; } if (isEditing && dettagliSpesa.ActiveTab != null) { setDettaglioDataSource((DettaglioSpesaDTO)dettagliSpesa.ActiveTab.Tag, null); try { _spesa.ImportoLordo = 0; _spesa.ImportoIva = 0; _spesa.Imponibile = 0; foreach (var dettaglio in _spesa.Dettagli) { if (dettaglio != null) { _spesa.ImportoLordo += dettaglio.ImportoLordo; _spesa.ImportoIva += dettaglio.ImportoIva; _spesa.Imponibile += dettaglio.ImportoLordo - dettaglio.ImportoIva; } } } catch (Exception ex) { _log.ErrorFormat("Elabora dettagli - {0} - spesa:{1} - esercizio:{2}", ex, Utility.GetMethodDescription(), _spesa.ID, _esercizio.ID); throw; } // Aggiorno default scadenze if (_spesa.TipoDocumento != "Nota di accredito" && _isInserimento || (_spesa.Scadenze.Count == 1 && (_spesa.Scadenze[0].StatoScadenza == StatoSpesaEnum.Autorizzata || _spesa.Scadenze[0].StatoScadenza == StatoSpesaEnum.Inserita) && _spesa.Scadenze[0].Importo != importoPagatoTotale)) { try { var idScadenza = 0; var version = 0; DateTime? dataScadenza = DateTime.Today; DateTime? dataRitenuta = null; int? idConto = null; int? idSottoConto = null; List<PagamentoDTO> pagamenti = null; if (_spesa.Scadenze.Count == 1) { idScadenza = _spesa.Scadenze[0].ID; dataScadenza = _spesa.Scadenze[0].Scadenza; dataRitenuta = _spesa.Scadenze[0].DataPagamentoRitenuta; idConto = _spesa.Scadenze[0].IdContoPagamentoScadenza; idSottoConto = _spesa.Scadenze[0].IdSottoContoPagamentoScadenza; version = _spesa.Scadenze[0].Version; pagamenti = _spesa.Scadenze[0].Pagamenti; } _spesa.Scadenze.Clear(); var scadenza = new ScadenzaFatturaDTO { ID = idScadenza, Version = version, Stato = "U", Scadenza = dataScadenza, IdContoPagamentoScadenza = idConto, IdSottoContoPagamentoScadenza = idSottoConto, Importo = importoPagatoTotale, IdSpesa = _spesa.ID, StatoScadenza = StatoSpesaEnum.Inserita }; scadenza.ImportoRitenuta = _fatturaService.GetImportoRitenuta(_spesa, scadenza.Importo, 0); scadenza.DataPagamentoRitenuta = dataRitenuta; scadenza.Pagamenti = pagamenti; _spesa.Scadenze.Add(scadenza); scadenze.DataBind(); } catch (Exception ex) { _log.ErrorFormat("Aggiorna scadenze - {0} - spesa:{1} - esercizio:{2}", ex, Utility.GetMethodDescription(), _spesa.ID, _esercizio.ID); throw; } } } } } catch (Exception ex) { _log.WarnFormat("Errore nel calcolo degli importi di riepilogo - {0} - spesa:{1} - esercizio:{2}", ex, Utility.GetMethodDescription(), _spesa.ID, _esercizio.ID); throw; } }
private bool isScadenzaPagata(ScadenzaFatturaDTO scadenza) { if ((scadenza.StatoScadenza != StatoSpesaEnum.Undefined && scadenza.StatoScadenza != StatoSpesaEnum.Inserita && scadenza.StatoScadenza != StatoSpesaEnum.Autorizzata) || (scadenza.Pagamenti != null && scadenza.Pagamenti.Count > 0)) return true; return false; }
private ScadenzaFatturaDTO setScadenzaDto(ScadenzaFattura item) { var dto = new ScadenzaFatturaDTO { ID = item.ID, IdSpesa = item.SpesaRiferimento.ID, Importo = item.Importo, ImportoPagato = item.ImportoPagato, ImportoRitenuta = item.ImportoRitenuta }; dto.ImportoResiduoRitenuta = Common.ContabilitaHelper.GetImportoRitenuta(item.SpesaRiferimento, dto.Importo.GetValueOrDefault() - dto.ImportoPagato.GetValueOrDefault()); dto.Scadenza = item.Scadenza; dto.DisplayFornitore = item.SpesaRiferimento.FornitoreRiferimento.DisplayName; dto.DisplayDataDocumento = item.SpesaRiferimento.DataDocumento; dto.DisplayNumeroDocumento = item.SpesaRiferimento.NumeroDocumento; dto.DisplayTipoDocumento = item.SpesaRiferimento.TipoDocumento; if (item.Pagamenti.Count == 1) { var pag = IesiGenericCollections<Pagamento>.GetByIndex(item.Pagamenti, 0); if (pag.RitenutaAcconto != null && pag.RitenutaAcconto.TestataRiferimento != null && pag.RitenutaAcconto.TestataRiferimento.Data != null) dto.DataPagamentoRitenuta = pag.RitenutaAcconto.TestataRiferimento.Data; if (pag.Conto != null) dto.IdContoPagamentoScadenza = pag.Conto.ID; if (pag.MovimentoContabile != null) { if (pag.MovimentoContabile.SottoContoRiferimento != null) dto.IdSottoContoPagamentoScadenza = pag.MovimentoContabile.SottoContoRiferimento.ID; else if (pag.MovimentoContabile.ContoCorrenteBancario != null) dto.IdSottoContoPagamentoScadenza = pag.MovimentoContabile.ContoCorrenteBancario.ID * -1; } } dto.StatoScadenza = StatoSpesaEnum.Stornata; dto.Version = item.Version; return dto; }