public static IEnumerable <string> GetPeriodAgingBucketDescriptions( IFinPeriodRepository finPeriodRepository, DateTime currentDate, AgingDirection agingDirection, int numberOfBuckets, int calendarOrganizationID, bool usePeriodDescription) { if (finPeriodRepository == null) { throw new ArgumentNullException(nameof(finPeriodRepository)); } if (numberOfBuckets <= 0) { throw new ArgumentOutOfRangeException(nameof(numberOfBuckets)); } short periodStep = (short)(agingDirection == AgingDirection.Backwards ? -1 : 1); FinPeriod currentPeriod = finPeriodRepository.GetByID( finPeriodRepository.GetPeriodIDFromDate(currentDate, calendarOrganizationID), calendarOrganizationID); yield return(usePeriodDescription ? currentPeriod.Descr : FinPeriodUtils.FormatForError(currentPeriod.FinPeriodID)); --numberOfBuckets; while (numberOfBuckets > 1) { currentPeriod = finPeriodRepository.GetByID( finPeriodRepository.GetOffsetPeriodId(currentPeriod.FinPeriodID, periodStep, calendarOrganizationID), calendarOrganizationID); yield return(usePeriodDescription ? currentPeriod.Descr : FinPeriodUtils.FormatForError(currentPeriod.FinPeriodID)); --numberOfBuckets; } if (numberOfBuckets > 0) { yield return(PXMessages.LocalizeFormatNoPrefix( agingDirection == AgingDirection.Backwards ? Messages.BeforeMonth : Messages.AfterMonth, usePeriodDescription ? currentPeriod.Descr : FinPeriodUtils.FormatForError(currentPeriod.FinPeriodID))); } }
public static IEnumerable <string> GetPeriodAgingBucketDescriptions( IFinPeriodRepository finPeriodRepository, DateTime currentDate, AgingDirection agingDirection, int numberOfBuckets) { if (finPeriodRepository == null) { throw new ArgumentNullException(nameof(finPeriodRepository)); } if (numberOfBuckets <= 0) { throw new ArgumentOutOfRangeException(nameof(numberOfBuckets)); } short periodStep = (short)(agingDirection == AgingDirection.Backwards ? -1 : 1); // Must not re-use any existing graphs due to possible query // caching of financial periods, which can impact localization // of their descriptions, see AC-84505. // - PXGraph graph = new PXGraph(); FinPeriod currentPeriod = finPeriodRepository.GetByID( finPeriodRepository.GetPeriodIDFromDate(currentDate, FinPeriod.organizationID.MasterValue), FinPeriod.organizationID.MasterValue); yield return(currentPeriod.Descr); --numberOfBuckets; while (numberOfBuckets > 1) { currentPeriod = finPeriodRepository.GetByID( finPeriodRepository.GetOffsetPeriodId(currentPeriod.FinPeriodID, periodStep, FinPeriod.organizationID.MasterValue), FinPeriod.organizationID.MasterValue); yield return(currentPeriod.Descr); --numberOfBuckets; } if (numberOfBuckets > 0) { yield return(PXMessages.LocalizeFormatNoPrefix( agingDirection == AgingDirection.Backwards ? Messages.BeforeMonth : Messages.AfterMonth, currentPeriod.Descr)); } }
/// <summary> /// Adds a related transaction for every original transaction /// in <paramref name="originalTransactions"/> using information /// from the provided related <see cref="DRScheduleDetail"/>. /// Does not set any transaction amounts. /// </summary> /// <param name="transactionList"> /// Transaction list where the new transaction will be put (if created). /// </param> /// <param name="lineCounter"> /// Transaction line counter. Will be incremented if any transactions are created by this procedure. /// </param> private void AddRelatedTransactions( IList <DRScheduleTran> transactionList, DRScheduleDetail relatedScheduleDetail, IEnumerable <DRScheduleTran> originalTransactions, int?branchID, ref short lineCounter) { int?organizationID = PXAccess.GetParentOrganizationID(branchID); foreach (DRScheduleTran originalTransaction in originalTransactions) { ++lineCounter; DRScheduleTran relatedTransaction = new DRScheduleTran { BranchID = branchID, AccountID = relatedScheduleDetail.AccountID, SubID = relatedScheduleDetail.SubID, LineNbr = lineCounter, DetailLineNbr = relatedScheduleDetail.DetailLineNbr, ScheduleID = relatedScheduleDetail.ScheduleID, ComponentID = relatedScheduleDetail.ComponentID, Status = DRScheduleTranStatus.Open }; var maxDate = originalTransaction.RecDate.Value < relatedScheduleDetail.DocDate.Value ? relatedScheduleDetail.DocDate : originalTransaction.RecDate; relatedTransaction.RecDate = maxDate; var maxPeriod = string.CompareOrdinal(originalTransaction.FinPeriodID, relatedScheduleDetail.FinPeriodID) < 0 ? relatedScheduleDetail.FinPeriodID : originalTransaction.FinPeriodID; FinPeriod maxFinPeriod = _finPeriodRepository.GetByID(maxPeriod, organizationID); relatedTransaction.FinPeriodID = maxFinPeriod.FinPeriodID; relatedTransaction.TranPeriodID = maxFinPeriod.MasterFinPeriodID; transactionList.Add(relatedTransaction); } }