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); }
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); } }
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); } }
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)); }
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); } }
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)); } }
public decimal GetTotalJointAmountOwed(string referenceNumber, int?lineNumber = 0) { return(JointPayeeDataProvider.GetJointPayees(Graph, referenceNumber, lineNumber) .Where(jp => jp.BillLineNumber == lineNumber).Sum(x => x.JointAmountOwed.GetValueOrDefault())); }