コード例 #1
0
 /**
  * Set the CSV columns
  *
  * @access	public
  * @since	1.4
  * @return	arr		$cols	All the columns
  */
 public function csv_cols()
 {
     if (!empty($_POST['mdjm_export_event'])) {
         $cols = array('first_name' => __('First Name', 'mobile-dj-manager'), 'last_name' => __('Last Name', 'mobile-dj-manager'), 'email' => __('Email', 'mobile-dj-manager'), 'date' => sprintf(__('%s Date', 'mobile-dj-manager'), mdjm_get_label_singular()));
     } else {
         $cols = array();
         if ('emails' != $_POST['mdjm_export_option']) {
             $cols['name'] = __('Name', 'mobile-dj-manager');
         }
         $cols['email'] = __('Email', 'mobile-dj-manager');
         if ('full' == $_POST['mdjm_export_option']) {
             $cols['events'] = sprintf(__('Total %s', 'mobile-dj-manager'), mdjm_get_label_plural());
             $cols['amount'] = __('Total Value', 'mobile-dj-manager') . ' (' . html_entity_decode(mdjm_currency_filter('')) . ')';
         }
     }
     return $cols;
 }
コード例 #2
0
 /**
  * List the event transactions for client view
  *
  * @params	int			$eventID	Required. Post ID of the event
  *			str			$display	Optional: 'list' to list each payment date, amount and reason
  *
  * @return	str						'No Payments Received' if no txns, otherwise txn detail as specified by $display
  */
 function list_event_transactions($eventID, $display = 'list')
 {
     $txns = $this->get_transactions($eventID, 'mdjm-income', 'Completed', 'obj');
     if (empty($txns)) {
         return __('No Payments Found', 'mobile-dj-manager');
     }
     $i = 1;
     switch ($display) {
         case 'list':
             foreach ($txns as $txn) {
                 $types = wp_get_object_terms($txn->ID, 'transaction-types');
                 $txn_type = !is_wp_error($types) && !empty($types) ? $types[0]->name : '';
                 $output = mdjm_currency_filter(mdjm_sanitize_amount(get_post_meta($txn->ID, '_mdjm_txn_total', true)));
                 $output .= ' ';
                 $output .= 'on ' . date(MDJM_SHORTDATE_FORMAT, strtotime($txn->post_date)) . ' (' . $txn_type . ')';
                 if ($i < count($txns)) {
                     $output .= '<br />';
                 }
                 $i++;
             }
             break;
     }
     return $output;
 }
コード例 #3
0
ファイル: events.php プロジェクト: mdjm/mobile-dj-manager
/**
 * Define the data to be displayed in each of the custom columns for the Transaction post types
 *
 * @since	0.9
 * @param	str		$column_name	The name of the column to display
 * @param	int		$post_id		The current post ID
 * @return
 */
function mdjm_event_posts_custom_column($column_name, $post_id)
{
    global $post;
    if (mdjm_employee_can('edit_txns') && ($column_name == 'value' || $column_name == 'balance')) {
        $value = mdjm_get_event_price($post_id);
    }
    switch ($column_name) {
        // Event Date
        case 'event_date':
            if (mdjm_employee_can('read_events')) {
                echo '<strong><a href="' . admin_url('post.php?post=' . $post_id . '&action=edit') . '">' . date('d M Y', strtotime(get_post_meta($post_id, '_mdjm_event_date', true))) . '</a>';
            } else {
                echo '<strong>' . date('d M Y', strtotime(get_post_meta($post_id, '_mdjm_event_date', true))) . '</strong>';
            }
            break;
            // Client
        // Client
        case 'client':
            $client = get_userdata(get_post_meta($post->ID, '_mdjm_event_client', true));
            if (!empty($client)) {
                if (mdjm_employee_can('send_comms')) {
                    printf('<a href="%s">%s</a>', add_query_arg(array('recipient' => $client->ID, 'event_id' => $post_id), admin_url('admin.php?page=mdjm-comms')), $client->display_name);
                } else {
                    echo $client->display_name;
                }
            } else {
                _e('<span class="mdjm-form-error">Not Assigned</span>', 'mobile-dj-manager');
            }
            break;
            // Employees
        // Employees
        case 'employees':
            global $wp_roles;
            $primary = get_userdata(mdjm_get_event_primary_employee($post->ID));
            $employees = mdjm_get_event_employees_data($post->ID);
            if (!empty($primary)) {
                if (mdjm_employee_can('send_comms')) {
                    printf('<a href="%s" title="%s">%s</a>', add_query_arg(array('recipient' => $primary->ID, 'event_id' => $post_id), admin_url('admin.php?page=mdjm-comms')), mdjm_get_option('artist', __('DJ', 'mobile-dj-manager')), $primary->display_name);
                } else {
                    echo '<a title="' . mdjm_get_option('artist', __('DJ', 'mobile-dj-manager')) . '">' . $primary->display_name . '</a>';
                }
            } else {
                _e('<span class="mdjm-form-error">Not Assigned</span>', 'mobile-dj-manager');
            }
            if (!empty($employees)) {
                echo '<br />';
                $i = 1;
                foreach ($employees as $employee) {
                    echo '<em>';
                    if (mdjm_employee_can('send_comms')) {
                        printf('<a href="%s" title="%s">%s</a>', add_query_arg(array('recipient' => $employee['id'], 'event_id' => $post_id), admin_url('admin.php?page=mdjm-comms')), translate_user_role($wp_roles->roles[$employee['role']]['name']), mdjm_get_employee_display_name($employee['id']));
                    } else {
                        echo '<a title="' . translate_user_role($wp_roles->roles[$employee['role']]['name']) . '">' . mdjm_get_employee_display_name($employee['id']) . '</a>';
                    }
                    echo '</em>';
                    if ($i != count($employees)) {
                        echo '<br />';
                    }
                }
            }
            break;
            // Status
        // Status
        case 'event_status':
            echo get_post_status_object($post->post_status)->label;
            break;
            // Event Type
        // Event Type
        case 'event_type':
            $event_types = get_the_terms($post_id, 'event-types');
            if (is_array($event_types)) {
                foreach ($event_types as $key => $event_type) {
                    $event_types[$key] = $event_type->name;
                }
                echo implode("<br/>", $event_types);
            }
            break;
            // Value
        // Value
        case 'value':
            if (mdjm_employee_can('edit_txns')) {
                if (!empty($value) && $value != '0.00') {
                    echo mdjm_currency_filter(mdjm_format_amount($value));
                    echo '<br />';
                } else {
                    echo '<span class="mdjm-form-error">' . mdjm_currency_filter(mdjm_format_amount('0.00')) . '</span>';
                }
            } else {
                echo '&mdash;';
            }
            break;
            // Balance
        // Balance
        case 'balance':
            if (mdjm_employee_can('edit_txns')) {
                echo mdjm_currency_filter(mdjm_format_amount(mdjm_get_event_balance($post_id)));
                echo '<br />';
                $deposit_status = mdjm_get_event_deposit_status($post_id);
                if ('Paid' == mdjm_get_event_deposit_status($post_id)) {
                    printf(__('<i title="%s %s paid" class="fa fa-check-square-o" aria-hidden="true">', 'mobile-dj-manager'), mdjm_currency_filter(mdjm_format_amount(mdjm_get_event_deposit($post_id))), mdjm_get_deposit_label());
                }
            } else {
                echo '&mdash;';
            }
            break;
            // Playlist
        // Playlist
        case 'playlist':
            if (mdjm_employee_can('read_events')) {
                $total = mdjm_count_playlist_entries($post_id);
                echo '<a href="' . mdjm_get_admin_page('playlists') . $post_id . '">' . $total . ' ' . _n('Song', 'Songs', $total, 'mobile-dj-manager') . '</a>' . "\r\n";
            } else {
                echo '&mdash;';
            }
            break;
            // Journal
        // Journal
        case 'journal':
            if (mdjm_employee_can('read_events_all')) {
                $total = wp_count_comments($post_id)->approved;
                echo '<a href="' . admin_url('/edit-comments.php?p=' . $post_id) . '">' . $total . ' ' . _n('Entry', 'Entries', $total, 'mobile-dj-manager') . '</a>' . "\r\n";
            } else {
                echo '&mdash;';
            }
            break;
    }
    // switch
}
コード例 #4
0
ファイル: mdjm-home.php プロジェクト: mdjm/mobile-dj-manager
 public function single_event()
 {
     global $clientzone, $mdjm, $my_mdjm, $mdjm_settings, $post;
     if (isset($_POST['submit']) && $_POST['submit'] == 'Submit Changes') {
         $this->update_event();
     }
     $event = isset($_GET['event_id']) ? get_post($_GET['event_id']) : $my_mdjm['next'][0];
     $post = $event;
     if (!MDJM()->events->is_my_event($event->ID)) {
         if (MDJM_DEBUG == true) {
             MDJM()->debug->log_it('ERROR: ' . get_current_user_id() . ' is attempting to access event ID ' . $event->ID . ' which is not theirs. In ' . __METHOD__, true);
         }
         wp_die($clientzone->display_message(9, 5), 'Event Ownership Error');
     }
     $eventinfo = MDJM()->events->event_detail($event->ID);
     $expired = array('mdjm-failed', 'mdjm-cancelled', 'mdjm-completed');
     // Event not active
     if (in_array($event->post_status, $expired)) {
         echo $clientzone->__text('home_notactive', '<p>The selected event is no longer active. <a href="' . mdjm_get_formatted_url(MDJM_CONTACT_PAGE, false) . '" title="Begin planning your next event with us">Contact us now</a> begin planning your next event.</p>');
     } else {
         echo '<div id="mdjm_event_updated"></div>';
         echo '<p>' . __('Below are the details of your upcoming event on ' . date('l, jS F Y', $eventinfo['date']) . '.') . '</p>' . "\r\n";
         echo '<p>If any of the event details are incorrect, please <a href="mailto:' . $mdjm_settings['email']['system_email'] . '">contact me now</a>.</p>' . "\r\n";
         // Incomplete Profile warning
         if (!$clientzone->client_profile_complete($my_mdjm['me']->ID) && $clientzone->warn_profile()) {
             $clientzone->display_notice(3, 'Your <a href="' . mdjm_get_formatted_url(MDJM_PROFILE_PAGE, false) . '">profile</a> appears to be incomplete. Please <a href="' . mdjm_get_formatted_url(MDJM_PROFILE_PAGE, false) . '">click here</a> to update it now. Incorrect <a href="' . mdjm_get_formatted_url(MDJM_PROFILE_PAGE, false) . '">profile</a> information can cause problems with your booking.');
         }
         // Display the event details
         echo '<form name="mdjm_event" id="mdjm_event" method="post">' . "\r\n";
         echo '<input type="hidden" name="event_id" id="event_id" value="' . $event->ID . '" />' . "\r\n";
         wp_nonce_field('manage_client_event', '__mdjm_event');
         $this->display_action_buttons($event->ID, $event->post_status);
         echo '<div id="mdjm-event-container">' . "\r\n";
         echo '<div id="mdjm-event-table">' . "\r\n";
         echo '<table id="mdjm-event-listing">' . "\r\n";
         echo '<tr>' . "\r\n";
         echo '<th colspan="4"><span style="text-decoration: underline;">' . __('Event Details') . '</span>&nbsp;&nbsp;&nbsp;' . $this->edit_event_link('edit', $event->ID) . '</th>' . "\r\n";
         echo '</tr>' . "\r\n";
         echo '<tr>' . "\r\n";
         echo '<th style="width: 20%;">' . __('Event Name:') . '</th>' . "\r\n";
         echo '<td colspan="3">' . (!empty($eventinfo['name']) ? esc_attr($eventinfo['name']) : $eventinfo['type']) . '</span>&nbsp;&nbsp;&nbsp;' . $this->edit_event_link('change', $event->ID) . '</td>' . "\r\n";
         echo '</tr>' . "\r\n";
         echo '<tr>' . "\r\n";
         echo '<th style="width: 15%;">' . __('Status:') . '</th>' . "\r\n";
         echo '<td style="width: 35%;">' . __(get_post_status_object($event->post_status)->label) . '</td>' . "\r\n";
         echo '<th style="width: 15%;">' . __('Your ' . MDJM_DJ . ':') . '</th>' . "\r\n";
         echo '<td style="width: 35%;">' . (!empty($eventinfo['dj']->display_name) ? $eventinfo['dj']->display_name : $eventinfo['dj']) . '</td>' . "\r\n";
         echo '</tr>' . "\r\n";
         echo '<tr>' . "\r\n";
         echo '<th style="width: 15%;">' . __('Event Date:') . '</th>' . "\r\n";
         echo '<td style="width: 35%;">' . date(MDJM_SHORTDATE_FORMAT, $eventinfo['date']) . '</td>' . "\r\n";
         echo '<th style="width: 15%;">' . __('Event Type:') . '</th>' . "\r\n";
         echo '<td style="width: 35%;">' . __($eventinfo['type']) . '</td>' . "\r\n";
         echo '</tr>' . "\r\n";
         echo '<tr>' . "\r\n";
         echo '<th style="width: 15%;">' . __('Start Time:') . '</th>' . "\r\n";
         echo '<td style="width: 35%;">' . $eventinfo['start'] . '</td>' . "\r\n";
         echo '<th style="width: 15%;">' . __('End Time:') . '</th>' . "\r\n";
         echo '<td style="width: 35%;">' . $eventinfo['finish'] . '</td>' . "\r\n";
         echo '</tr>' . "\r\n";
         if (MDJM_PACKAGES == true) {
             echo '<tr>' . "\r\n";
             echo '<th style="width: 15%;">' . __('Package:') . '</th>' . "\r\n";
             echo '<td style="width: 35%;">';
             if (!empty($eventinfo['package'])) {
                 $eventinfo['package'] = get_package_details($eventinfo['package']);
                 echo !empty($eventinfo['package']) ? '<a title="' . (!empty($eventinfo['package']['desc']) ? $eventinfo['package']['desc'] : '') . (!empty($mdjm_settings['clientzone']['package_prices']) ? ' - ' . mdjm_currency_filter(mdjm_sanitize_amount($eventinfo['package']['cost'])) : '') . '">' . $eventinfo['package']['name'] . '</a>' : 'None';
             } else {
                 echo 'None';
             }
             echo '</td>' . "\r\n";
             echo '<th style="width: 15%;">' . __('Addons:') . '</th>' . "\r\n";
             echo '<td style="width: 35%;">';
             $eventinfo['addons'] = get_post_meta($event->ID, '_mdjm_event_addons', true);
             if (!empty($eventinfo['addons'])) {
                 $i = 1;
                 foreach ($eventinfo['addons'] as $addon) {
                     $item = get_addon_details($addon);
                     echo '<a title="' . (!empty($item['desc']) ? $item['desc'] : '') . (!empty($mdjm_settings['clientzone']['package_prices']) ? ' - ' . mdjm_currency_filter(mdjm_sanitize_amount($item['cost'])) : '') . '">' . $item['name'] . '</a>';
                     echo $i < count($eventinfo['addons']) ? '<br />' : '';
                     $i++;
                 }
             } else {
                 echo 'None';
             }
             '</td>' . "\r\n";
             echo '</tr>' . "\r\n";
         }
         // if( MDJM_PACKAGES == true )
         echo '<tr>' . "\r\n";
         echo '<th style="width: 15%;">' . __('Total Cost:') . '</th>' . "\r\n";
         echo '<td style="width: 35%;">' . $eventinfo['cost'] . '</td>' . "\r\n";
         echo '<th style="width: 15%;">' . __(mdjm_get_deposit_label()) . ':</th>' . "\r\n";
         echo '<td style="width: 35%;">' . $eventinfo['deposit'] . ' (' . __($eventinfo['deposit_status']) . ')</td>' . "\r\n";
         echo '</tr>' . "\r\n";
         echo '<tr>' . "\r\n";
         echo '<th style="width: 15%;">' . __(mdjm_get_balance_label()) . ':</th>' . "\r\n";
         echo '<td colspan="3">' . $eventinfo['balance'] . ' (' . __($eventinfo['balance_status']) . ')</td>' . "\r\n";
         echo '</tr>' . "\r\n";
         if (!empty($eventinfo['notes'])) {
             echo '<tr>' . "\r\n";
             echo '<th style="width: 15%;">' . __('Information:') . '</th>' . "\r\n";
             echo '<td colspan="3">' . stripslashes($eventinfo['notes']) . '</td>' . "\r\n";
             echo '</tr>' . "\r\n";
         }
         echo '<tr>' . "\r\n";
         echo '<td colspan="4">&nbsp;</td>' . "\r\n";
         echo '</tr>' . "\r\n";
         echo '<tr>' . "\r\n";
         echo '<th colspan="4"><span style="text-decoration: underline;">' . __('Your Contact Details') . '</span>&nbsp;&nbsp;&nbsp;<a href="' . mdjm_get_formatted_url(MDJM_PROFILE_PAGE, false) . '">' . __('edit') . '</a></th>' . "\r\n";
         echo '</tr>' . "\r\n";
         echo '<tr>' . "\r\n";
         echo '<th style="width: 15%;">' . __('Name:') . '</th>' . "\r\n";
         echo '<td style="width: 35%;">' . $my_mdjm['me']->display_name . '</td>' . "\r\n";
         echo '<th style="width: 15%;">' . __('Phone:') . '</th>' . "\r\n";
         echo '<td style="width: 35%;">' . $my_mdjm['me']->phone1 . ' ' . (!empty($my_mdjm['me']->phone2) ? $my_mdjm['me']->phone2 : '') . '</td>' . "\r\n";
         echo '</tr>' . "\r\n";
         echo '<tr>' . "\r\n";
         echo '<th style="width: 15%;">' . __('Email:') . '</th>' . "\r\n";
         echo '<td style="width: 35%;">' . $my_mdjm['me']->user_email . '</td>' . "\r\n";
         echo '<th style="width: 15%;">' . __('Address:') . '</th>' . "\r\n";
         echo '<td style="width: 35%;">' . $clientzone->get_client_address() . '</td>' . "\r\n";
         echo '</tr>' . "\r\n";
         echo '<tr>' . "\r\n";
         echo '<td colspan="4">&nbsp;</td>' . "\r\n";
         echo '</tr>' . "\r\n";
         echo '<tr>' . "\r\n";
         echo '<th colspan="4"><span style="text-decoration: underline;">' . __('Venue Details') . '</span></th>' . "\r\n";
         echo '</tr>' . "\r\n";
         $venue_details = MDJM()->events->mdjm_get_venue_details(get_post_meta($event->ID, '_mdjm_event_venue_id', true), $event->ID);
         echo '<tr>' . "\r\n";
         echo '<th style="width: 15%;">' . __('Venue:') . '</th>' . "\r\n";
         echo '<td style="width: 35%;">' . stripslashes($venue_details['name']) . '</td>' . "\r\n";
         echo '<th style="width: 15%;">' . __('Address:') . '</th>' . "\r\n";
         echo '<td style="width: 35%;">' . implode('<br />', $venue_details['full_address']) . '</td>' . "\r\n";
         echo '</tr>' . "\r\n";
         echo '</table>' . "\r\n";
         echo '</div>' . "\r\n";
         // End div mdjm-event-table
         echo '</div>' . "\r\n";
         // End div mdjm-event-container
         echo '</form>' . "\r\n";
     }
     // foreach( $posts as $post )
 }
コード例 #5
0
 /**
  * Build all the reports data
  *
  * @access	public
  * @since	1.4
  * @return	arr		$reports_data	All the data for customer reports
  */
 public function reports_data()
 {
     $stats = new MDJM_Stats();
     $dates = mdjm_get_report_dates();
     $stats->setup_dates($dates['range']);
     $cached_reports = false;
     if (false !== $cached_reports) {
         $reports_data = $cached_reports;
     } else {
         $reports_data = array();
         $term_args = array('parent' => 0, 'hierarchical' => 0);
         $employees = mdjm_get_employees();
         foreach ($employees as $employee) {
             $event_count = 0;
             $employee_id = $employee->ID;
             $event_args = array('post_status' => apply_filters('mdjm_events_by_type_statuses', array('mdjm-contract', 'mdjm-approved', 'mdjm-completed')), 'fields' => 'ids', 'meta_query' => array('relation' => 'AND', array('key' => '_mdjm_event_date', 'value' => array(date('Y-m-d', $stats->start_date), date('Y-m-d', $stats->end_date)), 'type' => 'date', 'compare' => 'BETWEEN'), array('relation' => 'OR', array('key' => '_mdjm_event_dj', 'value' => $employee_id, 'compare' => '=', 'type' => 'numeric'), array('key' => '_mdjm_event_employees', 'value' => sprintf(':"%s";', $employee_id), 'compare' => 'LIKE'))));
             $wages = 0.0;
             $paid = 0.0;
             $owed = 0.0;
             $events = mdjm_get_events($event_args);
             if ($events) {
                 foreach ($events as $event) {
                     $event_count++;
                     $payment_status = mdjm_event_employees_paid($event, $employee_id);
                     $current_wages = mdjm_get_employees_event_wage($event, $employee_id);
                     $current_paid_wages = 0;
                     $current_owed_wages = 0;
                     $wages += $current_wages;
                     $paid += $payment_status ? $current_wages : 0.0;
                     $owed += $payment_status ? 0.0 : $current_wages;
                 }
             } else {
                 continue;
             }
             $reports_data[] = array('ID' => $employee->ID, 'employee' => $employee->display_name, 'total_events' => $event_count, 'total_wages' => mdjm_currency_filter(mdjm_format_amount($wages)), 'total_wages_raw' => $wages, 'wages_paid' => mdjm_currency_filter(mdjm_format_amount($paid)), 'wages_owed' => mdjm_currency_filter(mdjm_format_amount($owed)), 'is_child' => false);
         }
     }
     return $reports_data;
 }
コード例 #6
0
 public function event_detail($post_id)
 {
     global $mdjm;
     if (empty($post_id) || !is_string(get_post_status($post_id))) {
         return;
     }
     $event_stati = mdjm_all_event_status();
     $name = get_post_meta($post_id, '_mdjm_event_name', true);
     $date = get_post_meta($post_id, '_mdjm_event_date', true);
     $end_date = get_post_meta($post_id, '_mdjm_event_end_date', true);
     $client = get_post_meta($post_id, '_mdjm_event_client', true);
     $dj = get_post_meta($post_id, '_mdjm_event_dj', true);
     $dj_wage = get_post_meta($post_id, '_mdjm_event_dj_wage', true);
     $cost = get_post_meta($post_id, '_mdjm_event_cost', true);
     $deposit = get_post_meta($post_id, '_mdjm_event_deposit', true);
     $deposit_status = get_post_meta($post_id, '_mdjm_event_deposit_status', true);
     $paid = MDJM()->txns->get_transactions($post_id, 'mdjm-income');
     $balance_status = get_post_meta($post_id, '_mdjm_event_balance_status', true);
     $start = get_post_meta($post_id, '_mdjm_event_start', true);
     $finish = get_post_meta($post_id, '_mdjm_event_finish', true);
     $status = !empty($event_stati[get_post_status($post_id)]) ? $event_stati[get_post_status($post_id)] : '';
     $setup_date = get_post_meta($post_id, '_mdjm_event_djsetup', true);
     $setup_time = get_post_meta($post_id, '_mdjm_event_djsetup_time', true);
     $contract = get_post_meta($post_id, '_mdjm_event_contract', true);
     $contract_date = get_post_meta($post_id, '_mdjm_event_contract_approved', true);
     $signed_contract = get_post_meta($post_id, '_mdjm_event_signed_contract', true);
     $notes = get_post_meta($post_id, '_mdjm_event_notes', true);
     $dj_notes = get_post_meta($post_id, '_mdjm_event_dj_notes', true);
     $admin_notes = get_post_meta($post_id, '_mdjm_event_admin_notes', true);
     $package = get_post_meta($post_id, '_mdjm_event_package', true);
     $addons = get_post_meta($post_id, '_mdjm_event_addons', true);
     $online_quote = get_post_meta($post_id, '_mdjm_online_quote', true);
     $guest_playlist = get_post_meta($post_id, '_mdjm_event_playlist_access', true);
     $eventinfo = array('name' => !empty($name) ? $name : '', 'date' => !empty($date) && is_int(strtotime($date)) ? strtotime($date) : __('Not Specified', 'mobile-dj-manager'), 'end_date' => !empty($end_date) && is_int(strtotime($end_date)) ? strtotime($end_date) : __('Not Specified', 'mobile-dj-manager'), 'client' => !empty($client) ? get_userdata($client) : '', 'dj' => !empty($dj) ? get_userdata($dj) : __('Not Assigned', 'mobile-dj-manager'), 'dj_wage' => !empty($dj_wage) ? mdjm_currency_filter(mdjm_sanitize_amount($dj_wage)) : __('Not Specified', 'mobile-dj-manager'), 'start' => !empty($start) ? date(MDJM_TIME_FORMAT, strtotime($start)) : __('Not Specified', 'mobile-dj-manager'), 'finish' => !empty($finish) ? date(MDJM_TIME_FORMAT, strtotime($finish)) : __('Not Specified', 'mobile-dj-manager'), 'status' => !empty($status) ? $status : '', 'setup_date' => !empty($setup_date) ? strtotime($setup_date) : __('Not Specified', 'mobile-dj-manager'), 'setup_time' => !empty($setup_time) ? date(MDJM_TIME_FORMAT, strtotime($setup_time)) : __('Not Specified', 'mobile-dj-manager'), 'cost' => !empty($cost) ? mdjm_currency_filter(mdjm_sanitize_amount($cost)) : __('Not Specified', 'mobile-dj-manager'), 'deposit' => !empty($deposit) ? mdjm_currency_filter(mdjm_sanitize_amount($deposit)) : '0.00', 'balance' => !empty($paid) && $paid != '0.00' && !empty($cost) ? mdjm_currency_filter(mdjm_sanitize_amount($cost - $paid)) : mdjm_currency_filter(mdjm_sanitize_amount($cost)), 'deposit_status' => !empty($deposit_status) ? $deposit_status : __('Due', 'mobile-dj-manager'), 'balance_status' => !empty($balance_status) ? $balance_status : __('Due', 'mobile-dj-manager'), 'payment_history' => MDJM()->txns->list_event_transactions($post_id), 'type' => $this->get_event_type($post_id), 'online_quote' => mdjm_get_option('online_enquiry', false) && !empty($online_quote) ? $online_quote : '', 'contract' => !empty($contract) ? $contract : '', 'contract_date' => !empty($contract_date) ? date(MDJM_SHORTDATE_FORMAT, strtotime($contract_date)) : date(MDJM_SHORTDATE_FORMAT), 'signed_contract' => !empty($signed_contract) ? $signed_contract : '', 'notes' => !empty($notes) ? $notes : '', 'dj_notes' => !empty($dj_notes) ? $dj_notes : '', 'admin_notes' => !empty($admin_notes) ? $admin_notes : '', 'package' => !empty($package) ? $package : '', 'addons' => !empty($addons) ? implode("\n", $addons) : '', 'guest_playlist' => !empty($guest_playlist) ? mdjm_get_formatted_url(MDJM_PLAYLIST_PAGE) . 'mdjmeventid=' . $guest_playlist : '');
     // Allow the $eventinfo array to be filtered
     $eventinfo = apply_filters('mdjm_event_info', $eventinfo);
     return $eventinfo;
 }
コード例 #7
0
ファイル: txns.php プロジェクト: mdjm/mobile-dj-manager
/**
 * Define the data to be displayed in each of the custom columns for the Transaction post types
 *
 * @since	0.9
 * @param	str		$column_name	The name of the column to display
 * @param	int		$post_id		The current post ID
 * @return
 */
function mdjm_transaction_posts_custom_column($column_name, $post_id)
{
    switch ($column_name) {
        // Details
        case 'detail':
            $trans_types = get_the_terms($post_id, 'transaction-types');
            if (is_array($trans_types)) {
                foreach ($trans_types as $key => $trans_type) {
                    $trans_types[$key] = $trans_type->name;
                }
                echo implode("<br/>", $trans_types);
            }
            break;
            // Date
        // Date
        case 'txn_date':
            echo get_post_time('d M Y');
            break;
            // Direction
        // Direction
        case 'direction':
            if ('mdjm-income' == get_post_status($post_id)) {
                echo '<span style="color:green">' . __('In', 'mobile-dj-manager') . '</span>';
            } else {
                echo '<span style="color:red">&nbsp;&nbsp;&nbsp;&nbsp;' . __('Out', 'mobile-dj-manager') . '</span>';
            }
            break;
            // Source
        // Source
        case 'payee':
            echo mdjm_get_txn_recipient_name($post_id);
            break;
            // Event
        // Event
        case 'event':
            $parent = wp_get_post_parent_id($post_id);
            if (!empty($parent)) {
                printf('<a href="%s">%s</a>', admin_url("/post.php?post={$parent}&action=edit"), mdjm_get_option('') . $parent);
            } else {
                echo __('N/A', 'mobile-dj-manager');
            }
            break;
            // Value
        // Value
        case 'txn_value':
            echo mdjm_currency_filter(mdjm_format_amount(get_post_meta($post_id, '_mdjm_txn_total', true)));
            break;
            // Status
        // Status
        case 'txn_status':
            echo get_post_meta($post_id, '_mdjm_txn_status', true);
            break;
    }
    // switch
}
コード例 #8
0
 /**
  * Build all the reports data
  *
  * @access	public
  * @since	1.4
  * @return	arr		$reports_data	All the data for customer reports
  */
 public function reports_data()
 {
     $stats = new MDJM_Stats();
     $dates = mdjm_get_report_dates();
     $stats->setup_dates($dates['range']);
     $cached_reports = false;
     if (false !== $cached_reports) {
         $reports_data = $cached_reports;
     } else {
         $reports_data = array();
         $term_args = array('parent' => 0, 'hierarchical' => 0);
         $packages = mdjm_get_packages();
         if ($packages) {
             foreach ($packages as $package) {
                 $event_count = 0;
                 $total_value = 0;
                 $event_args = array('fields' => 'ids', 'meta_query' => array('relation' => 'AND', array('key' => '_mdjm_event_package', 'value' => $package->ID, 'type' => 'NUMERIC'), array('key' => '_mdjm_event_date', 'value' => array(date('Y-m-d', $stats->start_date), date('Y-m-d', $stats->end_date)), 'type' => 'date', 'compare' => 'BETWEEN')));
                 $events = mdjm_get_events($event_args);
                 if ($events) {
                     foreach ($events as $event) {
                         $event_count++;
                         $event_date = get_post_meta($event, '_mdjm_event_date', true);
                         $total_value += mdjm_get_package_price($package->ID, $event_date);
                     }
                 } else {
                     continue;
                 }
                 $reports_data[] = array('ID' => $package->ID, 'package' => mdjm_get_package_name($package->ID), 'events' => $event_count, 'value' => mdjm_currency_filter(mdjm_format_amount($total_value)), 'value_raw' => $total_value);
             }
         }
     }
     return $reports_data;
 }
コード例 #9
0
ファイル: payments.php プロジェクト: mdjm/mobile-dj-manager
/**
 * Updates an event once a payment is completed.
 *
 * @since	1.3.8
 * @param	arr		$txn_data	Transaction data from gateway.
 * @return	void
 */
function mdjm_update_event_after_payment($txn_data)
{
    $type = mdjm_get_txn_type($txn_data['txn_id']);
    if ($type == mdjm_get_deposit_label()) {
        $meta['_mdjm_event_deposit_status'] = 'Paid';
    } else {
        if ($type == mdjm_get_balance_label()) {
            $meta['_mdjm_event_deposit_status'] = 'Paid';
            $meta['_mdjm_event_balance_status'] = 'Paid';
        } else {
            if (mdjm_get_event_remaining_deposit($txn_data['event_id']) < 1) {
                $meta['_mdjm_event_deposit_status'] = 'Paid';
            }
            if (mdjm_get_event_balance($txn_data['event_id']) < 1) {
                $meta['_mdjm_event_deposit_status'] = 'Paid';
                $meta['_mdjm_event_balance_status'] = 'Paid';
            }
        }
    }
    mdjm_update_event_meta($txn_data['event_id'], $meta);
    // Update the journal
    mdjm_add_journal(array('user_id' => $txn_data['client_id'], 'event_id' => $txn_data['event_id'], 'comment_content' => sprintf(__('%s of %s received via %s', 'mobile-dj-manager'), $type, mdjm_currency_filter(mdjm_format_amount($txn_data['total'])), mdjm_get_gateway_admin_label($txn_data['gateway']))));
}
コード例 #10
0
/**
 * Mark an event employee as paid.
 *
 * @since	1.3
 * @param	int		$employee_id	User ID of employee
 * @param	int		$event_id		Event ID
 * @param	int		$txn_id			The transaction ID associated with this payment.
 * @return	bool	True if payment data updated for event employee, otherwise false.
 */
function mdjm_set_employee_paid($employee_id, $event_id, $txn_id = '')
{
    global $wp_roles;
    if (!mdjm_get_option('enable_employee_payments')) {
        return;
    }
    if (!mdjm_is_employee($employee_id)) {
        return false;
    }
    $return = false;
    if ($employee_id == mdjm_get_event_primary_employee($event_id)) {
        /**
         *
         * Hook fires before marking event employee as paid.
         *
         * @since	1.3
         * @param	int	$event_id	The event ID.
         */
        do_action("mdjm_pre_mdjm_set_employee_paid_{$employee_id}", $event_id);
        $role = 'dj';
        $payment = mdjm_get_txn_price($txn_id);
        $payment_data = get_post_meta($event_id, '_mdjm_event_dj_payment_status', true);
        $payment_data['payment_status'] = mdjm_get_employees_event_wage($event_id, $employee_id) > $payment ? 'part-paid' : 'paid';
        $payment_data['payment_date'] = current_time('mysql');
        $payment_data['txn_id'] = $txn_id;
        $payment_data['payment_amount'] = $payment;
        $payment_update = update_post_meta($event_id, '_mdjm_event_dj_payment_status', $payment_data);
        if (!empty($payment_update)) {
            MDJM()->debug->log_it(sprintf('%s successfully paid %s for Event %d', mdjm_get_employee_display_name($employee_id), mdjm_currency_filter(mdjm_get_txn_price($txn_id)), $event_id));
            $return = true;
        } else {
            MDJM()->debug->log_it(sprintf('Unable to pay %s for Event %d', mdjm_get_employee_display_name($employee_id), $event_id));
            $return = false;
        }
    } else {
        $payment_data = get_post_meta($event_id, '_mdjm_event_employees_data', true);
        if (!mdjm_employee_working_event($event_id, $employee_id)) {
            MDJM()->debug->log_it('Employee not working this event');
            return false;
        } else {
            /**
             *
             * Hook fires before marking event employee as paid.
             *
             * @since	1.3
             * @param	int	$event_id	The event ID.
             */
            do_action("mdjm_pre_mdjm_set_employee_paid_{$employee_id}", $event_id);
            $role = $payment_data[$employee_id]['role'];
            $payment = mdjm_get_txn_price($payment_data[$employee_id]['txn_id']);
            $payment_data[$employee_id]['payment_status'] = mdjm_get_employees_event_wage($event_id, $employee_id) > $payment ? 'part-paid' : 'paid';
            $payment_data[$employee_id]['payment_date'] = current_time('mysql');
            $payment_data[$employee_id]['payment_amount'] = $payment;
            $payment_update = mdjm_update_txn_meta($payment_data[$employee_id]['txn_id'], array('_mdjm_txn_status' => 'Completed'));
            if (!empty($payment_update)) {
                $payment_update = update_post_meta($event_id, '_mdjm_event_employees_data', $payment_data);
            }
            if (!empty($payment_update)) {
                MDJM()->debug->log_it(sprintf('%s successfully paid %s for Event %d', mdjm_get_employee_display_name($employee_id), mdjm_currency_filter(mdjm_get_txn_price($txn_id)), $event_id));
                $return = true;
            } else {
                MDJM()->debug->log_it(sprintf('Unable to pay %s for Event %d', mdjm_get_employee_display_name($employee_id), $event_id));
                $return = false;
            }
        }
    }
    if (!empty($return)) {
        $journal_args = array('user_id' => 1, 'event_id' => $event_id, 'comment_content' => sprintf(__('Employee %s paid %s for their role as %s', 'mobile-dj-manager'), mdjm_get_employee_display_name($employee_id), $payment, translate_user_role($wp_roles->roles[$role]['name'])));
        $journal_meta = array('mdjm_visibility' => !empty($meta['visibility']) ? $meta['visibility'] : '2');
        mdjm_add_journal($journal_args, $journal_meta);
        /**
         *
         * Hook fires after successfully marking event employee as paid.
         *
         * @since	1.3
         * @param	int	$event_id	The event ID.
         * @param	int	$txn_id		The transaction ID associated with the payment
         */
        do_action("mdjm_post_mdjm_set_employee_paid_{$employee_id}", $event_id, $txn_id);
    }
    return $return;
}
コード例 #11
0
ファイル: metaboxes.php プロジェクト: mdjm/mobile-dj-manager
/**
 * Individual Price Row
 *
 * Used to output a table row for each price associated with an add-on.
 * Can be called directly, or attached to an action.
 *
 * @since 1.3.9
 *
 * @param	int	$key
 * @param	arr	$args
 * @param	int $post_id
 * @param	int	$index
 */
function mdjm_addon_metabox_price_row($key, $args, $post_id, $index)
{
    $defaults = array('name' => null, 'amount' => null);
    $args = wp_parse_args($args, $defaults);
    $currency_position = mdjm_get_option('currency_format', 'before');
    ?>
	<td>
		<?php 
    echo MDJM()->html->month_dropdown(array('name' => '_addon_variable_prices[' . $key . '][months]', 'selected' => !empty($args['months']) ? $args['months'] : '', 'fullname' => true, 'multiple' => true, 'chosen' => true, 'placeholder' => __('Select Months', 'mobile-dj-manager')));
    ?>
	</td>

	<td>
		<?php 
    $price_args = array('name' => '_addon_variable_prices[' . $key . '][amount]', 'value' => mdjm_format_amount($args['amount']), 'placeholder' => mdjm_format_amount(10.0), 'class' => 'mdjm-price-field');
    ?>

		<?php 
    if ($currency_position == 'before') {
        ?>
			<span><?php 
        echo mdjm_currency_filter('');
        ?>
</span>
			<?php 
        echo MDJM()->html->text($price_args);
        ?>
		<?php 
    } else {
        ?>
			<?php 
        echo MDJM()->html->text($price_args);
        ?>
			<?php 
        echo mdjm_currency_filter('');
        ?>
		<?php 
    }
    ?>
	</td>

	<?php 
    do_action('mdjm_addon_price_table_row', $post_id, $key, $args);
    ?>

	<td>
		<a href="#" class="mdjm_remove_repeatable" data-type="price" style="background: url(<?php 
    echo admin_url('/images/xit.gif');
    ?>
) no-repeat;">&times;</a>
	</td>
	<?php 
}
コード例 #12
0
ファイル: scripts.php プロジェクト: mdjm/mobile-dj-manager
/**
 * Load Admin Scripts
 *
 * Enqueues the required scripts for admin.
 *
 * @since	1.3
 * @return	void
 */
function mdjm_register_admin_scripts($hook)
{
    $js_dir = MDJM_PLUGIN_URL . '/assets/js/';
    wp_register_script('jquery-chosen', $js_dir . 'chosen.jquery.js', array('jquery'), MDJM_VERSION_NUM);
    wp_enqueue_script('jquery-chosen');
    wp_enqueue_script('jquery-ui-datepicker', array('jquery'));
    if (strpos($hook, 'mdjm')) {
        wp_enqueue_script('jquery');
    }
    $editing_event = false;
    $require_validation = array('mdjm-event_page_mdjm-comms');
    $sortable = array('admin_page_mdjm-custom-event-fields', 'admin_page_mdjm-custom-client-fields');
    if ('post.php' == $hook || 'post-new.php' == $hook) {
        if (isset($_GET['post']) && 'mdjm-addon' == get_post_type($_GET['post'])) {
            $sortable[] = 'post.php';
            $sortable[] = 'post-new.php';
        }
        if (isset($_GET['post']) && 'mdjm-event' == get_post_type($_GET['post'])) {
            $editing_event = true;
        }
        if (isset($_GET['post_type']) && 'mdjm-event' == $_GET['post_type']) {
            $editing_event = true;
        }
        if ($editing_event) {
            $require_validation[] = 'post.php';
            $require_validation[] = 'post-new.php';
        }
    }
    if (in_array($hook, $require_validation)) {
        wp_register_script('jquery-validation-plugin', '//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js', false);
        wp_enqueue_script('jquery-validation-plugin');
    }
    if (in_array($hook, $sortable)) {
        wp_enqueue_script('jquery-ui-sortable');
    }
    wp_register_script('mdjm-admin-scripts', $js_dir . 'admin-scripts.js', array('jquery'), MDJM_VERSION_NUM);
    wp_enqueue_script('mdjm-admin-scripts');
    wp_localize_script('mdjm-admin-scripts', 'mdjm_admin_vars', apply_filters('mdjm_admin_script_vars', array('ajaxurl' => mdjm_get_ajax_url(), 'current_page' => $hook, 'editing_event' => $editing_event, 'load_recipient' => isset($_GET['recipient']) ? $_GET['recipient'] : false, 'ajax_loader' => MDJM_PLUGIN_URL . '/assets/images/loading.gif', 'no_client_first_name' => __('Enter a first name for the client', 'mobile-dj-manager'), 'no_client_email' => __('Enter an email address for the client', 'mobile-dj-manager'), 'no_txn_amount' => __('Enter a transaction value', 'mobile-dj-manager'), 'no_txn_date' => __('Enter a transaction date', 'mobile-dj-manager'), 'no_txn_for' => __('What is the transaction for?', 'mobile-dj-manager'), 'no_txn_src' => __('Enter a transaction source', 'mobile-dj-manager'), 'no_venue_name' => __('Enter a name for the venue', 'mobile-dj-manager'), 'currency' => mdjm_get_currency(), 'currency_symbol' => mdjm_currency_symbol(), 'currency_sign' => mdjm_currency_filter(''), 'currency_position' => mdjm_get_option('currency_format', 'before'), 'currency_decimals' => mdjm_currency_decimal_filter(), 'deposit_is_pct' => 'percentage' == mdjm_get_event_deposit_type() ? true : false, 'update_deposit' => 'percentage' == mdjm_get_event_deposit_type() ? true : false, 'select_months' => __('Select Months', 'mobile-dj-manager'), 'one_month_min' => __('You must have a pricing option for at least one month', 'mobile-dj-manager'), 'one_item_min' => __('Select at least one Add-on', 'mobile-dj-manager'), 'min_travel_distance' => mdjm_get_option('travel_min_distance'), 'update_travel_cost' => mdjm_get_option('travel_add_cost', false))));
    wp_register_script('jquery-flot', $js_dir . 'jquery.flot.js');
    wp_enqueue_script('jquery-flot');
}
コード例 #13
0
/**
 * Content tag: travel_cost.
 * The travel cost for the event.
 *
 * @param	int		The event ID.
 *
 * @return	str		Formatted event travel cost.
 */
function mdjm_content_tag_travel_cost($event_id = '')
{
    if (empty($event_id)) {
        return;
    }
    $travel_cost = mdjm_get_event_travel_data($event_id);
    if (!empty($travel_cost)) {
        return mdjm_currency_filter(mdjm_format_amount($travel_cost));
    }
}
コード例 #14
0
ファイル: shortcodes.php プロジェクト: mdjm/mobile-dj-manager
/**
 * Addons List Shortcode.
 * 
 * @param	arr		$atts		Shortcode attributes. See $atts.
 * @param	str|int	$filter_value	The value to which to filter $filter_by. Default false (all).
 * @param	str		$list			List type to display. li for bulleted. Default p.
 * @param	bool	$cost			Whether or not display the price. Default false.
 *
 *
 */
function mdjm_shortcode_addons_list($atts)
{
    global $post;
    $atts = shortcode_atts(array('filter_by' => false, 'filter_value' => false, 'list' => 'p', 'desc' => false, 'desc_length' => mdjm_get_option('package_excerpt_length', 55), 'cost' => false, 'addon_class' => false, 'cost_class' => false, 'desc_class' => false), $atts, 'mdjm-addons');
    ob_start();
    $output = '';
    if (!empty($post) && 'mdjm-package' == get_post_type($post->ID)) {
        $package_addons = mdjm_get_package_addons($post->ID);
        $addons = array();
        foreach ($package_addons as $package) {
            $addons[] = mdjm_get_addon($package);
        }
    } elseif (!empty($atts['filter_by']) && !empty($atts['filter_value']) && $atts['filter_by'] != 'false' && $atts['filter_value'] != 'false') {
        // Filter addons by user
        if ($atts['filter_by'] == 'category') {
            $addons = mdjm_get_addons_in_category($atts['filter_value']);
        } elseif ($atts['filter_by'] == 'package') {
            if (!is_numeric($atts['filter_value'])) {
                // For backwards compatibility
                $package = mdjm_get_package_by('slug', $atts['filter_value']);
                if ($package) {
                    $atts['filter_value'] = $package->ID;
                }
            }
            $package_addons = mdjm_get_package_addons($atts['filter_value']);
            $addons = array();
            foreach ($package_addons as $package) {
                $addons[] = mdjm_get_addon($package);
            }
        } elseif ($atts['filter_by'] == 'user') {
            $addons = mdjm_get_addons_by_employee($atts['filter_value']);
        }
    } else {
        $addons = mdjm_get_addons();
    }
    /**
     * Output the results
     */
    if (!$addons) {
        $output .= '<p>' . __('No addons available', 'mobile-dj-manager') . '</p>';
    } else {
        // Check to start bullet list
        if ($atts['list'] == 'li') {
            $output .= '<ul>';
        }
        foreach ($addons as $addon) {
            // Output the remaining addons
            if (!empty($atts['list'])) {
                $output .= '<' . $atts['list'] . '>';
            }
            if (!empty($atts['addon_class']) && $atts['addon_class'] != 'false') {
                $output = '<span class="' . $atts['addon_class'] . '">';
            }
            $output .= $addon->post_title;
            if (!empty($atts['addon_class']) && $atts['addon_class'] != 'false') {
                $output = '</span>';
            }
            $cost = mdjm_get_addon_price($addon->ID);
            if (!empty($atts['cost']) && $atts['cost'] != 'false' && !empty($cost)) {
                if (!empty($atts['cost_class']) && $atts['cost_class'] != 'false') {
                    $output = '<span class="' . $atts['cost_class'] . '">';
                }
                $output .= '&nbsp;&ndash;&nbsp;' . mdjm_currency_filter(mdjm_format_amount($cost));
                if (!empty($atts['cost_class']) && $atts['cost_class'] != 'false') {
                    $output = '</span>';
                }
            }
            $desc = mdjm_get_addon_excerpt($addon->ID, $atts['desc_length']);
            if (!empty($atts['desc']) && $atts['desc'] != 'false' && !empty($desc)) {
                $output .= '<br />';
                if (!empty($atts['desc_class']) && $atts['desc_class'] != 'false') {
                    $output = '<span class="' . $atts['desc_class'] . '">';
                } else {
                    $output .= '<span style="font-style: italic; font-size: smaller;">';
                }
                $output .= $desc;
                $output .= '</span>';
            }
            if (!empty($atts['list'])) {
                $output .= '</' . $atts['list'] . '>';
            }
        }
        // Check to end bullet list
        if ($atts['list'] == 'li') {
            $output .= '</ul>';
        }
    }
    echo apply_filters('mdjm_shortcode_addons_list', $output);
    return ob_get_clean();
}
コード例 #15
0
/**
 * Displays all event transactions within a table.
 *
 * @since	1.3.7
 * @global	obj		$mdjm_event			MDJM_Event class object
 * @param	int		$event_id
 * @return	str
 */
function mdjm_do_event_txn_table($event_id)
{
    global $mdjm_event;
    $event_txns = apply_filters('mdjm_event_txns', mdjm_get_event_txns($event_id, array('orderby' => 'post_status')));
    $in = 0;
    $out = 0;
    ?>

	<table class="widefat mdjm_event_txn_list">
        <thead>
            <tr>
                <th style="width: 20%"><?php 
    _e('Date', 'mobile-dj-manager');
    ?>
</th>
                <th style="width: 20%"><?php 
    _e('To/From', 'mobile-dj-manager');
    ?>
</th>
                <th style="width: 15%"><?php 
    _e('In', 'mobile-dj-manager');
    ?>
</th>
                <th style="width: 15%"><?php 
    _e('Out', 'mobile-dj-manager');
    ?>
</th>
                <th><?php 
    _e('Details', 'mobile-dj-manager');
    ?>
</th>
                <?php 
    do_action('mdjm_event_txn_table_head', $event_id);
    ?>
            </tr>
        </thead>
        <tbody>
        <?php 
    if ($event_txns) {
        ?>
            <?php 
        foreach ($event_txns as $event_txn) {
            ?>

                <?php 
            $txn = new MDJM_Txn($event_txn->ID);
            ?>

                <tr class="mdjm_field_wrapper">
                    <td><a href="<?php 
            echo get_edit_post_link($txn->ID);
            ?>
"><?php 
            echo mdjm_format_short_date($txn->post_date);
            ?>
</a></td>
                    <td><?php 
            echo esc_attr(mdjm_get_txn_recipient_name($txn->ID));
            ?>
</td>
                    <td>
                        <?php 
            if ($txn->post_status == 'mdjm-income') {
                ?>
                            <?php 
                $in += mdjm_sanitize_amount($txn->price);
                ?>
                            <?php 
                echo mdjm_currency_filter(mdjm_format_amount($txn->price));
                ?>
                        <?php 
            } else {
                ?>
                            <?php 
                echo '&ndash;';
                ?>
                        <?php 
            }
            ?>
                    </td>
                    <td>
                        <?php 
            if ($txn->post_status == 'mdjm-expenditure') {
                ?>
                            <?php 
                $out += mdjm_sanitize_amount($txn->price);
                ?>
                            <?php 
                echo mdjm_currency_filter(mdjm_format_amount($txn->price));
                ?>
                        <?php 
            } else {
                ?>
                            <?php 
                echo '&ndash;';
                ?>
                        <?php 
            }
            ?>
                    </td>
                    <td><?php 
            echo $txn->get_type();
            ?>
</td>
                </tr>
            <?php 
        }
        ?>
        <?php 
    } else {
        ?>
        <tr>            
            <td colspan="5"><?php 
        printf(__('There are currently no transactions for this %s', 'mobile-dj-manager'), mdjm_get_label_singular(true));
        ?>
</td>
        </tr>
        <?php 
    }
    ?>
        </tbody>
        <tfoot>
        <tr>
            <th style="width: 20%">&nbsp;</th>
            <th style="width: 20%">&nbsp;</th>
            <th style="width: 15%"><strong><?php 
    echo mdjm_currency_filter(mdjm_format_amount($in));
    ?>
</strong></th>
            <th style="width: 15%"><strong><?php 
    echo mdjm_currency_filter(mdjm_format_amount($out));
    ?>
</strong></th>
            <th><strong><?php 
    printf(__('%s Earnings:', 'mobile-dj-manager'), mdjm_get_label_singular());
    ?>
 <?php 
    echo mdjm_currency_filter(mdjm_format_amount($in - $out));
    ?>
</strong></th>
        </tr>
        <?php 
    do_action('mdjm_event_txn_table_foot', $event_id);
    ?>
        </tfoot>
    </table>

	<?php 
}
コード例 #16
0
 /**
  * Renders a dropdown list of equipment add-ons.
  *
  * @since	1.3.7
  * @param	arr		$args	@see $default
  * @return	str
  */
 public function addons_dropdown($args = array())
 {
     $defaults = array('name' => 'event_addons', 'id' => '', 'class' => '', 'selected' => '', 'show_option_none' => __('No Addons', 'mobile-dj-manager'), 'show_option_all' => false, 'chosen' => false, 'employee' => false, 'event_type' => false, 'event_date' => false, 'placeholder' => null, 'multiple' => true, 'package' => '', 'cost' => true, 'desc' => false, 'titles' => false, 'options_only' => false, 'blank_first' => false, 'data' => array());
     $args = wp_parse_args($args, $defaults);
     $options = array();
     $titles = array();
     $addons = mdjm_get_addons();
     if ($addons) {
         foreach ($addons as $addon) {
             if (!empty($args['package'])) {
                 if (is_numeric($args['package'])) {
                     $package = mdjm_get_package($args['package']);
                 } else {
                     $package = mdjm_get_package_by('slug', $args['package']);
                 }
                 if ($package) {
                     $package_items = mdjm_get_package_addons($package->ID);
                 }
                 if (!empty($package_items) && in_array($addon->ID, $package_items)) {
                     continue;
                 }
             }
             if (!empty($args['employee'])) {
                 if (!mdjm_employee_has_addon($addon->ID, $args['employee'])) {
                     continue;
                 }
             }
             if ($args['event_type']) {
                 if (!mdjm_addon_is_available_for_event_type($addon->ID, $args['event_type'])) {
                     continue;
                 }
             }
             if ($args['event_date']) {
                 if (!mdjm_addon_is_available_for_event_date($addon->ID, $args['event_date'])) {
                     continue;
                 }
             } else {
                 $args['event_date'] = NULL;
             }
             $price = '';
             if ($args['cost'] == true) {
                 $price .= ' - ' . mdjm_currency_filter(mdjm_format_amount(mdjm_get_addon_price($addon->ID, $args['event_date'])));
             }
             $desc = '';
             if ($args['desc']) {
                 $desc .= ' - ' . mdjm_get_addon_excerpt($addon->ID, $args['desc']);
             }
             $term = '';
             $terms = get_the_terms($addon->ID, 'addon-category');
             if (!empty($terms)) {
                 $term = esc_html($terms[0]->name);
             }
             $args['options']['groups'][$term][] = array($addon->ID => $addon->post_title . $price . $desc);
             if ($args['titles']) {
                 $titles[$addon->ID] = mdjm_get_addon_excerpt($addon->ID);
             }
         }
     }
     if (!empty($args['options']['groups'])) {
         ksort($args['options']['groups']);
     }
     if (!empty($titles)) {
         $args['titles'] = $titles;
     }
     $output = $this->select($args);
     return $output;
 }
コード例 #17
0
/**
 * Adds the travel data row to the venue details metabox on the event screen.
 *
 * @since	1.4
 * @param	int|arr|obj	$dest			An address array, event ID, event object or venue ID.
 * @param	int			$employee_id	An employee user ID.
 * @return	void
 */
function mdjm_show_travel_data_row($dest, $employee_id = '')
{
    $mdjm_travel = new MDJM_Travel();
    if (!empty($employee_id)) {
        $mdjm_travel->__set('start_address', $mdjm_travel->get_employee_address($employee_id));
    }
    $mdjm_travel->set_destination($dest);
    if (empty($employee_id)) {
        if (is_object($dest)) {
            $mdjm_travel->__set('start_address', $mdjm_travel->get_employee_address($dest->employee_id));
        } elseif (is_numeric($dest)) {
            if ('mdjm-event' == get_post_type($dest)) {
                $mdjm_travel->__set('start_address', $mdjm_travel->get_employee_address(mdjm_get_event_primary_employee_id($dest)));
            }
        }
    }
    $mdjm_travel->get_travel_data();
    $distance = '';
    $duration = '';
    $cost = '';
    $directions_url = '';
    $directions = $mdjm_travel->get_directions_url();
    $class = 'mdjm-hidden';
    if (!empty($mdjm_travel->data)) {
        $distance = mdjm_format_distance($mdjm_travel->data['distance'], false, true);
        $duration = mdjm_seconds_to_time($mdjm_travel->data['duration']);
        $cost = mdjm_currency_filter(mdjm_format_amount($mdjm_travel->get_cost()));
        $directions_url = $directions ? $directions : '';
        $class = '';
    }
    ob_start();
    ?>
	<tr id="mdjm-travel-data" class="<?php 
    echo $class;
    ?>
">
		<td><i class="fa fa-car" aria-hidden="true" title="<?php 
    _e('Distance', 'mobile-dj-manager');
    ?>
"></i>
			<span class="mdjm-travel-distance"><?php 
    echo $distance;
    ?>
</span></td>
		<td><i class="fa fa-clock-o" aria-hidden="true" title="<?php 
    _e('Travel Time', 'mobile-dj-manager');
    ?>
"></i>
			<span class="mdjm-travel-time"><?php 
    echo $duration;
    ?>
</span></td>
		<td><i class="fa fa-money" aria-hidden="true" title="<?php 
    _e('Cost', 'mobile-dj-manager');
    ?>
"></i>
			<span class="mdjm-travel-cost"><?php 
    echo $cost;
    ?>
</span></td>
	</tr>

    <tr id="mdjm-travel-directions" class="<?php 
    echo $class;
    ?>
">
        <td colspan="3"><i class="fa fa-map-signs" aria-hidden="true" title="<?php 
    _e('Directions', 'mobile-dj-manager');
    ?>
"></i>
        <span class="mdjm-travel-directions"><a id="travel_directions" href="<?php 
    echo $directions_url;
    ?>
" target="_blank"><?php 
    _e('Directions', 'mobile-dj-manager');
    ?>
</a></span></td>
    </tr>

	<?php 
    $travel_data_row = ob_get_contents();
    ob_end_clean();
    echo $travel_data_row;
}
コード例 #18
0
/**
 * Get the package information for the given event
 *
 * @param	int		$event_id	The event ID
 * @param	bool	$price		True to include the package price.
 * @return	str
 */
function get_event_package($event_id, $price = false)
{
    _deprecated_function(__FUNCTION__, '1.4', 'mdjm_get_event_package()');
    $return = __('No package is assigned to this event', 'mobile-dj-manager');
    $package_price = '';
    $event_package = mdjm_get_event_package($event_id);
    if (!empty($event_package)) {
        $return = mdjm_get_package_name($event_id);
        if (!empty($price)) {
            $return .= ' ' . mdjm_currency_filter(mdjm_format_amount(mdjm_get_package_price($event_package)));
        }
    }
    return $return;
}
コード例 #19
0
/**
 * Generate and display the content for the Events Overview dashboard widget.
 *
 * @since	1.3
 * @param
 * @return
 */
function mdjm_widget_events_overview()
{
    global $current_user;
    if (mdjm_employee_can('manage_mdjm')) {
        $stats = new MDJM_Stats();
        $enquiry_counts = array('month' => 0, 'this_year' => 0, 'last_year' => 0);
        $conversion_counts = array('month' => 0, 'this_year' => 0, 'last_year' => 0);
        $enquiry_periods = array('month' => date('Y-m-01'), 'this_year' => date('Y-01-01'), 'last_year' => date('Y-01-01', strtotime('-1 year')));
        foreach ($enquiry_periods as $period => $date) {
            $current_count = mdjm_count_events(array('start-date' => $date, 'end-date' => $period != 'last_year' ? date('Y-m-d') : date('Y-12-31', strtotime('-1 year'))));
            foreach ($current_count as $status => $count) {
                $enquiry_counts[$period] += $count;
                if (in_array($status, array('mdjm-approved', 'mdjm-contract', 'mdjm-completed', 'mdjm-cancelled'))) {
                    $conversion_counts[$period] += $count;
                }
            }
        }
        $completed_counts = array('month' => 0, 'this_year' => 0, 'last_year' => 0);
        $event_periods = array('month' => array(date('Y-m-01'), date('Y-m-d')), 'this_year' => array(date('Y-01-01'), date('Y-m-d')), 'last_year' => array(date('Y-m-01', strtotime('-1 year')), date('Y-12-31', strtotime('-1 year'))));
        foreach ($event_periods as $period => $date) {
            $current_count = mdjm_count_events(array('date' => $date, 'status' => 'mdjm-completed'));
            foreach ($current_count as $status => $count) {
                $completed_counts[$period] += $count;
            }
        }
        $income_month = $stats->get_income_by_date(null, date('n'), date('Y'));
        $income_year = $stats->get_income_by_date(null, '', date('Y'));
        $income_last = $stats->get_income_by_date(null, '', date('Y') - 1);
        $expense_month = $stats->get_expenses_by_date(null, date('n'), date('Y'));
        $expense_year = $stats->get_expenses_by_date(null, '', date('Y'));
        $expense_last = $stats->get_expenses_by_date(null, '', date('Y') - 1);
        $earnings_month = $income_month - $expense_month;
        $earnings_year = $income_year - $expense_year;
        $earnings_last = $income_last - $expense_last;
        ?>
		<div class="mdjm_stat_grid">
        	<?php 
        do_action('mdjm_before_events_overview');
        ?>
			<table>
				<thead>
					<tr>
						<th>&nbsp;</th>
						<th><?php 
        _e('MTD', 'mobile-dj-manager');
        ?>
</th>
						<th><?php 
        _e('YTD', 'mobile-dj-manager');
        ?>
</th>
						<th><?php 
        echo date('Y', strtotime('-1 year'));
        ?>
</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<th><?php 
        printf(__('%s Received', 'mobile-dj-manager'), get_post_status_object('mdjm-enquiry')->plural);
        ?>
</th>
						<td><?php 
        echo $enquiry_counts['month'];
        ?>
</td>
						<td><?php 
        echo $enquiry_counts['this_year'];
        ?>
</td>
						<td><?php 
        echo $enquiry_counts['last_year'];
        ?>
</td>
					</tr>
					<tr>
						<th><?php 
        printf(__('%s Converted', 'mobile-dj-manager'), get_post_status_object('mdjm-enquiry')->plural);
        ?>
</th>
						<td><?php 
        echo $conversion_counts['month'];
        ?>
</td>
						<td><?php 
        echo $conversion_counts['this_year'];
        ?>
</td>
						<td><?php 
        echo $conversion_counts['last_year'];
        ?>
</td>
					</tr>
					<tr>
						<th><?php 
        printf(__('%s Completed', 'mobile-dj-manager'), mdjm_get_label_plural());
        ?>
</th>
						<td><?php 
        echo $completed_counts['month'];
        ?>
</td>
						<td><?php 
        echo $completed_counts['this_year'];
        ?>
</td>
						<td><?php 
        echo $completed_counts['last_year'];
        ?>
</td>
					</tr>
					<tr>
						<th><?php 
        _e('Income', 'mobile-dj-manager');
        ?>
</th>
						<td><?php 
        echo mdjm_currency_filter(mdjm_format_amount($income_month));
        ?>
</td>
						<td><?php 
        echo mdjm_currency_filter(mdjm_format_amount($income_year));
        ?>
</td>
						<td><?php 
        echo mdjm_currency_filter(mdjm_format_amount($income_last));
        ?>
</td>
					</tr>
					<tr>
						<th><?php 
        _e('Outgoings', 'mobile-dj-manager');
        ?>
</th>
						<td><?php 
        echo mdjm_currency_filter(mdjm_format_amount($expense_month));
        ?>
</td>
						<td><?php 
        echo mdjm_currency_filter(mdjm_format_amount($expense_year));
        ?>
</td>
						<td><?php 
        echo mdjm_currency_filter(mdjm_format_amount($expense_last));
        ?>
</td>
					</tr>
					<tr>
						<th><?php 
        _e('Earnings', 'mobile-dj-manager');
        ?>
</th>
						<td><?php 
        echo mdjm_currency_filter(mdjm_format_amount($earnings_month));
        ?>
</td>
						<td><?php 
        echo mdjm_currency_filter(mdjm_format_amount($earnings_year));
        ?>
</td>
						<td><?php 
        echo mdjm_currency_filter(mdjm_format_amount($earnings_last));
        ?>
</td>
					</tr>
				</tbody>
			</table>
			
			<p>
				<?php 
        printf(__('<a href="%s">Create %s</a>', 'mobile-dj-manager'), admin_url('post-new.php?post_type=mdjm-event'), mdjm_get_label_singular());
        ?>
				&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
				<?php 
        printf(__('<a href="%s">Manage %s</a>', 'mobile-dj-manager'), admin_url('edit.php?post_type=mdjm-event'), mdjm_get_label_plural());
        ?>
				&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
				<?php 
        printf(__('<a href="%s">Transactions</a>', 'mobile-dj-manager'), admin_url('edit.php?post_type=mdjm-transaction'));
        ?>
				&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
				<?php 
        printf(__('<a href="%s">Settings</a>', 'mobile-dj-manager'), admin_url('admin.php?page=mdjm-settings'));
        ?>
            </p>

			<?php 
        $sources = $stats->get_enquiry_sources_by_date('this_month');
        ?>

			<?php 
        if (!empty($sources)) {
            ?>
				
				<?php 
            foreach ($sources as $count => $source) {
                ?>
					<p>
					 <?php 
                printf(__('<p>Most enquiries have been received via <strong>%s (%d)</strong> so far this month.', 'mobile-dj-manager'), $source, (int) $count);
                ?>
					</p>
				<?php 
            }
            ?>
				
			<?php 
        } else {
            ?>
				<p><?php 
            _e('No enquiries yet this month.', 'mobile-dj-manager');
            ?>
</p>
			<?php 
        }
        ?>

			<?php 
        do_action('mdjm_after_events_overview');
        ?>
			
		</div>
    
		<?php 
    }
}
コード例 #20
0
ファイル: equipment.php プロジェクト: mdjm/mobile-dj-manager
/**
 * Define the data to be displayed in each of the custom columns for the Addon post types
 *
 * @since	1.4
 * @param	str		$column_name	The name of the column to display
 * @param	int		$post_id		The current post ID
 * @return
 */
function mdjm_addon_posts_custom_column($column_name, $post_id)
{
    global $post;
    switch ($column_name) {
        // Category
        case 'addon_category':
            echo get_the_term_list($post_id, 'addon-category', '', ', ', '');
            break;
            // Availability
        // Availability
        case 'availability':
            $output = array();
            if (!mdjm_addon_is_restricted_by_date($post_id)) {
                $output[] = __('Always', 'mobile-dj-manager');
            } else {
                $availability = mdjm_get_addon_months_available($post_id);
                if (!$availability) {
                    $output[] = __('Always', 'mobile-dj-manager');
                } else {
                    $i = 0;
                    foreach ($availability as $month) {
                        $output[] = mdjm_month_num_to_name($availability[$i]);
                        $i++;
                    }
                }
            }
            echo implode(', ', $output);
            break;
            // Event Types
        // Event Types
        case 'event_types':
            $output = array();
            $event_label = mdjm_get_label_singular();
            $event_types = mdjm_get_addon_event_types($post_id);
            if (in_array('all', $event_types)) {
                $output[] = sprintf(__('All %s Types', 'mobile-dj-manager'), $event_label);
            } else {
                foreach ($event_types as $event_type) {
                    $term = get_term($event_type, 'event-types');
                    if (!empty($term)) {
                        $output[] = $term->name;
                    }
                }
            }
            echo implode(', ', $output);
            break;
            // Employees
        // Employees
        case 'employees':
            $employees = mdjm_get_employees_with_addon($post_id);
            $output = array();
            if (in_array('all', $employees)) {
                $output[] = __('All Employees', 'mobile-dj-manager');
            } else {
                foreach ($employees as $employee) {
                    if ('all' == $employee) {
                        continue;
                    }
                    $output[] = '<a href="' . get_edit_user_link($employee) . '">' . mdjm_get_employee_display_name($employee) . '</a>';
                }
            }
            echo implode('<br />', $output);
            break;
            // Price
        // Price
        case 'price':
            if (mdjm_addon_has_variable_prices($post_id)) {
                $range = mdjm_get_addon_price_range($post_id);
                echo mdjm_currency_filter(mdjm_format_amount($range['low']));
                echo ' &mdash; ';
                echo mdjm_currency_filter(mdjm_format_amount($range['high']));
            } else {
                echo mdjm_currency_filter(mdjm_format_amount(mdjm_get_addon_price($post_id)));
            }
            break;
            // Usage
        // Usage
        case 'usage':
            $packages = mdjm_count_packages_with_addon($post_id);
            $events = mdjm_count_events_with_addon($post_id);
            echo $packages . _n(' Package', ' Packages', $packages, 'mobile-dj-manager') . '<br />';
            echo $events . ' ' . _n(mdjm_get_label_singular(), mdjm_get_label_plural(), $events, 'mobile-dj-manager');
            break;
    }
    // switch
}
コード例 #21
0
 /**
  * Set the CSV columns
  *
  * @access	public
  * @since	1.4
  * @return	srr		$cols	All the columns
  */
 public function csv_cols()
 {
     $cols = array('date' => __('Date', 'mobile-dj-manager'), 'earnings' => __('Earnings', 'mobile-dj-manager') . ' (' . html_entity_decode(mdjm_currency_filter('')) . ')');
     return $cols;
 }
コード例 #22
0
echo esc_html(mdjm_get_deposit_label());
?>
 &ndash; <?php 
echo mdjm_currency_filter(mdjm_format_amount($mdjm_event->get_remaining_deposit()));
?>
<br />
    
        <input type="radio" name="mdjm_payment_amount" id="mdjm-payment-balance" value="balance"<?php 
echo $balance_disabled;
checked($selected, 'balance');
?>
 /> <?php 
echo esc_html(mdjm_get_balance_label());
?>
 &ndash; <?php 
echo mdjm_currency_filter(mdjm_format_amount($mdjm_event->get_balance()));
?>
<br />
    
        <input type="radio" name="mdjm_payment_amount" id="mdjm-payment-part" value="part_payment"<?php 
checked($selected, 'part_payment');
?>
 /> <?php 
echo mdjm_get_other_amount_label();
?>
 <span id="mdjm-payment-custom"<?php 
echo $other_amount_style;
?>
><?php 
echo mdjm_currency_symbol();
?>
 /**
  * Display graph totals.
  *
  * @since	1.4
  */
 public function graph_totals()
 {
     ?>
     <p class="mdjm_graph_totals">
         <strong>
             <?php 
     _e('Total transactions for period shown: ', 'mobile-dj-manager');
     echo $this->total_txn_count;
     ?>
         </strong>
     </p>
     <p class="mdjm_graph_totals">
         <strong>
             <?php 
     _e('Income for period shown: ', 'mobile-dj-manager');
     echo mdjm_currency_filter(mdjm_format_amount($this->total_txn_income));
     ?>
         </strong>
     </p>
     <p class="mdjm_graph_totals">
         <strong>
             <?php 
     _e('Expenses for period shown: ', 'mobile-dj-manager');
     echo mdjm_currency_filter(mdjm_format_amount($this->total_txn_expense));
     ?>
         </strong>
     </p>
     <p class="mdjm_graph_totals">
         <strong>
             <?php 
     _e('Earnings for period shown: ', 'mobile-dj-manager');
     echo mdjm_currency_filter(mdjm_format_amount($this->total_txn_income - $this->total_txn_expense));
     ?>
         </strong>
     </p>
     <p class="mdjm_graph_totals">
         <strong>
             <?php 
     _e('Total turnover for period shown: ', 'mobile-dj-manager');
     echo mdjm_currency_filter(mdjm_format_amount($this->total_txn_income + $this->total_txn_expense));
     ?>
         </strong>
     </p>
     <?php 
 }
コード例 #24
0
/**
 * Renders the HTML code for an Addons checkbox list
 *
 * @since	1.0
 * @param	arr		$args	See @defaultsSettings for the dropdown
 * @return	HTML output for checkboxes
 */
function mdjm_addons_checkboxes($args = array())
{
    global $current_user;
    $defaults = array('name' => 'event_addons', 'id' => '', 'class' => '', 'current' => array(), 'employee' => is_user_logged_in() && !current_user_can('client') ? $current_user->ID : '', 'package' => '', 'event_type' => false, 'event_date' => false, 'title' => true, 'cost' => false);
    $args = wp_parse_args($args, $defaults);
    $output = '';
    $options = array();
    $addons = mdjm_get_addons();
    if (empty($args['id'])) {
        $args['id'] = $args['name'];
    }
    // For backwards compatibility
    if (isset($args['dj'])) {
        $args['employee'] = $args['dj'];
    }
    if ($addons) {
        foreach ($addons as $addon) {
            if (!empty($args['package'])) {
                if (is_numeric($args['package'])) {
                    $package = mdjm_get_package($args['package']);
                } else {
                    $package = mdjm_get_package_by('slug', $args['package']);
                }
                if ($package) {
                    $package_items = mdjm_get_package_addons($package->ID);
                }
                if (!empty($package_items) && in_array($addon->ID, $package_items)) {
                    continue;
                }
            }
            if (!empty($args['employee'])) {
                if (!mdjm_employee_has_addon($addon->ID, $args['employee'])) {
                    continue;
                }
            }
            if ($args['event_type']) {
                if (!mdjm_addon_is_available_for_event_type($addon->ID, $args['event_type'])) {
                    continue;
                }
            }
            if ($args['event_date']) {
                if (!mdjm_addon_is_available_for_event_date($addon->ID, $args['event_date'])) {
                    continue;
                }
            } else {
                $args['event_date'] = NULL;
            }
            $price = '';
            if ($args['cost'] == true) {
                $price .= ' - ' . mdjm_currency_filter(mdjm_format_amount(mdjm_get_addon_price($addon->ID, $args['event_date'])));
            }
            $term = '';
            $terms = get_the_terms($addon->ID, 'addon-category');
            if (!empty($terms)) {
                $term = esc_html($terms[0]->name);
            }
            $options[$term][] = array($addon->ID => $addon->post_title . $price);
        }
    }
    if (!empty($options)) {
        ksort($options);
        $i = 0;
        foreach ($options as $term => $addons) {
            if ($i == 0) {
                $output .= '<strong>' . $term . '</strong><br />' . "\n";
            }
            foreach ($addons as $items) {
                foreach ($items as $item_id => $item) {
                    $output .= sprintf('<input type="checkbox" name="%1$s[]" id="%1$s-%2$d" class="%3$s" value="%2$d" %4$s />', esc_attr($args['name']), $item_id, sanitize_html_class($args['class']), checked(in_array($item_id, $args['current']), true, false));
                    $output .= '<label for="' . esc_attr($args['name']) . '-' . $item_id . '" title="' . mdjm_get_addon_excerpt($item_id) . '">';
                    $output .= esc_html($item);
                    $output .= '</label>';
                    $output .= '<br />';
                    $i++;
                    if ($i >= count($items)) {
                        $i = 0;
                    }
                }
            }
        }
    } else {
        $output .= __('No add-ons are available', 'mobile-dj-manager');
    }
    return $output;
}
コード例 #25
0
 /**
  * Retrieves the total of all transactions over the given date period.
  * Total income - total expenditure if $status = any
  *
  * @since	1.4
  * @param	str		$period		The date period for which to collect the stats
  * @param	int		$status		The transaction status' for which to collect the stats
  * @return	int		$total		The total value for all transactions that meet the criteria
  */
 public function get_txns_total_by_date($period = 'this_week', $status = 'any')
 {
     $this->setup_dates($period);
     $args = array('post_status' => $status, 'date_query' => array($this->start_date), 'meta_query' => array(array('key' => '_mdjm_txn_status', 'value' => 'Completed')));
     $txns = mdjm_get_txns($args);
     $total = 0;
     if ($txns) {
         foreach ($txns as $txn) {
             if ($args['post_status'] == 'any') {
                 if ($txn->post_status == 'mdjm-income') {
                     $total += mdjm_sanitize_amount(get_post_meta($txn->ID, '_mdjm_txn_total', true));
                 } else {
                     $total -= mdjm_sanitize_amount(get_post_meta($txn->ID, '_mdjm_txn_total', true));
                 }
             } else {
                 $total += mdjm_sanitize_amount(get_post_meta($txn->ID, '_mdjm_txn_total', true));
             }
         }
     }
     $total = apply_filters('get_txns_total_by_date', $total, $period, $status);
     return mdjm_currency_filter(mdjm_format_amount($total));
 }
コード例 #26
0
/**
 * Show report graphs for earnings.
 *
 * @since	1.4
 * @return	void
*/
function mdjm_transactions_reports_graph()
{
    // Retrieve the queried dates
    $dates = mdjm_get_report_dates();
    $stats = new MDJM_Stats();
    // Determine graph options
    switch ($dates['range']) {
        case 'today':
        case 'yesterday':
            $day_by_day = true;
            break;
        case 'last_year':
        case 'this_year':
            $day_by_day = false;
            break;
        case 'last_quarter':
        case 'this_quarter':
            $day_by_day = true;
            break;
        case 'other':
            if ($dates['m_end'] - $dates['m_start'] >= 3 || $dates['year_end'] > $dates['year'] && $dates['m_start'] - $dates['m_end'] != 10) {
                $day_by_day = false;
            } else {
                $day_by_day = true;
            }
            break;
        default:
            $day_by_day = true;
            break;
    }
    $income_totals = 0.0;
    // Total income for time period shown
    $expense_totals = 0.0;
    // Total expense for time period shown
    $events_totals = 0;
    // Total events for the time period shown
    if ($dates['range'] == 'today' || $dates['range'] == 'yesterday') {
        // Hour by hour
        $hour = 1;
        $month = $dates['m_start'];
        while ($hour <= 23) {
            $income = $stats->get_income_by_date($dates['day'], $month, $dates['year'], $hour);
            $expense = $stats->get_expenses_by_date($dates['day'], $month, $dates['year'], $hour);
            $events = $stats->get_events_by_date($dates['day'], $month, $dates['year'], $hour);
            $income_totals += $income;
            $expense_totals += $expense;
            $events_totals += $events;
            $date = mktime($hour, 0, 0, $month, $dates['day'], $dates['year']) * 1000;
            $income_data[] = array($date, $income);
            $expense_data[] = array($date, $expense);
            $events_data[] = array($date, $events);
            $hour++;
        }
    } elseif ($dates['range'] == 'this_week' || $dates['range'] == 'last_week') {
        $num_of_days = cal_days_in_month(CAL_GREGORIAN, $dates['m_start'], $dates['year']);
        $report_dates = array();
        $i = 0;
        while ($i <= 6) {
            if ($dates['day'] + $i <= $num_of_days) {
                $report_dates[$i] = array('day' => (string) $dates['day'] + $i, 'month' => $dates['m_start'], 'year' => $dates['year']);
            } else {
                $report_dates[$i] = array('day' => (string) $i, 'month' => $dates['m_end'], 'year' => $dates['year_end']);
            }
            $i++;
        }
        foreach ($report_dates as $report_date) {
            $income = $stats->get_income_by_date($report_date['day'], $report_date['month'], $report_date['year']);
            $income_totals += $income;
            $expense = $stats->get_expenses_by_date($report_date['day'], $report_date['month'], $report_date['year']);
            $expense_totals += $expense;
            $events = $stats->get_events_by_date($report_date['day'], $report_date['month'], $report_date['year']);
            $events_totals += $events;
            $date = mktime(0, 0, 0, $report_date['month'], $report_date['day'], $report_date['year']) * 1000;
            $income_data[] = array($date, $income);
            $expense_data[] = array($date, $expense);
            $events_data[] = array($date, $events);
        }
    } else {
        $y = $dates['year'];
        $temp_data = array('income' => array(), 'expense' => array());
        while ($y <= $dates['year_end']) {
            $last_year = false;
            if ($dates['year'] == $dates['year_end']) {
                $month_start = $dates['m_start'];
                $month_end = $dates['m_end'];
                $last_year = true;
            } elseif ($y == $dates['year']) {
                $month_start = $dates['m_start'];
                $month_end = 12;
            } elseif ($y == $dates['year_end']) {
                $month_start = 1;
                $month_end = $dates['m_end'];
            } else {
                $month_start = 1;
                $month_end = 12;
            }
            $i = $month_start;
            while ($i <= $month_end) {
                $d = $dates['day'];
                if ($i == $month_end) {
                    $num_of_days = $dates['day_end'];
                    if ($month_start < $month_end) {
                        $d = 1;
                    }
                } else {
                    $num_of_days = cal_days_in_month(CAL_GREGORIAN, $i, $y);
                }
                while ($d <= $num_of_days) {
                    $income = $stats->get_income_by_date($d, $i, $y);
                    $income_totals += $income;
                    $expense = $stats->get_expenses_by_date($d, $i, $y);
                    $expense_totals += $expense;
                    $events = $stats->get_events_by_date($d, $i, $y);
                    $events_totals += $events;
                    $temp_data['income'][$y][$i][$d] = $income;
                    $temp_data['expense'][$y][$i][$d] = $expense;
                    $temp_data['events'][$y][$i][$d] = $events;
                    $d++;
                }
                $i++;
            }
            $y++;
        }
        $income_data = array();
        $expense_data = array();
        // When using 3 months or smaller as the custom range, show each day individually on the graph
        if ($day_by_day) {
            foreach ($temp_data['income'] as $year => $months) {
                foreach ($months as $month => $days) {
                    foreach ($days as $day => $income) {
                        $date = mktime(0, 0, 0, $month, $day, $year) * 1000;
                        $income_data[] = array($date, $income);
                    }
                }
            }
            foreach ($temp_data['expense'] as $year => $months) {
                foreach ($months as $month => $days) {
                    foreach ($days as $day => $expense) {
                        $date = mktime(0, 0, 0, $month, $day, $year) * 1000;
                        $expense_data[] = array($date, $expense);
                    }
                }
            }
            foreach ($temp_data['events'] as $year => $months) {
                foreach ($months as $month => $days) {
                    foreach ($days as $day => $events) {
                        $date = mktime(0, 0, 0, $month, $day, $year) * 1000;
                        $events_data[] = array($date, $events);
                    }
                }
            }
            // When showing more than 3 months of results, group them by month, by the first (except for the last month, group on the last day of the month selected)
        } else {
            foreach ($temp_data['income'] as $year => $months) {
                $month_keys = array_keys($months);
                $last_month = end($month_keys);
                foreach ($months as $month => $days) {
                    $day_keys = array_keys($days);
                    $last_day = end($day_keys);
                    $consolidated_date = $month === $last_month ? $last_day : 1;
                    $income = array_sum($days);
                    $date = mktime(0, 0, 0, $month, $consolidated_date, $year) * 1000;
                    $income_data[] = array($date, $income);
                }
            }
            foreach ($temp_data['expense'] as $year => $months) {
                $month_keys = array_keys($months);
                $last_month = end($month_keys);
                foreach ($months as $month => $days) {
                    $day_keys = array_keys($days);
                    $last_day = end($day_keys);
                    $consolidated_date = $month === $last_month ? $last_day : 1;
                    $expense = array_sum($days);
                    $date = mktime(0, 0, 0, $month, $consolidated_date, $year) * 1000;
                    $expense_data[] = array($date, $expense);
                }
            }
            foreach ($temp_data['events'] as $year => $months) {
                $month_keys = array_keys($months);
                $last_month = end($month_keys);
                foreach ($months as $month => $days) {
                    $day_keys = array_keys($days);
                    $last_day = end($day_keys);
                    $consolidated_date = $month === $last_month ? $last_day : 1;
                    $events = array_sum($days);
                    $date = mktime(0, 0, 0, $month, $consolidated_date, $year) * 1000;
                    $events_data[] = array($date, $events);
                }
            }
        }
    }
    $data = array(__('Income', 'mobile-dj-manager') => $income_data, __('Expense', 'mobile-dj-manager') => $expense_data, mdjm_get_label_plural() => $events_data);
    // start our own output buffer
    ob_start();
    ?>
	<div id="mdjm-dashboard-widgets-wrap">
		<div class="metabox-holder" style="padding-top: 0;">
			<div class="postbox">
				<h3><span><?php 
    _e('Transactions Over Time', 'mobile-dj-manager');
    ?>
</span></h3>

				<div class="inside">
					<?php 
    mdjm_reports_graph_controls();
    $graph = new MDJM_Graph($data);
    $graph->set('x_mode', 'time');
    $graph->set('multiple_y_axes', false);
    $graph->display();
    ?>

					<p class="mdjm_graph_totals">
						<strong>
							<?php 
    _e('Total income for period shown: ', 'mobile-dj-manager');
    echo mdjm_currency_filter(mdjm_format_amount($income_totals));
    ?>
						</strong>
					</p>
					<p class="mdjm_graph_totals">
						<strong>
							<?php 
    _e('Total expense for period shown: ', 'mobile-dj-manager');
    echo mdjm_currency_filter(mdjm_format_amount($expense_totals));
    ?>
						</strong>
					</p>
                    <p class="mdjm_graph_totals">
						<strong>
							<?php 
    _e('Total earnings for period shown: ', 'mobile-dj-manager');
    echo mdjm_currency_filter(mdjm_format_amount($income_totals - $expense_totals));
    ?>
						</strong>
					</p>
					<p class="mdjm_graph_totals">
						<strong>
							<?php 
    printf(__('Total %s for period shown: ', 'mobile-dj-manager'), mdjm_get_label_plural());
    echo $events_totals;
    ?>
						</strong>
					</p>

					<?php 
    do_action('mdjm_reports_transactions_graph_additional_stats');
    ?>

					<p class="mdjm-graph-notes">
                        <span>
                            <em><sup>&dagger;</sup> <?php 
    printf(__('Stats include all %s taking place within the date period selected.', 'mobile-dj-manager'), mdjm_get_label_plural(true));
    ?>
</em>
                        </span>
                    </p>

				</div>
			</div>
		</div>
	</div>
	<?php 
    // get output buffer contents and end our own buffer
    $output = ob_get_contents();
    ob_end_clean();
    echo $output;
}
コード例 #27
0
/**
 * Save the event transaction
 *
 *
 */
function mdjm_save_event_transaction_ajax()
{
    global $mdjm_event;
    $result = array();
    $mdjm_event = new MDJM_Event($_POST['event_id']);
    $mdjm_txn = new MDJM_Txn();
    $txn_data = array('post_parent' => $_POST['event_id'], 'post_author' => $mdjm_event->client, 'post_status' => $_POST['direction'] == 'Out' ? 'mdjm-expenditure' : 'mdjm-income', 'post_date' => date('Y-m-d H:i:s', strtotime($_POST['date'])));
    $txn_meta = array('_mdjm_txn_status' => 'Completed', '_mdjm_payment_from' => $mdjm_event->client, '_mdjm_txn_total' => $_POST['amount'], '_mdjm_payer_firstname' => mdjm_get_client_firstname($mdjm_event->client), '_mdjm_payer_lastname' => mdjm_get_client_lastname($mdjm_event->client), '_mdjm_payer_email' => mdjm_get_client_email($mdjm_event->client), '_mdjm_payment_from' => mdjm_get_client_display_name($mdjm_event->client), '_mdjm_txn_source' => $_POST['src']);
    if ($_POST['direction'] == 'In') {
        if (!empty($_POST['from'])) {
            $txn_meta['_mdjm_payment_from'] = sanitize_text_field($_POST['from']);
        } else {
            $txn_meta['_mdjm_payment_from'] = mdjm_get_client_display_name($mdjm_event->client);
        }
    }
    if ($_POST['direction'] == 'Out') {
        if (!empty($_POST['to'])) {
            $txn_meta['_mdjm_payment_to'] = sanitize_text_field($_POST['to']);
        } else {
            $txn_meta['_mdjm_payment_to'] = mdjm_get_client_display_name($mdjm_event->client);
        }
    }
    $mdjm_txn->create($txn_data, $txn_meta);
    if ($mdjm_txn->ID > 0) {
        $result['type'] = 'success';
        mdjm_set_txn_type($mdjm_txn->ID, $_POST['for']);
        $args = array('user_id' => get_current_user_id(), 'event_id' => $_POST['event_id'], 'comment_content' => sprintf(__('%1$s payment of %2$s received for %3$s %4$s.', 'mobile-dj-manager'), $_POST['direction'] == 'In' ? __('Incoming', 'mobile-dj-manager') : __('Outgoing', 'mobile-dj-manager'), mdjm_currency_filter(mdjm_format_amount($_POST['amount'])), mdjm_get_label_singular(true), mdjm_get_event_contract_id($_POST['event_id'])));
        mdjm_add_journal($args);
        // Email overide
        if (empty($_POST['send_notice']) && mdjm_get_option('manual_payment_cfm_template')) {
            $manual_email_template = mdjm_get_option('manual_payment_cfm_template');
            mdjm_update_option('manual_payment_cfm_template', 0);
        }
        $payment_for = $mdjm_txn->get_type();
        $amount = mdjm_currency_filter(mdjm_format_amount($_POST['amount']));
        mdjm_add_content_tag('payment_for', __('Reason for payment', 'mobile-dj-manager'), function () use($payment_for) {
            return $payment_for;
        });
        mdjm_add_content_tag('payment_amount', __('Payment amount', 'mobile-dj-manager'), function () use($amount) {
            return $amount;
        });
        mdjm_add_content_tag('payment_date', __('Date of payment', 'mobile-dj-manager'), 'mdjm_content_tag_ddmmyyyy');
        /**
         * Allow hooks into this payment. The hook is suffixed with 'in' or 'out' depending
         * on the payment direction. i.e. mdjm_post_add_manual_txn_in and mdjm_post_add_manual_txn_out
         *
         * @since	1.3.7
         * @param	int		$event_id
         * @param	obj		$txn_id
         */
        do_action('mdjm_post_add_manual_txn_' . strtolower($_POST['direction']), $_POST['event_id'], $mdjm_txn->ID);
        // Email overide
        if (empty($_POST['send_notice']) && isset($manual_email_template)) {
            mdjm_update_option('manual_payment_cfm_template', $manual_email_template);
        }
        $result['deposit_paid'] = 'N';
        $result['balance_paid'] = 'N';
        if ($mdjm_event->get_remaining_deposit() < 1) {
            mdjm_update_event_meta($mdjm_event->ID, array('_mdjm_event_deposit_status' => 'Paid'));
            $result['deposit_paid'] = 'Y';
        }
        if ($mdjm_event->get_balance() < 1) {
            mdjm_update_event_meta($mdjm_event->ID, array('_mdjm_event_balance_status' => 'Paid'));
            mdjm_update_event_meta($mdjm_event->ID, array('_mdjm_event_deposit_status' => 'Paid'));
            $result['balance_paid'] = 'Y';
            $result['deposit_paid'] = 'Y';
        }
    } else {
        $result['type'] = 'error';
        $result['msg'] = __('Unable to add transaction', 'mobile-dj-manager');
    }
    ob_start();
    mdjm_do_event_txn_table($_POST['event_id']);
    $result['transactions'] = ob_get_contents();
    ob_get_clean();
    echo json_encode($result);
    die;
}
コード例 #28
0
 public function notification_content($task)
 {
     global $mdjm, $mdjm_settings;
     if (empty($task)) {
         if (MDJM_DEBUG == true) {
             MDJM()->debug->log_it('ERROR: No task was parsed ' . __METHOD__);
         }
     } else {
         if (MDJM_DEBUG == true) {
             MDJM()->debug->log_it('Creating notification content for ' . $task['taskinfo']['name']);
         }
     }
     /* -- Start the email content -- */
     $content = 'The ' . $task['taskinfo']['name'] . ' scheduled task from ' . MDJM_COMPANY . ' has completed. ' . "\r\n" . "\r\n" . 'Task Start time: ' . date('H:i:s l, jS F Y', $task['start']) . "\r\n" . "\r\n";
     /* Build the email content relating to the current task */
     switch ($task['taskinfo']['slug']) {
         case 'complete-events':
             // Notification content for Complete Events task
             $content .= $task['total'] . ' event(s) have been marked as completed...' . "\r\n" . "\r\n" . '----------------------------------------' . '----------------------------------------' . "\r\n";
             /* -- List each event -- */
             foreach ($task['data'] as $eventinfo) {
                 $content .= 'Event ID: ' . $eventinfo['id'] . "\r\n" . 'Date: ' . $eventinfo['date'] . "\r\n" . 'Venue: ' . $eventinfo['venue'] . "\r\n" . 'Client: ' . $eventinfo['client'] . "\r\n" . 'DJ: ' . $eventinfo['djinfo']->display_name . "\r\n" . 'Link: ' . get_edit_post_link($eventinfo['id'], '') . "\r\n" . '----------------------------------------' . '----------------------------------------' . "\r\n";
             }
             // End Foreach
             break;
         case 'fail-enquiry':
             $content .= $task['total'] . ' enquiry(s) have been marked as lost...' . "\r\n" . "\r\n" . '----------------------------------------' . '----------------------------------------' . "\r\n";
             foreach ($task['data'] as $eventinfo) {
                 $content .= 'Event ID: ' . $eventinfo['id'] . "\r\n" . 'Date: ' . $eventinfo['date'] . "\r\n" . 'Client: ' . $eventinfo['client'] . "\r\n" . 'DJ: ' . $eventinfo['djinfo']->display_name . "\r\n" . 'Link: ' . get_edit_post_link($eventinfo['id'], '') . "\r\n" . '----------------------------------------' . '----------------------------------------' . "\r\n";
             }
             // End Foreach
             break;
         case 'request-deposit':
             $content .= $task['total'] . ' deposit requests ' . (!empty($task['taskinfo']['options']['email_client']) && $task['taskinfo']['options']['email_client'] == 'Y' ? ' have been sent' : ' need to be requested') . "\r\n" . "\r\n" . '----------------------------------------' . '----------------------------------------' . "\r\n";
             foreach ($task['data'] as $eventinfo) {
                 $content .= 'Event ID: ' . $eventinfo['id'] . "\r\n" . 'Date: ' . $eventinfo['date'] . "\r\n" . 'Client: ' . $eventinfo['client'] . "\r\n" . 'DJ: ' . $eventinfo['djinfo']->display_name . "\r\n" . mdjm_get_deposit_label() . ': ' . mdjm_currency_filter(mdjm_sanitize_amount($eventinfo['deposit'])) . "\r\n" . 'Link: ' . get_edit_post_link($eventinfo['id'], '') . "\r\n" . '----------------------------------------' . '----------------------------------------' . "\r\n";
             }
             // End Foreach
             break;
         case 'balance-reminder':
             $content .= $task['total'] . ' balance requests have been sent' . "\r\n" . "\r\n" . '----------------------------------------' . '----------------------------------------' . "\r\n";
             foreach ($task['data'] as $eventinfo) {
                 $content .= 'Event ID: ' . $eventinfo['id'] . "\r\n" . 'Date: ' . $eventinfo['date'] . "\r\n" . 'Client: ' . $eventinfo['client'] . "\r\n" . 'DJ: ' . $eventinfo['djinfo']->display_name . "\r\n" . mdjm_get_balance_label() . ' Due: ' . mdjm_currency_filter(mdjm_sanitize_amount($eventinfo['cost'] - $eventinfo['deposit'])) . "\r\n" . 'Link: ' . get_edit_post_link($eventinfo['id'], '') . "\r\n" . '----------------------------------------' . '----------------------------------------' . "\r\n";
             }
             // End Foreach
             break;
         case 'client-feedback':
             $content .= $task['total'] . ' client feedback requests have been sent' . "\r\n" . "\r\n" . '----------------------------------------' . '----------------------------------------' . "\r\n";
             foreach ($task['data'] as $eventinfo) {
                 $content .= 'Event ID: ' . $eventinfo['id'] . "\r\n" . 'Date: ' . $eventinfo['date'] . "\r\n" . 'Client: ' . $eventinfo['client'] . "\r\n" . 'DJ: ' . $eventinfo['djinfo']->display_name . "\r\n" . '----------------------------------------' . '----------------------------------------' . "\r\n";
             }
             break;
     }
     // Switch
     /* -- Complete the email content -- */
     $content .= 'Task End time: ' . date('H:i:s l, jS F Y', $task['end']) . "\r\n" . "\r\n" . 'This email was generated by the MDJM Event Management for WordPress plugin - http://mdjm.co.uk';
     /* -- Return the content -- */
     return $content;
 }
コード例 #29
0
ファイル: quotes.php プロジェクト: mdjm/mobile-dj-manager
/**
 * Define the data to be displayed in each of the custom columns for the Quote post types
 *
 * @since	0.9
 * @param	str		$column_name	The name of the column to display
 * @param	int		$post_id		The current post ID
 * @return
 */
function mdjm_quote_posts_custom_column($column_name, $post_id)
{
    if ($column_name == 'quote_event' || $column_name == 'quote_value') {
        $parent = wp_get_post_parent_id($post_id);
    }
    switch ($column_name) {
        // Quote Date
        case 'date':
            echo get_the_date('d M Y H:i:s');
            break;
            // Event
        // Event
        case 'quote_event':
            if (!empty($parent)) {
                printf('<a href="%s">%s</a><br /><em>%s</em>', admin_url('/post.php?post={$parent}&action=edit'), mdjm_get_event_contract_id($parent), mdjm_get_event_date($parent));
            } else {
                _e('N/A', 'mobile-dj-manager');
            }
            break;
            // Client
        // Client
        case 'quote_client':
            global $post;
            echo '<a href="' . admin_url('admin.php?page=mdjm-clients&action=view_client&client_id=' . $post->post_author) . '">' . get_the_author() . '</a>';
            break;
            // Cost
        // Cost
        case 'quote_value':
            echo mdjm_currency_filter(mdjm_get_event_price($parent));
            break;
            // Date Viewed
        // Date Viewed
        case 'quote_view_date':
            if ('mdjm-quote-viewed' == get_post_status($post_id)) {
                echo date('d M Y H:i:s', strtotime(get_post_meta($post_id, '_mdjm_quote_viewed_date', true)));
            } else {
                _e('N/A', 'mobile-dj-manager');
            }
            break;
            // View Count
        // View Count
        case 'quote_view_count':
            $count = get_post_meta($post_id, '_mdjm_quote_viewed_count', true);
            if (empty($count)) {
                $count = 0;
            }
            echo $count . _n(' time', ' times', $count, 'mobile-dj-manager');
            break;
    }
    // switch
}
コード例 #30
0
/**
 * Mark event employees salaries as paid.
 *
 * @since	1.3
 * @param	int		$event_id		The event ID.
 * @param	int		$_employee_id	User ID of employee to pay.
 * @param	str		$amount			Amount to pay.
 * @return	mixed	Array of 'success' and 'failed' payments or if individual employee, true or false.
 */
function mdjm_pay_event_employees($event_id, $_employee_id = 0, $amount = 0)
{
    if (!mdjm_get_option('enable_employee_payments')) {
        return;
    }
    $mdjm_event = mdjm_get_event($event_id);
    if (!$mdjm_event) {
        return false;
    }
    $employees = $mdjm_event->get_all_employees();
    if (!$employees) {
        return false;
    }
    do_action('mdjm_pre_pay_event_employees', $event_id, $_employee_id, $mdjm_event);
    foreach ($employees as $employee_id => $employee_data) {
        if ($employee_data['payment_status'] == 'paid') {
            MDJM()->debug->log_it(sprintf('Skipping payment to %s. Employee already paid.', mdjm_get_employee_display_name($employee_id)));
        }
        $mdjm_txn = new MDJM_Txn($employee_data['txn_id']);
        if (!$mdjm_txn) {
            return false;
        }
        MDJM()->debug->log_it(sprintf('Starting payment to %s for %s', mdjm_get_employee_display_name($employee_id), mdjm_currency_filter(mdjm_format_amount($mdjm_txn->price))), true);
        if (!mdjm_set_employee_paid($employee_id, $event_id, $mdjm_txn->ID)) {
            MDJM()->debug->log_it(sprintf('Payment to %s failed', mdjm_get_employee_display_name($employee_id)));
            if (!empty($_employee_id)) {
                $return = false;
            } else {
                $return['failed'] = $employee_id;
            }
        } else {
            MDJM()->debug->log_it(sprintf('%s successfully paid %s', mdjm_get_employee_display_name($employee_id), mdjm_currency_filter(mdjm_format_amount($mdjm_txn->price))));
            mdjm_update_txn_meta($mdjm_txn->ID, array('_mdjm_txn_status' => 'Completed'));
            if (!empty($_employee_id)) {
                $return = true;
            } else {
                $return['success'] = $employee_id;
            }
        }
    }
    do_action('mdjm_post_pay_event_employees', $event_id, $_employee_id, $mdjm_event, $mdjm_txn->ID);
    return $return;
}