示例#1
0
/**
 * Show the items in each list
 *
 * @since 1.0
 * @return void
 */
function edd_wl_items_in_list_meta_box()
{
    $items = get_post_meta(get_the_ID(), 'edd_wish_list', true);
    if ($items) {
        foreach ($items as $item) {
            $item_option = !empty($item['options']) ? '<span class="edd-wl-item-title-option"> &ndash; ' . edd_get_cart_item_price_name($item) . '</span>' : '';
            ?>
			<p>
				<a href="<?php 
            echo admin_url('post.php?post=' . $item['id'] . '&action=edit');
            ?>
"><?php 
            echo get_the_title($item['id']);
            ?>
</a>

				<?php 
            echo $item_option;
            ?>

				<?php 
            echo '<br />' . edd_cart_item_price($item['id'], $item['options']);
            ?>
			</p>
		<?php 
        }
        ?>

		<p><strong><?php 
        echo __('Total:', 'edd-wish-lists') . ' ' . edd_wl_get_list_total(get_the_ID());
        ?>
</strong></p>
	<?php 
    } else {
        _e('No items have been added yet', 'edd-wish-lists');
    }
    ?>

<?php 
}
/**
 * Get cart item title
 *
 * @since 2.4.3
 * @param int $item Cart item array
 * @return string item title
 */
function edd_get_cart_item_name($item = array())
{
    $item_title = get_the_title($item['id']);
    if (empty($item_title)) {
        $item_title = $item['id'];
    }
    if (edd_has_variable_prices($item['id']) && false !== edd_get_cart_item_price_id($item)) {
        $item_title .= ' - ' . edd_get_cart_item_price_name($item);
    }
    return apply_filters('edd_get_cart_item_name', $item_title, $item['id'], $item);
}
示例#3
0
        echo esc_attr($item['id']);
        ?>
">
					<?php 
        do_action('edd_checkout_table_body_first', $item);
        ?>
					<td class="edd_cart_item_name">
						<?php 
        if (current_theme_supports('post-thumbnails') && has_post_thumbnail($item['id'])) {
            echo '<div class="edd_cart_item_image">';
            echo get_the_post_thumbnail($item['id'], apply_filters('edd_checkout_image_size', array(25, 25)));
            echo '</div>';
        }
        $item_title = get_the_title($item['id']);
        if (!empty($item['options']) && edd_has_variable_prices($item['id'])) {
            $item_title .= ' - ' . edd_get_cart_item_price_name($item);
        }
        echo '<span class="edd_checkout_cart_item_title">' . esc_html($item_title) . '</span>';
        ?>
					</td>
					<td class="edd_cart_item_price"><?php 
        echo edd_cart_item_price($item['id'], $item['options']);
        ?>
</td>
					<td class="edd_cart_actions form-inline">
						<?php 
        if (edd_item_quantities_enabled()) {
            ?>
							<input type="number" min="1" step="1" name="edd-cart-download-<?php 
            echo $key;
            ?>
/**
 * Item title
 * @since  1.0.2
 */
function edd_wl_item_title($item, $args = array())
{
    $item_id = $item['id'];
    $item_option = !empty($item['options']) ? apply_filters('edd_wl_item_title_options', '<span class="edd-wl-item-title-option">' . edd_get_cart_item_price_name($item) . '</span>') : '';
    $variable_price_id = isset($item['options']['price_id']) ? $item['options']['price_id'] : '';
    $already_purchased = apply_filters('edd_wl_item_title_already_purchased', edd_wl_has_purchased($item_id, $variable_price_id));
    if (current_theme_supports('post-thumbnails')) {
        $item_image = has_post_thumbnail($item_id) ? apply_filters('edd_wl_item_image', '<span class="edd-wl-item-image">' . get_the_post_thumbnail($item_id, apply_filters('edd_checkout_image_size', array(50, 50))) . '</span>') : '';
    }
    $defaults = apply_filters('edd_wl_item_title_defaults', array('wrapper_class' => '', 'wrapper' => 'span', 'class' => ''));
    $args = wp_parse_args($args, $defaults);
    extract($args, EXTR_SKIP);
    // add our default class
    $default_wrapper_class = ' edd-wl-item-title';
    $wrapper_class .= $wrapper_class ? $default_wrapper_class : trim($default_wrapper_class);
    $class = $class ? 'class="' . trim($class) . '"' : '';
    ob_start();
    $html = '';
    $link = '<a href="' . apply_filters('edd_wl_item_title_permalink', post_permalink($item_id), $item_id) . '" ' . $class . ' title="' . get_the_title($item_id) . '">' . get_the_title($item_id) . '</a>';
    $output = $link . $item_option . $already_purchased . $item_image;
    if ($wrapper) {
        $html = '<' . $wrapper . ' class="' . $wrapper_class . '"' . '>' . $output . '</' . $wrapper . '>';
    } else {
        $html .= $output;
    }
    echo $html;
    $html = ob_get_clean();
    return apply_filters('edd_wl_item_title', $html);
}
示例#5
0
 function edd_drip_cron_half_hourly_func()
 {
     $now = time();
     $thirty_mins_before = $now - 30 * 60;
     $args = array('status' => 'pending', 'start_date' => $thirty_mins_before, 'end_date' => $now);
     $p_query = new EDD_Payments_Query($args);
     $payments = $p_query->get_payments();
     foreach ($payments as $payment) {
         // push subscribe infor to server
         $drip_api = EDDDripApi::getInstance();
         $infor = $this->get_infor_by_payment_id($payment->ID);
         $email = $infor['email'];
         //get all item in the cart
         $cart_items = $infor['cart_items'];
         foreach ($cart_items as $item) {
             $drip_api->fire_event($email, 'Abandoned cart', array('value' => $item['price'], 'product_name' => $item['name'], 'price_name' => edd_get_cart_item_price_name($item)));
         }
     }
 }
/**
 * Process PayPal Purchase
 *
 * @since 1.0
 * @global $edd_options Array of all the EDD Options
 * @param array   $purchase_data Purchase Data
 * @return void
 */
function edd_process_paypal_purchase($purchase_data)
{
    global $edd_options;
    // Collect payment data
    $payment_data = array('price' => $purchase_data['price'], 'date' => $purchase_data['date'], 'user_email' => $purchase_data['user_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => edd_get_currency(), 'downloads' => $purchase_data['downloads'], 'user_info' => $purchase_data['user_info'], 'cart_details' => $purchase_data['cart_details'], 'gateway' => 'paypal', 'status' => 'pending');
    // Record the pending payment
    $payment = edd_insert_payment($payment_data);
    // Check payment
    if (!$payment) {
        // Record the error
        edd_record_gateway_error(__('Payment Error', 'edd'), sprintf(__('Payment creation failed before sending buyer to PayPal. Payment data: %s', 'edd'), json_encode($payment_data)), $payment);
        // Problems? send back
        edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
    } else {
        // Only send to PayPal if the pending payment is created successfully
        $listener_url = add_query_arg('edd-listener', 'IPN', home_url('index.php'));
        // Get the success url
        $return_url = add_query_arg(array('payment-confirmation' => 'paypal', 'payment-id' => $payment), get_permalink($edd_options['success_page']));
        // Get the PayPal redirect uri
        $paypal_redirect = trailingslashit(edd_get_paypal_redirect()) . '?';
        // Setup PayPal arguments
        $paypal_args = array('business' => $edd_options['paypal_email'], 'email' => $purchase_data['user_email'], 'invoice' => $purchase_data['purchase_key'], 'no_shipping' => '1', 'shipping' => '0', 'no_note' => '1', 'currency_code' => edd_get_currency(), 'charset' => get_bloginfo('charset'), 'custom' => $payment, 'rm' => '2', 'return' => $return_url, 'cancel_return' => edd_get_failed_transaction_uri('?payment-id=' . $payment), 'notify_url' => $listener_url, 'page_style' => edd_get_paypal_page_style(), 'cbt' => get_bloginfo('name'), 'bn' => 'EasyDigitalDownloads_SP');
        if (!empty($purchase_data['user_info']['address'])) {
            $paypal_args['address1'] = $purchase_data['user_info']['address']['line1'];
            $paypal_args['address2'] = $purchase_data['user_info']['address']['line2'];
            $paypal_args['city'] = $purchase_data['user_info']['address']['city'];
            $paypal_args['country'] = $purchase_data['user_info']['address']['country'];
        }
        $paypal_extra_args = array('cmd' => '_cart', 'upload' => '1');
        $paypal_args = array_merge($paypal_extra_args, $paypal_args);
        // Add cart items
        $i = 1;
        foreach ($purchase_data['cart_details'] as $item) {
            if (edd_has_variable_prices($item['id']) && edd_get_cart_item_price_id($item) !== false) {
                $item['name'] .= ' - ' . edd_get_cart_item_price_name($item);
            }
            $paypal_args['item_name_' . $i] = stripslashes_deep(html_entity_decode(wp_strip_all_tags($item['name']), ENT_COMPAT, 'UTF-8'));
            $paypal_args['quantity_' . $i] = $item['quantity'];
            $paypal_args['amount_' . $i] = round($item['subtotal'] / $item['quantity'], 2);
            if (edd_use_skus()) {
                $paypal_args['item_number_' . $i] = edd_get_download_sku($item['id']);
            }
            $i++;
        }
        // Calculate discount
        $discounted_amount = 0.0;
        if (!empty($purchase_data['fees'])) {
            $i = empty($i) ? 1 : $i;
            foreach ($purchase_data['fees'] as $fee) {
                if (floatval($fee['amount']) > '0') {
                    // this is a positive fee
                    $paypal_args['item_name_' . $i] = stripslashes_deep(html_entity_decode(wp_strip_all_tags($fee['label']), ENT_COMPAT, 'UTF-8'));
                    $paypal_args['quantity_' . $i] = '1';
                    $paypal_args['amount_' . $i] = edd_sanitize_amount($fee['amount']);
                    $i++;
                } else {
                    // This is a negative fee (discount)
                    $discounted_amount += abs($fee['amount']);
                }
            }
        }
        if ($discounted_amount > '0') {
            $paypal_args['discount_amount_cart'] = edd_sanitize_amount($discounted_amount);
        }
        // Add taxes to the cart
        if (edd_use_taxes()) {
            $paypal_args['tax_cart'] = edd_sanitize_amount($purchase_data['tax']);
        }
        $paypal_args = apply_filters('edd_paypal_redirect_args', $paypal_args, $purchase_data);
        // Build query
        $paypal_redirect .= http_build_query($paypal_args);
        // Fix for some sites that encode the entities
        $paypal_redirect = str_replace('&amp;', '&', $paypal_redirect);
        // Get rid of cart contents
        edd_empty_cart();
        // Redirect to PayPal
        wp_redirect($paypal_redirect);
        exit;
    }
}
function eddpdfi_pdf_template_vat($eddpdfi_pdf, $eddpdfi_payment, $eddpdfi_payment_meta, $eddpdfi_buyer_info, $eddpdfi_payment_gateway, $eddpdfi_payment_method, $address_line_2_line_height, $company_name, $eddpdfi_payment_date, $eddpdfi_payment_status)
{
    global $edd_options;
    if (!isset($edd_options['eddpdfi_templates'])) {
        $edd_options['eddpdfi_templates'] = 'default';
    }
    $color = empty($edd_options['edd_vat_pdf_colors']) ? "blue" : $edd_options['edd_vat_pdf_colors'];
    switch ($color) {
        case 'blue':
            $colors = array('body' => array(8, 75, 110), 'emphasis' => array(71, 155, 198), 'title' => array(0, 127, 192), 'header' => array(202, 226, 238), 'sub' => array(234, 242, 245), 'border' => array(166, 205, 226), 'notes' => array(7, 46, 66));
            break;
        case 'red':
            $colors = array('body' => array(110, 8, 8), 'emphasis' => array(198, 71, 71), 'title' => array(192, 0, 0), 'header' => array(238, 202, 202), 'sub' => array(245, 243, 243), 'border' => array(226, 166, 166), 'notes' => array(66, 7, 7));
            break;
        case 'green':
            $colors = array('body' => array(8, 110, 39), 'emphasis' => array(71, 198, 98), 'title' => array(0, 192, 68), 'header' => array(202, 238, 212), 'sub' => array(243, 245, 244), 'border' => array(166, 226, 179), 'notes' => array(7, 66, 28));
            break;
        case 'orange':
            $colors = array('body' => array(110, 54, 8), 'emphasis' => array(198, 134, 71), 'title' => array(192, 81, 0), 'header' => array(238, 219, 202), 'sub' => array(245, 245, 243), 'border' => array(226, 224, 166), 'notes' => array(65, 66, 7));
            break;
        case 'yellow':
            $colors = array('body' => array(109, 110, 8), 'emphasis' => array(197, 198, 71), 'title' => array(192, 190, 0), 'header' => array(238, 238, 202), 'sub' => array(245, 244, 243), 'border' => array(226, 193, 166), 'notes' => array(66, 38, 7));
            break;
        case 'purple':
            $colors = array('body' => array(66, 8, 110), 'emphasis' => array(137, 71, 198), 'title' => array(72, 0, 192), 'header' => array(208, 202, 238), 'sub' => array(244, 243, 245), 'border' => array(189, 166, 226), 'notes' => array(35, 7, 66));
            break;
        case 'pink':
            $colors = array('body' => array(110, 8, 82), 'emphasis' => array(198, 71, 152), 'title' => array(92, 0, 65), 'header' => array(238, 202, 232), 'sub' => array(245, 243, 245), 'border' => array(226, 166, 213), 'notes' => array(66, 7, 51));
            break;
    }
    $eddpdfi_pdf->AddFont('opensans', '');
    $eddpdfi_pdf->AddFont('opensansb', '');
    $font = isset($edd_options['eddpdfi_enable_char_support']) ? 'freesans' : 'opensans';
    $fontb = isset($edd_options['eddpdfi_enable_char_support']) ? 'freesans' : 'opensansb';
    $eddpdfi_pdf->SetMargins(8, 8, 8);
    $eddpdfi_pdf->SetX(8);
    $eddpdfi_pdf->AddPage();
    $eddpdfi_pdf->Ln(5);
    $eddpdfi_logo_size = 0;
    if (isset($eddpdfi_logo_size) && isset($edd_options['eddpdfi_logo_upload']) && !empty($edd_options['eddpdfi_logo_upload'])) {
        // $file, $x='', $y='', $w=0, $h=0, $type='', $link='', $align='', $resize=false, $dpi=300, $palign='', $ismask=false, $imgmask=false, $border=0, $fitbox=false, $hidden=false, $fitonpage=false, $alt=false, $altimgs=array()
        $eddpdfi_pdf->Image($edd_options['eddpdfi_logo_upload'], 8, 10, 0, '25', '', false, 'LTR', false, 96);
    } else {
        $eddpdfi_pdf->SetFont($font, '', 22);
        $eddpdfi_pdf->SetTextColor(50, 50, 50);
        $eddpdfi_pdf->Cell(0, 0, $company_name, 0, 2, 'L', false);
    }
    $eddpdfi_pdf->SetFont($font, '', 18);
    $eddpdfi_pdf->SetTextColor($colors['title'][0], $colors['title'][1], $colors['title'][2]);
    $eddpdfi_pdf->SetY(45);
    if ($eddpdfi_payment_status === 'Refunded') {
        $eddpdfi_pdf->Cell(0, 0, 'Invoice Correction', 0, 2, 'L', false);
    } else {
        $eddpdfi_pdf->Cell(0, 0, __('Invoice', 'eddpdfi'), 0, 2, 'L', false);
    }
    $eddpdfi_pdf->SetTextColor($colors['body'][0], $colors['body'][1], $colors['body'][2]);
    $eddpdfi_pdf->SetXY(8, 60);
    $eddpdfi_pdf->SetFont($fontb, '', 10);
    $eddpdfi_pdf->Cell(0, 6, __('From', 'eddpdfi'), 0, 2, 'L', false);
    $eddpdfi_pdf->SetFont($font, '', 10);
    if (!empty($edd_options['edd_vat_company_name'])) {
        $eddpdfi_pdf->Cell(0, eddpdfi_calculate_line_height($edd_options['edd_vat_company_name']), $edd_options['edd_vat_company_name'], 0, 2, 'L', false);
    }
    if (!empty($edd_options['eddpdfi_name'])) {
        $eddpdfi_pdf->Cell(0, eddpdfi_calculate_line_height($edd_options['eddpdfi_name']), eddpdfi_get_settings($eddpdfi_pdf, 'name'), 0, 2, 'L', false);
    }
    if (!empty($edd_options['eddpdfi_address_line1'])) {
        $eddpdfi_pdf->Cell(0, eddpdfi_calculate_line_height($edd_options['eddpdfi_address_line1']), eddpdfi_get_settings($eddpdfi_pdf, 'addr_line1'), 0, 2, 'L', false);
    }
    if (!empty($edd_options['eddpdfi_address_line2'])) {
        $eddpdfi_pdf->Cell(0, eddpdfi_calculate_line_height($edd_options['eddpdfi_address_line2']), eddpdfi_get_settings($eddpdfi_pdf, 'addr_line2'), 0, 2, 'L', false);
    }
    if (!empty($edd_options['eddpdfi_address_city_state_zip'])) {
        $eddpdfi_pdf->Cell(0, eddpdfi_calculate_line_height($edd_options['eddpdfi_address_city_state_zip']), eddpdfi_get_settings($eddpdfi_pdf, 'city_state_zip'), 0, 2, 'L', false);
    }
    if (!empty($edd_options['base_country'])) {
        $countries = edd_get_country_list();
        $countries['UK'] = $countries['GB'];
        $country = $countries[$edd_options['base_country']];
        $eddpdfi_pdf->Cell(0, eddpdfi_calculate_line_height($country), $country, 0, 2, 'L', false);
    }
    if (!empty($edd_options['eddpdfi_email_address'])) {
        $eddpdfi_pdf->SetTextColor(41, 102, 152);
        $eddpdfi_pdf->Cell(0, eddpdfi_calculate_line_height($edd_options['eddpdfi_email_address']), eddpdfi_get_settings($eddpdfi_pdf, 'email'), 0, 2, 'L', false);
    }
    if (isset($edd_options['eddpdfi_url']) && $edd_options['eddpdfi_url']) {
        $eddpdfi_pdf->SetTextColor(41, 102, 152);
        $eddpdfi_pdf->Cell(0, 6, get_option('siteurl'), 0, 2, 'L', false);
    }
    if (!empty($edd_options['edd_vat_number'])) {
        $vat_number = maybe_unserialize($edd_options['edd_vat_number']);
        if (!empty($vat_number['number'])) {
            //$vat_number = __(sprintf('%s ID ', apply_filters('lsl_tax_label','Tax')), 'edd_vat') . $vat_number['number'];
            $vat_number = 'VAT No. ' . $vat_number['number'];
            $eddpdfi_pdf->Cell(0, eddpdfi_calculate_line_height($vat_number), $vat_number, 0, 2, 'L', false);
        }
    }
    $eddpdfi_pdf->SetTextColor($colors['body'][0], $colors['body'][1], $colors['body'][2]);
    $eddpdfi_pdf->Ln(12);
    $eddpdfi_pdf->Ln();
    $eddpdfi_pdf->SetXY(60, 60);
    $eddpdfi_pdf->SetFont($fontb, '', 10);
    $eddpdfi_pdf->Cell(0, 6, __('To', 'eddpdfi'), 0, 2, 'L', false);
    $eddpdfi_pdf->SetFont($font, '', 10);
    $eddpdfi_pdf->Cell(0, 6, $eddpdfi_buyer_info['first_name'] . ' ' . $eddpdfi_buyer_info['last_name'], 0, 2, 'L', false);
    $eddpdfi_pdf->SetTextColor(41, 102, 152);
    $eddpdfi_pdf->Cell(0, 6, $eddpdfi_payment_meta['email'], 0, 2, 'L', false);
    $eddpdfi_pdf->SetTextColor(50, 50, 50);
    $eddpdfi_pdf->Ln(4);
    $eddpdfi_pdf->SetX(60);
    $eddpdfi_pdf->SetTextColor($colors['emphasis'][0], $colors['emphasis'][1], $colors['emphasis'][2]);
    $eddpdfi_pdf->Cell(30, 6, __('Invoice Date', 'eddpdfi'), 0, 0, 'L', false);
    $eddpdfi_pdf->SetTextColor($colors['body'][0], $colors['body'][1], $colors['body'][2]);
    $eddpdfi_pdf->Cell(0, 6, $eddpdfi_payment_date, 0, 2, 'L', false);
    $eddpdfi_pdf->SetXY(60, 92);
    $eddpdfi_pdf->SetTextColor($colors['emphasis'][0], $colors['emphasis'][1], $colors['emphasis'][2]);
    $eddpdfi_pdf->Cell(30, 6, __('Invoice ID', 'eddpdfi'), 0, 0, 'L', false);
    $eddpdfi_pdf->SetTextColor($colors['body'][0], $colors['body'][1], $colors['body'][2]);
    if (function_exists('eddpdfi_get_payment_number') && isset($edd_options['edd_vat_invoice_number'])) {
        $eddpdfi_pdf->Cell(0, 6, eddpdfi_get_payment_number($eddpdfi_payment->ID), 0, 2, 'L', false);
    } else {
        $eddpdfi_pdf->Cell(0, 6, '#' . $eddpdfi_payment->ID, 0, 2, 'L', false);
    }
    $eddpdfi_pdf->SetX(60);
    $eddpdfi_pdf->SetTextColor($colors['emphasis'][0], $colors['emphasis'][1], $colors['emphasis'][2]);
    $eddpdfi_pdf->Cell(30, 6, __('Purchase Key', 'eddpdfi'), 0, 0, 'L', false);
    $eddpdfi_pdf->SetTextColor($colors['body'][0], $colors['body'][1], $colors['body'][2]);
    $eddpdfi_pdf->Cell(0, 6, $eddpdfi_payment_meta['key'], 0, 2, 'L', false);
    $eddpdfi_pdf->SetX(60);
    $eddpdfi_pdf->SetTextColor($colors['emphasis'][0], $colors['emphasis'][1], $colors['emphasis'][2]);
    $eddpdfi_pdf->Cell(30, 6, __('Payment Status', 'eddpdfi'), 0, 0, 'L', false);
    $eddpdfi_pdf->SetTextColor($colors['body'][0], $colors['body'][1], $colors['body'][2]);
    $eddpdfi_pdf->Cell(0, 6, $eddpdfi_payment_status, 0, 2, 'L', false);
    $eddpdfi_pdf->SetX(60);
    $eddpdfi_pdf->SetTextColor($colors['emphasis'][0], $colors['emphasis'][1], $colors['emphasis'][2]);
    $eddpdfi_pdf->Cell(30, 6, __('Payment Method', 'eddpdfi'), 0, 0, 'L', false);
    $eddpdfi_pdf->SetTextColor($colors['body'][0], $colors['body'][1], $colors['body'][2]);
    $eddpdfi_pdf->Cell(0, 6, $eddpdfi_payment_method, 0, 2, 'L', false);
    $offset = apply_filters('eddpdfi_pdf_template_extra_fields', 0, 'color', $eddpdfi_pdf, $eddpdfi_payment, $eddpdfi_payment_meta, $eddpdfi_buyer_info, $colors);
    $eddpdfi_pdf->SetXY(61, 120 + $offset);
    $eddpdfi_pdf->SetFillColor($colors['header'][0], $colors['header'][1], $colors['header'][2]);
    $eddpdfi_pdf->SetDrawColor($colors['border'][0], $colors['border'][1], $colors['border'][2]);
    $eddpdfi_pdf->SetFont($fontb, '', 10);
    $eddpdfi_pdf->Cell(140, 8, __('Invoice Items', 'eddpdfi'), 1, 2, 'C', true);
    $eddpdfi_pdf->Ln(0.2);
    $eddpdfi_pdf->SetX(61);
    $eddpdfi_pdf->SetFillColor($colors['sub'][0], $colors['sub'][1], $colors['sub'][2]);
    $eddpdfi_pdf->SetFont($font, '', 9);
    $qenabled = version_compare(EDD_VERSION, "1.9") >= 0 ? true : (function_exists('edd_item_quanities_enabled') ? edd_item_quanities_enabled() : false);
    $eddpdfi_pdf->Cell($qenabled ? 95 : 102, 7, __('PRODUCT NAME', 'eddpdfi'), 'BL', 0, 'L', true);
    if ($qenabled) {
        $eddpdfi_pdf->Cell(10, 7, __('#', 'eddpdfi'), 'B', 0, 0, true);
    }
    $eddpdfi_pdf->Cell($qenabled ? 35 : 38, 7, __('PRICE', 'eddpdfi'), 'BR', 0, 'R', true);
    $eddpdfi_pdf->Ln(0.2);
    $eddpdfi_pdf_downloads = isset($eddpdfi_payment_meta['cart_details']) ? maybe_unserialize($eddpdfi_payment_meta['cart_details']) : false;
    $eddpdfi_pdf->Ln();
    if ($eddpdfi_pdf_downloads) {
        $eddpdfi_pdf->SetX(61);
        $includes_taxes = edd_prices_include_tax();
        foreach ($eddpdfi_pdf_downloads as $key => $download) {
            $eddpdfi_pdf->SetX(61);
            $eddpdfi_pdf->SetFont($font, '', 10);
            $eddpdfi_download_id = isset($eddpdfi_payment_meta['cart_details']) ? $download['id'] : $download;
            $eddpdfi_price_override = isset($eddpdfi_payment_meta['cart_details']) ? $download['price'] : null;
            $user_info = maybe_unserialize($eddpdfi_payment_meta['user_info']);
            $eddpdfi_final_download_price = edd_get_download_final_price($eddpdfi_download_id, $user_info, $eddpdfi_price_override);
            if (isset($user_info['discount']) && $user_info['discount'] != 'none') {
                $eddpdfi_discount = $user_info['discount'];
            } else {
                $eddpdfi_discount = __('None', 'eddpdfi');
            }
            // $eddpdfi_total_price = html_entity_decode( edd_currency_filter( edd_format_amount( $eddpdfi_payment_meta['amount'] ) ) );
            $eddpdfi_download_title = html_entity_decode(get_the_title($eddpdfi_download_id), ENT_COMPAT, 'UTF-8');
            if (edd_has_variable_prices($eddpdfi_download_id)) {
                $eddpdfi_download_title .= ' - ' . edd_get_cart_item_price_name($download);
                $options = $download['item_number']['options'];
            }
            // error_log(print_r($download,true));
            $options['is_item'] = $eddpdfi_download_id;
            $price = edd_get_cart_item_price($eddpdfi_download_id, $options, $includes_taxes);
            $eddpdfi_download_price = ' ' . html_entity_decode(edd_currency_filter(edd_format_amount($price)), ENT_COMPAT, 'UTF-8');
            //			$eddpdfi_download_price = ' ' . html_entity_decode( edd_currency_filter( edd_format_amount( $eddpdfi_final_download_price ) ), ENT_COMPAT, 'UTF-8' );
            $eddpdfi_pdf->Cell($qenabled ? 95 : 102, 8, $eddpdfi_download_title, 'B', 0, 'L', false);
            if ($qenabled) {
                $quantity = is_array($download) ? $download['quantity'] : 1;
                $eddpdfi_pdf->Cell(10, 8, $quantity, 'B', 0, 'C', false);
            }
            $eddpdfi_pdf->Cell($qenabled ? 35 : 38, 8, $eddpdfi_download_price, 'B', 2, 'R', false);
        }
        $eddpdfi_pdf->Ln(5);
        $eddpdfi_pdf->SetX(61);
        $eddpdfi_pdf->SetFillColor($colors['header'][0], $colors['header'][1], $colors['header'][2]);
        $eddpdfi_pdf->SetFont($fontb, '', 10);
        $eddpdfi_pdf->Cell(140, 8, __('Invoice Totals', 'eddpdfi'), 1, 2, 'C', true);
        $eddpdfi_pdf->Ln(0.2);
        $eddpdfi_pdf->SetX(61);
        if (edd_use_taxes()) {
            //$taxrate = (edd_get_payment_amount( $eddpdfi_payment->ID ) - round(edd_get_payment_subtotal( $eddpdfi_payment->ID ))) / round(edd_get_payment_subtotal( $eddpdfi_payment->ID )) * 100;
            switch ($eddpdfi_buyer_info['address']['country']) {
                case 'BE':
                    $taxrate = '21%';
                    break;
                case 'BG':
                    $taxrate = '20%';
                    break;
                case 'CZ':
                    $taxrate = '21%';
                    break;
                case 'DK':
                    $taxrate = '25%';
                    break;
                case 'GB':
                    $taxrate = '20%';
                    break;
                case 'UK':
                    $taxrate = '20%';
                    break;
                case 'DE':
                    $taxrate = '19%';
                    break;
                case 'EE':
                    $taxrate = '20%';
                    break;
                case 'EL':
                    $taxrate = '23%';
                    break;
                case 'ES':
                    $taxrate = '21%';
                    break;
                case 'FR':
                    $taxrate = '20%';
                    break;
                case 'HR':
                    $taxrate = '25%';
                    break;
                case 'IE':
                    $taxrate = '23%';
                    break;
                case 'IT':
                    $taxrate = '22%';
                    break;
                case 'CY':
                    $taxrate = '19%';
                    break;
                case 'LV':
                    $taxrate = '21%';
                    break;
                case 'LT':
                    $taxrate = '21%';
                    break;
                case 'LU':
                    $taxrate = '17%';
                    break;
                case 'HU':
                    $taxrate = '27%';
                    break;
                case 'MT':
                    $taxrate = '18%';
                    break;
                case 'NL':
                    $taxrate = '21%';
                    break;
                case 'AT':
                    $taxrate = '20%';
                    break;
                case 'PL':
                    $taxrate = '23%';
                    break;
                case 'PT':
                    $taxrate = '23%';
                    break;
                case 'RO':
                    $taxrate = '24%';
                    break;
                case 'SI':
                    $taxrate = '22%';
                    break;
                case 'SK':
                    $taxrate = '20%';
                    break;
                case 'FI':
                    $taxrate = '24%';
                    break;
                case 'SE':
                    $taxrate = '25%';
                    break;
                default:
                    $taxrate = '0%';
            }
            $eddpdfi_pdf->Cell(102, 8, __('Subtotal', 'eddpdfi'), 'B', 0, 'L', false);
            $eddpdfi_pdf->Cell(38, 8, html_entity_decode(edd_payment_subtotal($eddpdfi_payment->ID), ENT_COMPAT, 'UTF-8'), 'B', 2, 'R', false);
            $eddpdfi_pdf->SetX(61);
            $eddpdfi_pdf->Cell(102, 8, __(apply_filters('lsl_tax_label', 'Tax'), 'eddpdfi'), 'B', 0, 'L', false);
            $eddpdfi_pdf->Cell(38, 8, html_entity_decode(edd_payment_tax($eddpdfi_payment->ID), ENT_COMPAT, 'UTF-8'), 'B', 2, 'R', false);
            $eddpdfi_pdf->SetX(61);
            $eddpdfi_pdf->Cell(102, 8, __('VAT RATE', 'eddpdfi'), 'B', 0, 'L', false);
            $eddpdfi_pdf->Cell(38, 8, $taxrate, 'B', 2, 'R', false);
        }
        $fees = edd_get_payment_fees($eddpdfi_payment->ID);
        if (!empty($fees)) {
            foreach ($fees as $fee) {
                $eddpdfi_pdf->SetX(61);
                $eddpdfi_pdf->Cell(102, 8, $fee['label'], 'B', 0, 'L', false);
                $eddpdfi_pdf->Cell(38, 8, html_entity_decode(edd_currency_filter($fee['amount']), ENT_COMPAT, 'UTF-8'), 'B', 2, 'R', true);
            }
        }
        if ($eddpdfi_discount !== __('None', 'eddpdfi')) {
            $eddpdfi_pdf->SetX(61);
            $eddpdfi_pdf->Cell(102, 8, __('Discount Used', 'eddpdfi'), 'B', 0, 'L', false);
            $eddpdfi_pdf->Cell(38, 8, $eddpdfi_discount, 'B', 2, 'R', false);
        }
        $eddpdfi_pdf->SetX(61);
        $eddpdfi_pdf->SetFont($fontb, '', 11);
        $eddpdfi_pdf->Cell(102, 10, __('Total Due', 'eddpdfi'), 'B', 0, 'L', false);
        if ($eddpdfi_payment_status === 'Refunded') {
            $eddpdfi_pdf->Cell(38, 10, '-' . html_entity_decode(edd_currency_filter(edd_format_amount(edd_get_payment_amount($eddpdfi_payment->ID))), ENT_COMPAT, 'UTF-8'), 'B', 2, 'R', false);
        } else {
            $eddpdfi_pdf->Cell(38, 10, html_entity_decode(edd_currency_filter(edd_format_amount(edd_get_payment_amount($eddpdfi_payment->ID))), ENT_COMPAT, 'UTF-8'), 'B', 2, 'R', false);
        }
        $eddpdfi_pdf->Ln(10);
        if (isset($edd_options['eddpdfi_additional_notes']) && !empty($edd_options['eddpdfi_additional_notes'])) {
            $eddpdfi_pdf->SetX(60);
            $eddpdfi_pdf->SetFont($font, '', 13);
            $eddpdfi_pdf->Cell(0, 6, __('Additional Notes', 'eddpdfi'), 0, 2, 'L', false);
            $eddpdfi_pdf->Ln(2);
            $eddpdfi_pdf->SetX(60);
            $eddpdfi_pdf->SetFont($font, '', 10);
            $eddpdfi_pdf->SetTextColor($colors['notes'][0], $colors['notes'][1], $colors['notes'][2]);
            $eddpdfi_pdf->MultiCell(0, 6, eddpdfi_get_settings($eddpdfi_pdf, 'notes'), 0, 'L', false);
        }
    }
}
/**
 * Create license key
 *
 * @since 1.0.0
 * @return void
 */
function edd_slm_create_license_keys($payment_id)
{
    // Collect license keys
    $licenses = array();
    // Payment meta
    $payment_meta = edd_get_payment_meta($payment_id);
    //edd_slm_print_pretty($payment_meta);
    foreach ($payment_meta['cart_details'] as $item) {
        $download_id = $item['id'];
        if (edd_slm_is_licensing_enabled($download_id)) {
            // Download data
            $download_data = edd_get_download($download_id);
            if ($download_data) {
                $download_quantity = absint($item['quantity']);
                for ($i = 1; $i <= $download_quantity; $i++) {
                    // Get price id
                    $price_id = edd_get_cart_item_price_id($item);
                    $price_name = edd_get_cart_item_price_name($item);
                    // Sites allowed
                    $sites_allowed = edd_slm_get_sites_allowed($price_id, $payment_id, $download_id);
                    if (!$sites_allowed) {
                        $sites_allowed_error = __('License could not be created: Invalid sites allowed number.', 'edd-slm');
                        $int = edd_insert_payment_note($payment_id, $sites_allowed_error);
                        break;
                    }
                    // Transaction id
                    $transaction_id = edd_get_payment_transaction_id($payment_id);
                    // Build item name
                    $item_name = !empty($price_name) ? $item['name'] . ' - ' . $price_name : $item['name'];
                    // Build parameters
                    $api_params = array();
                    $api_params['slm_action'] = 'slm_create_new';
                    $api_params['secret_key'] = EDD_SLM_API_SECRET;
                    $api_params['first_name'] = isset($payment_meta['user_info']['first_name']) ? $payment_meta['user_info']['first_name'] : '';
                    $api_params['last_name'] = isset($payment_meta['user_info']['last_name']) ? $payment_meta['user_info']['last_name'] : '';
                    $api_params['email'] = isset($payment_meta['user_info']['email']) ? $payment_meta['user_info']['email'] : '';
                    $api_params['company_name'] = '';
                    $api_params['txn_id'] = $transaction_id . ' - ' . $item_name;
                    $api_params['max_allowed_domains'] = $sites_allowed;
                    $api_params['date_created'] = date('Y-m-d');
                    $api_params['date_expiry'] = '0000-00-00';
                    // Send query to the license manager server
                    $url = EDD_SLM_API_URL . '?' . http_build_query($api_params);
                    $response = wp_remote_get($url, array('timeout' => 30));
                    edd_slm_add_log('Item: ' . $item_name);
                    edd_slm_add_log('- SLM Response Body: ' . $response['body']);
                    foreach ($response['response'] as $key => $value) {
                        edd_slm_add_log('- SLM Response ' . $key . ': ' . $value);
                    }
                    // Get license key
                    $license_key = edd_slm_get_license_key($response);
                    // Collect license keys
                    if ($license_key) {
                        $licenses[] = array('item' => $item_name, 'key' => $license_key);
                    }
                }
            }
        }
    }
    // Payment note
    edd_slm_payment_note($payment_id, $licenses);
    // Assign licenses
    edd_slm_assign_licenses($payment_id, $licenses);
}