public void testNullableDateTimeGetValueOrDefault() { DateTime? e = null; DateTime def = e.GetValueOrDefault(); Assert.AssertEquals(default(DateTime), def); e = new DateTime(2002, 2, 2); def = e.GetValueOrDefault(); Assert.AssertEquals(new DateTime(2002, 2, 2), def); e = null; def = e.GetValueOrDefault(); Assert.AssertEquals( default(DateTime), def); }
internal static bool IsBirthday(DateTime? birthday) { DateTime bday = birthday.GetValueOrDefault(); if (bday > DateTime.Today) return false; return true; }
public void Update(Account selectedAccount, DateTime? start, DateTime? end) { Start = start; End = end; var transactions = Dao.Query(GetCurrentRange(start, end, x => x.AccountId == selectedAccount.Id)).OrderBy(x => x.Date); Transactions = transactions.Select(x => new AccountDetailData(x, selectedAccount)).ToList(); if (start.HasValue) { var pastDebit = Dao.Sum(x => x.Debit, GetPastRange(start, x => x.AccountId == selectedAccount.Id)); var pastCredit = Dao.Sum(x => x.Credit, GetPastRange(start, x => x.AccountId == selectedAccount.Id)); var pastExchange = Dao.Sum(x => x.Exchange, GetPastRange(start, x => x.AccountId == selectedAccount.Id)); if (pastCredit > 0 || pastDebit > 0) { Summaries.Add(new AccountSummaryData(Resources.TransactionTotal, Transactions.Sum(x => x.Debit), Transactions.Sum(x => x.Credit))); var detailValue = new AccountDetailData( new AccountTransactionValue { Date = start.GetValueOrDefault(), Name = Resources.BalanceBroughtForward, Credit = pastCredit, Debit = pastDebit, Exchange = pastExchange }, selectedAccount) { IsBold = true }; Transactions.Insert(0, detailValue); } } if (end.HasValue && end != start) { var futureDebit = Dao.Sum(x => x.Debit, GetFutureRange(end, x => x.AccountId == selectedAccount.Id)); var futureCredit = Dao.Sum(x => x.Credit, GetFutureRange(end, x => x.AccountId == selectedAccount.Id)); var futureExchange = Dao.Sum(x => x.Exchange, GetFutureRange(end, x => x.AccountId == selectedAccount.Id)); if (futureCredit > 0 || futureDebit > 0) { Summaries.Add(new AccountSummaryData(Resources.DateRangeTotal, Transactions.Sum(x => x.Debit), Transactions.Sum(x => x.Credit))); var detailValue = new AccountDetailData( new AccountTransactionValue { Date = end.GetValueOrDefault(), Name = Resources.BalanceAfterDate, Credit = futureCredit, Debit = futureDebit, Exchange = futureExchange }, selectedAccount) { IsBold = true }; Transactions.Add(detailValue); } } Summaries.Add(new AccountSummaryData(Resources.GrandTotal, Transactions.Sum(x => x.Debit), Transactions.Sum(x => x.Credit))); for (var i = 0; i < Transactions.Count; i++) { Transactions[i].Balance = (Transactions[i].Debit - Transactions[i].Credit); if (i > 0) (Transactions[i].Balance) += (Transactions[i - 1].Balance); } }
public static int AgeAt(this DateTime dt, DateTime? atDate = null) { var ageAtDate = atDate.GetValueOrDefault(DateTime.UtcNow).Date; var age = ageAtDate.Year - dt.Year; if (dt > ageAtDate.AddYears(-age)) age--; return age; }
public static ShoeTrackerDbContext WithShoe(this ShoeTrackerDbContext context, string name, string userId, DateTime? firstUsedDate=null, DateTime? lastUsedDate=null, decimal? maximumDistance=null, string brand=null) { var maxShoeId = 1L; if (context.Shoes.Any()) { maxShoeId = context.Shoes.Max(s => s.ShoeId); } var shoe = new Shoe { CreatedAt = DateTime.Now, FirstUsed = firstUsedDate.GetValueOrDefault(DateTime.Today), LastUsed = lastUsedDate, MaximumDistance = maximumDistance.GetValueOrDefault(400), Name = name, Brand = brand ?? "default brand", Workouts = new List<Workout>(), ShoeId = maxShoeId+1, UserId = userId }; context.Shoes.Attach(shoe); return context; }
public static MapMyFitnessApi WithWorkout(this MapMyFitnessApi api, int externalUserId, string accessToken, string name, decimal? distanceInMiles = null, string workoutId = null, DateTime? workoutDate = null, string activityType = "16", DateTime? lastWorkoutImported = null) { var workouts = api.GetWorkoutsByUser(externalUserId, accessToken,lastWorkoutImported); var distance = System.Convert.ToDouble(distanceInMiles.GetValueOrDefault(2)*(1/0.000621371m)); workouts.Add(new Workout { name = name, start_datetime = workoutDate.GetValueOrDefault(DateTime.Now).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'"), _links = new Links { self = new List<Next> { new Next { id = workoutId ?? Guid.NewGuid().ToString()} }, activity_type = new List<Next> { new Next { id = activityType} }, }, aggregates = new WorkoutAggregate { distance_total = distance} }); api.GetWorkoutsByUser(externalUserId, accessToken, lastWorkoutImported).Returns(workouts); return api; }
public CompletedChore(Chore c, DateTime? completionDate = null, string completedBy = "") { ChoreName = c.ChoreName; CompletionDate = completionDate.GetValueOrDefault (DateTime.Now); CompletedBy = completedBy; ParentChoreId = c.ID; }
public void Stop(DateTime? stopTime, string comment, IDateTimeService dateTimeService) { if (lastStartTime == null) { throw new InvalidOperationException("Task already stopped"); } ApplyChange(new TaskStopped(id, stopTime.GetValueOrDefault(dateTimeService.GetUtcNow()), comment)); }
/// <summary> /// A method to try to assign the value of the nullable DateTime instance. If the value is null, check off DateTimePicker control. Assign the value to DateTimePicker.Value property otherwise. /// </summary> /// <param name="dateTimePicker">DateTimePicker control to execute method for.</param> /// <param name="dateTime">Nullable DateTime instance to check for the value.</param> public static void TryToAssignValue(this DateTimePicker dateTimePicker, DateTime? dateTime) { if(dateTime.GetValueOrDefault() < dateTimePicker.MinDate || dateTime.GetValueOrDefault() > dateTimePicker.MaxDate) { dateTime = null; } if(dateTime == null) { dateTimePicker.Value = DateTime.Now; dateTimePicker.Checked = false; } else { dateTimePicker.Checked = true; dateTimePicker.Value = (DateTime)dateTime; } }
/// <summary> /// /// </summary> /// <param name="htmlHeler"></param> /// <param name="value"></param> /// <returns></returns> public static string EncodeDateTime(this HtmlHelper htmlHeler, DateTime? value) { if (value == null) { return string.Empty; } return htmlHeler.EncodeDateTime(value.GetValueOrDefault()); }
internal static bool IsATimeBiggerThanBTime(DateTime? ATime, DateTime? BTime) { DateTime atime = ATime.GetValueOrDefault(); DateTime btime = BTime.GetValueOrDefault(); if (atime > btime) return true; else return false; }
public static Employee Generate(string id = null, string name = null, int? age = null, string companyName = null, string companyId = null, DateTime? createdUtc = null, DateTime? updatedUtc = null) { return new Employee { Id = id, Name = name ?? RandomData.GetAlphaString(), Age = age ?? RandomData.GetInt(18, 100), CompanyName = companyName ?? RandomData.GetAlphaString(), CompanyId = companyId ?? ObjectId.GenerateNewId().ToString(), CreatedUtc = createdUtc.GetValueOrDefault(), UpdatedUtc = updatedUtc.GetValueOrDefault() }; }
public static int CalculateAge(DateTime? birthdate) { DateTime bday = birthdate.GetValueOrDefault(DateTime.Now); var age = DateTime.Now.Year - bday.Year; //om man inte fyllt år i år så tar den bort 1år från age för att få rätt ålder if ((DateTime.Now.Month <= bday.Month) || (DateTime.Now.Day >= bday.Day && DateTime.Now.Month <= bday.Month)) age--; return age; }
/// <summary> /// Returns random date gen /// </summary> /// <param name="min">if not supplied, DateTime.MinValue is used</param> /// <param name="max">if not supplied, DateTime.MaxValue is used</param> public Func<DateTime> Dates(DateTime? min = null, DateTime? max = null) { var minDate = min.GetValueOrDefault(DateTime.MinValue); var maxDate = max.GetValueOrDefault(DateTime.MaxValue); if (minDate >= maxDate) throw new ArgumentOutOfRangeException("min >= max"); var ticksSpan = maxDate.Ticks - minDate.Ticks; var factory = _random.Numbers.Doubles().BetweenZeroAndOne(); return () => new DateTime(Convert.ToInt64(minDate.Ticks + ((double)ticksSpan * factory()))); }
public List<MovimentoContabileBilancioDTO> GetDettaglioPartitario(EsercizioDTO esercizioDTO, IList<ContoDTO> conti, List<string> sottoconti, DateTime? dataIniziale, DateTime? dataFinale) { var idConti = conti.Select(conto => conto.ID).ToList(); if (esercizioDTO != null) { dataIniziale = esercizioDTO.DataApertura; dataFinale = esercizioDTO.DataChiusura; } var result = GetServiceClient().GetDettaglioPartitario(idConti, sottoconti, dataIniziale.GetValueOrDefault(), dataFinale.GetValueOrDefault(), GetUserInfo()); CloseService(); return result; }
public string GetRange(DateTime? fromDate, DateTime? toDate) { if (fromDate == null && toDate == null) return "all records"; var d1 = fromDate.GetValueOrDefault().ToString(Constants.DATE_FORMAT); var d2 = toDate.GetValueOrDefault().ToString(Constants.DATE_FORMAT); if (fromDate == null) return string.Format("records before {0}", d2); if (toDate == null) return string.Format("records after {0}", d1); return string.Format("records between {0} and {1}", d1, d2); }
public static List<KWSLog> GetKWSLog(KWSLogType kWSLogType, string engNum = null, DateTime? fromDt = null, DateTime? toDt = null) { var fDate = fromDt.GetValueOrDefault(DateTime.MinValue).ToUniversalTime(); var tDate = toDt.GetValueOrDefault(DateTime.Now).GetToDate().ToUniversalTime(); using (KDBContext db = new KDBContext()) { using (var tran = db.Database.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted)) { List<KWSLog> result = null; if (!string.IsNullOrWhiteSpace(engNum)) { if (kWSLogType == KWSLogType.CreateWS) result = db.KWSLog.Where(x => x.EngNum == engNum && (x.KWSLogType == KWSLogType.CreateWSAuto || x.KWSLogType == KWSLogType.CreateWSManual || x.KWSLogType == KWSLogType.CreateWSFail) && x.InsertWhen >= fDate && x.InsertWhen <= tDate ) .OrderByDescending(x => x.InsertWhen).ToList(); else result = db.KWSLog.Where(x => x.EngNum == engNum && x.KWSLogType == kWSLogType && x.InsertWhen >= fDate && x.InsertWhen <= tDate ).OrderByDescending(x => x.InsertWhen).ToList(); } else { if (kWSLogType == KWSLogType.CreateWS) result = db.KWSLog.Where(x => (x.KWSLogType == KWSLogType.CreateWSAuto || x.KWSLogType == KWSLogType.CreateWSManual || x.KWSLogType == KWSLogType.CreateWSFail) && x.InsertWhen >= fDate && x.InsertWhen <= tDate ) .OrderByDescending(x => x.InsertWhen).ToList(); else result = db.KWSLog.Where(x => x.KWSLogType == kWSLogType && x.InsertWhen >= fDate && x.InsertWhen <= tDate ).OrderByDescending(x => x.InsertWhen).ToList(); } return result; } } }
// GET: WorkContent/WorkGroup public ActionResult Index(Guid? depId, DateTime? selectTime) { var departmentServices = ServiceLocator.Instance.GetService<IDepartmentServices>(); var departments = new List<ShowDepartment>(); departments.Add(new ShowDepartment() { Name = "全部" }); departments.AddRange(departmentServices.Get()); ViewBag.Department = new HtmlString(departments.ToJson()); var workRecordServices = ServiceLocator.Instance.GetService<IWorkRecordServices>(); if (selectTime.Null()) { selectTime = DateTime.Now; } var showWorkRecords = workRecordServices.GetAllRecords(selectTime.GetValueOrDefault(), depId.GetValueOrDefault()); ViewBag.DepId = depId.GetValueOrDefault(); ViewBag.selectTime = selectTime; return PartialView(new HtmlString(showWorkRecords.ToJson())); }
static void Main(string[] args) { DateTime? date = null; // == Nullable<DateTime> date = null; Console.WriteLine(date.GetValueOrDefault()); Console.WriteLine(date.HasValue); //Console.WriteLine(date.Value); DateTime? date2 = new DateTime(2014, 1, 1); DateTime date3 = date2.GetValueOrDefault(); Console.WriteLine(date3); Console.WriteLine(DateTime.Today); DateTime? d = null; DateTime d2 = d ?? DateTime.Today; }
private Expression<Func<AccountTransactionValue, bool>> GetCurrentRange(DateTime? start, DateTime? end, Expression<Func<AccountTransactionValue, bool>> activeSpecification) { var result = activeSpecification; if (start.HasValue) { var currentStart = start.GetValueOrDefault(); result = result.And(x => x.Date >= currentStart); if (end.HasValue) { var currentEnd = end.GetValueOrDefault(); if (end != start) { result = result.And(x => x.Date <= currentEnd); } } } return result; }
protected CreditCard(IPerson cardholder, DateTime? openedDate, DateTime? expiryDate) { CardHolderSince = openedDate.GetValueOrDefault(DateTime.Now); if (expiryDate == null) { ExpDate = Etx.Date(Etx.IntNumber(4, 6), null); ExpDate = new DateTime(ExpDate.Year, ExpDate.Month, Etx.CoinToss ? 1 : 15); } else { ExpDate = expiryDate.Value; } CardHolderName = string.Join(" ", cardholder.FirstName.ToUpper(), cardholder.LastName.ToUpper()); Cvv = $"{Etx.IntNumber(7, 999),3:D3}"; Number = GetRandomCardNumber(); }
public IQueryable<ExamInstanceQuestion> GetQuery_StudentAnswers(int studentId, DateTime? statisticsThreshold) { var query = from instance in this.DbContext.ExamInstances join answered in this.DbContext.ExamInstanceQuestions on new { StudentId = instance.StudentId, ExamInstanceId = instance.Id, HasAnswer = true } equals new { StudentId = studentId, ExamInstanceId = answered.ExamInstanceId, HasAnswer = answered.AnswerId != null } where statisticsThreshold.GetValueOrDefault(DateTime.MinValue) < answered.UtcDateUpdated select answered; return query; }
/// <summary> /// Initializes a new instance of the <see cref="Handle"/> class. /// </summary> /// <param name="uniqueString">The unique string.</param> /// <param name="approximateLocation">The approximate location.</param> /// <param name="epoch">The epoch which will be converted to Unix Timestamp internally.</param> public Handle(string uniqueString, Coordinate approximateLocation = null, DateTime? epoch = null) { if (uniqueString == null) { throw new ArgumentNullException("uniqueString"); } if (string.IsNullOrWhiteSpace(uniqueString)) { throw new ArgumentOutOfRangeException("uniqueString", "Must contain an unique string"); } this.UniqueString = uniqueString; if (approximateLocation != null) { this.ApproximateLocation = approximateLocation; } if (epoch != null) { this.Epoch = epoch.GetValueOrDefault(); } }
public System.Data.DataTable ListAsDataTable(Int32 BranchID, string TerminalNo = "", Int64 TransactionID = 0, string TransactionNo = "", DateTime? TransactionDateFrom = null, DateTime? TransactionDateTo = null, TransactionStatus TransactionStatus = TransactionStatus.NotYetApplied, PaymentTypes PaymentType = PaymentTypes.NotYetAssigned, bool isConsignment = false, bool isPacked = false, string CustomerName = "", string CustomerGroupName = "", Int64 CashierID = 0, string CashierName = "", string AgentName = "", bool WithTF = false, bool ShowSuspendedOnly = false, string SortField = "", SortOption SortOption = SortOption.Ascending, Int32 limit = 0) { try { MySqlCommand cmd = new MySqlCommand(); cmd.CommandType = System.Data.CommandType.Text; string SQL = "CALL procTransactionsSelect(@BranchID, @TerminalNo, @TransactionID, @TransactionNo, @TransactionDateFrom, " + "@TransactionDateTo, @TransactionStatus, @PaymentType, @isConsignment, @isPacked, @CustomerName, " + "@CustomerGroupName, @CashierID, @CashierName, @AgentName, @WithTF, @ShowSuspended, " + "@SortField, @SortOption, @Limit);"; cmd.Parameters.AddWithValue("BranchID", BranchID); cmd.Parameters.AddWithValue("TerminalNo", TerminalNo); cmd.Parameters.AddWithValue("TransactionID", TransactionID); cmd.Parameters.AddWithValue("TransactionNo", TransactionNo); cmd.Parameters.AddWithValue("TransactionDateFrom", TransactionDateFrom.GetValueOrDefault() == DateTime.MinValue ? Constants.C_DATE_MIN_VALUE : TransactionDateFrom); cmd.Parameters.AddWithValue("TransactionDateTo", TransactionDateTo.GetValueOrDefault() == DateTime.MinValue ? Constants.C_DATE_MIN_VALUE : TransactionDateTo); cmd.Parameters.AddWithValue("TransactionStatus", TransactionStatus.ToString("d")); cmd.Parameters.AddWithValue("PaymentType", PaymentType.ToString("d")); cmd.Parameters.AddWithValue("isConsignment", isConsignment); cmd.Parameters.AddWithValue("isPacked", isPacked); cmd.Parameters.AddWithValue("CustomerName", CustomerName); cmd.Parameters.AddWithValue("CustomerGroupName", CustomerGroupName); cmd.Parameters.AddWithValue("CashierID", CashierID); cmd.Parameters.AddWithValue("CashierName", CashierName); cmd.Parameters.AddWithValue("AgentName", AgentName); cmd.Parameters.AddWithValue("WithTF", WithTF); cmd.Parameters.AddWithValue("ShowSuspended", ShowSuspendedOnly); cmd.Parameters.AddWithValue("SortField", SortField); cmd.Parameters.AddWithValue("SortOption", SortOption==SortOption.Ascending ? "ASC" : "DESC"); cmd.Parameters.AddWithValue("Limit", limit); cmd.CommandText = SQL; string strDataTableName = "tbl" + this.GetType().FullName.Split(new Char[] { '.' })[this.GetType().FullName.Split(new Char[] { '.' }).Length - 1]; System.Data.DataTable dt = new System.Data.DataTable(strDataTableName); base.MySqlDataAdapterFill(cmd, dt); return dt; } catch (Exception ex) { throw base.ThrowException(ex); } }
public IList<TestataSollecitoDTO> GetSolleciti(int? idEsercizio, Dictionary<int, TipoIndirizzo> idCondomini, bool groupByPersone, DateTime? dataRate, DateTime? dataVersamenti, decimal? importoLimite, decimal? importoCompetenza, DateTime dataSollecito, bool stampaProprietario, int? idBanca, int idModelloLettera, string testoModelloLettera, DateTime? dataRegistrazioneContabile, int? idConto, int? idSottoConto, bool storico, bool sollecitaProprietarioConduzione) { try { var solleciti = new List<TestataSollecitoDTO>(idCondomini.Count); var listaSolleciti = new List<Sollecito>(idCondomini.Count); Esercizio esercizio = null; if (idEsercizio != null) esercizio = _daoFactory.GetEsercizioDao().GetById(idEsercizio.Value, false); var dataFinale = new DateTime(DateTime.Today.Year, 12, 31); var modello = _daoFactory.GetModelloLetteraTestoDao().Find(idModelloLettera, false); // ========================================================================================== // Leggo subito tutti i soggetti le rate e i versamenti // ========================================================================================== var idCondominiList = idCondomini.Select(item => item.Key).ToList(); // rate var rateSoggetti = !groupByPersone ? _daoFactory.GetRataSoggettoDao().GetByEsercizioSoggetti(idEsercizio, null, idCondominiList, dataRate) : _daoFactory.GetRataSoggettoDao().GetByEsercizioPersone(idEsercizio, null, idCondominiList, dataRate); // soggetti IList<SoggettoCondominio> soggetti = null; IList<SoggettoCondominio> soggettiStampa = null; IList<Persona> persone = null; if (!groupByPersone) soggetti = _daoFactory.GetSoggettoCondominioDao().GetAttiviByEsercizioSoggetti(esercizio, idCondominiList); else { persone = _daoFactory.GetPersonaDao().GetAttiviByEsercizioSoggetti(esercizio, idCondominiList); soggettiStampa = esercizio != null ? _daoFactory.GetSoggettoCondominioDao().GetAttiviByEsercizio(esercizio, dataFinale) : _daoFactory.GetSoggettoCondominioDao().GetAttiviByAzienda(modello.Azienda.ID); } // versamenti IList<VersamentoSoggetto> versamentiSoggetto; IList<VersamentiRate> versamentiRate; if (!groupByPersone) { versamentiSoggetto = _daoFactory.GetVersamentoSoggettoDao().GetByEsercizioSoggetti(idEsercizio, idCondominiList); versamentiRate = _daoFactory.GetVersamentiRateDao().GetByEsercizioSoggetti(idEsercizio, idCondominiList); } else { versamentiSoggetto = _daoFactory.GetVersamentoSoggettoDao().GetByEsercizioPersone(idEsercizio, idCondominiList); versamentiRate = _daoFactory.GetVersamentiRateDao().GetByEsercizioPersone(idEsercizio, idCondominiList); } DatiBancariCondomini bancaSollecito = null; if (idBanca != null) bancaSollecito = _daoFactory.GetDatiBancariCondominiDao().Find(idBanca.Value, false); // ========================================================================================== // Loop per i soggetti per generare i dati di stampa // ========================================================================================== foreach (var kvp in idCondomini) { var id = kvp.Key; try { SoggettoCondominio soggetto = null; Persona persona = null; if (soggetti != null) soggetto = soggetti.FirstOrDefault(item => item.ID == kvp.Key) ?? _daoFactory.GetSoggettoCondominioDao().Find(id, false); else if (persone != null) persona = persone.FirstOrDefault(item => item.ID == kvp.Key) ?? _daoFactory.GetPersonaDao().Find(id, false); if (persona == null && soggetto == null) { _log.ErrorFormat("Non trovata persona/soggetto - {0} - id:{1} - idCondomini:{2}", Utility.GetMethodDescription(), id, idEsercizio.GetValueOrDefault(), idCondomini != null ? string.Join(",", idCondomini.SelectMany(item => item.Key.ToString())) : "<NULL>"); continue; } var rateScadute = !groupByPersone ? rateSoggetti.Where(item => item.Soggetto.ID == kvp.Key).ToList() : rateSoggetti.Where(item => item.Soggetto.Persona.ID == kvp.Key).ToList(); // ----------------------------- // Calcolo importi // ----------------------------- var importoScaduto = rateScadute.Sum(rata => rata.Importo); var importoVersato = rateScadute.Sum(rata => rata.GetImportoVersato(dataVersamenti)); decimal importoVersatoSenzaRata; IList<VersamentoSoggetto> altriVersamenti; IList<VersamentiRate> altriVersamentiRate; if (soggetto != null) { altriVersamenti = versamentiSoggetto.Where(item => item.Soggetto.ID == kvp.Key).ToList(); altriVersamentiRate = versamentiRate.Where(item => item.Versamento.Soggetto.ID == kvp.Key).ToList(); importoVersatoSenzaRata = altriVersamenti.Sum(versamento => versamento.Importo) - altriVersamentiRate.Sum(item => item.Importo); } else { altriVersamenti = versamentiSoggetto.Where(item => item.Soggetto.Persona.ID == kvp.Key).ToList(); altriVersamentiRate = versamentiRate.Where(item => item.Versamento.Soggetto.Persona.ID == kvp.Key).ToList(); importoVersatoSenzaRata = altriVersamenti.Sum(versamento => versamento.Importo) - altriVersamentiRate.Sum(item => item.Importo); } var importoDaSollecitare = importoScaduto - importoVersato - importoVersatoSenzaRata; if (importoLimite == null || Math.Abs(importoDaSollecitare) >= importoLimite.Value) { if (persona == null) persona = soggetto.Persona; var condominio = soggetto != null ? soggetto.UnitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento : persona.SoggettiCondominio.Select(item => item.UnitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento).FirstOrDefault(); var recapito = _personaService.GetRecapito(persona, kvp.Value); if (bancaSollecito == null) bancaSollecito = condominio.DatiBancariPrincipale; var testata = new TestataSollecitoDTO { Nominativo = getNominativoPresso(persona, soggetto, recapito), Indirizzo = recapito != null ? recapito.GetIndirizzoCompleto() : string.Empty, Cap = recapito.Cap, Comune = recapito.ComuneDisplayName, Titolo = Decodifica.Instance.GetElement("TitoloPersona", persona.Titolo).Descrizione, ImportoCompetenza = importoCompetenza, DataLettera = dataSollecito, DataRate = dataRate.GetValueOrDefault(), StampaProprietario = stampaProprietario, GroupByPersona = groupByPersone, OggettoLettera = string.IsNullOrEmpty(modello.Oggetto) ? string.Empty : modello.Oggetto.Trim(), TestoLettera = formattaTestoLettera(condominio, bancaSollecito, string.IsNullOrEmpty(testoModelloLettera) ? modello.Testo : testoModelloLettera.Trim()), }; if (soggetto != null) { testata.Id = soggetto.ID; testata.IdSoggettoCondominio = soggetto.ID; testata.IdPersona = soggetto.Persona.ID; testata.IdUnitaImmobiliare = soggetto.UnitaImmobiliare.ID; testata.Interno = soggetto.UnitaImmobiliare.InternoCompleto; testata.Piano = soggetto.UnitaImmobiliare.Piano; testata.Ordine = soggetto.UnitaImmobiliare.Ordine.GetValueOrDefault(); testata.DescrizioneUnitaImmobiliare = soggetto.UnitaImmobiliare.Descrizione; testata.Subalterno = soggetto.UnitaImmobiliare.Subalterno; } else if (persona != null) { testata.Id = persona.ID; testata.IdPersona = persona.ID; } var righeCondominio = condominio.IndirizzoCompleto.Split('&'); testata.DescrizioneCompletaCondominio = $"Condominio: {righeCondominio[0]}{Environment.NewLine}{righeCondominio[1]} - {righeCondominio[2]} - {righeCondominio[3]}"; // Se la stampa è per persona e viee richiesta la stampa per conoscenza al proprietario occorre leggere il soggettocondominio (soggettoStampa) bugid#8573 var soggettoStampa = soggetto; if (soggettoStampa == null && persona != null) soggettoStampa = soggettiStampa.Where(item => item.Persona.ID == persona.ID).OrderBy(item => item.UnitaImmobiliare.TipoUnitaImmobiliare.ID).FirstOrDefault(); if (stampaProprietario && soggettoStampa != null && soggettoStampa.Tipo == TipoSoggetto.Conduttore) { var proprietario = soggettoStampa.UnitaImmobiliare.GetProprietarioPrincipale(dataFinale) ?? soggettoStampa.UnitaImmobiliare.Proprietari.OrderByDescending(item => item.DataInizio.GetValueOrDefault()).FirstOrDefault(); if (proprietario != null) testata.NominativoProprietario = proprietario.DisplayName; if (proprietario != null) { var recapitoProprietario = _personaService.GetRecapito(proprietario.Persona, kvp.Value); if (recapitoProprietario != null) { testata.IndirizzoProprietario = recapitoProprietario.GetIndirizzoCompleto(); testata.ComuneProprietario = recapitoProprietario.ComuneDisplayName; testata.CapProprietario = recapitoProprietario.Cap; } } } if (recapito.Comune != null) testata.Provincia = recapito.Comune.ProvinciaAppartenenza.Codice; // ---------------------------------------------- // Dettaglio Rate // ---------------------------------------------- decimal importoTotaleDaVersare = 0; // Rate con versamenti foreach (var rata in rateScadute) { try { var dettaglio = new DettaglioSollecitoDTO { Id = rata.ID, DataScadenza = rata.DataScadenza, IdTestataSollecito = testata.Id, ProgressivoRata = rata.PianoRatealeDettaglio?.Progressivo ?? rata.Progressivo, Importo = rata.Importo, ImportoPagato = rata.GetImportoVersato(dataVersamenti), CodiceRata = rata.ID, IdEsercizio = rata.Esercizio.ID, IdSoggetto = rata.Soggetto.ID, DescrizioneSoggetto = rata.Soggetto.DisplayName, DescrizioneEsercizio = rata.Esercizio.DisplayName }; if (groupByPersone) { dettaglio.IdUnitaImmobiliare = rata.Soggetto.UnitaImmobiliare.ID; dettaglio.Interno = rata.Soggetto.UnitaImmobiliare.InternoCompleto; dettaglio.Piano = rata.Soggetto.UnitaImmobiliare.Piano; dettaglio.Ordine = rata.Soggetto.UnitaImmobiliare.Ordine.GetValueOrDefault(); dettaglio.DescrizioneUnitaImmobiliare = rata.Soggetto.UnitaImmobiliare.TipoUnitaImmobiliare.Descrizione + " - " + rata.Soggetto.UnitaImmobiliare.Descrizione; dettaglio.Subalterno = rata.Soggetto.UnitaImmobiliare.Subalterno; } if (soggetto?.PercentualeRiferimento != null) dettaglio.PercentualePossesso = Convert.ToInt32(soggetto.PercentualeRiferimento.Value); dettaglio.ImportoDaVersare = dettaglio.Importo - dettaglio.ImportoPagato; if (rata.Versamenti.Count > 0) dettaglio.DataUltimoPagamento = IesiGenericCollections<VersamentiRate>.GetByIndex(rata.Versamenti, rata.Versamenti.Count - 1).Versamento.Data; testata.Dettagli.Add(dettaglio); importoTotaleDaVersare += dettaglio.ImportoDaVersare; } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato nel calcolo del sollecito per soggetto - DETTAGLIO RATE CON VERSAMENTI - {0} - soggetto:{1} - rata:{2}", ex, Utility.GetMethodDescription(), id, rata.ID); throw; } } // Versamenti senza rate associate // TODO: elaborare versamenti rate e versamentisoggetto per ottenere una lista dei versamenti fuori piano rateale foreach (var versamento in altriVersamenti) { try { var versamento1 = versamento; var importoPagato = versamento.Importo - altriVersamentiRate.Where(item => item.Versamento.ID == versamento1.ID).Sum(item => item.Importo); if (importoPagato > 0) { var dettaglio = new DettaglioSollecitoDTO { DataScadenza = DateTime.MaxValue, DataUltimoPagamento = versamento.Data, IdTestataSollecito = testata.Id, ImportoPagato = importoPagato, IdEsercizio = versamento.Esercizio.ID, IdSoggetto = versamento.Soggetto.ID, DescrizioneSoggetto = versamento.Soggetto.DisplayName, DescrizioneEsercizio = versamento.Esercizio.DisplayName, ImportoDaVersare = importoPagato * -1 }; if (groupByPersone) { dettaglio.IdUnitaImmobiliare = versamento.Soggetto.UnitaImmobiliare.ID; dettaglio.Interno = versamento.Soggetto.UnitaImmobiliare.InternoCompleto; dettaglio.Piano = versamento.Soggetto.UnitaImmobiliare.Piano; dettaglio.Ordine = versamento.Soggetto.UnitaImmobiliare.Ordine.GetValueOrDefault(); dettaglio.DescrizioneUnitaImmobiliare = versamento.Soggetto.UnitaImmobiliare.TipoUnitaImmobiliare.Descrizione + " - " + versamento.Soggetto.UnitaImmobiliare.Descrizione; dettaglio.Subalterno = versamento.Soggetto.UnitaImmobiliare.Subalterno; } if (soggetto?.PercentualeRiferimento != null) dettaglio.PercentualePossesso = Convert.ToInt32(soggetto.PercentualeRiferimento.Value); testata.Dettagli.Add(dettaglio); importoTotaleDaVersare -= dettaglio.ImportoPagato; } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato nel calcolo del sollecito per soggetto - VERSAMENTO SENZA RATE ASSOCIATE - {0} - Id:{1} - versamento:{2}", ex, Utility.GetMethodDescription(), id, versamento.ID); throw; } } testata.ImportoTotaleDaVersare = importoTotaleDaVersare; testata.TipoIndirizzo = kvp.Value; solleciti.Add(testata); // ================================================================================ // Se richiesto aggiungo per i proprietari le rate di conduzione // ================================================================================ if (sollecitaProprietarioConduzione) { if (soggetto != null) { var conduttori = soggetto.UnitaImmobiliare.Conduttori; if (conduttori.Count > 0) { var idConduttori = new List<int>(conduttori.Count); idConduttori.AddRange(conduttori.Select(soggettoCondominio => soggettoCondominio.ID)); var rateConduttori = _rateService.GetRataByEsercizioSoggetti(idEsercizio, idConduttori, dataRate, false); var versamentiConduttori = _versamentiService.GetVersamentiByEsercizioSoggetti(idEsercizio, idConduttori); var importoCompetenzaConduzione = rateConduttori.Sum(item => item.Importo.GetValueOrDefault()); var importoVersatoConduzione = versamentiConduttori.Sum(item => item.Importo); testata.ImportoCompetenza += importoCompetenzaConduzione; testata.ImportoTotaleDaVersare += (importoCompetenzaConduzione - importoVersatoConduzione); // Dettaglio rate IList<VersamentoSoggetto> versamentiElaborati = new List<VersamentoSoggetto>(); foreach (var rataSoggettoDTO in rateConduttori) { var dettaglio = new DettaglioSollecitoDTO { Id = rataSoggettoDTO.ID, DataScadenza = rataSoggettoDTO.DataScadenza, IdTestataSollecito = testata.Id, ProgressivoRata = rataSoggettoDTO.Progressivo, Importo = rataSoggettoDTO.Importo.GetValueOrDefault(), ImportoPagato = rataSoggettoDTO.ImportoPagato.GetValueOrDefault(), CodiceRata = rataSoggettoDTO.ID, IdEsercizio = rataSoggettoDTO.IdEsercizio, IdSoggetto = rataSoggettoDTO.IdSoggettoCondominio, DescrizioneSoggetto = rataSoggettoDTO.DescrizioneSoggettoCondominio, DescrizioneEsercizio = rataSoggettoDTO.DescrizioneEsercizio }; if (groupByPersone) { dettaglio.IdUnitaImmobiliare = rataSoggettoDTO.IdUnitaImmobiliare; dettaglio.Ordine = rataSoggettoDTO.OrdineUnitaImmobiliare; dettaglio.DescrizioneUnitaImmobiliare = rataSoggettoDTO.DescrizioneUnitaImmobiliare; dettaglio.Subalterno = rataSoggettoDTO.Subalterno; } if (soggetto?.PercentualeRiferimento != null) dettaglio.PercentualePossesso = Convert.ToInt32(soggetto.PercentualeRiferimento.Value); dettaglio.ImportoDaVersare = dettaglio.Importo - dettaglio.ImportoPagato; var rata = _daoFactory.GetRataSoggettoDao().Find(rataSoggettoDTO.ID, false); if (rata != null && rata.Versamenti.Count > 0) { foreach (var rateVersamenti in rata.Versamenti) versamentiElaborati.Add(rateVersamenti.Versamento); dettaglio.DataUltimoPagamento = IesiGenericCollections<VersamentiRate>.GetByIndex(rata.Versamenti, rata.Versamenti.Count - 1).Versamento.Data; } testata.Dettagli.Add(dettaglio); } // Versamenti fuori piano rateale foreach (var versamentoSoggetto in versamentiConduttori) { if (!versamentiElaborati.Contains(versamentoSoggetto) && versamentoSoggetto.Importo > 0) { var dettaglioVersamento = new DettaglioSollecitoDTO { DataScadenza = DateTime.MaxValue, DataUltimoPagamento = versamentoSoggetto.Data, IdTestataSollecito = testata.Id, ImportoPagato = versamentoSoggetto.Importo, IdEsercizio = versamentoSoggetto.Esercizio.ID, IdSoggetto = versamentoSoggetto.Soggetto.ID, DescrizioneSoggetto = versamentoSoggetto.Soggetto.DisplayName, DescrizioneEsercizio = versamentoSoggetto.Esercizio.DisplayName, ImportoDaVersare = versamentoSoggetto.Importo * -1 }; if (groupByPersone) { dettaglioVersamento.IdUnitaImmobiliare = versamentoSoggetto.Soggetto.UnitaImmobiliare.ID; dettaglioVersamento.Interno = versamentoSoggetto.Soggetto.UnitaImmobiliare.InternoCompleto; dettaglioVersamento.Piano = versamentoSoggetto.Soggetto.UnitaImmobiliare.Piano; dettaglioVersamento.Ordine = versamentoSoggetto.Soggetto.UnitaImmobiliare.Ordine.GetValueOrDefault(); dettaglioVersamento.DescrizioneUnitaImmobiliare = versamentoSoggetto.Soggetto.UnitaImmobiliare.TipoUnitaImmobiliare.Descrizione + " - " + versamentoSoggetto.Soggetto.UnitaImmobiliare.Descrizione; dettaglioVersamento.Subalterno = versamentoSoggetto.Soggetto.UnitaImmobiliare.Subalterno; } testata.Dettagli.Add(dettaglioVersamento); } } } } } // ================================================================ // Creo gli oggetti sollecito se richiesto // ================================================================ if (storico) { var esercizioSollecito = (esercizio ?? _daoFactory.GetEsercizioDao().GetEsercizioCompetenza(condominio, DateTime.Today)) ?? _esercizioService.GetUltimoEsercizioOrdinario(condominio.ID); if (esercizioSollecito != null) { Sollecito sollecito; var testoLettera = testoModelloLettera; if (string.IsNullOrEmpty(testoLettera)) testoLettera = modello.Testo; if (!string.IsNullOrEmpty(testoLettera)) testoLettera = testoLettera.Trim(); if (soggetto != null) { sollecito = new Sollecito(esercizioSollecito, soggetto, dataSollecito, dataRate.GetValueOrDefault(), importoLimite.GetValueOrDefault(), testata.ImportoTotaleDaVersare, bancaSollecito, modello.Oggetto, testoLettera) { ImportoCompetenza = importoCompetenza, TipoIndirizzo = kvp.Value, StampaProprietario = stampaProprietario, GroupByPersona = groupByPersone }; } else { sollecito = new Sollecito(esercizioSollecito, persona, dataSollecito, dataRate.GetValueOrDefault(), importoLimite.GetValueOrDefault(), testata.ImportoTotaleDaVersare, bancaSollecito, modello.Oggetto, testoLettera) { ImportoCompetenza = importoCompetenza, TipoIndirizzo = kvp.Value, StampaProprietario = stampaProprietario, GroupByPersona = groupByPersone }; } foreach (var dett in testata.Dettagli) { var dettaglio = new DettaglioSollecito(sollecito, dett.Importo, dett.ImportoDaVersare, dett.ImportoPagato) { DataUltimoPagamento = dett.DataUltimoPagamento }; if (dett.DataScadenza != DateTime.MaxValue) dettaglio.DataScadenzaRata = dett.DataScadenza; if (dett.CodiceRata != null) dettaglio.Rata = rateSoggetti.FirstOrDefault(item => item.ID == dett.CodiceRata) ?? _daoFactory.GetRataSoggettoDao().GetById(dett.CodiceRata.Value, false); } listaSolleciti.Add(sollecito); _daoFactory.GetSollecitoDao().SaveOrUpdate(sollecito); } } } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato nel calcolo del sollecito per soggetto - {0} - esercizio:{1} - soggetto:{2}", ex, Utility.GetMethodDescription(), idEsercizio, id); throw; } } // ================================================================================================================ // Rimuovo eventuali dettagli con importo a 0 // ================================================================================================================ foreach (var testataSollecitoDTO in solleciti) { var dettagliDaRimuovere = testataSollecitoDTO.Dettagli.Where(dettaglioSollecitoDTO => dettaglioSollecitoDTO.Importo == 0 && dettaglioSollecitoDTO.ImportoDaVersare == 0 && dettaglioSollecitoDTO.ImportoPagato == 0).ToList(); foreach (var dettaglioSollecitoDTO in dettagliDaRimuovere) testataSollecitoDTO.Dettagli.Remove(dettaglioSollecitoDTO); } // ================================================================================================================ // Creo i movimenti di addebito - una testata per ogni Esercizio (possibile solo se è stato richiesto lo STORICO) // ================================================================================================================ try { if (importoCompetenza > 0) { var sollecitiPerEsercizio = listaSolleciti.GroupBy(item => item.Esercizio); foreach (var sollecitiEsercizio in sollecitiPerEsercizio) { var esercizioAddebito = sollecitiEsercizio.Key; Conto contoAddebito = null; SottoConto sottoContoAddebito = null; if (idConto != null) { contoAddebito = _daoFactory.GetContoDao().Find(idConto.Value, false); if (idSottoConto != null) sottoContoAddebito = _daoFactory.GetSottoContoDao().GetById(idSottoConto.Value, false); } if (contoAddebito == null) { sottoContoAddebito = _daoFactory.GetSottoContoDao().GetAddebitoCompetenzeByEsercizio(esercizioAddebito.ID, esercizioAddebito.CondominioRiferimento.ID); if (sottoContoAddebito != null) contoAddebito = sottoContoAddebito.ContoRiferimento; } if (contoAddebito != null && esercizioAddebito != null) { var testata = _movimentiContabileService.SetMovimentiSollecito(esercizioAddebito, sollecitiEsercizio.ToList(), dataRegistrazioneContabile.GetValueOrDefault(), contoAddebito, sottoContoAddebito); // ------------------------------------------- // Genero il protocollo di archiviazione // ------------------------------------------- var progressivo = _protocolloService.GetProgressivo(TipoProtocollo.Fattura, testata.EsercizioRiferimento.DataApertura.GetValueOrDefault().Year, testata.EsercizioRiferimento.CondominioRiferimento); if (progressivo.Progressivo != null) { testata.NumeroProtocollo = progressivo.Progressivo.Value; testata.AnnoArchiviazioneOttica = testata.EsercizioRiferimento.DataApertura.GetValueOrDefault().Year; } else { _log.ErrorFormat("Errore imprevisto nella generazione del protocollo di archiviazione - {0} - esercizio:{1} - testata:{2} - message:{3}", Utility.GetMethodDescription(), esercizioAddebito.ID, testata.ID, progressivo.Message); } } } } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato nel calcolo del sollecito per soggetto - CREAZIONE MOVIMENTI CONTABILI - {0} - esercizio:{1}", ex, Utility.GetMethodDescription(), idEsercizio); throw; } return solleciti; } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato nel calcolo del sollecito per soggetto - CREAZIONE MOVIMENTI CONTABILI - {0} - esercizio:{1} - groupByPersone:{2} - dataRate:{3} - dataVersamenti:{4} - importoLimite:{5} - importoCompetenza:{6} - dataSollecito:{7} - stampaProprietario:{8} - idBanca:{9} - idModelloLettera:{10} - dataRegistrazioneContabile:{11} - idConto:{12} - idSottoConto:{13} - storico:{14} - esercizio:{15}", ex, Utility.GetMethodDescription(), idEsercizio.GetValueOrDefault(), groupByPersone, dataRate, dataVersamenti, importoLimite, importoCompetenza, dataSollecito, stampaProprietario, idBanca, idModelloLettera, dataRegistrazioneContabile, idConto, idSottoConto, storico, idEsercizio); throw; } }
public System.Data.DataTable ListForPaymentDataTable(Int64 ContactID, string SortField = "TransactionNo", System.Data.SqlClient.SortOrder SortOrder = System.Data.SqlClient.SortOrder.Ascending, Int32 limit = 0, DateTime? TransactionDateFrom = null, DateTime? TransactionDateTo = null, bool boShowConsignment = true, bool boShowAROnly = true) { try { MySqlCommand cmd = new MySqlCommand(); cmd.CommandType = System.Data.CommandType.Text; string SQL = "SELECT " + "a.TerminalNo, " + "a.BranchID, " + "b.CreditPaymentID, " + "a.TransactionID, " + "a.TransactionNo, " + "a.PaxNo, " + "a.ModeOfTerms, a.Terms, " + "CASE ModeOfTerms " + " WHEN 0 THEN 'Days' " + " WHEN 1 THEN 'Months' " + " WHEN 2 THEN 'Years' " + "END ModeOfTermsCode, " + "CASE ModeOfTerms " + " WHEN 0 THEN DATE_ADD(a.TransactionDate, INTERVAL a.Terms DAY) " + " WHEN 1 THEN DATE_ADD(a.TransactionDate, INTERVAL a.Terms MONTH) " + " WHEN 2 THEN DATE_ADD(a.TransactionDate, INTERVAL a.Terms YEAR) " + "END AgingDate, " + "CASE ModeOfTerms " + " WHEN 0 THEN CONCAT(DATEDIFF(NOW(), a.TransactionDate), 'Days') " + " WHEN 1 THEN CONCAT(DATEDIFF(NOW(), a.TransactionDate)/30, 'Months') " + " WHEN 2 THEN CONCAT(DATEDIFF(NOW(), a.TransactionDate)/365, 'Years') " + "END AgeTerms, " + "a.CustomerID, " + "a.CustomerName, " + "a.TransactionDate, " + "a.GrossSales, " + "a.SubTotal + a.CreditChargeAmount AS SubTotal, " + "a.NetSales, " + "a.ItemsDiscount, " + "a.SNRItemsDiscount, " + "a.PWDItemsDiscount, " + "a.OtherItemsDiscount, " + "a.Discount, " + "a.SNRDiscount, " + "a.PWDDiscount, " + "a.OtherDiscount, " + "a.AmountPaid - b.Amount 'AmountPaid', " + "b.Amount 'Credit', " + "b.AmountPaid 'CreditPaid', " + "b.Amount - b.AmountPaid 'Balance', " + "b.CreditReason, b.CreditReasonID " + "FROM tblTransactions a " + "INNER JOIN tblCreditPayment b ON a.BranchID = b.BranchID AND a.TerminalNo = b.TerminalNo AND a.TransactionNo = b.TransactionNo " + "WHERE b.Amount - b.AmountPaid <> 0 AND a.CustomerID = @ContactID " + "AND b.ContactID = @ContactID " + "AND b.Amount <> b.AmountPaid "; if (TransactionDateFrom.GetValueOrDefault() != DateTime.MinValue) { SQL += "AND a.TransactionDate >= @TransactionDateFrom "; cmd.Parameters.AddWithValue("@TransactionDateFrom", TransactionDateFrom.GetValueOrDefault() == DateTime.MinValue ? Constants.C_DATE_MIN_VALUE : TransactionDateFrom); } if (TransactionDateTo.GetValueOrDefault() != DateTime.MinValue) { SQL += "AND a.TransactionDate <= @TransactionDateTo "; cmd.Parameters.AddWithValue("@TransactionDateTo", TransactionDateTo.GetValueOrDefault() == DateTime.MinValue ? Constants.C_DATE_MIN_VALUE : TransactionDateTo); } if (!boShowConsignment) { SQL += "AND a.isConsignment = @ShowConsignment "; cmd.Parameters.AddWithValue("@ShowConsignment", false); } if (!boShowAROnly) { SQL += "AND a.isConsignment = @boShowAR "; cmd.Parameters.AddWithValue("@boShowAR", true); } // Added Jan 18, 2009 // ORDER BY TransactionNo ASC // SO that FIFO during payment will be applied // FIFO - first in first out SQL = "SELECT TerminalNo, BranchID, CreditPaymentID, TransactionID, " + "TransactionNo, " + "PaxNo, " + "CustomerID, " + "CustomerName, " + "TransactionDate, " + "CreditReason, CreditReasonID, " + "ModeOfTerms, Terms, ModeOfTermsCode, " + "AgingDate, AgeTerms, " + "GrossSales, " + "SubTotal, " + "NetSales, " + "ItemsDiscount, " + "SNRItemsDiscount, " + "PWDItemsDiscount, " + "OtherItemsDiscount, " + "Discount, " + "SNRDiscount, " + "PWDDiscount, " + "OtherDiscount, " + "AmountPaid, " + "Credit, " + "CreditPaid, " + "Balance " + "FROM (" + SQL + ") AS tblCreditPayment "; SQL += "ORDER BY " + (!string.IsNullOrEmpty(SortField) ? SortField : "TransactionNo") + " "; SQL += SortOrder == System.Data.SqlClient.SortOrder.Ascending ? "ASC " : "DESC "; SQL += limit == 0 ? "" : "LIMIT " + limit.ToString() + " "; cmd.Parameters.AddWithValue("@ContactID", ContactID); cmd.CommandText = SQL; string strDataTableName = "tbl" + this.GetType().FullName.Split(new Char[] { '.' })[this.GetType().FullName.Split(new Char[] { '.' }).Length - 1]; System.Data.DataTable dt = new System.Data.DataTable(strDataTableName); base.MySqlDataAdapterFill(cmd, dt); return dt; } catch (Exception ex) { throw base.ThrowException(ex); } }
public AuthorizationMessages EvadiMovimento(string descrizione, IList<MovimentoContabile> movimentiContabili, IList<int> idMovimentiBancari, DateTime? dataRegistrazione, LogTransazione logTransazione) { var fatalMessage = string.Empty; var warnMessage = string.Empty; try { MovimentoBancario movimentoBancarioSingolo = null; var aggiornaDataRegistrazione = true; if (idMovimentiBancari.Count == 1) { movimentoBancarioSingolo = _daoFactory.GetMovimentoBancarioDao().GetById(idMovimentiBancari[0], false); if (dataRegistrazione == null) dataRegistrazione = movimentoBancarioSingolo.DataContabile; // ================================================================= // Controllo data registrazione // ================================================================= foreach (var movimentoContabile in movimentiContabili) { try { if (movimentoContabile != null) { var message = IsAllowDataRegistrazione(new List<int> { movimentoContabile.Testata.EsercizioRiferimento.CondominioRiferimento.ID }, movimentoContabile.Testata.EsercizioRiferimento, dataRegistrazione.GetValueOrDefault()); if (message.Count > 0) { aggiornaDataRegistrazione = false; _log.DebugFormat("Data di registrazione non valida - {0} - data:{1} - movimentoContabile:{2} - movimentoBancario:{3} - esercizio:{4}", Utility.GetMethodDescription(), movimentoBancarioSingolo.DataContabile.GetValueOrDefault(), movimentoContabile.ID, movimentoBancarioSingolo.ID, movimentoContabile.Testata.EsercizioRiferimento.ID); warnMessage += string.Format("La data di registrazione del movimento contabile non è stata aggiornata con la data del movimento bancario perchè la data {0:d} non è valida per l'esercizio {1}{2}", movimentoBancarioSingolo.DataContabile.GetValueOrDefault(), movimentoContabile.Testata.EsercizioRiferimento.DisplayName, Environment.NewLine); //warnMessage = message.Aggregate(fatalMessage, (current, mess) => current + (mess + Environment.NewLine)); } } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante il controllo della data di registrazione - {0} - descrizione:{1} - movimento:{2}", ex, Utility.GetMethodDescription(), descrizione, movimentoContabile.ID); fatalMessage = "Errore inaspettato durante la conferma del movimento contabile."; } } if (!string.IsNullOrEmpty(fatalMessage)) return new AuthorizationMessages(fatalMessage, warnMessage); } // ================================================================= // Nuovo oggetto Evasione Bancaria // ================================================================= var evasione = new EvasioneBancaria(descrizione, logTransazione); if (logTransazione == null) _daoFactory.GetEvasioneBancariaDao().SaveOrUpdate(evasione); // ================================================================= // Evasione di tutti i movimenti contabili // ================================================================= foreach (var movimentoContabile in movimentiContabili) { try { if (movimentoContabile != null) { movimentoContabile.EvasioneBancaria = evasione; if (movimentoBancarioSingolo != null) { if (aggiornaDataRegistrazione) { movimentoContabile.Testata.DataRegistrazione = dataRegistrazione; if (movimentoContabile.ID > 0) { // Se è associato un pagamento al movimento aggiorno la data di pagamento var pagamento = _daoFactory.GetPagamentoDao().GetByMovimentoContabile(movimentoContabile); if (pagamento != null) pagamento.Data = movimentoContabile.Testata.DataRegistrazione; // Se è associato un versamento condomino al movimento aggiorno la data di versamento var versamento = _daoFactory.GetVersamentoSoggettoDao().GetByMovimentoContabile(movimentoContabile); if (versamento != null) versamento.Data = movimentoContabile.Testata.DataRegistrazione.GetValueOrDefault(); } } } movimentoContabile.Stato = StatoMovimentoContabileEnum.Evaso; if (movimentoContabile.ID > 0) { var pag = _daoFactory.GetPagamentoDao().GetByMovimentoContabile(movimentoContabile); if (pag != null) { if (pag.TipoCodiceConfermaBonifico == TipoCodiceEsitoDisposizioneBonifico.Undefined) pag.TipoCodiceConfermaBonifico = TipoCodiceEsitoDisposizioneBonifico.MovimentoBancario; pag.Stato = StatoSpesaEnum.Evasa; } } } else { _log.ErrorFormat("Errore inaspettato durante la conferma del movimento contabile. Non è stato trovato il movimento - {0} - descrizione:{1} - movimento:{2}", Utility.GetMethodDescription(), descrizione, movimentoContabile.ID); fatalMessage = "Non è stato trovato il movimento contabile con id: " + movimentoContabile.ID + "." + Environment.NewLine + "Probabilmente è stato eliminato dall'utente in un'altra maschera."; } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la conferma del movimento contabile - SINGOLO MOVIMENTO CONTABILE - {0} - descrizione:{1} - movimento:{2}", ex, Utility.GetMethodDescription(), descrizione, movimentoContabile.ID); fatalMessage = "Errore inaspettato durante la conferma del movimento contabile."; } } // ================================================================= // Evasione di tutti i movimenti bancari // ================================================================= foreach (var idMovimento in idMovimentiBancari) { try { var movimentoBancario = _daoFactory.GetMovimentoBancarioDao().Find(idMovimento, false); if (movimentoBancario != null) { movimentoBancario.EvasioneBancaria = evasione; movimentoBancario.Stato = StatoMovimentoBancarioEnum.Contabilizzato; } else { _log.ErrorFormat("Errore inaspettato durante la conferma del movimento bancario. Non è stato trovato il movimento - {0} - descrizione:{1} - movimento:{2}", Utility.GetMethodDescription(), descrizione, idMovimento); fatalMessage = "Non è stato trovato il movimento bancario con id: " + idMovimento; } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la conferma del movimento Bancario - SINGOLO MOVIMENTO BANCARIO - {0} - descrizione:{1} - movimento:{2}", ex, Utility.GetMethodDescription(), descrizione, idMovimento); fatalMessage = "Errore inaspettato durante la conferma del movimento contabile."; } } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la conferma della evasione bancaria - {0} - descrizione:{1} - movimento:{2}", ex, Utility.GetMethodDescription(), descrizione); fatalMessage = "Errore inaspettato durante la conferma della evasione bancaria."; } return new AuthorizationMessages(fatalMessage, warnMessage); }
private List<MailMessageItem> GetFilteredChains( IDbManager db, int id_tenant, string id_user, MailFilter filter, DateTime? utc_chain_from_date, int from_message, bool? prev_flag, out bool has_more) { var res = new List<MailMessageItem>(); var chains_to_skip = new List<ChainInfo>(); var skip_flag = false; var chunck_index = 0; var sort_order = filter.SortOrder == "ascending"; if (prev_flag.GetValueOrDefault(false)) sort_order = !sort_order; var query_messages = new SqlQuery(MailTable.name) .Select( MailTable.Columns.id, MailTable.Columns.from, MailTable.Columns.to, MailTable.Columns.reply, MailTable.Columns.subject, MailTable.Columns.importance, MailTable.Columns.date_sent, MailTable.Columns.size, MailTable.Columns.attach_count, MailTable.Columns.unread, MailTable.Columns.is_answered, MailTable.Columns.is_forwarded, MailTable.Columns.is_from_crm, MailTable.Columns.is_from_tl, MailTable.Columns.folder_restore, MailTable.Columns.folder, MailTable.Columns.chain_id, MailTable.Columns.id_mailbox, MailTable.Columns.chain_date) .Where(GetUserWhere(id_user, id_tenant)) .Where(MailTable.Columns.is_removed, false) .ApplyFilter(filter) .OrderBy(MailTable.Columns.chain_date, sort_order); if (null != utc_chain_from_date) { query_messages = query_messages.Where(sort_order ? Exp.Ge(MailTable.Columns.chain_date, utc_chain_from_date) : Exp.Le(MailTable.Columns.chain_date, utc_chain_from_date)); skip_flag = true; } // We are increasing the size of the page to check whether it is necessary to show the Next button. while (res.Count < filter.PageSize + 1) { query_messages.SetFirstResult(chunck_index * chunk_size * filter.PageSize).SetMaxResults(chunk_size * filter.PageSize); chunck_index++; var tenant_obj = CoreContext.TenantManager.GetTenant(id_tenant); var list = db .ExecuteList(query_messages) .ConvertAll(r => ConvertToConversation(r, tenant_obj)); if (0 == list.Count) break; foreach (var item in list) { var chain_info = new ChainInfo {id = item.ChainId, mailbox = item.MailboxId}; // Skip chains that was stored before and within from_message's chain. if (skip_flag) { var tenant = CoreContext.TenantManager.GetTenant(id_tenant); if (item.ChainDate != TenantUtil.DateTimeFromUtc(tenant, utc_chain_from_date.GetValueOrDefault())) skip_flag = false; else { if (item.Id == from_message) skip_flag = false; chains_to_skip.Add(chain_info); continue; } } if (chains_to_skip.Contains(chain_info)) continue; var already_contains = false; foreach(var chain in res){ if(chain.ChainId == item.ChainId && chain.MailboxId == item.MailboxId){ already_contains = true; if(chain.Date < item.Date) res[res.IndexOf(chain)] = item; break; } } if(!already_contains) res.Add(item); if (filter.PageSize + 1 == res.Count) break; } var is_all_needed_conversation_gathered = filter.PageSize + 1 == res.Count; if (is_all_needed_conversation_gathered) break; var is_enough_messages_for_page = chunk_size*filter.PageSize <= list.Count; if (!is_enough_messages_for_page) break; } has_more = res.Count > filter.PageSize; if (has_more) res.RemoveAt(filter.PageSize); return res; }
/// <summary> /// 기간을 설정합니다. /// </summary> /// <param name="newStart">설정할 시작 시각</param> /// <param name="newEnd">설정할 완료 시각</param> public virtual void Setup(DateTime? newStart, DateTime? newEnd) { if(IsDebugEnabled) log.Debug("기간을 새로 설정합니다. newStart=[{0}], newEnd=[{1}]", newStart, newEnd); AssertMutable(); TimeTool.AdjustPeriod(ref newStart, ref newEnd); _start = newStart.GetValueOrDefault(TimeSpec.MinPeriodTime); _end = newEnd.GetValueOrDefault(TimeSpec.MaxPeriodTime); }
public virtual List<Child> GetChildrenAt(DateTime? dt) { var ddt = dt.GetValueOrDefault(DateTime.Now); return _children.Where( x => x.Est.BirthCert != null && ddt.ComparedTo(x.Est.BirthCert.DateOfBirth) == ChronoCompare.After).ToList(); }