public ResultProgressivo GetProgressivo(TipoProtocollo tipo, Condominio condominio) { int? progressivo = null; string message = string.Empty; try { if (tipo == TipoProtocollo.VersamentoCondomino) throw new InvalidOperationException("Per 'VersamentoCondomino' è consentita la creazione del protocollo solo per Esercizio."); if (tipo == TipoProtocollo.Fattura) throw new InvalidOperationException("Per 'Fattura' è consentita la creazione del protocollo solo per Anno."); const string hql = "FROM Protocollo P WHERE P.Tipo =:tipo AND P.CondominioRiferimento = :condominio"; var prot = _daoFactory.GetProtocolloDao().GetByQuery(hql, new[] { new QueryParam("tipo", Conversione.ToHQLParameter(tipo)), new QueryParam("condominio", condominio) }); if (prot != null) { if (prot.Count > 0) { try { var protocollo = _daoFactory.GetProtocolloDao().GetById(prot[0].ID, true); progressivo = protocollo.Progressivo + 1; protocollo.Progressivo = progressivo.Value; } catch (Exception ex) { _log.WarnFormat("Errore inaspettato nel salvataggio (UPDATE) del progressivo di protocollo - (TIPO, CONDOMINIO) - {0} - tipo: ", ex, Utility.GetMethodDescription(), tipo); throw; } if (prot.Count > 1) { _log.WarnFormat("Trovato più di un protocollo con le selezioni indicate - {0} - (tipo, condominio) - tipo: ", Utility.GetMethodDescription(), tipo); } } else { var protocollo = new GestioneCondomini.Domain.Protocollo(tipo, condominio); progressivo = 1; protocollo.Progressivo = progressivo.Value; _daoFactory.GetProtocolloDao().SaveOrUpdate(protocollo); } } } catch (Exception ex) { _log.WarnFormat("Errore inaspettato nel calcolo del progressivo di protocollo - (TIPO, CONDOMINIO) - {0} - tipo:{1}", ex, Utility.GetMethodDescription(), tipo); throw; } if (!string.IsNullOrEmpty(message)) { progressivo = null; _persistenceContext.RollbackAndCloseSession(Login.Instance.CurrentLogin().LoginName); _persistenceContext.BeginTransaction(Login.Instance.CurrentLogin().LoginName, IsolationLevel.ReadUncommitted); } return new ResultProgressivo(progressivo, message); }
/// <summary> /// Crea uno Protocollo valido per esercizio /// </summary> public Protocollo(TipoProtocollo tipo, Esercizio esercizioRiferimento) { _tipo = tipo; _esercizioRiferimento = esercizioRiferimento; }
/// <summary> /// Crea uno Protocollo valido per anno /// </summary> public Protocollo(TipoProtocollo tipo, int annoRiferimento, Condominio condominioRiferimento) { Tipo = tipo; AnnoRiferimento = annoRiferimento; CondominioRiferimento = condominioRiferimento; }