Exemplo n.º 1
0
function fn_update_gift_certificate($gift_cert_data, $gift_cert_id = 0, $params = array())
{
    fn_correct_gift_certificate($gift_cert_data);
    $gift_cert_data['products'] = !empty($gift_cert_data['products']) ? serialize($gift_cert_data['products']) : '';
    if (empty($gift_cert_id)) {
        do {
            $code = fn_generate_gift_certificate_code();
        } while (true == fn_check_gift_certificate_code($code));
        $gift_cert_data = fn_array_merge($gift_cert_data, array('gift_cert_code' => $code, 'timestamp' => TIME));
        if (fn_allowed_for('ULTIMATE') && Registry::get('runtime.company_id')) {
            $gift_cert_data['company_id'] = Registry::get('runtime.company_id');
        }
        $gift_cert_id = db_query("INSERT INTO ?:gift_certificates ?e", $gift_cert_data);
    } else {
        // Change certfificate status
        fn_change_gift_certificate_status($gift_cert_id, $gift_cert_data['status'], '', fn_get_notification_rules(array(), false));
        //if difference then add line in log
        $debit_info = db_get_row("SELECT debit AS amount, debit_products AS products FROM ?:gift_certificates_log WHERE gift_cert_id = ?i ORDER BY timestamp DESC", $gift_cert_id);
        if (empty($debit_info)) {
            $debit_info = db_get_row("SELECT amount, products FROM ?:gift_certificates WHERE gift_cert_id = ?i", $gift_cert_id);
        }
        $is_diff = $gift_cert_data['amount'] - $debit_info['amount'] != 0 || md5($gift_cert_data['products']) != md5($debit_info['products']);
        if ($is_diff == true) {
            $_info = array('amount' => $gift_cert_data['amount'], 'products' => $gift_cert_data['products']);
            fn_add_gift_certificate_log_record($gift_cert_id, $debit_info, $_info);
        }
        //Update certificate data
        $_data = $gift_cert_data;
        db_query("UPDATE ?:gift_certificates SET ?u WHERE gift_cert_id = ?i", $gift_cert_data, $gift_cert_id);
    }
    $gc_data = fn_get_gift_certificate_info($gift_cert_id);
    fn_gift_certificate_notification($gc_data, fn_get_notification_rules($params));
    return $gift_cert_id;
}
Exemplo n.º 2
0
/**
 * Add gift certificate to wishlist
 *
 * @param array $wishlist wishlist data storage
 * @param array $gift_cert_data array with data for the certificate to add
 * @return array array with gift certificate ID and data if addition is successful and empty array otherwise
 */
function fn_add_gift_certificate_to_wishlist(&$wishlist, $gift_cert_data)
{
    if (!empty($gift_cert_data) && is_array($gift_cert_data)) {
        fn_correct_gift_certificate($gift_cert_data);
        // Generate wishlist id
        $gift_cert_wishlist_id = fn_generate_gift_certificate_cart_id($gift_cert_data);
        $wishlist['gift_certificates'][$gift_cert_wishlist_id] = $gift_cert_data;
        $gift_cert_data['display_subtotal'] = $gift_cert_data['amount'];
        if (!empty($gift_cert_data['products'])) {
            $product_data = array();
            foreach ($gift_cert_data['products'] as $w_id => $_data) {
                if (empty($_data['amount'])) {
                    unset($gift_cert_data['products'][$w_id]);
                    continue;
                }
                if (empty($_data['product_options'])) {
                    $_data['product_options'] = fn_get_default_product_options($_data['product_id']);
                }
                $wishlist_id = fn_generate_cart_id($_data['product_id'], array('product_options' => $_data['product_options'], 'parent' => array('certificate' => $gift_cert_wishlist_id)), true);
                $product_data[$wishlist_id] = $_data;
                $wishlist['products'][$wishlist_id] = array('product_id' => $_data['product_id'], 'product_options' => $_data['product_options'], 'amount' => $_data['amount'], 'extra' => array('parent' => array('certificate' => $gift_cert_wishlist_id)));
                $product = fn_get_product_data($_data['product_id'], $_SESSION['auth']);
                $gift_cert_data['display_subtotal'] += $_data['amount'] * $product['price'];
            }
            $gift_cert_data['products'] = $wishlist['gift_certificates'][$gift_cert_wishlist_id]['products'] = $product_data;
        }
        return array($gift_cert_wishlist_id, $gift_cert_data);
    } else {
        return array();
    }
}
Exemplo n.º 3
0
         fn_correct_gift_certificate($gift_cert_data);
         $_data = fn_check_table_fields($gift_cert_data, 'gift_certificates');
         $_data = fn_array_merge($_data, array('gift_cert_code' => $code, 'timestamp' => TIME));
         if (!empty($_data['products'])) {
             $_data['products'] = serialize($_data['products']);
         }
         $gift_cert_id = db_query("INSERT INTO ?:gift_certificates ?e", $_data);
         $gift_cert_data = fn_get_gift_certificate_info($gift_cert_id);
         fn_gift_certificate_notification($gift_cert_data, fn_get_notification_rules($_REQUEST));
         $suffix = ".update?gift_cert_id={$gift_cert_id}";
     }
 }
 if ($mode == 'update') {
     if (!empty($_REQUEST['gift_cert_data'])) {
         $gift_cert_data = $_REQUEST['gift_cert_data'];
         fn_correct_gift_certificate($gift_cert_data);
         if (!isset($gift_cert_data['products'])) {
             $gift_cert_data['products'] = array();
         }
         // Change certfificate status
         fn_change_gift_certificate_status($_REQUEST['gift_cert_id'], $gift_cert_data['status'], $_REQUEST['certificate_status'], fn_get_notification_rules(array(), false));
         //if difference then add line in log
         $debit_info = db_get_row("SELECT debit AS amount, debit_products AS products FROM ?:gift_certificates_log WHERE gift_cert_id = ?i ORDER BY timestamp DESC", $_REQUEST['gift_cert_id']);
         if (empty($debit_info)) {
             $debit_info = db_get_row("SELECT amount, products FROM ?:gift_certificates WHERE gift_cert_id = ?i", $_REQUEST['gift_cert_id']);
         }
         $is_diff = $gift_cert_data['amount'] - $debit_info['amount'] != 0 || md5(serialize($gift_cert_data['products'])) != md5($debit_info['products']) ? 'Y' : 'N';
         if ($is_diff == 'Y') {
             $_info = array('amount' => $gift_cert_data['amount'], 'products' => serialize($gift_cert_data['products']));
             fn_add_gift_certificate_log_record($_REQUEST['gift_cert_id'], $debit_info, $_info);
         }
Exemplo n.º 4
0
     }
 }
 if ($mode == 'update') {
     if (!empty($_REQUEST['gift_cert_data']) && !empty($_REQUEST['gift_cert_id']) && $_REQUEST['type'] == 'C') {
         fn_delete_cart_gift_certificate($_SESSION['cart'], $_REQUEST['gift_cert_id']);
         unset($_SESSION['cart']['product_groups']);
         list($gift_cert_id, $gift_cert) = fn_add_gift_certificate_to_cart($_REQUEST['gift_cert_data'], $auth);
         if (!empty($gift_cert_id)) {
             $_SESSION['cart']['gift_certificates'][$gift_cert_id] = $gift_cert;
         }
         fn_save_cart_content($_SESSION['cart'], $auth['user_id'], $_REQUEST['type']);
     }
 }
 if ($mode == 'preview') {
     if (!empty($_REQUEST['gift_cert_data'])) {
         fn_correct_gift_certificate($_REQUEST['gift_cert_data']);
         fn_show_postal_card($_REQUEST['gift_cert_data']);
         exit;
     }
 }
 if ($mode == 'delete') {
     if (isset($_REQUEST['gift_cert_id'])) {
         $cart =& $_SESSION['cart'];
         fn_delete_cart_gift_certificate($cart, $_REQUEST['gift_cert_id']);
         if (fn_cart_is_empty($cart) == true) {
             fn_clear_cart($cart);
         }
         fn_save_cart_content($cart, $auth['user_id']);
         $cart['recalculate'] = true;
         fn_calculate_cart_content($cart, $auth, 'A', true, 'F', true);
         return array(CONTROLLER_STATUS_REDIRECT);