@ConfigureContext(session = appleton)
 public void testUpdateAccountAmounts_AfterFullEntry_AmountToPercent() {
   PurapAccountingServiceFixture fixture = PurapAccountingServiceFixture.PREQ_PRORATION_THIRDS;
   PurchasingAccountsPayableDocument preq = fixture.generatePaymentRequestDocument_OneItem();
   preq.setApplicationDocumentStatus(
       PurapConstants.PaymentRequestStatuses.APPDOC_DEPARTMENT_APPROVED);
   purapAccountingService.updateAccountAmounts(preq);
   PurApItem item = preq.getItems().get(0);
   int i = 0;
   for (PurApAccountingLine correctLine : fixture.getPurApAccountingLineList()) {
     PurApAccountingLine line = item.getSourceAccountingLines().get(i++);
     assertTrue(line.getAccountLinePercent().equals(correctLine.getAccountLinePercent()));
   }
 }
 /**
  * Used by tests of generateAccountDistributionForProration and related methods to make
  * comparisons between the percentages given by the resulting distributed accounts and the
  * percentages that we think should be correct for those lines.
  *
  * @param distributedAccounts A List of the PurApAccountingLines that result from the distribution
  *     to be tested.
  * @param correctPercents A List of percents we think should be correct, in BigDecimal format
  */
 private void comparePercentages(
     List<PurApAccountingLine> distributedAccounts, List<BigDecimal> correctPercents) {
   for (int i = 0; i < distributedAccounts.size(); i++) {
     PurApAccountingLine line = distributedAccounts.get(i);
     BigDecimal percent = line.getAccountLinePercent();
     assertTrue(percent.floatValue() == correctPercents.get(i).floatValue());
   }
 }
 @ConfigureContext(session = appleton)
 public void testUpdateAccountAmounts_BeforeFullEntry_AmountNotToPercent() {
   PurapAccountingServiceFixture fixture = PurapAccountingServiceFixture.PREQ_PRORATION_THIRDS;
   PurchasingAccountsPayableDocument preq = fixture.generatePaymentRequestDocument_OneItem();
   purapAccountingService.updateAccountAmounts(preq);
   PurApItem item = preq.getItems().get(0);
   int i = 0;
   boolean orResult = false;
   for (PurApAccountingLine correctLine : fixture.getPurApAccountingLineList()) {
     PurApAccountingLine line = item.getSourceAccountingLines().get(i++);
     if (!line.getAccountLinePercent().equals(correctLine.getAccountLinePercent())) {
       orResult = true;
       break;
     }
   }
   assertFalse(orResult);
 }
  public boolean validate(AttributedDocumentEvent event) {
    boolean valid = true;
    double pct = accountingLine.getAccountLinePercent().doubleValue();

    if (pct <= 0 || pct > 100) {
      GlobalVariables.getMessageMap()
          .putError(errorPropertyName, PurapKeyConstants.ERROR_ITEM_PERCENT, "%", itemIdentifier);

      valid = false;
    }

    return valid;
  }
 /**
  * finds the line with matching sequence number, chart code, account number, financial object code
  * and updates amount/percent on the account line.
  *
  * @param pOItem
  * @param lineAcct
  */
 protected void updateItemAccountLine(PurApItem pOItem, PurApAccountingLine lineAcct) {
   List<PurApAccountingLine> pOAccountingLines = pOItem.getSourceAccountingLines();
   for (PurApAccountingLine pOLineAcct : pOAccountingLines) {
     if (lineAcct.getChartOfAccountsCode().equalsIgnoreCase(pOLineAcct.getChartOfAccountsCode())
         && lineAcct.getAccountNumber().equalsIgnoreCase(pOLineAcct.getAccountNumber())
         && lineAcct
             .getFinancialObjectCode()
             .equalsIgnoreCase(pOLineAcct.getFinancialObjectCode())) {
       lineAcct.setAmount(pOLineAcct.getAmount());
       lineAcct.setAccountLinePercent(pOLineAcct.getAccountLinePercent());
     }
   }
 }