/**
   * This method sums the totals of each accounting line, making an entry in a map for each unique
   * pay fiscal year and pay period.
   *
   * @param accountingLines
   * @return
   */
  protected Map sumAccountingLineAmountsByPayFYAndPayPeriod(List accountingLines) {

    ExpenseTransferAccountingLine line = null;
    KualiDecimal linesAmount = KualiDecimal.ZERO;
    Map linesMap = new HashMap();
    String payFYPeriodKey = null;

    // go through source lines adding amounts to appropriate place in map
    for (Iterator i = accountingLines.iterator(); i.hasNext(); ) {
      // initialize
      line = (ExpenseTransferAccountingLine) i.next();
      linesAmount = KualiDecimal.ZERO;

      // create hash key
      payFYPeriodKey =
          createPayFYPeriodKey(
              line.getPayrollEndDateFiscalYear(), line.getPayrollEndDateFiscalPeriodCode());

      // if entry exists, pull from hash
      if (linesMap.containsKey(payFYPeriodKey)) {
        linesAmount = (KualiDecimal) linesMap.get(payFYPeriodKey);
      }

      // update and store
      linesAmount = linesAmount.add(line.getAmount());
      linesMap.put(payFYPeriodKey, linesAmount);
    }

    return linesMap;
  }