public void CreateLienWaiver(LienWaiverGenerationKey lienWaiverGenerationKey, APPayment payment,
                              ComplianceAttribute complianceAttribute)
 {
     generationKey = lienWaiverGenerationKey;
     CreateLienWaiver(payment, complianceAttribute);
     Cache.Update(lienWaiver);
     Cache.Persist(PXDBOperation.Insert);
     Cache.Persisted(false);
 }
        private void SetJointLienWaiverAmount(ComplianceAttribute complianceAttribute,
                                              IReadOnlyCollection <PXResult <JointPayeePayment> > jointPayeePayments)
        {
            var jointLienWaiverAmount = GetJointLienWaiverAmount(jointPayeePayments, complianceAttribute.Value);

            lienWaiver.JointLienWaiverAmount = jointLienWaiverAmount == decimal.Zero
                ? null
                : jointLienWaiverAmount;
        }
        private void SetJointPayeeVendorDependentFields(APPayment payment, ComplianceAttribute complianceAttribute)
        {
            var paymentExtension = PXCache <APPayment> .GetExtension <ApPaymentExt>(payment);

            lienWaiver.IsRequiredJointCheck  = paymentExtension.IsJointCheck ?? false;
            lienWaiver.JointVendorInternalId = generationKey.JointPayeeVendorId;
            var jointPayeePayments = GetJointPayeePaymentsWithJointPayees(payment).ToList();

            SetJointAmount(jointPayeePayments);
            SetJointLienWaiverAmount(complianceAttribute, jointPayeePayments);
        }
 private void CreateLienWaiver(APPayment payment, ComplianceAttribute complianceAttribute)
 {
     lienWaiver = CreateLienWaiver();
     lienWaiver.DocumentTypeValue      = complianceAttribute.AttributeId;
     lienWaiver.Required               = true;
     lienWaiver.IsCreatedAutomatically = true;
     SetProjectDependentFields();
     SetCommitments();
     SetVendorDependentFields();
     SetTransactionDependentFields(payment, complianceAttribute);
     SetJointPayeeVendorDependentFields(payment, complianceAttribute);
     lienWaiver.ApPaymentMethodID = payment.PaymentMethodID;
 }
        private void SetTransactionDependentFields(APPayment payment, ComplianceAttribute complianceAttribute)
        {
            var transactions = LienWaiverTransactionRetriever.GetTransactions(generationKey).ToList();

            SetBillId(transactions);
            lienWaiver.LienWaiverAmount = GetLienWaiverAmount(transactions, complianceAttribute.Value);
            SetLienNoticeAmount();
            SetAccountId(transactions);
            ComplianceDocumentRefNoteAttribute.SetComplianceDocumentReference <ComplianceDocument.apCheckId>(
                Cache, lienWaiver, payment.DocType, payment.RefNbr, payment.NoteID);
            lienWaiver.PaymentDate = payment.AdjDate;
            lienWaiver.ThroughDate = GetThroughDate(complianceAttribute.Value, payment, transactions);
            lienWaiver.SourceType  = ComplianceDocumentSourceTypeAttribute.ApBill;
        }