public InserimentoNotaAccreditoUC(int idNota, CondominioDTO condominio, EsercizioDTO esercizio)
        {
            InitializeComponent();

            _condominio = condominio;
            _esercizio = esercizio;
            
            inizializza();
            _nota = getFatturaService().GetNotaAccreditoById(idNota);
            addScadenzeStornate(new List<ScadenzaFatturaDTO>());

            lista.Visible = true;
            panelBtn.Visible = true;
            btnCerca.Visible = false;
        }
        public SpesaInfoDTO InserimentoNotaAccredito(NotaAccreditoDTO notaDto, IList<StornoScadenzaDTO> scadenze)
        {
            try
            {
                var esercizio = _daoFactory.GetEsercizioDao().Find(notaDto.IdEsercizio, false);
                if(esercizio == null)
                    throw new InvalidDataException("Non è stato necessario l'esercizio di riferimento");

                var nota = _daoFactory.GetSpesaDao().Find(notaDto.ID, false);
                if (nota == null)
                {
                    nota = new Spesa(_daoFactory.GetFornitoreDao().GetById(notaDto.IdFornitore, false), esercizio, null);
                    _daoFactory.GetSpesaDao().SaveOrUpdate(nota);
                }

                var impostazioni = _daoFactory.GetImpostazioniAziendaDao().GetByAzienda(nota.EsercizioRiferimento.CondominioRiferimento.Azienda.ID);

                nota.TipoDocumento = "NOTACC";
                nota.NumeroDocumento = notaDto.NumeroDocumento;
                nota.DataDocumento = notaDto.DataDocumento;
                nota.ImportoRitenuta = scadenze.Sum(item => item.ImportoRitenuta);
                nota.Stato = StatoSpesaEnum.Stornata;

                DettaglioSpesa dettaglio;
                if (notaDto.IdDettaglioSpesa == 0)
                {
                    dettaglio = new DettaglioSpesa(nota, 1);
                    _daoFactory.GetDettaglioSpesaDao().SaveOrUpdate(dettaglio);
                }
                else
                    dettaglio = _daoFactory.GetDettaglioSpesaDao().GetById(notaDto.IdDettaglioSpesa, false);
                dettaglio.Descrizione = notaDto.Descrizione;
                dettaglio.ImportoLordo = scadenze.Sum(item => item.Importo + item.ImportoRitenuta);

                var message = StornoNoteAccredito(nota.ID, scadenze, dettaglio, esercizio, notaDto.DataRegistrazione);

                var identificativoArchiviazione = string.Empty;
                if (string.IsNullOrEmpty(message))
                {
                    var protocollo = _protocolloService.GetProgressivo(TipoProtocollo.Fattura, esercizio.DataApertura.GetValueOrDefault().Year, nota.EsercizioRiferimento.CondominioRiferimento);
                    if (protocollo.Progressivo != null)
                    {
                        nota.NumeroProtocollo = protocollo.Progressivo;
                        if (nota.IsAbilitataArchiviazioneOttica)
                            identificativoArchiviazione = _archiviazioneOtticaService.GetIdentificativoArchiviazione(nota, true);
                    }
                    else
                        message += protocollo.Message + Environment.NewLine;
                }

                return string.IsNullOrEmpty(message) ? new SpesaInfoDTO { Id = nota.ID, IdentificativoArchiviazione = identificativoArchiviazione, NumeroProtocollo = nota.NumeroProtocollo.GetValueOrDefault(), StampaEtichettaArchiviazione = impostazioni.UtilizzoEtichettatriceArchiviazioneOtticaFatture && nota.EsercizioRiferimento.CondominioRiferimento.IsAbilitataArchiviazioneOtticaPassivi.GetValueOrDefault(), EtichettatriceArchiviazione = impostazioni.EtichettatriceArchiviazioneOttica, TipoEtichettaArchiviazione = impostazioni.TipoEtichettaArchiviazioneOttica } : new SpesaInfoDTO { Id = 0, IdentificativoArchiviazione = null, NumeroProtocollo = 0, StampaEtichettaArchiviazione = false, EtichettatriceArchiviazione = string.Empty, TipoEtichettaArchiviazione = "Testo", Message = message };
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nell'inserimento di una nota di accredito - {0} - idNota:{1} - numeroNota:{2} - fornitore:{3} - esercizio:{4} - descrizione:{5}", ex, Utility.GetMethodDescription(), notaDto.ID, notaDto.NumeroDocumento, notaDto.IdFornitore, notaDto.IdEsercizio, notaDto.Descrizione);
                throw;
            }
        }
        public NotaAccreditoDTO GetNotaAccreditoById(int idNota)
        {
            try
            {
                var nota = _daoFactory.GetSpesaDao().GetById(idNota, false);
                var notaDto = new NotaAccreditoDTO
                {
                    ID = nota.ID,
                    Importo = nota.ImportoLordo,
                    ImportoRitenuta = nota.ImportoRitenuta,
                    IdFornitore = nota.FornitoreRiferimento.ID,
                    DisplayFornitore = nota.FornitoreRiferimento.DisplayName,
                    DataDocumento = nota.DataDocumento,
                    IdEsercizio = nota.EsercizioRiferimento.ID,
                    NumeroDocumento = nota.NumeroDocumento,
                    IsAbilitataArchiviazioneOttica = nota.IsAbilitataArchiviazioneOttica,
                    StatoSpesa = nota.Stato
                };

                var dettaglio = IesiGenericCollections<DettaglioSpesa>.GetByIndex(nota.Dettagli, 0);
                notaDto.Descrizione = dettaglio.GetDescrizione();
                notaDto.IdDettaglioSpesa = dettaglio.ID;

                var testata = nota.TestateMovimenti.FirstOrDefault();
                if (testata != null)
                    notaDto.DataRegistrazione = testata.DataRegistrazione.GetValueOrDefault();

                // Scadenze Stornate
                notaDto.ScadenzeStornate = new List<ScadenzaFatturaStornoDTO>(nota.Riscossioni.Count);
                foreach (var riscossione in nota.Riscossioni)
                {
                    var scadenzaDto = setScadenzaDto(riscossione.ScadenzaRiferimento);
                    notaDto.ScadenzeStornate.Add(new ScadenzaFatturaStornoDTO
                    {
                        Importo = riscossione.Importo.GetValueOrDefault(),
                        ImportoRitenuta = riscossione.ImportoRitenuta.GetValueOrDefault(),
                        Scadenza = scadenzaDto
                    });
                }

                return notaDto;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nella lettura di una notaa di accredito - {0} - nota:{1}", ex, Utility.GetMethodDescription(), idNota);
                throw;
            }
        }
Beispiel #4
0
        public SpesaInfoDTO InserimentoNotaAccredito(NotaAccreditoDTO nota, IList<StornoScadenzaDTO> scadenze)
        {
            var result = GetServiceClient().InserimentoNotaAccredito(nota, new List<StornoScadenzaDTO>(scadenze), GetUserInfo());

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

            CloseService();
            return result;
        }
Beispiel #5
0
 public NotaAccreditoDTO GetNewNotaAccredito(EsercizioDTO esercizio)
 {
     var nota = new NotaAccreditoDTO
     {
         ID = 0,
         IdDettaglioSpesa = 0,
         IdEsercizio = esercizio.ID,
         StatoSpesa = StatoSpesaEnum.Inserita,
         ScadenzeStornate = new List<ScadenzaFatturaStornoDTO>()
     };
     
     return nota;
 }
        public void Reload(CondominioDTO condominio, EsercizioDTO esercizio)
        {
            _condominio = condominio;
            _esercizio = esercizio;
            clear();

            if (_esercizio != null)
            {
                _nota = getFatturaService().GetNewNotaAccredito(_esercizio);
                Visible = true;
            }

            if (_esercizio != null && _esercizio.StatoEsercizio == StatoEsercizioEnum.Chiuso)
            {
                lista.Enabled = false;
                numeroDocumento.ReadOnly = true;
                dataDocumento.ReadOnly = true;
                dataRegistrazione.ReadOnly = true;
                sceltaFornitore.Enabled = false;
                descrizione.ReadOnly = true;
                btnConferma.Enabled = false;
            }
        }
 private void clear()
 {
     _scadenzeDaAggiornare.Clear();
     _nota = getFatturaService().GetNewNotaAccredito(_esercizio);
     sceltaFornitore.SetFornitoreInitial(_nota.IdFornitore);
     notaAccreditoDTOBindingSource.DataSource = _nota;
     sceltaFornitore.Reset();
     lista.Visible = false;
     panelBtn.Visible = false;
 }
Beispiel #8
0
		public SpesaInfoDTO InserimentoNotaAccredito(NotaAccreditoDTO nota, IList<StornoScadenzaDTO> scadenze, UserInfo userinfo)
		{
            var retryCount = 10;
            var success = false;
            var windsorRep = new WindsorConfigRepository();
            var item = new SpesaInfoDTO();
            while (retryCount >= 0 && !success)
            {
                try
                {
                    windsorRep.BeginTransaction(userinfo);
                    var service = windsorRep.GetContainer(userinfo.Azienda).Resolve<IPagamentoService>();
                    item = service.InserimentoNotaAccredito(nota, scadenze);
                    windsorRep.Commit();
                    success = true;
                }
                catch (InvalidDataException ex)
                {
                    return new SpesaInfoDTO { Message = ex.Message };
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore nell'inserimento di una nota di accredito - TENTATIVO:{0} - nota:{1} - azienda:{2} - number:{3}", ex, (11 - retryCount), Utility.GetMethodDescription(), nota.ID, userinfo.Azienda, getExceptionId(ex));

                    windsorRep.Rollback();
                    if (!isRetryException(ex))
                        throw;

                    // Add delay here if you wish. 
                    System.Threading.Thread.Sleep(1000 * (11 - retryCount));
                    retryCount--;
                    _log.InfoFormat("Inserimento di una nota di accredito - TENTATIVO:{0} - nota:{1} - azienda:{2}", (11 - retryCount), Utility.GetMethodDescription(), nota.ID, userinfo.Azienda);
                }
            }

            if (!success)
                windsorRep.Rollback();

            return item;
		}