public virtual decimal?GetVendorPreparedBalance(APAdjust adjustment)
        {
            FinDocumentExtKey actualDocLineKey = InvoiceDataProvider.GetSourceEntityKeyByRetainage(Graph,
                                                                                                   adjustment.AdjdDocType, adjustment.AdjdRefNbr, adjustment.AdjdLineNbr);

            decimal?fullAmount;

            if (adjustment.AdjdLineNbr == 0)
            {
                APInvoice bill = InvoiceDataProvider.GetInvoice(Graph, actualDocLineKey.Type, actualDocLineKey.RefNbr);

                fullAmount = bill.CuryOrigDocAmt + bill.CuryRetainageTotal;
            }
            else
            {
                APTran tran = TransactionDataProvider.GetTransaction(Graph, actualDocLineKey.Type, actualDocLineKey.RefNbr, actualDocLineKey.LineNbr);

                fullAmount = tran.CuryOrigTranAmt + tran.CuryRetainageAmt;
            }

            var totalJointAmountOwed = JointPayeeDataProvider.GetJointPayees(Graph, actualDocLineKey.RefNbr, actualDocLineKey.LineNbr)
                                       .Sum(jp => jp.JointAmountOwed.GetValueOrDefault());
            var totalVendorPaymentAmount   = GetTotalVendorPaymentAmount(adjustment, actualDocLineKey.RefNbr, actualDocLineKey.LineNbr);
            var currentVendorPaymentAmount = GetVendorPaymentAmount(adjustment);
            var reversedRetainageAmount    = GetReversedRetainageAmount(actualDocLineKey.RefNbr, actualDocLineKey.LineNbr);

            return(fullAmount + reversedRetainageAmount - totalJointAmountOwed
                   - (totalVendorPaymentAmount - currentVendorPaymentAmount));
        }
        private PXResult <JointPayeePayment, JointPayee> GetInsertedJointPayeePaymentsWithJointPayees(
            JointPayeePayment jointPayeePayment)
        {
            var jointPayee = JointPayeeDataProvider.GetJointPayee(Graph, jointPayeePayment);

            return(new PXResult <JointPayeePayment, JointPayee>(jointPayeePayment, jointPayee));
        }
        private decimal?GetControlAmountToPay(JointPayeePayment jointPayeePayment)
        {
            var jointPayee       = JointPayeeDataProvider.GetJointPayee(Graph, jointPayeePayment);
            var reversedPayments = GetReversedJointPayeePayments(jointPayeePayment.JointPayeeId).ToList();

            return(reversedPayments.Any()
                ? -reversedPayments.Sum(jpp => jpp.JointAmountToPay)
                : jointPayee.JointBalance);
        }
Esempio n. 4
0
        private bool DoesAnyOutstandingLienWaiverExistForJointPayees(APAdjust adjustment, List <int?> projectsIds)
        {
            var jointPayeePayments = JointPayeePaymentDataProvider.GetJointPayeePayments(Base, adjustment.AdjdRefNbr,
                                                                                         adjustment.AdjdDocType, adjustment.AdjdLineNbr);
            var jointPayees = JointPayeeDataProvider.GetJointPayees(Base, jointPayeePayments, adjustment.AdjdLineNbr);

            return(jointPayees.Any(jp => lienWaiverDataProvider
                                   .DoesAnyOutstandingComplianceExistForJointVendor(jp, projectsIds)));
        }
        public void AddJointPayeePayments(APAdjust adjustment)
        {
            var originalBillReferenceNumber =
                InvoiceDataProvider.GetOriginalInvoice(graph, adjustment.AdjdRefNbr, adjustment.AdjdDocType).RefNbr;
            var jointPayees = JointPayeeDataProvider.GetJointPayees(graph, originalBillReferenceNumber, adjustment.AdjdLineNbr);

            foreach (var jointPayee in jointPayees)
            {
                AddJointPayeePayment(jointPayee, adjustment);
            }
        }
Esempio n. 6
0
        private void ValidateJointAmountToPayExceedsJointBalance(JointPayeePayment jointPayeePayment)
        {
            var jointPayee           = JointPayeeDataProvider.GetJointPayee(ApPayBills, jointPayeePayment);
            var jointPreparedBalance = jointPayeeAmountsCalculationService.GetJointPreparedBalance(jointPayee,
                                                                                                   Adjustment.AdjdRefNbr, Adjustment.AdjdLineNbr);

            if (jointPayeePayment.JointAmountToPay > jointPreparedBalance)
            {
                throw new PXSetPropertyException(JointCheckMessages.JointAmountToPayExceedsJointPayeeBalance);
            }
        }
Esempio n. 7
0
        private void CreateJointPayeePayments(APAdjust adjustment)
        {
            var originalInvoice =
                InvoiceDataProvider.GetOriginalInvoice(Base, adjustment.AdjdRefNbr, adjustment.AdjdDocType);
            var jointPayees =
                JointPayeeDataProvider.GetJointPayees(Base, originalInvoice.RefNbr, adjustment.AdjdLineNbr);
            var jointPayeePayments = jointPayees
                                     .Select(jointPayee => CreateJointPayeePayment(jointPayee.JointPayeeId, adjustment));

            JointPayeePayments.Cache.InsertAll(jointPayeePayments);
        }
        public IEnumerable <JointPayee> GetValidJointPayees()
        {
            Transactions = TransactionRetriever.GetTransactions().ToList();
            var extension = Graph.GetExtension <ApPaymentEntryExt>();
            var insertedJointPayeePayments = extension.JointPayeePayments.Cache.Inserted.RowCast <JointPayeePayment>();
            var jointPayeePayments         = extension.JointPayeePayments.Select().FirstTableItems
                                             .Concat(insertedJointPayeePayments).ToList();
            var jointPayeePaymentsToPay = jointPayeePayments.Where(jpp => jpp.JointAmountToPay > 0);
            var jointPayeesToPay        = JointPayeeDataProvider.GetJointPayees(Graph, jointPayeePaymentsToPay);

            return(jointPayeesToPay.Where(IsValidJointPayee));
        }
Esempio n. 9
0
        private void CheckJointVendorsForOutstandingLienWaivers(APAdjust adjustment, List <int?> projectIds)
        {
            var jointPayeePayments = JointPayeePaymentDataProvider.GetJointPayeePayments(graph, adjustment)
                                     .Where(jpp => jpp.JointAmountToPay > 0);
            var jointPayees =
                JointPayeeDataProvider.GetJointPayees(graph, jointPayeePayments);

            if (jointPayees.Any(jp =>
                                lienWaiverDataProvider.DoesAnyOutstandingComplianceExistForJointVendor(jp, projectIds)))
            {
                throw new PXException(exceptionMessage);
            }
        }
Esempio n. 10
0
        private void UpdateJointAmountToPayAvailability(JointPayeePayment jointPayeePayment)
        {
            var jointPayee             = JointPayeeDataProvider.GetJointPayee(Base, jointPayeePayment);
            var adjustment             = AdjustmentDataProvider.GetAdjustment(Base, jointPayeePayment);
            var hasReversedAdjustments = DoesCheckContainReversedAdjustments(jointPayeePayment);
            var isZeroJointBalance     = jointPayee.JointBalance == 0 && !hasReversedAdjustments;
            var isReleased             = adjustment?.Released == true;
            var isVoidAdjustment       = !IsVoidCheck() && adjustment?.Voided == true;
            var isReadOnly             = isZeroJointBalance || isReleased || isVoidAdjustment;

            PXUIFieldAttribute.SetReadOnly <JointPayeePayment.jointAmountToPay>(
                JointPayeePayments.Cache, jointPayeePayment, isReadOnly);
        }
        private void ValidateJointAmountToPayExceedJointPreparedBalance(JointPayeePayment jointPayeePayment)
        {
            var jointPayee           = JointPayeeDataProvider.GetJointPayee(Graph, jointPayeePayment);
            var jointPreparedBalance = jointPayeeAmountsCalculationService.GetJointPreparedBalance(jointPayee) +
                                       jointPayeePayment.JointAmountToPay.GetValueOrDefault();

            if (jointPayeePayment.JointAmountToPay > jointPreparedBalance)
            {
                ShowErrorMessage <JointPayeePayment.jointAmountToPay>(jointPayeePayment,
                                                                      JointCheckMessages.JointAmountToPayCannotExceedJointPayeePreparedBalance, jointPreparedBalance);
                ShowErrorOnPersistIfRequired(jointPayeePaymentCache, true);
            }
        }
        protected virtual void _(Events.RowSelected <APAdjust> args)
        {
            var adjustment = args.Row;

            if (adjustment != null && LienWaiverSetup.Current.ShouldWarnOnPayment == true &&
                Base.Document.Current != null && !IsCheckReleasedOrVoided())
            {
                var jointPayeePayments =
                    Base1.JointPayeePayments.SelectMain().Where(jpp => jpp.JointAmountToPay > 0).ToList();
                var jointPayees =
                    JointPayeeDataProvider.GetJointPayees(Base, jointPayeePayments, adjustment.AdjdLineNbr).ToList();
                lienWaiverValidationService.ValidateVendorAndJointPayees(args.Cache, adjustment, jointPayees);
            }
        }
        public virtual void JointPayeePayment_RowSelected(PXCache cache, PXRowSelectedEventArgs args,
                                                          PXRowSelected baseHandler)
        {
            baseHandler(cache, args);
            var jointPayeePayment         = args.Row as JointPayeePayment;
            var hasAnyReversedAdjustments = Base.Adjustments.SelectMain()
                                            .Any(adjustment => adjustment.Released == false && adjustment.Voided == true);

            if (jointPayeePayment?.JointPayeeId != null && hasAnyReversedAdjustments)
            {
                var jointPayee = JointPayeeDataProvider.GetJointPayee(Base, jointPayeePayment);
                PXUIFieldAttribute.SetEnabled <JointPayeePayment.jointAmountToPay>(
                    cache, jointPayeePayment, HasSameVendorAsReversedJointPayeePayment(jointPayee));
            }
        }
Esempio n. 14
0
 public decimal GetTotalJointAmountOwed(string referenceNumber, int?lineNumber = 0)
 {
     return(JointPayeeDataProvider.GetJointPayees(Graph, referenceNumber, lineNumber)
            .Where(jp => jp.BillLineNumber == lineNumber).Sum(x => x.JointAmountOwed.GetValueOrDefault()));
 }