Example #1
0
        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)));
            }
        }
Example #2
0
        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);
            }
        }