Esempio n. 1
0
 public function index($id = 0, $params = array())
 {
     if (!empty($id)) {
         $data = fn_get_order_info($id, false, false);
         if (empty($data)) {
             $status = Response::STATUS_NOT_FOUND;
         } else {
             $status = Response::STATUS_OK;
         }
     } else {
         $items_per_page = $this->safeGet($params, 'items_per_page', Registry::get('settings.Appearance.admin_orders_per_page'));
         list($data, $params) = fn_get_orders($params, $items_per_page);
         $data = array('orders' => $data, 'params' => $params);
         $status = Response::STATUS_OK;
     }
     return array('status' => $status, 'data' => $data);
 }
Esempio n. 2
0
 /**
  * Return order/orders info after the order placing
  * @param int   $order_id
  * @param array $response
  */
 public static function returnPlacedOrders($order_id, &$response, $items_per_page, $lang_code)
 {
     $order = self::getOrderInfo($order_id);
     $_error = false;
     $status = db_get_field('SELECT status FROM ?:orders WHERE order_id=?i', $order_id);
     if ($status == STATUS_PARENT_ORDER) {
         $child_orders = db_get_hash_single_array("SELECT order_id, status FROM ?:orders WHERE parent_order_id = ?i", array('order_id', 'status'), $order_id);
         $status = reset($child_orders);
         $order['child_orders'] = array_keys($child_orders);
     }
     if (!in_array($status, fn_get_order_paid_statuses())) {
         $_error = true;
         if ($status != 'B') {
             if (!empty($child_orders)) {
                 array_unshift($child_orders, $order_id);
             } else {
                 $child_orders = array();
                 $child_orders[] = $order_id;
             }
             $order_id_field = $status == 'N' ? 'processed_order_id' : 'failed_order_id';
             $_SESSION['cart'][$order_id_field] = $child_orders;
             $cart =& $_SESSION['cart'];
             if (!empty($cart['failed_order_id'])) {
                 $_ids = !empty($cart['failed_order_id']) ? $cart['failed_order_id'] : $cart['processed_order_id'];
                 $_order_id = reset($_ids);
                 $_payment_info = db_get_field("SELECT data\n                         FROM ?:order_data\n                         WHERE order_id = ?i AND type = 'P'", $_order_id);
                 if (!empty($_payment_info)) {
                     $_payment_info = unserialize(fn_decrypt_text($_payment_info));
                 }
                 $_msg = !empty($_payment_info['reason_text']) ? $_payment_info['reason_text'] : '';
                 $_msg .= empty($_msg) ? __('text_order_placed_error') : '';
                 $response->addError('ERROR_FAIL_POST_ORDER', $_msg);
                 $cart['processed_order_id'] = $cart['failed_order_id'];
                 unset($cart['failed_order_id']);
             } elseif (!fn_twg_set_internal_errors($response, 'ERROR_FAIL_POST_ORDER')) {
                 $response->addError('ERROR_FAIL_POST_ORDER', __('fail_post_order', $lang_code));
             }
         } else {
             if (!fn_twg_set_internal_errors($response, 'ERROR_ORDER_BACKORDERED')) {
                 $response->addError('ERROR_ORDER_BACKORDERED', __('text_order_backordered', $lang_code));
             }
         }
         $response->returnResponse();
     }
     $auth =& $_SESSION['auth'];
     $user = fn_get_user_info($auth['user_id']);
     $profile_points = !empty($user['points']) ? $user['points'] : 0;
     if (empty($order['child_orders'])) {
         $response->setData(array('order' => $order, 'profile_points' => $profile_points));
     } else {
         $params = array();
         if (empty($auth['user_id'])) {
             $params['order_id'] = $auth['order_ids'];
         } else {
             $params['user_id'] = $auth['user_id'];
         }
         list($orders, , $totals) = fn_get_orders($params, $items_per_page, true);
         $response->setMeta(!empty($totals['gross_total']) ? $totals['gross_total'] : 0, 'gross_total');
         $response->setMeta(!empty($totals['totally_paid']) ? $totals['totally_paid'] : 0, 'totally_paid');
         $response->setMeta($order, 'order');
         $response->setResponseList(TwigmoOrder::getOrdersAsApiList($orders, $lang_code));
         $response->setData($profile_points, 'profile_points');
         $pagination_params = array('items_per_page' => !empty($items_per_page) ? $items_per_page : TWG_RESPONSE_ITEMS_LIMIT, 'page' => !empty($_REQUEST['page']) ? $_REQUEST['page'] : 1);
         fn_twg_set_response_pagination($response, $pagination_params);
     }
 }
Esempio n. 3
0
     }
 }
 /* Pages */
 if (fn_check_view_permissions('pages.manage', 'GET')) {
     $general_stats['pages'] = array();
     list($fields, $join, $condition) = fn_get_pages(array('get_conditions' => true));
     $general_stats['pages']['total_pages'] = db_get_field('SELECT COUNT(*) FROM ?:pages ' . $join . ' WHERE ' . $condition);
 }
 /* Order */
 $orders_stat = array();
 if (fn_check_view_permissions('orders.manage', 'GET') || fn_check_view_permissions('sales_reports.view', 'GET') || fn_check_view_permissions('taxes.manage', 'GET')) {
     $params = array('period' => 'C', 'time_from' => $time_from, 'time_to' => $time_to);
     list($orders_stat['orders'], $search_params, $orders_stat['orders_total']) = fn_get_orders($params, 0, true);
     $time_difference = $time_to - $time_from;
     $params = array('period' => 'C', 'time_from' => $time_from - $time_difference, 'time_to' => $time_to - $time_difference);
     list($orders_stat['prev_orders'], $search_params, $orders_stat['prev_orders_total']) = fn_get_orders($params, 0, true);
     $orders_stat['diff']['orders_count'] = count($orders_stat['orders']) - count($orders_stat['prev_orders']);
     $orders_stat['diff']['sales'] = fn_calculate_differences($orders_stat['orders_total']['totally_paid'], $orders_stat['prev_orders_total']['totally_paid']);
 }
 /* Abandoned carts */
 $company_condition = '';
 if (fn_allowed_for('ULTIMATE')) {
     $company_condition = fn_get_company_condition('?:user_session_products.company_id');
 }
 if (fn_check_view_permissions('cart.cart_list', 'GET')) {
     $orders_stat['abandoned_cart_total'] = array_sum(db_get_fields('SELECT COUNT(*) FROM ?:user_session_products WHERE `timestamp` BETWEEN ?i AND ?i ?p GROUP BY user_id', $time_from, $time_to, $company_condition));
     $orders_stat['prev_abandoned_cart_total'] = array_sum(db_get_fields('SELECT COUNT(*) FROM ?:user_session_products WHERE `timestamp` BETWEEN ?i AND ?i ?p GROUP BY user_id', $time_from - $time_difference, $time_to - $time_difference, $company_condition));
     $orders_stat['diff']['abandoned_carts'] = fn_calculate_differences($orders_stat['abandoned_cart_total'], $orders_stat['prev_abandoned_cart_total']);
 }
 // Calculate orders taxes.
 if (fn_check_view_permissions('taxes.manage', 'GET')) {
Esempio n. 4
0
             $order_amount = empty($totals['order_amount']) ? 0 : $totals['order_amount'];
             $period_total_paid = empty($totals['total_paid']) ? 0 : $totals['total_paid'];
             $total_change = empty($prev_totals['total_paid']) ? 0 : $prev_totals['total_paid'];
             $order_amount_change = empty($prev_totals['order_amount']) ? 0 : $prev_totals['order_amount'];
             $total_paid_change = empty($prev_totals['total_paid']) ? 0 : $prev_totals['total_paid'];
             $item_amount_change = $prev_item_amount;
             $stat = array('title' => $title, 'time_from' => $time_from, 'total_paid' => $period_total_paid, 'total_paid_change' => $total_paid_change, 'total' => $period_total, 'total_change' => $total_change, 'order_amount' => $order_amount, 'order_amount_change' => $order_amount_change, 'item_amount' => $item_amount);
             if (!empty($status_orders)) {
                 $stat['status_stats'] = array('status_stat' => $status_orders);
             }
             $period_stats[] = $stat;
         }
         $response->setData(array('period' => $period_stats), 'periods');
         // Get latest orders
         $search_params = array('sort_by' => 'date', 'sort_order' => 'desc');
         list($orders) = fn_get_orders($search_params, $items_per_page, true);
         $orders = TwigmoOrder::getOrdersAsApiList($orders, $lang_code);
         $response->setData($orders, 'latest_orders');
         $response->returnResponse('orders_statistics');
     } else {
         if (!empty($search) && !empty($search['sort_by'])) {
             $sortings = array('sort_by' => $search['sort_by'], 'sort_order' => !empty($search['sort_order']) && $search['sort_order'] == 'desc' ? 'desc' : 'asc');
         }
         $response->setResponseList(Api::getApiSchemaData($object, $condition, array(), $options, $sortings));
     }
     $pagination_params = array('items_per_page' => !empty($items_per_page) ? $items_per_page : TWG_RESPONSE_ITEMS_LIMIT, 'page' => !empty($_REQUEST['page']) ? $_REQUEST['page'] : 1, 'total_items' => !empty($total_items) ? $total_items : 0);
     if ($is_paginate) {
         fn_twg_set_response_pagination($response, $pagination_params);
     }
     $response->returnResponse($object);
 }
Esempio n. 5
0
         $_REQUEST['subcats'] = 'Y';
     }
     fn_twg_set_response_catalog($response, $_REQUEST, $items_per_page, $lang_code);
 } elseif ($meta['object'] == 'orders') {
     $_auth =& $_SESSION['auth'];
     $params = $_REQUEST;
     if (!empty($_auth['user_id'])) {
         $params['user_id'] = $_auth['user_id'];
     } elseif (!empty($_auth['order_ids'])) {
         $params['order_id'] = $_auth['order_ids'];
     } else {
         $response->addError('ERROR_ACCESS_DENIED', __('access_denied'));
         $response->returnResponse();
     }
     $params['page'] = !empty($params['page']) ? $params['page'] : 1;
     list($orders, $params, $totals) = fn_get_orders($params, $items_per_page, true);
     $response->setMeta(!empty($totals['gross_total']) ? $totals['gross_total'] : 0, 'gross_total');
     $response->setMeta(!empty($totals['totally_paid']) ? $totals['totally_paid'] : 0, 'totally_paid');
     $response->setResponseList(TwigmoOrder::getOrdersAsApiList($orders, $lang_code));
     $pagination_params = array('total_items' => $params['total_items'], 'items_per_page' => !empty($items_per_page) ? $items_per_page : TWG_RESPONSE_ITEMS_LIMIT, 'page' => !empty($params['page']) ? $params['page'] : 1);
     fn_twg_set_response_pagination($response, $pagination_params);
 } elseif ($meta['object'] == 'placed_order') {
     TwigmoOrder::checkIfOrderAllowed($_REQUEST['order_id'], $_SESSION['auth'], $response);
     TwigmoOrder::returnPlacedOrders($_REQUEST['order_id'], $response, $items_per_page, $lang_code);
 } elseif ($meta['object'] == 'homepage') {
     fn_twg_set_response_homepage($response);
 } elseif ($meta['object'] == 'payment_methods') {
     $cart =& $_SESSION['cart'];
     $auth =& $_SESSION['auth'];
     // Update shipping info
     if (!empty($_REQUEST['shipping_ids'])) {
Esempio n. 6
0
function fn_exim_1c_export_orders($company_id, $lang_code)
{
    $cml = fn_get_cml_tag_names();
    $params = array('company_name' => true, 'place' => 'exim_1c', 'company_id' => $company_id);
    $statuses = Registry::get('addons.rus_exim_1c.exim_1c_order_statuses');
    if (!empty($statuses)) {
        foreach ($statuses as $key => $status) {
            if (!empty($status)) {
                $params['status'][] = $key;
            }
        }
    }
    list($orders, $search) = fn_get_orders($params);
    header("Content-type: text/xml; charset=utf-8");
    fn_echo("");
    $xml = new XMLWriter();
    $xml->openMemory();
    $xml->startDocument();
    $xml->startElement($cml['commerce_information']);
    foreach ($orders as $k => $data) {
        $order_data = fn_get_order_info($data['order_id']);
        $xml = fn_exim_1c_echo_order_xml($xml, $order_data, $lang_code);
    }
    $xml->endElement();
    fn_echo($xml->outputMemory());
}
Esempio n. 7
0
    //
} elseif ($mode == 'search') {
    $params = $_REQUEST;
    if (!empty($auth['user_id'])) {
        $params['user_id'] = $auth['user_id'];
    } elseif (!empty($auth['order_ids'])) {
        if (empty($params['order_id'])) {
            $params['order_id'] = $auth['order_ids'];
        } else {
            $ord_ids = is_array($params['order_id']) ? $params['order_id'] : explode(',', $params['order_id']);
            $params['order_id'] = array_intersect($ord_ids, $auth['order_ids']);
        }
    } else {
        return array(CONTROLLER_STATUS_REDIRECT, 'auth.login_form?return_url=' . urlencode(Registry::get('config.current_url')));
    }
    list($orders, $search) = fn_get_orders($params, Registry::get('settings.Appearance.orders_per_page'));
    Registry::get('view')->assign('orders', $orders);
    Registry::get('view')->assign('search', $search);
    //
    // Reorder order
    //
} elseif ($mode == 'reorder') {
    fn_reorder($_REQUEST['order_id'], $_SESSION['cart'], $auth);
    return array(CONTROLLER_STATUS_REDIRECT, 'checkout.cart');
} elseif ($mode == 'downloads') {
    if (empty($auth['user_id']) && empty($auth['order_ids'])) {
        return array(CONTROLLER_STATUS_REDIRECT, fn_url());
    }
    fn_add_breadcrumb(__('downloads'));
    $params = $_REQUEST;
    $params['user_id'] = $auth['user_id'];
Esempio n. 8
0
function fn_twg_get_latest_orders($lang_code)
{
    list($orders, $search) = fn_get_orders(array('sort_by' => 'date', 'sort_order' => 'desc'), 7);
    $orders = TwigmoOrder::getOrdersAsApiList($orders, $lang_code);
    return array('orders' => $orders, 'total' => $search['total_items']);
}
Esempio n. 9
0
    }
} elseif ($mode == 'picker') {
    $_REQUEST['skip_view'] = 'Y';
    list($orders, $search) = fn_get_orders($_REQUEST, Registry::get('settings.Appearance.admin_orders_per_page'));
    Registry::get('view')->assign('orders', $orders);
    Registry::get('view')->assign('search', $search);
    Registry::get('view')->display('pickers/orders/picker_contents.tpl');
    exit;
} elseif ($mode == 'manage') {
    if (!empty($params['status']) && $params['status'] == STATUS_INCOMPLETED_ORDER) {
        $params['include_incompleted'] = true;
    }
    if (fn_allowed_for('MULTIVENDOR')) {
        $params['company_name'] = true;
    }
    list($orders, $search, $totals) = fn_get_orders($params, Registry::get('settings.Appearance.admin_orders_per_page'), true);
    if (!empty($params['include_incompleted']) || !empty($search['include_incompleted'])) {
        Registry::get('view')->assign('incompleted_view', true);
    }
    if (!empty($_REQUEST['redirect_if_one']) && count($orders) == 1) {
        return array(CONTROLLER_STATUS_REDIRECT, 'orders.details?order_id=' . $orders[0]['order_id']);
    }
    $shippings = fn_get_shippings(true, CART_LANGUAGE);
    if (Registry::get('runtime.company_id')) {
        $company_shippings = fn_get_companies_shipping_ids(Registry::get('runtime.company_id'));
        if (fn_allowed_for('ULTIMATE')) {
            $company_shippings = db_get_fields('SELECT shipping_id FROM ?:shippings');
        }
        foreach ($shippings as $shipping_id => $shipping) {
            if (!in_array($shipping_id, $company_shippings)) {
                unset($shippings[$shipping_id]);
Esempio n. 10
0
 public static function exportDataOrders($lang_code)
 {
     $params = array('company_id' => self::$company_id, 'company_name' => true, 'place' => 'exim_1c');
     $statuses = self::$s_commerceml['exim_1c_order_statuses'];
     if (!empty($statuses)) {
         foreach ($statuses as $key => $status) {
             if (!empty($status)) {
                 $params['status'][] = $key;
             }
         }
     }
     list($orders, $search) = fn_get_orders($params);
     header("Content-type: text/xml; charset=utf-8");
     fn_echo("");
     $xml = new \XMLWriter();
     $xml->openMemory();
     $xml->startDocument();
     $xml->startElement(self::$cml['commerce_information']);
     foreach ($orders as $k => $data) {
         $order_data = fn_get_order_info($data['order_id']);
         $xml = self::dataOrderToFile($xml, $order_data, $lang_code);
     }
     $xml->endElement();
     fn_echo($xml->outputMemory());
 }
Esempio n. 11
0
/**
 * Creates condition for order search
 *
 * @param array $params List of search parameters
 * @param string $lang_code 2-letter language code
 * @return array Prepared data
 */
function fn_create_orders_condition($params, $lang_code = CART_LANGUAGE)
{
    /**
     * Modify search parameters defined in fn_search_register_object
     *
     * @param array  $params    List of search parameters
     * @param string $lang_code 2-letter language code
     */
    fn_set_hook('create_orders_condition_pre', $params, $lang_code);
    $params['get_conditions'] = true;
    if (!empty($params['q'])) {
        $params['order_id'] = $params['q'];
        $params['email'] = $params['q'];
        $params['cname'] = $params['q'];
    }
    list($fields, $join, $condition) = fn_get_orders($params, 0, $lang_code);
    $data = array('fields' => $fields, 'join' => $join, 'condition' => '1 ' . $condition, 'table' => '?:orders', 'key' => 'order_id', 'sort' => '?:orders.order_id', 'sort_table' => 'order_id');
    /**
     * Modify prepared data
     *
     * @param array  $params    List of search parameters
     * @param string $lang_code 2-letter language code
     * @param array  $data      Result search scheme
     */
    fn_set_hook('create_orders_condition_post', $params, $lang_code, $data);
    return $data;
}
                function smarty_template_function_get_orders($_smarty_tpl, $params)
                {
                    $saved_tpl_vars = $_smarty_tpl->tpl_vars;
                    foreach ($_smarty_tpl->smarty->template_functions['get_orders']['parameter'] as $key => $value) {
                        $_smarty_tpl->tpl_vars[$key] = new Smarty_variable($value);
                    }
                    foreach ($params as $key => $value) {
                        $_smarty_tpl->tpl_vars[$key] = new Smarty_variable($value);
                    }
                    ?>
        <?php 
                    $_smarty_tpl->tpl_vars['params'] = new Smarty_variable(array('status' => $_smarty_tpl->tpl_vars['status']->value, 'time_from' => $_smarty_tpl->tpl_vars['time_from']->value, 'time_to' => $_smarty_tpl->tpl_vars['time_to']->value, 'period' => 'C'), null, 0);
                    ?>
        <?php 
                    $_smarty_tpl->tpl_vars['orders'] = new Smarty_variable(fn_get_orders($_smarty_tpl->tpl_vars['params']->value, $_smarty_tpl->tpl_vars['limit']->value), null, 0);
                    ?>

        <table class="table table-middle table-last-td-align-right">
            <tbody>
            <?php 
                    $_smarty_tpl->tpl_vars["order"] = new Smarty_Variable();
                    $_smarty_tpl->tpl_vars["order"]->_loop = false;
                    $_from = $_smarty_tpl->tpl_vars['orders']->value[0];
                    if (!is_array($_from) && !is_object($_from)) {
                        settype($_from, 'array');
                    }
                    foreach ($_from as $_smarty_tpl->tpl_vars["order"]->key => $_smarty_tpl->tpl_vars["order"]->value) {
                        $_smarty_tpl->tpl_vars["order"]->_loop = true;
                        ?>
                <tr>
                    <td>
                        <span class="label btn-info o-status-<?php 
                        echo htmlspecialchars(mb_strtolower($_smarty_tpl->tpl_vars['order']->value['status'], 'UTF-8'), ENT_QUOTES, 'UTF-8');
                        ?>
"><?php 
                        echo htmlspecialchars($_smarty_tpl->tpl_vars['order_statuses']->value[$_smarty_tpl->tpl_vars['order']->value['status']]['description'], ENT_QUOTES, 'UTF-8');
                        ?>
</span>
                    </td>
                    <td><a href="<?php 
                        echo htmlspecialchars(fn_url("orders.details?order_id=" . (string) $_smarty_tpl->tpl_vars['order']->value['order_id']), ENT_QUOTES, 'UTF-8');
                        ?>
"><?php 
                        echo $_smarty_tpl->__("order");
                        ?>
 #<?php 
                        echo htmlspecialchars($_smarty_tpl->tpl_vars['order']->value['order_id'], ENT_QUOTES, 'UTF-8');
                        ?>
</a> <?php 
                        echo $_smarty_tpl->__("by");
                        ?>
 <?php 
                        if ($_smarty_tpl->tpl_vars['order']->value['user_id']) {
                            ?>
<a href="<?php 
                            echo htmlspecialchars(fn_url("profiles.update?user_id=" . (string) $_smarty_tpl->tpl_vars['order']->value['user_id']), ENT_QUOTES, 'UTF-8');
                            ?>
"><?php 
                        }
                        echo htmlspecialchars($_smarty_tpl->tpl_vars['order']->value['lastname'], ENT_QUOTES, 'UTF-8');
                        ?>
 <?php 
                        echo htmlspecialchars($_smarty_tpl->tpl_vars['order']->value['firstname'], ENT_QUOTES, 'UTF-8');
                        if ($_smarty_tpl->tpl_vars['order']->value['user_id']) {
                            ?>
</a><?php 
                        }
                        ?>
</td>
                    <td><span class="date"><?php 
                        echo htmlspecialchars(smarty_modifier_date_format($_smarty_tpl->tpl_vars['order']->value['timestamp'], (string) $_smarty_tpl->tpl_vars['settings']->value['Appearance']['date_format'] . ", " . (string) $_smarty_tpl->tpl_vars['settings']->value['Appearance']['time_format']), ENT_QUOTES, 'UTF-8');
                        ?>
</span></td>
                    <td><h4><?php 
                        echo $_smarty_tpl->getSubTemplate("common/price.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, null, array('value' => $_smarty_tpl->tpl_vars['order']->value['total']), 0);
                        ?>
</h4></td>
                </tr>
            <?php 
                    }
                    if (!$_smarty_tpl->tpl_vars["order"]->_loop) {
                        ?>
                <tr><td><?php 
                        echo $_smarty_tpl->__("no_data");
                        ?>
</td></tr>
            <?php 
                    }
                    ?>
            </tbody>
        </table>
    <?php 
                    $_smarty_tpl->tpl_vars = $saved_tpl_vars;
                    foreach (Smarty::$global_tpl_vars as $key => $value) {
                        if (!isset($_smarty_tpl->tpl_vars[$key])) {
                            $_smarty_tpl->tpl_vars[$key] = $value;
                        }
                    }
                }
Esempio n. 13
0
<?php

use Tygh\Registry;
use Tygh\Rees46\Config;
use Tygh\Http;
if (!defined('BOOTSTRAP')) {
    die('Access denied');
}
if ($mode == 'export_orders') {
    $shop_id = Config::getShopID();
    $shop_secret = Config::getShopSecret();
    if ($shop_id == '' || $shop_secret == '') {
        fn_set_notification('E', __('error'), __('rees46_error_export_order'), 'I');
    } else {
        $params = array('timestamp > ' . strtotime('-6 months'), 'items_per_page' => 500);
        $orders = fn_get_orders($params);
        $processed_orders = array();
        foreach (reset($orders) as $order) {
            $order_info = fn_get_order_info($order['order_id']);
            $items_formatted_info = array();
            foreach ($order_info['products'] as $product) {
                $product_formatted = array('id' => $product['product_id'], 'price' => $product['price'], 'amount' => $product['amount']);
                array_push($items_formatted_info, $product_formatted);
            }
            $order_formatted_info = array('id' => $order_info['order_id'], 'user_id' => $order_info['user_id'], 'user_email' => $order_info['email'], 'date' => $order_info['timestamp'], 'items' => $items_formatted_info);
            array_push($processed_orders, $order_formatted_info);
        }
        $result = array('shop_id' => $shop_id, 'shop_secret' => $shop_secret, 'orders' => $processed_orders);
        $respond = Http::post('http://api.rees46.com/import/orders.json', json_encode($result), array('headers' => array('Content-Type: application/json')));
        if (strtoupper($respond) == 'OK') {
            fn_set_notification('N', __('rees46_export_success'), '', 'I');