<?php
/**
* Transaction List
*
* The list of transactions made by a user (all statuses)
*
* @package automattic/jetpack-crm
* @see https://jetpackcrm.com/kb/
* @version 3.0
*/
defined( 'ABSPATH' ) || exit( 0 ); // Don't allow direct access
global $zbs;
$portal = $zbs->modules->portal;
$settings = $zbs->settings->getAll();
$show_transaction_status = ( isset( $settings['portal_transactions_show_status'] ) && $settings['portal_transactions_show_status'] == '1' ); // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual
#} changed to this, so if people want to re-style then can remove_action
do_action( 'zbs_enqueue_scripts_and_styles' );
?>
<div class="alignwide zbs-site-main zbs-portal-grid">
<nav class="zbs-portal-nav">
<?php
// This function is defined in Client Portal Pro.
if ( function_exists( 'zeroBSCRM_clientPortalgetEndpoint' ) ) {
$tran_endpoint = zeroBSCRM_clientPortalgetEndpoint( 'transactions' );
} else {
$tran_endpoint = 'transactions';
}
$portal->render->portal_nav( $tran_endpoint );
?>
</nav>
<div class="zbs-portal-content">
<?php
$uid = get_current_user_id();
$uinfo = get_userdata( $uid );
$contact_id = zeroBS_getCustomerIDWithEmail( $uinfo->user_email );
if ( $contact_id > 0 || $uinfo->has_cap( 'admin_zerobs_transactions' ) ) {
// TODO: use pagination while getting from the db.
$customer_transactions = $zbs->DAL->transactions->getTransactions( // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
array(
'assignedContact' => $contact_id,
'withAssigned' => false,
'sortByField' => 'date',
'sortOrder' => 'DESC',
'page' => 0,
'perPage' => 100,
'ignoreowner' => true,
)
);
// admin msg (upsell cpp) (checks perms itself, safe to run)
$portal->render->admin_message();
if ( is_array( $customer_transactions ) && count( $customer_transactions ) > 0 ) {
?>
<h2><?php esc_html_e( 'Transactions', 'zero-bs-crm' ); ?></h2>
<div class="zbs-entry-content zbs-responsive-table" style="position:relative;">
<?php
echo '<table class="table">';
echo '<thead>';
echo '<th>' . esc_html__( 'Transaction', 'zero-bs-crm' ) . '</th>';
echo '<th>' . esc_html__( 'Transaction Date', 'zero-bs-crm' ) . '</th>';
echo '<th>' . esc_html__( 'Title', 'zero-bs-crm' ) . '</th>';
echo '<th>' . esc_html__( 'Total', 'zero-bs-crm' ) . '</th>';
if ( $show_transaction_status ) {
echo '<th>' . esc_html__( 'Status', 'zero-bs-crm' ) . '</th>';
}
echo '</thead>';
foreach ( $customer_transactions as $transaction ) {
// Transaction Date
$transaction_date = __( 'No date', 'zero-bs-crm' );
if ( isset( $transaction['date_date'] ) && ! empty( $transaction['date_date'] ) ) {
$transaction_date = $transaction['date_date'];
}
// Transaction Ref
$transaction_ref = '';
if ( isset( $transaction['ref'] ) && ! empty( $transaction['ref'] ) ) {
$transaction_ref = $transaction['ref'];
}
// transactionTitle Title
// Default value is set to ' ' to force rendering the cell. The css "empty-cells: show;" doesn't work in this type of table
$transaction_title = ' ';
if ( isset( $transaction['title'] ) && ! empty( $transaction['title'] ) ) {
$transaction_title = $transaction['title'];
}
// Transaction Value
$transaction_value = '';
if ( isset( $transaction['total'] ) && ! empty( $transaction['total'] ) ) {
$transaction_value = zeroBSCRM_formatCurrency( $transaction['total'] );
}
// Transaction Status
$transaction_status = '';
if ( isset( $transaction['status'] ) && ! empty( $transaction['status'] ) ) {
$transaction_status = $transaction['status'];
}
echo '<tr>';
echo '<td data-title="' . esc_attr__( 'Transaction', 'zero-bs-crm' ) . '">' . esc_html( $transaction_ref ) . '</td>';
echo '<td data-title="' . esc_attr__( 'Transaction Date', 'zero-bs-crm' ) . '">' . esc_html( $transaction_date ) . '</td>';
echo '<td data-title="' . esc_attr__( 'Title', 'zero-bs-crm' ) . '"><span class="name">' . esc_html( $transaction_title ) . '</span></td>';
echo '<td data-title="' . esc_attr__( 'Total', 'zero-bs-crm' ) . '">' . esc_html( $transaction_value ) . '</td>';
if ( $show_transaction_status ) {
echo '<td data-title="' . esc_attr__( 'Status', 'zero-bs-crm' ) . '">' . esc_html( $transaction_status ) . '</td>';
}
echo '</tr>';
}
echo '</table>';
?>
</div>
<?php
} else {
esc_html_e( 'You do not have any transactions yet.', 'zero-bs-crm' );
}
}
?>
</div>
<div class="zbs-portal-grid-footer"><?php $portal->render->portal_footer(); ?></div>
</div>