public RegistrazioneSpeseFiscaleUC(CondominioDTO condominio, EsercizioDTO esercizio)
        {
            InitializeComponent();

            _isInserimento = true;
            _condominio = condominio;
            _esercizio = esercizio;
            
            inizializza();

            if(_esercizio != null)
                _spesa = _fatturaService.GetNewFiscale(_esercizio);
        }
        public RegistrazioneSpeseFiscaleUC(int idSpesa, CondominioDTO condominio, EsercizioDTO esercizio)
        {
            InitializeComponent();

            _condominio = condominio;
            _esercizio = esercizio;
            
            inizializza();
            _isInserimento = false;

            _spesa = _fatturaService.GetFiscaleById(idSpesa);

            ritenutaCalcolataImponibile.CheckedChanged -=ritenutaCalcolataImponibileCheckedChanged;
            ritenutaCalcolataImponibile.Checked = _spesa.IsRitenutaCalcoloImponibile;
            ritenutaCalcolataImponibile.CheckedChanged += ritenutaCalcolataImponibileCheckedChanged;
            aliquotaRitenuta.ValueChanged -=aliquotaRitenutaValueChanged;
            aliquotaRitenuta.Value = _spesa.AliquotaRitenuta;
            aliquotaRitenuta.ValueChanged += aliquotaRitenutaValueChanged;
        }
        void clearFields()
        {
            sceltaFornitore.Reset();

            if (_esercizio != null)
            {
                _spesa = _fatturaService.GetNewFiscale(_esercizio);
                cassaProfessionistiDettaglio.Value = 0;
                ritenutaCalcolataImponibile.Checked = false;
                aliquotaRitenuta.Value = null;

                spesaFiscaleDTOBindingSource.DataSource = _spesa;
                dettaglioSpesaFiscaleDTOBindingSource.DataSource = _spesa.Dettagli;
            }

            if (!totaleFattura.IsDisposed)
                totaleFattura.Value = 0;
        }
Example #4
0
 public SpesaFiscaleDTO GetNewFiscale(EsercizioDTO esercizio)
 {
     var spesa = new SpesaFiscaleDTO
     {
         IdEsercizio = esercizio.ID,
         IsAbilitataArchiviazioneOttica = _condominioService.GetById(esercizio.IdCondominio, true).IsAbilitataArchiviazioneOtticaPassivi,
         Dettagli = new List<DettaglioSpesaFiscaleDTO>(),
         Scadenze = new List<ScadenzaSpesaFiscaleDTO>()
     };
     
     return spesa;
 }
Example #5
0
        public SpesaInfoDTO SalvaFiscale(SpesaFiscaleDTO spesa)
        {
            if (spesa.Detrazione == 0)
                spesa.Detrazione = null;

            var result = GetServiceClient().SalvaSpesaFiscale(spesa, GetUserInfo());

            if (result.StampaEtichettaArchiviazione)
            {
                var workerStampaEtichetta = new BackgroundWorker();
                workerStampaEtichetta.DoWork += workerStampaEtichettaDoWork;
                workerStampaEtichetta.RunWorkerAsync(new object[] { result.IdentificativoArchiviazione, result.TrayEtichettatriceAttivazioneOttica });
            }

            CloseService();
            return result;
        }
Example #6
0
        public SpesaFiscaleDTO GetFiscaleById(int idSpesa)
        {
            try
            {
                var spesa = _daoFactory.GetSpesaDao().GetById(idSpesa, false);
                var dto = new SpesaFiscaleDTO
                {
                    AliquotaRitenuta = spesa.AliquotaRitenuta,
                    AltreSpese = spesa.AltreSpese,
                    CassaProfessionisti = spesa.CassaProfessionisti,
                    DataDocumento = spesa.DataDocumento,
                    Detrazione = spesa.Detrazione,
                    ID = idSpesa,
                    IdCondominio = spesa.EsercizioRiferimento.CondominioRiferimento.ID,
                    IdEsercizio = spesa.EsercizioRiferimento.ID,
                    IdFornitore = spesa.FornitoreRiferimento.ID,
                    IdentificativoArchiviazioneOttica = _archiviazioneService.GetIdentificativoArchiviazione(spesa),
                    IsAbilitataArchiviazioneOttica = spesa.IsAbilitataArchiviazioneOttica,
                    NumeroDocumento = spesa.NumeroDocumento,
                    StatoSpesa = spesa.Stato,
                    TipoDocumento = spesa.TipoDocumento,
                    IsRitenutaCalcoloImponibile = spesa.IsRitenutaCalcoloImponibile,
                    SpeseEsenti = spesa.AltreSpeseEsenti,
                    SpeseEsentiRitenuta = spesa.SpeseEsentiRitenuta,
                    EsenteRegimeMinimo = spesa.EsenteRegimeMinimo
                };
                
                foreach (var scadenza in spesa.Scadenze)
                {
                    var scadenzaDto = new ScadenzaSpesaFiscaleDTO {Importo = scadenza.Importo.GetValueOrDefault(), ImportoRitenuta = scadenza.ImportoRitenuta, DataPagamento = scadenza.Scadenza};

                    var pag = scadenza.Pagamenti.FirstOrDefault();
                    if (pag != null)
                    {
                        scadenzaDto.DataPagamento = pag.Data;
                        if (pag.RitenutaAcconto != null)
                        {
                            scadenzaDto.DataPagamentoRitenuta = pag.RitenutaAcconto.DataPagamentoRitenuta;
                            scadenzaDto.ImportoInteressi = pag.RitenutaAcconto.ImportoInteressi;
                            scadenzaDto.ImportoSanzioni = pag.RitenutaAcconto.ImportoSanzione;
                            scadenzaDto.ImportoRitenuta = pag.RitenutaAcconto.Importo.GetValueOrDefault();
                        }

                        if(spesa.AliquotaRitenuta > 0)
                        {
                            scadenzaDto.RitenutaNONPagata = true;
                            if (pag.RitenutaAcconto != null && pag.RitenutaAcconto.Importo > 0 && pag.RitenutaAcconto.Stato == StatoRitenutaEnum.PagataAltroAmministratore)
                                scadenzaDto.RitenutaNONPagata = false;
                        }
                    }

                    dto.Scadenze.Add(scadenzaDto);
                }

                dto.Dettagli = new DettaglioSpesaFiscaleDTO[spesa.Dettagli.Count];
                int indexDettaglio = 0;
                foreach (var dettaglio in spesa.Dettagli)
                {
                    var dtoDettaglio = new DettaglioSpesaFiscaleDTO
                                           {
                        AliquotaIva = dettaglio.AliquotaIva,
                        Descrizione = dettaglio.Descrizione,
                        ID = dettaglio.ID,
                        IdSpesaRiferimento = spesa.ID,
                        Imponibile = dettaglio.Imponibile,
                        ImportoIva = dettaglio.ImportoIva,
                        ImportoLordo = dettaglio.ImportoLordo,
                        IsDeleteAllow = dettaglio.IsDeleteAllow(),
                        NumeroRiga = dettaglio.NumeroRiga,
                        SoggettoRitenutaAcconto = dettaglio.SoggettoRitenutaAcconto,
                        Version = dettaglio.Version
                    };
                    dto.Dettagli[indexDettaglio] = dtoDettaglio;
                    indexDettaglio++;
                }

                return dto;
            }
            catch (Exception ex)
            {
                
                _log.Fatal("Errore inaspettato nel recupero di una spesa FISCALE - " + Utility.GetMethodDescription() + " - spesa:" + idSpesa, ex);
                throw;
            }    
        }
Example #7
0
        public SpesaInfoDTO SalvaFiscale(SpesaFiscaleDTO dto)
        {
            try
            {
                var message = string.Empty;

                var fornitore = _daoFactory.GetFornitoreDao().GetById(dto.IdFornitore, false);
                var esercizio = _daoFactory.GetEsercizioDao().Find(dto.IdEsercizio, false);
                if (esercizio == null)
                    throw new InvalidDataException("L'esercizio selezionato non è più presente in archivio.");

                GestioneCondomini.Domain.Spesa spesa;

                if (dto.ID == 0)
                {
                    spesa = new GestioneCondomini.Domain.Spesa(fornitore, esercizio, null);
                    var protocollo = _protocolloService.GetProgressivo(TipoProtocollo.Fattura, esercizio.DataApertura.GetValueOrDefault().Year, esercizio.CondominioRiferimento);
                    if (protocollo.Progressivo != null)
                    {
                        spesa.NumeroProtocollo = protocollo.Progressivo;
                        _daoFactory.GetSpesaDao().SaveOrUpdate(spesa);
                    }
                    else
                        message = protocollo.Message + Environment.NewLine;
                }
                else
                {
                    spesa = _daoFactory.GetSpesaDao().GetById(dto.ID, false);
                    spesa.FornitoreRiferimento = fornitore;
                    spesa.EsercizioRiferimento = esercizio;
                }

                var info = new SpesaInfoDTO();
                if (string.IsNullOrEmpty(message))
                {
                    spesa.ImportoRitenuta = dto.Scadenze.Sum(item => item.ImportoRitenuta);
                    spesa.AltreSpese = dto.AltreSpese;
                    spesa.AltreSpeseEsenti = dto.SpeseEsenti;
                    spesa.SpeseEsentiRitenuta = dto.SpeseEsentiRitenuta;
                    spesa.CassaProfessionisti = dto.CassaProfessionisti;
                    spesa.DataDocumento = dto.DataDocumento;
                    spesa.NumeroDocumento = dto.NumeroDocumento;
                    spesa.AliquotaRitenuta = dto.AliquotaRitenuta;
                    spesa.IsAbilitataArchiviazioneOttica = dto.IsAbilitataArchiviazioneOttica;
                    spesa.IsRitenutaCalcoloImponibile = dto.IsRitenutaCalcoloImponibile;
                    spesa.Stato = StatoSpesaEnum.Pagata;
                    spesa.TipoDocumento = dto.TipoDocumento;
                    spesa.Detrazione = dto.Detrazione;
                    spesa.EsenteRegimeMinimo = dto.EsenteRegimeMinimo;

                    // ----------------------------------------------------
                    // Dettagli
                    // ----------------------------------------------------
                    spesa.Dettagli.Clear();
                    var index = 0;
                    foreach (var dtoDettaglio in dto.Dettagli)
                    {
                        index++;
                        DettaglioSpesa dettaglio;
                        if (dtoDettaglio.ID == 0)
                            dettaglio = new DettaglioSpesa(spesa, index);
                        else
                        {
                            dettaglio = _daoFactory.GetDettaglioSpesaDao().GetById(dtoDettaglio.ID, false);
                            dettaglio.NumeroRiga = index;
                            spesa.Dettagli.Add(dettaglio);
                        }

                        dettaglio.AliquotaIva = dtoDettaglio.AliquotaIva;
                        dettaglio.Descrizione = dtoDettaglio.Descrizione;
                        dettaglio.ImportoIva = dtoDettaglio.ImportoIva;
                        dettaglio.ImportoLordo = dtoDettaglio.ImportoLordo;
                        dettaglio.SoggettoRitenutaAcconto = dtoDettaglio.SoggettoRitenutaAcconto;
                    }

                    // ----------------------------------------------------
                    // Scadenze / Pagamenti
                    // ----------------------------------------------------
                    // Pulizia movimenti, scadenze e pagamenti presenti
                    foreach (var scadenza in spesa.Scadenze)
                    {
                        foreach (var pagamento in scadenza.Pagamenti)
                            _daoFactory.GetPagamentoDao().Delete(pagamento);
                        _daoFactory.GetScadenzaFatturaDao().Delete(scadenza);
                    }
                    spesa.Scadenze.Clear();

                    foreach (var scadenzaDto in dto.Scadenze)
                    {
                        var scadenzaNew = new ScadenzaFattura(spesa, scadenzaDto.DataPagamento, scadenzaDto.Importo) { Stato = StatoSpesaEnum.Pagata };
                        var pagamentoNew = new Pagamento(scadenzaNew, null, scadenzaNew.Importo, scadenzaNew.Scadenza, TipoPagamentoFatturaEnum.Immediato) { Stato = StatoSpesaEnum.Pagata };
                        scadenzaNew.Pagamenti.Add(pagamentoNew);
                        _daoFactory.GetScadenzaFatturaDao().SaveOrUpdate(scadenzaNew);

                        // -----------------------------------------------------
                        // Ritenuta
                        // -----------------------------------------------------
                        // ritenuta PAGATA dal vecchio amministratore i dati, compresi interessi e sanzioni servono per il modello 770
                        var ritenuta = new Ritenuta(scadenzaDto.ImportoRitenuta);

                        if (!scadenzaDto.RitenutaNONPagata)
                        {
                            ritenuta.Stato = StatoRitenutaEnum.PagataAltroAmministratore;
                            ritenuta.DataPagamentoRitenuta = scadenzaDto.DataPagamentoRitenuta;
                            ritenuta.ImportoInteressi = scadenzaDto.ImportoInteressi;
                            ritenuta.ImportoSanzione = scadenzaDto.ImportoSanzioni;
                        }
                        // ritenuta NON Pagata inserita come da pagare
                        else
                        {
                            ritenuta.Stato = StatoRitenutaEnum.Inserita;
                            ritenuta.DataPagamentoRitenuta = null;
                            _daoFactory.GetSpesaDao().SaveOrUpdate(spesa);
                            _movimentoContabileService.SetMovimentiRitenutaPagataAltroAmministratore(spesa, scadenzaDto.DataPagamento.GetValueOrDefault());
                        }
                        pagamentoNew.RitenutaAcconto = ritenuta;                        
                    }

                    info = new SpesaInfoDTO
                    {
                        Id = spesa.ID,
                        NumeroProtocollo = spesa.NumeroProtocollo.GetValueOrDefault(),
                    };
                    if (spesa.IsAbilitataArchiviazioneOttica)
                    {
                        var impostazioni = _daoFactory.GetImpostazioniAziendaDao().GetByAzienda(spesa.EsercizioRiferimento.CondominioRiferimento.Azienda.ID);
                        info.IdentificativoArchiviazione = _archiviazioneService.GetIdentificativoArchiviazione(spesa);
                        info.StampaEtichettaArchiviazione = impostazioni.UtilizzoEtichettatriceArchiviazioneOtticaFatture && spesa.EsercizioRiferimento.CondominioRiferimento.IsAbilitataArchiviazioneOtticaPassivi.GetValueOrDefault();
                        info.EtichettatriceArchiviazione = impostazioni.EtichettatriceArchiviazioneOttica;
                        info.TipoEtichettaArchiviazione = impostazioni.TipoEtichettaArchiviazioneOttica;
                    }

                    spesa.Stato = StatoSpesaEnum.PagataAltroAmministratore;
                }
                else
                    info.Message = message;

                return info;
            }
            catch (Exception ex)
            {
                
                _log.Fatal("Errore inaspettato nel salvataggio della spesa FISCALE - " + Utility.GetMethodDescription() + " - spesa:" + dto.ID, ex);
                throw;
            }        
        }
Example #8
0
		public SpesaInfoDTO SalvaSpesaFiscale(SpesaFiscaleDTO spesa, UserInfo userinfo)
		{
            var retryCount = 10;
            var success = false;
            var windsorRep = new WindsorConfigRepository();
            var item = new SpesaInfoDTO { Id = 0, Message = "Un altro utente ha confermato un movimento.", StampaEtichettaArchiviazione = false, IdentificativoArchiviazione = null, NumeroProtocollo = 0 };
            while (retryCount >= 0 && !success)
            {
                try
                {
                    windsorRep.BeginTransaction(userinfo);
                    var service = windsorRep.GetContainer(userinfo.Azienda).Resolve<ISpesaService>();
                    item = service.SalvaFiscale(spesa);
                    windsorRep.Commit();
                    success = true;
                }
                catch (InvalidDataException ex)
                {
                    windsorRep.Rollback();
                    return new SpesaInfoDTO { Message = ex.Message };
                }
                catch (Exception ex)
                {
                    windsorRep.Rollback();
                    if (!isRetryException(ex))
                    {
                        _log.ErrorFormat("Errore nel salvataggio della spesa fiscale - TENTATIVO:{0} - {1} - id:{2} - azienda:{3} - number:{4}", ex, (11 - retryCount), Utility.GetMethodDescription(), spesa.ID, userinfo.Azienda, getExceptionId(ex));
                        throw;
                    }

                    // Add delay here if you wish. 
                    System.Threading.Thread.Sleep(1000 * (11 - retryCount));
                    retryCount--;
                    _log.ErrorFormat("Salvataggio della spesa fiscale - INIZIO TENTATIVO:{0} - {1} - id:{2} - azienda:{3}", (11 - retryCount), Utility.GetMethodDescription(), spesa.ID, userinfo.Azienda);
                }
            }

            if (!success)
                windsorRep.Rollback();

            return item;
		}