Exemplo n.º 1
0
 function addCoupon()
 {
     global $toC_Json, $osC_Database, $osC_Language, $osC_ShoppingCart, $osC_Currencies, $osC_Weight, $osC_Tax, $osC_Customer;
     $osC_Tax = new osC_Tax_Admin();
     $osC_Weight = new osC_Weight();
     $osC_Currencies = new osC_Currencies();
     $osC_Language->load('checkout');
     $Qorder = $osC_Database->query('select * from :table_orders where orders_id = :orders_id');
     $Qorder->bindTable(':table_orders', TABLE_ORDERS);
     $Qorder->bindInt(':orders_id', $_REQUEST['orders_id']);
     $Qorder->execute();
     require_once '../includes/classes/customer.php';
     $osC_Customer = new osC_Customer();
     $osC_Customer->setID($Qorder->value('customers_id '));
     $osC_ShoppingCart = new toC_ShoppingCart_Adapter($_REQUEST['orders_id']);
     if (isset($_REQUEST['coupon_code']) && !empty($_REQUEST['coupon_code']) && count($osC_ShoppingCart->getProducts()) != 0) {
         require_once '../includes/classes/coupon.php';
         $toC_Coupon = new toC_Coupon($_REQUEST['coupon_code']);
         $errors = array();
         if (!$toC_Coupon->isExist()) {
             $errors[] = $osC_Language->get('error_coupon_not_exist');
         } else {
             if (!$toC_Coupon->isValid()) {
                 $errors[] = $osC_Language->get('error_coupon_not_valid');
             } else {
                 if (!$toC_Coupon->isDateValid()) {
                     $errors[] = $osC_Language->get('error_coupon_invalid_date');
                 } else {
                     if (!$toC_Coupon->isUsesPerCouponValid()) {
                         $errors[] = $osC_Language->get('error_coupon_exceed_uses_per_coupon');
                     } else {
                         if (!$toC_Coupon->isUsesPerCustomerValid()) {
                             $errors[] = $osC_Language->get('error_coupon_exceed_uses_per_customer');
                         } else {
                             if ($toC_Coupon->hasRestrictCategories() || $toC_Coupon->hasRestrictProducts()) {
                                 if (!$toC_Coupon->containRestrictProducts()) {
                                     $errors[] = $osC_Language->get('error_coupon_no_match_products');
                                 }
                             } else {
                                 if (!$toC_Coupon->checkMinimumOrderQuantity()) {
                                     $errors[] = $osC_Language->get('error_coupon_minimum_order_quantity');
                                 } else {
                                     if ($osC_ShoppingCart->isTotalZero()) {
                                         $errors[] = $osC_Language->get('error_shopping_cart_total_zero');
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
         if (sizeof($errors) == 0) {
             $osC_ShoppingCart->setCouponCode($_REQUEST['coupon_code']);
             $response = array('success' => true, 'feedback' => $osC_Language->get('ms_success_action_performed'));
         } else {
             $response = array('success' => false, 'feedback' => implode('<br />', $errors));
         }
     } else {
         $response = array('success' => false, 'feedback' => $osC_Language->get('ms_error_action_not_performed'));
     }
     echo $toC_Json->encode($response);
 }
Exemplo n.º 2
0
 function insert($order_status = DEFAULT_ORDERS_STATUS_ID)
 {
     global $osC_Database, $osC_Customer, $osC_Language, $osC_Currencies, $osC_ShoppingCart, $osC_Tax, $toC_Wishlist;
     if (isset($_SESSION['prepOrderID'])) {
         $_prep = explode('-', $_SESSION['prepOrderID']);
         if ($_prep[0] == $osC_ShoppingCart->getCartID()) {
             return $_prep[1];
             // order_id
         } else {
             if (osC_Order::getStatusID($_prep[1]) === ORDERS_STATUS_PREPARING) {
                 osC_Order::remove($_prep[1]);
             }
         }
     }
     if (!class_exists(osC_Account)) {
         require_once 'includes/classes/account.php';
     }
     if (!$osC_Customer->isLoggedOn()) {
         osC_Order::createCustomer();
     } else {
         //insert billing address
         $billing_address = $osC_ShoppingCart->getBillingAddress();
         if (isset($billing_address['id']) && $billing_address['id'] == '-1') {
             osC_Account::createNewAddress($osC_Customer->getID(), $billing_address);
         }
         //insert shipping address
         if (!isset($billing_address['ship_to_this_address']) || isset($billing_address['ship_to_this_address']) && empty($billing_address['ship_to_this_address'])) {
             $shipping_address = $osC_ShoppingCart->getShippingAddress();
             if (isset($shipping_address['id']) && $shipping_address['id'] == '-1') {
                 osC_Account::createNewAddress($osC_Customer->getID(), $shipping_address);
             }
         }
     }
     $Qorder = $osC_Database->query('insert into :table_orders (customers_id, customers_name, customers_company, customers_street_address, customers_suburb, customers_city, customers_postcode, customers_state, customers_comment, customers_state_code, customers_country, customers_country_iso2, customers_country_iso3, customers_telephone, customers_email_address, customers_address_format, customers_ip_address, delivery_name, delivery_company, delivery_street_address, delivery_suburb, delivery_city, delivery_postcode, delivery_state, delivery_zone_id, delivery_state_code, delivery_country_id, delivery_country, delivery_country_iso2, delivery_country_iso3, delivery_address_format, delivery_telephone, billing_name, billing_company, billing_street_address, billing_suburb, billing_city, billing_postcode, billing_state, billing_zone_id, billing_state_code, billing_country_id, billing_country, billing_country_iso2, billing_country_iso3, billing_address_format, billing_telephone, payment_method, payment_module, uses_store_credit, store_credit_amount, date_purchased, orders_status, currency, currency_value, gift_wrapping, wrapping_message) values (:customers_id, :customers_name, :customers_company, :customers_street_address, :customers_suburb, :customers_city, :customers_postcode, :customers_state, :customers_comment, :customers_state_code, :customers_country, :customers_country_iso2, :customers_country_iso3, :customers_telephone, :customers_email_address, :customers_address_format, :customers_ip_address, :delivery_name, :delivery_company, :delivery_street_address, :delivery_suburb, :delivery_city, :delivery_postcode, :delivery_state, :delivery_zone_id, :delivery_state_code, :delivery_country_id, :delivery_country, :delivery_country_iso2, :delivery_country_iso3, :delivery_address_format, :delivery_telephone, :billing_name, :billing_company, :billing_street_address, :billing_suburb, :billing_city, :billing_postcode, :billing_state, :billing_zone_id, :billing_state_code, :billing_country_id, :billing_country, :billing_country_iso2, :billing_country_iso3, :billing_address_format, :billing_telephone, :payment_method, :payment_module, :uses_store_credit, :store_credit_amount, now(), :orders_status, :currency, :currency_value, :gift_wrapping, :wrapping_message)');
     $Qorder->bindTable(':table_orders', TABLE_ORDERS);
     $Qorder->bindInt(':customers_id', $osC_Customer->getID());
     $Qorder->bindValue(':customers_name', $osC_Customer->getName());
     $Qorder->bindValue(':customers_company', '');
     $Qorder->bindValue(':customers_street_address', '');
     $Qorder->bindValue(':customers_suburb', '');
     $Qorder->bindValue(':customers_city', '');
     $Qorder->bindValue(':customers_postcode', '');
     $Qorder->bindValue(':customers_state', '');
     $Qorder->bindValue(':customers_state_code', '');
     $Qorder->bindValue(':customers_country', '');
     $Qorder->bindValue(':customers_country_iso2', '');
     $Qorder->bindValue(':customers_country_iso3', '');
     $Qorder->bindValue(':customers_telephone', '');
     $Qorder->bindValue(':customers_email_address', $osC_Customer->getEmailAddress());
     $Qorder->bindValue(':customers_comment', $_SESSION['comments']);
     $Qorder->bindValue(':customers_address_format', '');
     $Qorder->bindValue(':customers_ip_address', osc_get_ip_address());
     $Qorder->bindValue(':delivery_name', $osC_ShoppingCart->getShippingAddress('firstname') . ' ' . $osC_ShoppingCart->getShippingAddress('lastname'));
     $Qorder->bindValue(':delivery_company', $osC_ShoppingCart->getShippingAddress('company'));
     $Qorder->bindValue(':delivery_street_address', $osC_ShoppingCart->getShippingAddress('street_address'));
     $Qorder->bindValue(':delivery_suburb', $osC_ShoppingCart->getShippingAddress('suburb'));
     $Qorder->bindValue(':delivery_city', $osC_ShoppingCart->getShippingAddress('city'));
     $Qorder->bindValue(':delivery_postcode', $osC_ShoppingCart->getShippingAddress('postcode'));
     $Qorder->bindValue(':delivery_state', $osC_ShoppingCart->getShippingAddress('state'));
     $Qorder->bindValue(':delivery_zone_id', $osC_ShoppingCart->getShippingAddress('zone_id'));
     $Qorder->bindValue(':delivery_state_code', $osC_ShoppingCart->getShippingAddress('zone_code'));
     $Qorder->bindValue(':delivery_country_id', $osC_ShoppingCart->getShippingAddress('country_id'));
     $Qorder->bindValue(':delivery_country', $osC_ShoppingCart->getShippingAddress('country_title'));
     $Qorder->bindValue(':delivery_country_iso2', $osC_ShoppingCart->getShippingAddress('country_iso_code_2'));
     $Qorder->bindValue(':delivery_country_iso3', $osC_ShoppingCart->getShippingAddress('country_iso_code_3'));
     $Qorder->bindValue(':delivery_address_format', $osC_ShoppingCart->getShippingAddress('format'));
     $Qorder->bindValue(':delivery_telephone', $osC_ShoppingCart->getShippingAddress('telephone_number'));
     $Qorder->bindValue(':billing_name', $osC_ShoppingCart->getBillingAddress('firstname') . ' ' . $osC_ShoppingCart->getBillingAddress('lastname'));
     $Qorder->bindValue(':billing_company', $osC_ShoppingCart->getBillingAddress('company'));
     $Qorder->bindValue(':billing_street_address', $osC_ShoppingCart->getBillingAddress('street_address'));
     $Qorder->bindValue(':billing_suburb', $osC_ShoppingCart->getBillingAddress('suburb'));
     $Qorder->bindValue(':billing_city', $osC_ShoppingCart->getBillingAddress('city'));
     $Qorder->bindValue(':billing_postcode', $osC_ShoppingCart->getBillingAddress('postcode'));
     $Qorder->bindValue(':billing_state', $osC_ShoppingCart->getBillingAddress('state'));
     $Qorder->bindValue(':billing_zone_id', $osC_ShoppingCart->getBillingAddress('zone_id'));
     $Qorder->bindValue(':billing_state_code', $osC_ShoppingCart->getBillingAddress('zone_code'));
     $Qorder->bindValue(':billing_country_id', $osC_ShoppingCart->getBillingAddress('country_id'));
     $Qorder->bindValue(':billing_country', $osC_ShoppingCart->getBillingAddress('country_title'));
     $Qorder->bindValue(':billing_country_iso2', $osC_ShoppingCart->getBillingAddress('country_iso_code_2'));
     $Qorder->bindValue(':billing_country_iso3', $osC_ShoppingCart->getBillingAddress('country_iso_code_3'));
     $Qorder->bindValue(':billing_address_format', $osC_ShoppingCart->getBillingAddress('format'));
     $Qorder->bindValue(':billing_telephone', $osC_ShoppingCart->getBillingAddress('telephone_number'));
     $Qorder->bindValue(':payment_method', implode(',', $osC_ShoppingCart->getCartBillingMethods()));
     $Qorder->bindValue(':payment_module', implode(',', $osC_ShoppingCart->getCartBillingModules()));
     $Qorder->bindInt(':uses_store_credit', $osC_ShoppingCart->isUseStoreCredit());
     $Qorder->bindValue(':store_credit_amount', $osC_ShoppingCart->isUseStoreCredit() ? $osC_ShoppingCart->getStoreCredit() : '0');
     $Qorder->bindInt(':orders_status', $order_status);
     $Qorder->bindValue(':currency', $osC_Currencies->getCode());
     $Qorder->bindValue(':currency_value', $osC_Currencies->value($osC_Currencies->getCode()));
     $Qorder->bindInt(':gift_wrapping', $osC_ShoppingCart->isGiftWrapping() ? '1' : '0');
     $Qorder->bindValue(':wrapping_message', isset($_SESSION['gift_wrapping_comments']) ? $_SESSION['gift_wrapping_comments'] : '');
     $Qorder->execute();
     $insert_id = $osC_Database->nextID();
     foreach ($osC_ShoppingCart->getOrderTotals() as $module) {
         $Qtotals = $osC_Database->query('insert into :table_orders_total (orders_id, title, text, value, class, sort_order) values (:orders_id, :title, :text, :value, :class, :sort_order)');
         $Qtotals->bindTable(':table_orders_total', TABLE_ORDERS_TOTAL);
         $Qtotals->bindInt(':orders_id', $insert_id);
         $Qtotals->bindValue(':title', $module['title']);
         $Qtotals->bindValue(':text', $module['text']);
         $Qtotals->bindValue(':value', $module['value']);
         $Qtotals->bindValue(':class', $module['code']);
         $Qtotals->bindInt(':sort_order', $module['sort_order']);
         $Qtotals->execute();
     }
     $Qstatus = $osC_Database->query('insert into :table_orders_status_history (orders_id, orders_status_id, date_added, customer_notified, comments) values (:orders_id, :orders_status_id, now(), :customer_notified, :comments)');
     $Qstatus->bindTable(':table_orders_status_history', TABLE_ORDERS_STATUS_HISTORY);
     $Qstatus->bindInt(':orders_id', $insert_id);
     $Qstatus->bindInt(':orders_status_id', $order_status);
     $Qstatus->bindInt(':customer_notified', '0');
     $Qstatus->bindValue(':comments', isset($_SESSION['comments']) ? $_SESSION['comments'] : '');
     $Qstatus->execute();
     foreach ($osC_ShoppingCart->getProducts() as $products) {
         $Qproducts = $osC_Database->query('insert into :table_orders_products (orders_id, products_id, products_type, products_sku, products_name, products_price, final_price, products_tax, products_quantity) values (:orders_id, :products_id, :products_type, :products_sku, :products_name, :products_price, :final_price, :products_tax, :products_quantity)');
         $Qproducts->bindTable(':table_orders_products', TABLE_ORDERS_PRODUCTS);
         $Qproducts->bindInt(':orders_id', $insert_id);
         $Qproducts->bindInt(':products_id', osc_get_product_id($products['id']));
         $Qproducts->bindValue(':products_type', $products['type']);
         $Qproducts->bindValue(':products_sku', $products['sku']);
         $Qproducts->bindValue(':products_name', $products['name']);
         $Qproducts->bindValue(':products_price', $products['price']);
         $Qproducts->bindValue(':final_price', $products['final_price']);
         $Qproducts->bindValue(':products_tax', $osC_Tax->getTaxRate($products['tax_class_id'], $osC_ShoppingCart->getTaxingAddress('country_id'), $osC_ShoppingCart->getTaxingAddress('zone_id')));
         $Qproducts->bindInt(':products_quantity', $products['quantity']);
         $Qproducts->execute();
         $order_products_id = $osC_Database->nextID();
         if (!empty($products['customizations'])) {
             foreach ($products['customizations'] as $customization) {
                 $Qcustomization = $osC_Database->query('insert into :table_orders_products_customizations (orders_id, orders_products_id, quantity) values (:orders_id, :orders_products_id, :quantity)');
                 $Qcustomization->bindTable(':table_orders_products_customizations', TABLE_ORDERS_PRODUCTS_CUSTOMIZATIONS);
                 $Qcustomization->bindInt(':orders_id', $insert_id);
                 $Qcustomization->bindInt(':orders_products_id', $order_products_id);
                 $Qcustomization->bindInt(':quantity', $customization['qty']);
                 $Qcustomization->execute();
                 $orders_products_customizations_id = $osC_Database->nextID();
                 foreach ($customization['fields'] as $field) {
                     $Qfield = $osC_Database->query('insert into :table_orders_products_customizations_values (orders_products_customizations_id , customization_fields_id, customization_fields_name, customization_fields_type, customization_fields_value, cache_file_name) values (:orders_products_customizations_id, :customization_fields_id, :customization_fields_name, :customization_fields_type, :customization_fields_value, :cache_file_name)');
                     $Qfield->bindTable(':table_orders_products_customizations_values', TABLE_ORDERS_PRODUCTS_CUSTOMIZATIONS_VALUES);
                     $Qfield->bindInt(':orders_products_customizations_id', $orders_products_customizations_id);
                     $Qfield->bindInt(':customization_fields_id', $field['customization_fields_id']);
                     $Qfield->bindValue(':customization_fields_name', $field['customization_fields_name']);
                     $Qfield->bindInt(':customization_fields_type', $field['customization_type']);
                     $Qfield->bindValue(':customization_fields_value', $field['customization_value']);
                     $Qfield->bindValue(':cache_file_name', $field['cache_filename']);
                     $Qfield->execute();
                     if ($osC_Database->isError() === false) {
                         @copy(DIR_FS_CACHE . 'products_customizations/' . $field['cache_filename'], DIR_FS_CACHE . 'orders_customizations/' . $field['cache_filename']);
                     }
                 }
             }
         }
         if ($osC_ShoppingCart->hasVariants($products['id'])) {
             foreach ($osC_ShoppingCart->getVariants($products['id']) as $variants_id => $variants) {
                 $Qvariants = $osC_Database->query('select pvg.products_variants_groups_name, pvv.products_variants_values_name from :table_products_variants pv, :table_products_variants_entries pve, :table_products_variants_groups pvg, :table_products_variants_values pvv where pv.products_id = :products_id and pv.products_variants_id = pve.products_variants_id and pve.products_variants_groups_id = :groups_id and pve.products_variants_values_id = :variants_values_id and pve.products_variants_groups_id = pvg.products_variants_groups_id and pve.products_variants_values_id = pvv.products_variants_values_id and pvg.language_id = :pvg_language_id and pvv.language_id = :pvv_language_id');
                 $Qvariants->bindTable(':table_products_variants', TABLE_PRODUCTS_VARIANTS);
                 $Qvariants->bindTable(':table_products_variants_entries', TABLE_PRODUCTS_VARIANTS_ENTRIES);
                 $Qvariants->bindTable(':table_products_variants_groups', TABLE_PRODUCTS_VARIANTS_GROUPS);
                 $Qvariants->bindTable(':table_products_variants_values', TABLE_PRODUCTS_VARIANTS_VALUES);
                 $Qvariants->bindInt(':products_id', $products['id']);
                 $Qvariants->bindInt(':groups_id', $variants['groups_id']);
                 $Qvariants->bindInt(':variants_values_id', $variants['variants_values_id']);
                 $Qvariants->bindInt(':pvg_language_id', $osC_Language->getID());
                 $Qvariants->bindInt(':pvv_language_id', $osC_Language->getID());
                 $Qvariants->execute();
                 $Qopv = $osC_Database->query('insert into :table_orders_products_variants (orders_id, orders_products_id, products_variants_groups_id, products_variants_groups, products_variants_values_id, products_variants_values) values (:orders_id, :orders_products_id, :products_variants_groups_id, :products_variants_groups, :products_variants_values_id, :products_variants_values)');
                 $Qopv->bindTable(':table_orders_products_variants', TABLE_ORDERS_PRODUCTS_VARIANTS);
                 $Qopv->bindInt(':orders_id', $insert_id);
                 $Qopv->bindInt(':orders_products_id', $order_products_id);
                 $Qopv->bindInt(':products_variants_groups_id', $variants['groups_id']);
                 $Qopv->bindValue(':products_variants_groups', $Qvariants->value('products_variants_groups_name'));
                 $Qopv->bindInt(':products_variants_values_id', $variants['variants_values_id']);
                 $Qopv->bindValue(':products_variants_values', $Qvariants->value('products_variants_values_name'));
                 $Qopv->execute();
             }
         }
         if ($products['type'] == PRODUCT_TYPE_DOWNLOADABLE) {
             $Qdownloadable = $osC_Database->query('select * from :table_products_downloadables where products_id = :products_id');
             $Qdownloadable->bindTable(':table_products_downloadables', TABLE_PRODUCTS_DOWNLOADABLES);
             $Qdownloadable->bindInt(':products_id', osc_get_product_id($products['id']));
             $Qdownloadable->execute();
             if ($osC_ShoppingCart->hasVariants($products['id'])) {
                 $variants_filename = $products['variant_filename'];
                 $variants_cache_filename = $products['variant_cache_filename'];
             } else {
                 $variants_filename = $Qdownloadable->value('filename');
                 $variants_cache_filename = $Qdownloadable->value('cache_filename');
             }
             $Qopd = $osC_Database->query('insert into :table_orders_products_download (orders_id, orders_products_id, orders_products_filename, orders_products_cache_filename, download_maxdays, download_count) values (:orders_id, :orders_products_id, :orders_products_filename, :orders_products_cache_filename, :download_maxdays, :download_count)');
             $Qopd->bindTable(':table_orders_products_download', TABLE_ORDERS_PRODUCTS_DOWNLOAD);
             $Qopd->bindInt(':orders_id', $insert_id);
             $Qopd->bindInt(':orders_products_id', $order_products_id);
             $Qopd->bindValue(':orders_products_filename', $variants_filename);
             $Qopd->bindValue(':orders_products_cache_filename', $variants_cache_filename);
             $Qopd->bindValue(':download_maxdays', $Qdownloadable->valueInt('number_of_accessible_days'));
             $Qopd->bindValue(':download_count', $Qdownloadable->valueInt('number_of_downloads') * $products['quantity']);
             $Qopd->execute();
         }
         if ($products['type'] == PRODUCT_TYPE_GIFT_CERTIFICATE) {
             require_once 'gift_certificates.php';
             $Qgc = $osC_Database->query('insert into :table_gift_certificates (orders_id, orders_products_id, gift_certificates_type, amount, gift_certificates_code, recipients_name, recipients_email, senders_name, senders_email, messages) values (:orders_id, :orders_products_id, :gift_certificates_type, :amount, :gift_certificates_code, :recipients_name, :recipients_email, :senders_name, :senders_email, :messages)');
             $Qgc->bindTable(':table_gift_certificates', TABLE_GIFT_CERTIFICATES);
             $Qgc->bindInt(':orders_id', $insert_id);
             $Qgc->bindInt(':gift_certificates_type', $products['gc_data']['type']);
             $Qgc->bindInt(':orders_products_id', $order_products_id);
             $Qgc->bindValue(':amount', $products['price']);
             $Qgc->bindValue(':gift_certificates_code', toC_Gift_Certificates::createGiftCertificateCode());
             $Qgc->bindValue(':recipients_name', $products['gc_data']['recipients_name']);
             $Qgc->bindValue(':recipients_email', $products['gc_data']['type'] == GIFT_CERTIFICATE_TYPE_EMAIL ? $products['gc_data']['recipients_email'] : '');
             $Qgc->bindValue(':senders_name', $products['gc_data']['senders_name']);
             $Qgc->bindValue(':senders_email', $products['gc_data']['type'] == GIFT_CERTIFICATE_TYPE_EMAIL ? $products['gc_data']['senders_email'] : '');
             $Qgc->bindValue(':messages', $products['gc_data']['message']);
             $Qgc->execute();
         }
     }
     if ($osC_ShoppingCart->isUseStoreCredit()) {
         $Qhistory = $osC_Database->query('insert into :table_customers_credits_history (customers_id, action_type, date_added, amount, comments) values (:customers_id, :action_type, now(), :amount, :comments)');
         $Qhistory->bindTable(':table_customers_credits_history', TABLE_CUSTOMERS_CREDITS_HISTORY);
         $Qhistory->bindInt(':customers_id', $osC_Customer->getID());
         $Qhistory->bindInt(':action_type', STORE_CREDIT_ACTION_TYPE_ORDER_PURCHASE);
         $Qhistory->bindValue(':amount', $osC_ShoppingCart->getStoreCredit() * -1);
         $Qhistory->bindValue(':comments', sprintf($osC_Language->get('store_credit_order_number'), $insert_id));
         $Qhistory->execute();
         $Qcustomer = $osC_Database->query('update :table_customers set customers_credits = (customers_credits + :customers_credits) where customers_id = :customers_id');
         $Qcustomer->bindTable(':table_customers', TABLE_CUSTOMERS);
         $Qcustomer->bindRaw(':customers_credits', $osC_ShoppingCart->getStoreCredit() * -1);
         $Qcustomer->bindInt(':customers_id', $osC_Customer->getID());
         $Qcustomer->execute();
         $Qcredit = $osC_Database->query('select customers_credits from :table_customers where customers_id = :customers_id');
         $Qcredit->bindTable(':table_customers', TABLE_CUSTOMERS);
         $Qcredit->bindInt(':customers_id', $osC_Customer->getID());
         $Qcredit->execute();
         $osC_Customer->setStoreCredit($Qcredit->value('customers_credits'));
     }
     if ($osC_ShoppingCart->hasCoupon()) {
         include_once 'includes/classes/coupon.php';
         $toC_Coupon = new toC_Coupon($osC_ShoppingCart->getCouponCode());
         $Qcoupon = $osC_Database->query('insert into :table_coupons_redeem_history (coupons_id, customers_id, orders_id, redeem_amount, redeem_date, redeem_ip_address) values (:coupons_id, :customers_id, :orders_id, :redeem_amount, now(), :redeem_ip_address)');
         $Qcoupon->bindTable(':table_coupons_redeem_history', TABLE_COUPONS_REDEEM_HISTORY);
         $Qcoupon->bindInt(':coupons_id', $toC_Coupon->getID());
         $Qcoupon->bindInt(':customers_id', $osC_Customer->getID());
         $Qcoupon->bindInt(':orders_id', $insert_id);
         $Qcoupon->bindValue(':redeem_amount', $osC_ShoppingCart->getCouponAmount());
         $Qcoupon->bindValue(':redeem_ip_address', osc_get_ip_address());
         $Qcoupon->execute();
     }
     if ($osC_ShoppingCart->hasGiftCertificate()) {
         $gift_certificate_codes = $osC_ShoppingCart->getGiftCertificateRedeemAmount();
         foreach ($gift_certificate_codes as $gift_certificate_code => $amount) {
             $Qcertificate = $osC_Database->query('select gift_certificates_id from :table_gift_certificates where gift_certificates_code = :gift_certificates_code');
             $Qcertificate->bindTable(':table_gift_certificates', TABLE_GIFT_CERTIFICATES);
             $Qcertificate->bindValue(':gift_certificates_code', $gift_certificate_code);
             $Qcertificate->execute();
             $Qinsert = $osC_Database->query('insert into :table_gift_certificates_redeem_history (gift_certificates_id, customers_id, orders_id, redeem_date, redeem_amount, redeem_ip_address) values (:gift_certificates_id, :customers_id, :orders_id, now(), :redeem_amount, :redeem_ip_address)');
             $Qinsert->bindTable(':table_gift_certificates_redeem_history', TABLE_GIFT_CERTIFICATES_REDEEM_HISTORY);
             $Qinsert->bindInt(':gift_certificates_id', $Qcertificate->valueInt(gift_certificates_id));
             $Qinsert->bindInt(':customers_id', $osC_Customer->getID());
             $Qinsert->bindInt(':orders_id', $insert_id);
             $Qinsert->bindValue(':redeem_amount', $amount);
             $Qinsert->bindValue(':redeem_ip_address', osc_get_ip_address());
             $Qinsert->execute();
         }
     }
     $_SESSION['prepOrderID'] = $osC_ShoppingCart->getCartID() . '-' . $insert_id;
     return $insert_id;
 }
Exemplo n.º 3
0
 function redeemCoupon()
 {
     global $toC_Json, $osC_Language, $osC_Payment, $osC_ShoppingCart, $osC_Currencies, $osC_Payment;
     $osC_Language->load('checkout');
     require_once 'includes/classes/coupon.php';
     $toC_Coupon = new toC_Coupon($_POST['coupon_redeem_code']);
     $errors = array();
     if (!$toC_Coupon->isExist()) {
         $errors[] = $osC_Language->get('error_coupon_not_exist');
     }
     if (!$toC_Coupon->isValid()) {
         $errors[] = $osC_Language->get('error_coupon_not_valid');
     }
     if (!$toC_Coupon->isDateValid()) {
         $errors[] = $osC_Language->get('error_coupon_invalid_date');
     }
     if (!$toC_Coupon->isUsesPerCouponValid()) {
         $errors[] = $osC_Language->get('error_coupon_exceed_uses_per_coupon');
     }
     if (!$toC_Coupon->isUsesPerCustomerValid()) {
         $errors[] = $osC_Language->get('error_coupon_exceed_uses_per_customer');
     }
     if ($toC_Coupon->hasRestrictCategories() || $toC_Coupon->hasRestrictProducts()) {
         if (!$toC_Coupon->containRestrictProducts()) {
             $errors[] = $osC_Language->get('error_coupon_no_match_products');
         }
     }
     if (!$toC_Coupon->checkMinimumOrderQuantity()) {
         $errors[] = $osC_Language->get('error_coupon_minimum_order_quantity');
     }
     if (sizeof($errors) == 0) {
         $osC_ShoppingCart->setCouponCode($_POST['coupon_redeem_code']);
         $form = toC_Json_Checkout::_getPaymentMethodForm();
         $response = array('success' => true, 'form' => $form, 'isTotalZero' => $osC_ShoppingCart->isTotalZero());
     } else {
         $response = array('success' => false, 'errors' => $errors);
     }
     echo $toC_Json->encode($response);
 }
 function _deleteCouponRedeemHistory()
 {
     global $osC_Database;
     include_once '../includes/classes/coupon.php';
     $toC_Coupon = new toC_Coupon($this->_coupon_code);
     $Qdelete = $osC_Database->query('delete from :table_coupons_redeem_history where coupons_id = :coupons_id and orders_id = :orders_id');
     $Qdelete->bindTable(':table_coupons_redeem_history', TABLE_COUPONS_REDEEM_HISTORY);
     $Qdelete->bindInt(':coupons_id', $toC_Coupon->getID());
     $Qdelete->bindInt(':orders_id', $this->getOrderID());
     $Qdelete->setLogging($_SESSION['module'], $this->getOrderID());
     $Qdelete->execute();
     if (!$osC_Database->isError()) {
         return true;
     }
     return false;
 }
Exemplo n.º 5
0
 function process()
 {
     global $osC_ShoppingCart, $osC_Currencies, $osC_Tax;
     $coupon_code = $osC_ShoppingCart->getCouponCode();
     if (empty($coupon_code)) {
         return;
     }
     require_once realpath(dirname(__FILE__) . '/../../') . '/classes/coupon.php';
     $toC_Coupon = new toC_Coupon($coupon_code);
     $coupon_amount = 0;
     $coupon_tax = 0;
     if ($toC_Coupon->isFreeShippingCoupon()) {
         $coupon_amount = $osC_ShoppingCart->getShippingMethod('cost');
         $osC_ShoppingCart->addToTotal($coupon_amount * -1);
         if ($osC_ShoppingCart->getShippingMethod('tax_class_id') > 0) {
             $tax = $osC_Tax->getTaxRate($osC_ShoppingCart->getShippingMethod('tax_class_id'), $osC_ShoppingCart->getShippingAddress('country_id'), $osC_ShoppingCart->getShippingAddress('zone_id'));
             $tax_description = $osC_Tax->getTaxRateDescription($osC_ShoppingCart->getShippingMethod('tax_class_id'), $osC_ShoppingCart->getShippingAddress('country_id'), $osC_ShoppingCart->getShippingAddress('zone_id'));
             if (DISPLAY_PRICE_WITH_TAX == '1') {
                 $coupon_tax = $osC_Tax->calculate($osC_ShoppingCart->getShippingMethod('cost') / (1 + $tax / 100), $tax);
             } else {
                 $coupon_tax = $osC_Tax->calculate($osC_ShoppingCart->getShippingMethod('cost'), $tax);
                 $osC_ShoppingCart->addToTotal($coupon_tax * -1);
             }
             $osC_ShoppingCart->addTaxAmount($coupon_tax * -1);
             $osC_ShoppingCart->addTaxGroup($tax_description, $coupon_tax * -1);
             if (DISPLAY_PRICE_WITH_TAX == '1') {
                 $coupon_amount += $coupon_tax;
             }
         }
     } else {
         $valid_order_total = 0;
         $valid_tax = 0;
         $tax_groups = array();
         $products = array();
         $has_restrict_products = $toC_Coupon->hasRestrictProducts();
         if ($has_restrict_products) {
             $products = $toC_Coupon->getRestrictProducts();
         }
         foreach ($osC_ShoppingCart->getProducts() as $product) {
             if (in_array($product['id'], $products) && $has_restrict_products === true || $has_restrict_products === false) {
                 $valid_order_total += $product['final_price'] * $product['quantity'];
                 $products_tax = $osC_Tax->getTaxRate($product['tax_class_id'], $osC_ShoppingCart->getTaxingAddress('country_id'), $osC_ShoppingCart->getTaxingAddress('zone_id'));
                 $products_tax_description = $osC_Tax->getTaxRateDescription($product['tax_class_id'], $osC_ShoppingCart->getTaxingAddress('country_id'), $osC_ShoppingCart->getTaxingAddress('zone_id'));
                 $valid_tax += $osC_Tax->calculate($product['final_price'], $products_tax) * $product['quantity'];
                 if (isset($tax_groups[$products_tax_description])) {
                     $tax_groups[$products_tax_description] += $osC_Tax->calculate($product['final_price'], $products_tax) * $product['quantity'];
                 } else {
                     $tax_groups[$products_tax_description] = $osC_Tax->calculate($product['final_price'], $products_tax) * $product['quantity'];
                 }
                 if ($toC_Coupon->isIncludeTax() == true) {
                     $valid_order_total += $osC_Tax->calculate($product['final_price'], $products_tax) * $product['quantity'];
                 }
             }
         }
         if ($toC_Coupon->isIncludeShipping() == true) {
             $valid_order_total += $osC_ShoppingCart->getShippingMethod('cost');
             if ($osC_ShoppingCart->getShippingMethod('tax_class_id') > 0) {
                 $tax = $osC_Tax->getTaxRate($osC_ShoppingCart->getShippingMethod('tax_class_id'), $osC_ShoppingCart->getTaxingAddress('country_id'), $osC_ShoppingCart->getTaxingAddress('zone_id'));
                 if (DISPLAY_PRICE_WITH_TAX == '1') {
                     $shipping_tax = $osC_Tax->calculate($osC_ShoppingCart->getShippingMethod('cost') / (1 + $tax / 100), $tax);
                 } else {
                     $shipping_tax = $osC_Tax->calculate($osC_ShoppingCart->getShippingMethod('cost'), $tax);
                 }
                 $tax_description = $osC_Tax->getTaxRateDescription($osC_ShoppingCart->getShippingMethod('tax_class_id'), $osC_ShoppingCart->getShippingAddress('country_id'), $osC_ShoppingCart->getShippingAddress('zone_id'));
                 $valid_tax += $shipping_tax;
                 $tax_groups[$products_tax_description] += $shipping_tax;
                 if ($toC_Coupon->isIncludeTax() == true) {
                     $valid_order_total += $shipping_tax;
                 }
             }
         }
         if ($toC_Coupon->isAmountCoupon()) {
             $coupon_amount = min($valid_order_total, $toC_Coupon->getCouponAmount());
         } else {
             if ($toC_Coupon->isPercentageCoupon()) {
                 $coupon_amount = round($toC_Coupon->getCouponAmount() * $valid_order_total / 100, 2);
             }
         }
         $osC_ShoppingCart->addToTotal($coupon_amount * -1);
         if ($toC_Coupon->isIncludeTax() == true) {
             $ratio = $valid_order_total == 0 ? 0 : $coupon_amount / $valid_order_total;
             foreach ($osC_ShoppingCart->_tax_groups as $key => $value) {
                 if (isset($tax_groups[$key])) {
                     $coupon_tax += $tax_groups[$key] * $ratio;
                     $osC_ShoppingCart->addTaxAmount($coupon_tax * -1);
                     $osC_ShoppingCart->addTaxGroup($key, $coupon_tax * -1);
                     $coupon_amount -= $coupon_tax;
                 }
                 if (DISPLAY_PRICE_WITH_TAX == '1') {
                     $coupon_amount += $coupon_tax;
                 }
             }
         } else {
             if ($toC_Coupon->isIncludeTax() == false) {
                 $ratio = $coupon_amount / $valid_order_total;
                 foreach ($osC_ShoppingCart->_tax_groups as $key => $value) {
                     if (isset($tax_groups[$key])) {
                         $coupon_tax += $tax_groups[$key] * $ratio;
                         $osC_ShoppingCart->addTaxAmount($coupon_tax * -1);
                         $osC_ShoppingCart->addTaxGroup($key, $coupon_tax * -1);
                         $osC_ShoppingCart->addToTotal($coupon_tax * -1);
                     }
                     if (DISPLAY_PRICE_WITH_TAX == '1') {
                         $coupon_amount += $coupon_tax;
                     }
                 }
             }
         }
     }
     if ($osC_ShoppingCart->isTotalZero()) {
         $osC_ShoppingCart->resetBillingMethod(false);
     }
     $osC_ShoppingCart->setCouponAmount($coupon_amount);
     if ($coupon_amount > 0) {
         $this->output[] = array('title' => $this->_title . ' (' . $coupon_code . ') : ', 'text' => '-' . $osC_Currencies->format($coupon_amount), 'value' => $coupon_amount * -1);
     } else {
         $osC_ShoppingCart->setCouponCode(null, false);
     }
 }