function getAmountSumByUserIdAndEntryNameIdAndStartDateAndEndDate($id, $entry_name_id, $start_date = NULL, $end_date = NULL, $exclude_id = NULL, $where = NULL, $order = NULL)
    {
        if ($id == '') {
            return FALSE;
        }
        if ($entry_name_id == '') {
            return FALSE;
        }
        if ($start_date == '') {
            $start_date = 0;
        }
        if ($end_date == '') {
            $end_date = TTDate::getTime();
        }
        $pplf = new PayPeriodListFactory();
        $pslf = new PayStubListFactory();
        $ph = array('start_date' => $this->db->BindTimeStamp($start_date), 'end_date' => $this->db->BindTimeStamp($end_date), 'user_id' => $id, 'exclude_id' => (int) $exclude_id);
        $query = '
					select 	sum(amount) as amount, sum(units) as units
					from	' . $this->getTable() . ' as a,
							' . $pslf->getTable() . ' as b
					where	a.pay_stub_id = b.id
						AND b.pay_period_id in (select id from ' . $pplf->getTable() . ' as y
													where y.pay_period_schedule_id = ( select pay_period_schedule_id from ' . $pplf->getTable() . ' as z where z.id = b.pay_period_id ) AND y.start_date >= ? AND y.start_date < ? and y.deleted =0)
						AND b.user_id = ?
						AND a.id != ?
						AND	a.pay_stub_entry_name_id in (' . $this->getListSQL($entry_name_id, $ph) . ')
						AND a.deleted = 0
						AND b.deleted=0
				';
        $query .= $this->getWhereSQL($where);
        $query .= $this->getSortSQL($order);
        Debug::Text('Query: ' . $query, __FILE__, __LINE__, __METHOD__, 10);
        $row = $this->db->GetRow($query, $ph);
        if ($row['amount'] === NULL) {
            $row['amount'] = 0;
        }
        if ($row['units'] === NULL) {
            $row['units'] = 0;
        }
        Debug::text('Over All Sum for ' . $entry_name_id . ': Amount ' . $row['amount'] . ' Units: ' . $row['units'], __FILE__, __LINE__, __METHOD__, 10);
        return $row;
    }
    function getByCompanyIdAndPayPeriodId($company_id, $pay_period_id, $limit = NULL, $page = NULL, $where = NULL, $order = NULL)
    {
        if ($company_id == '') {
            return FALSE;
        }
        if ($pay_period_id == '') {
            return FALSE;
        }
        $strict_order = TRUE;
        if ($order == NULL or !is_array($order)) {
            $order = array('a.transaction_date' => 'desc', 'a.advance' => 'asc', 'b.last_name' => 'asc');
            $strict_order = FALSE;
        }
        $ulf = new UserListFactory();
        $pplf = new PayPeriodListFactory();
        $ph = array('company_id' => $company_id);
        $query = '
					select 	a.*
					from	' . $this->getTable() . ' as a,
							' . $ulf->getTable() . ' as b,
							' . $pplf->getTable() . ' as c
					where	a.user_id = b.id
						AND a.pay_period_id = c.id
						AND b.company_id = ?
						AND a.pay_period_id in (' . $this->getListSQL($pay_period_id, $ph) . ')
						AND a.deleted = 0';
        $query .= $this->getWhereSQL($where);
        $query .= $this->getSortSQL($order, $strict_order);
        if ($limit == NULL) {
            $this->rs = $this->db->Execute($query, $ph);
        } else {
            $this->rs = $this->db->PageExecute($query, $limit, $page, $ph);
        }
        //$this->rs = $this->db->Execute($query, $ph);
        return $this;
    }