Esempio n. 1
0
        }
        if ($phd[4] == 'DELETED') {
            $phone[] = $phd[1];
        }
        if ($phd[4] == 'EXPIRED') {
            $phone[] = $phd[1];
        }
        if ($phd[4] == 'REJECTED') {
            $phone[] = $phd[1];
        }
    }
}
unset($phd, $pl, $pbase);
$phone = array_unique($phone);
$core->db->query("UPDATE " . DB_ORDER . " SET order_check = 1 WHERE order_phone IN ( '" . implode("', '", $phone) . "' ) AND order_status != 5 AND order_status < 10");
require_once PATH . 'lib/ban.php';
$bans = check_phone_bans($core, $phone);
foreach ($phone as $p) {
    if (!$bans[$p]) {
        ban_phone($core, $p);
    }
}
// Stage 10. User flows statistics
$ufc = $core->db->icol("SELECT user_id, COUNT(*) FROM " . DB_FLOW . " GROUP BY user_id");
$ftp = $core->db->data("SELECT user_id, COUNT(*) AS `c`, SUM(flow_convert) AS `cr`, SUM(flow_epc) AS `epc` FROM " . DB_FLOW . " WHERE flow_convert > 0 GROUP BY user_id");
foreach ($ftp as $f) {
    $uid = $f['user_id'];
    $dte = array('user_flw' => $ufc[$uid], 'user_flwa' => $f['c'], 'user_cr' => $f['cr'] / $f['c'] * 100.0, 'user_epc' => $f['epc'] / $f['c']);
    $core->db->edit(DB_USER, $dte, "user_id = '{$uid}'");
}
// end. =)
Esempio n. 2
0
function order_module($core)
{
    $module = $core->get['m'] ? $core->get['m'] : null;
    $id = $core->post['id'] ? (int) $core->post['id'] : ($core->get['id'] ? (int) $core->get['id'] : 0);
    $page = $core->get['page'] > 0 ? (int) $core->get['page'] : 1;
    $message = $core->get['message'] ? $core->get['message'] : null;
    if ($module == 'courier') {
        return order_courier($core);
    }
    if ($module == 'delivery') {
        return order_delivery($core);
    }
    if ($module == 'security') {
        return order_security($core);
    }
    if ($module && $module != 'order') {
        return false;
    }
    switch ($message) {
        case 'save':
            $core->info('info', 'done_order_save');
            break;
        case 'send':
            $core->info('info', 'done_order_send');
            break;
        case 'pack':
            $core->info('info', 'done_order_pack');
            break;
        case 'done':
            $core->info('info', 'done_order_done');
            break;
        case 'arrive':
            $core->info('info', 'done_order_arrive');
            break;
        case 'del':
            $core->info('info', 'done_order_del');
            break;
        case 'pickup':
            $core->info('error', 'error_order_pickup');
            break;
        case 'nocode':
            $core->info('error', 'error_order_nocode');
            break;
        case 'error':
            $core->info('error', 'error_order_smth');
            break;
        case 'access':
            $core->info('error', 'access_denied');
            break;
    }
    // Edit order
    if ($id) {
        // Order, offer and variants
        $order = $core->db->row("SELECT * FROM " . DB_ORDER . " WHERE order_id = '{$id}' LIMIT 1");
        if ($order['user_id'] != $core->user->id && $order['comp_id'] != $core->user->comp && $core->user->level < 1 && !$core->user->call) {
            $core->go($core->url('mm', '', 'access'));
        }
        $offer = $core->wmsale->get('offer', $order['offer_id']);
        $site = $order['site_id'] ? $core->wmsale->get('site', $order['site_id'], 'site_url') : false;
        $space = ($core->user->level || $core->user->call) && $order['space_id'] ? $core->wmsale->get('site', $order['space_id'], 'site_url') : false;
        $vars = $offer['offer_vars'] ? $core->wmsale->get('vars', $offer['offer_id']) : false;
        $oips = $core->db->field("SELECT COUNT(*) FROM " . DB_ORDER . " WHERE order_ip = '" . $order['order_ip'] . "'" . ($core->user->level || $core->user->call ? '' : " AND comp_id = '" . $order['comp_id'] . "'"));
        $ophs = $core->db->field("SELECT COUNT(*) FROM " . DB_ORDER . " WHERE order_phone = '" . $order['order_phone'] . "'" . ($core->user->level || $core->user->call ? '' : " AND comp_id = '" . $order['comp_id'] . "'"));
        $order['items'] = $order['order_items'] ? unserialize($order['order_items']) : array();
        $user = $core->user->get($order['wm_id']);
        $callscheme = ($callscheme = $core->wmsale->get('comp', $core->user->comp, 'callscheme')) ? $callscheme : 'tel:+%s';
        $ophone = $core->db->row("SELECT * FROM " . DB_PDB . " WHERE `phone` = '" . substr($order['order_phone'], 1, 6) . "' LIMIT 1");
        if ($ophone) {
            $ophone['type'] = $ophone['operator'];
            $ophone['place'] = $ophone['region'];
            if ($ophone['city']) {
                $ophone['place'] .= ', ' . $ophone['city'];
            }
        }
        $addr = $order['order_addr'];
        if ($order['order_street']) {
            $addr = $order['order_street'] . ', ' . $addr;
        }
        if ($order['order_city']) {
            $addr = $order['order_city'] . ', ' . $addr;
        }
        if ($order['order_area']) {
            $addr = $order['order_area'] . ', ' . $addr;
        }
        // Store
        if ($vars) {
            $store = array();
            $stores = $core->db->data("SELECT var_id, store_count FROM " . DB_STORE . " WHERE offer_id = '" . $order['offer_id'] . "' AND comp_id = '" . $order['comp_id'] . "'");
            foreach ($stores as $s) {
                $store[$s['var_id']] = $s['store_count'];
            }
        } else {
            $store = (int) $core->db->field("SELECT store_count FROM " . DB_STORE . " WHERE offer_id = '" . $order['offer_id'] . "' AND comp_id = '" . $order['comp_id'] . "' LIMIT 1");
        }
        // Parameters
        if ($offer['offer_paramurl'] && $order['order_meta']) {
            $cache = sprintf(PATH_CACHE, md5($order['order_meta']));
            if (!file_exists($cache)) {
                $post = unserialize($order['order_meta']);
                $form = curl($offer['offer_paramurl'], $post);
                file_put_contents($cache, $form);
            } else {
                $form = file_get_contents($cache);
            }
        } else {
            $form = null;
        }
        // Page Header
        $core->mainline->add($core->lang['orders_h'], $core->url('m', 'order'));
        $core->mainline->add($offer['offer_name']);
        $core->mainline->add($order['order_name']);
        $core->header();
        $core->tpl->load('body', 'order');
        $core->tpl->vars('body', $offer);
        $core->tpl->vars('body', $order);
        $core->tpl->vars('body', array('order' => $core->lang['order'], 'save' => $core->lang['order_save'], 'next' => $core->lang['order_save_next'], 'u_edit' => $core->url('a', 'order-edit', $id), 'action' => $core->lang['order_work_action'], 'mark' => $core->lang['order_marks'], 'source' => $core->lang['source'], 'site' => $core->lang['site'], 'space' => $core->lang['stat_spaces'], 'store' => $core->lang['store'], 'count' => $core->lang['count'], 'price' => $core->lang['price'], 'more_price' => $core->lang['order_more'], 'total' => $core->lang['total'], 'name' => $core->lang['name'], 'fio' => $core->lang['username'], 'address' => $core->lang['address'], 'address_d' => $core->lang['order_addr_d'], 'street' => $core->lang['street'], 'city' => $core->lang['city'], 'area' => $core->lang['area'], 'phone' => $core->lang['phone'], 'index' => $core->lang['index'], 'present' => $core->lang['present'], 'present_d' => $core->lang['present_d'], 'call' => $core->lang['call'], 'track' => $core->lang['track'], 'checkaddr' => $core->lang['order_checkaddr'], 'delivery' => $core->lang['deliver'], 'discount' => $core->lang['discount'], 'packdocs' => $core->lang['order_pack_docs'], 'country' => $order['order_country'] ? $order['order_country'] : ($order['geoip_country'] ? $order['geoip_country'] : 'zz'), 'callscheme' => $callscheme, 'phone_call' => sprintf($callscheme, $order['order_phone']), 'phone_ok_c' => $order['order_phone_ok'] ? 'phone-ok' : 'phone-bad', 'phone_ok_t' => $order['order_phone_ok'] ? 'ok' : '!!', 'form' => $form, 'status' => $core->lang['statuso'][$order['order_status']], 'date' => smartdate($order['order_time']), 'u_addr' => '/addr.php?addr=', 'u_spsr' => $core->url('a', 'order-spsr', 0), 'u_rupost' => $core->url('a', 'order-rupost', 0), 'fulladdr' => $addr, 'r' => $core->server['HTTP_REFERER'], 'site_url' => $site, 'space_url' => $space, 'paid_type' => $core->lang['order_paid'][$order['paid_ok']], 'paid_date' => smartdate($order['paid_time']), 'paid_info' => $core->text->lines($order['paid_from']), 'u_phone' => $core->url('a', 'order-phone', 0) . '?phone=', 'phone_info' => $ophone ? sprintf("%s (%s)", $ophone['type'], $ophone['place']) : '', 'order_ip' => int2ip($order['order_ip']), 'ipwarn' => $oips > 1 ? sprintf($core->lang['order_ipwarn'], $core->url('m', 'order?s=') . int2ip($order['order_ip']), $oips) : '', 'phwarn' => $ophs > 1 ? sprintf($core->lang['order_phwarn'], $core->url('m', 'order?s=') . $order['order_phone'], $ophs) : '', 'wm_name' => $order['wm_id'] ? $user['user_level'] ? '<b>' . $user['user_name'] . '</b>' : $user['user_name'] : $core->lang['order_src_sh'], 'wm_class' => $order['wm_id'] ? $order['ext_id'] ? 'ext' : ($user['user_ban'] ? 'warn' : ($user['user_warn'] ? 'ua' : ($user['user_vip'] ? 'vip' : 'user'))) : 'search', 'wm_src' => $order['flow_id'] ? sprintf($core->lang['order_src_f'], $order['flow_id']) : ($order['ext_src'] ? sprintf($core->lang['order_src_e'], $user['user_id'], $order['ext_src']) : '')));
        // Spacer landing
        if ($site) {
            $core->tpl->block('body', 'site');
        }
        if ($space) {
            $core->tpl->block('body', 'space');
        }
        if ($form) {
            $core->tpl->block('body', 'form');
        }
        if ($order['paid_ok']) {
            $core->tpl->block('body', 'paid');
        }
        if ($order['order_file']) {
            $core->tpl->block('body', 'file');
        }
        // WM info
        if ($order['wm_id'] && !$order['ext_id']) {
            $core->tpl->block('body', 'ofm', array('v' => $user['user_mail']));
            if ($user['user_wmr']) {
                $core->tpl->block('body', 'ofw', array('v' => $user['user_wmr']));
            }
        }
        // Edit ability
        $canedit = $order['order_status'] > 1 && $order['order_status'] < 5 || $order['order_status'] == 6 || $order['order_status'] == 7;
        if ($canedit) {
            $core->tpl->block('body', 'edit');
            if ($offer['offer_delivery']) {
                $core->tpl->block('body', 'edit.delivery');
            }
        } else {
            $core->tpl->block('body', 'view');
            if ($order['order_comment']) {
                $core->tpl->block('body', 'comment');
            }
        }
        // Package documents
        if ($order['order_status'] == 6 && $order['order_delivery'] == 1) {
            $core->tpl->block('body', 'docs', array('u' => $core->url('a', 'order-docs', $order['order_id'])));
        }
        // Tracking code
        if ($order['order_status'] == 7 || $order['order_status'] == 8) {
            $core->tpl->block('body', 'track');
        }
        if ($order['order_status'] > 7 && $order['order_status'] < 10 || $order['order_status'] == 11) {
            $core->tpl->block('body', 'delpro', array('cls' => $order['track_status'] ? $order['order_status'] == 9 ? 'green' : 'blue' : 'red', 'check' => sprintf($core->lang['track_check'], smartdate($order['track_check'])), 'info' => $order['track_status'] ? sprintf("%s: %s", $order['track_date'], $order['track_status']) : $core->lang['track_wait'], 'url' => sprintf($core->lang['deliveru'][$order['order_delivery']], $order['track_code'])));
        }
        // Variants of offer
        if ($vars) {
            $ndprice = 0;
            foreach ($vars as $v) {
                $core->tpl->block('body', 'item', array('id' => $v['var_id'], 'name' => $v['var_name'], 'price' => $v['var_price'], 'count' => (int) $order['items'][$v['var_id']], 'total' => $v['var_price'] * (int) $order['items'][$v['var_id']], 'store' => (int) $store[$v['var_id']]));
                if ($canedit) {
                    $core->tpl->block('body', 'item.edit');
                } else {
                    $core->tpl->block('body', 'item.view');
                }
                $ndprice += $v['var_price'] * (int) $order['items'][$v['var_id']];
            }
        } else {
            $core->tpl->block('body', 'item', array('id' => $offer['offer_id'], 'name' => $offer['offer_name'], 'price' => $offer['offer_price'], 'count' => (int) $order['order_count'], 'total' => $offer['offer_price'] * (int) $order['order_count'], 'store' => (int) $store));
            if ($canedit) {
                $core->tpl->block('body', 'item.edit');
            } else {
                $core->tpl->block('body', 'item.view');
            }
            $ndprice = $offer['offer_price'] * (int) $order['order_count'];
        }
        // Discounts
        if ($canedit) {
            foreach ($core->lang['discounts'] as $i => $n) {
                $core->tpl->block('body', 'dcedit', array('id' => $i, 'name' => $n, 'total' => ceil($ndprice * ((100 - $i) / 100)), 'check' => $i == $order['order_discount'] ? 'checked="checked"' : ''));
            }
        } else {
            $core->tpl->block('body', 'dcview', array('name' => $core->lang['discounts'][$order['order_discount']], 'price' => $order['order_discount'], 'total' => $ndprice * ((100 - $order['order_discount']) / 100)));
        }
        // Delivery
        if ($offer['offer_delivery']) {
            $core->tpl->block('body', 'delivery');
            if ($canedit) {
                $core->tpl->block('body', 'delivery.moreedit');
                foreach ($core->lang['delivery'] as $i => $n) {
                    $core->tpl->block('body', 'delivery.edit', array('id' => $i, 'name' => $n, 'price' => $core->lang['deliverp'][$i], 'total' => $core->lang['deliverp'][$i], 'check' => $i == $order['order_delivery'] ? 'checked="checked"' : ''));
                }
            } else {
                if ($order['order_more']) {
                    $core->tpl->block('body', 'delivery.moreview');
                }
                $core->tpl->block('body', 'delivery.view', array('name' => $core->lang['delivery'][$order['order_delivery']], 'price' => $core->lang['deliverp'][$order['order_delivery']], 'total' => $core->lang['deliverp'][$order['order_delivery']]));
            }
        }
        // Actions
        if ($order['order_status'] > 1 && $order['order_status'] < 5) {
            $actions = array('order_call_basic' => array('ok' => $core->lang['order_call_ok']), 'order_call_re' => array(), 'order_call_no' => array(), 'cancel' => array());
            if ($core->user->level || $core->user->shave) {
                $actions['order_call_basic']['shave'] = $core->lang['order_call_shave'];
            }
            foreach ($core->lang['recallo'] as $k => $v) {
                $actions['order_call_re']['re' . $k] = $v;
            }
            foreach ($core->lang['nocallo'] as $k => $v) {
                $actions['order_call_no']['no' . $k] = $v;
            }
            foreach ($core->lang['reasono'] as $k => $v) {
                $actions['cancel']['cancel' . $k] = $v;
            }
        } elseif ($order['order_status'] == 6) {
            $actions = array('order_pack_o' => $core->lang['packingo']);
        } elseif ($order['order_status'] == 7) {
            $actions = array('order_send_o' => $core->lang['sendingo']);
        } elseif ($order['order_status'] == 8) {
            $actions = array('order_deliver_o' => $core->lang['delivero']);
        } elseif ($order['order_status'] == 9) {
            $actions = array('order_pay_o' => $core->lang['payo']);
        } else {
            $actions = false;
        }
        // Actions block
        if ($actions) {
            $core->tpl->block('body', 'actions');
            foreach ($actions as $b => $a) {
                $core->tpl->block('body', 'actions.block', array('name' => $core->lang[$b]));
                foreach ($a as $v => $n) {
                    $core->tpl->block('body', 'actions.block.a', array('n' => $n, 'v' => $v));
                }
            }
        }
        // Marks
        if ($order['order_status'] > 1 && $order['order_status'] < 5) {
            $marks = array('banip' => sprintf($core->lang['order_ban_ip'], int2ip($order['order_ip'])), 'banphone' => sprintf($core->lang['order_ban_phone'], $order['order_phone']));
            if ($oips > 1) {
                $ooips = $core->db->field("SELECT COUNT(*) FROM " . DB_ORDER . " WHERE order_id != '{$id}' AND order_ip = '" . $order['order_ip'] . "' AND order_status < 5 AND comp_id = '" . $order['comp_id'] . "'");
                if ($ooips) {
                    $marks['delip'] = sprintf($core->lang['order_del_ip'], $ooips);
                }
            }
            if ($ophs > 1) {
                $oophs = $core->db->field("SELECT COUNT(*) FROM " . DB_ORDER . " WHERE order_id != '{$id}' AND order_phone = '" . $order['order_phone'] . "' AND order_status < 5 AND comp_id = '" . $order['comp_id'] . "'");
                if ($oophs) {
                    $marks['delphone'] = sprintf($core->lang['order_del_phone'], $oophs);
                }
            }
        } else {
            $marks = array();
        }
        // Checking marks
        if ($order['order_status'] > 1 && $order['order_status'] < 10 && $order['order_status'] != 5) {
            if ($order['order_check']) {
                $marks['uncheck'] = $core->lang['order_uncheck'];
            } else {
                $marks['check'] = $core->lang['order_tocheck'];
            }
        }
        // Marks block
        if ($marks) {
            $core->tpl->block('body', 'marks');
            foreach ($marks as $v => $n) {
                $core->tpl->block('body', 'marks.mk', array('n' => $n, 'v' => $v));
            }
        }
        // Button blocks
        if ($order['order_status'] == 1) {
            $core->tpl->block('body', 'pickup', array('u' => $core->url('a', 'order-pickup', $id), 't' => $core->lang['order_pick_up'], 'c' => $core->lang['order_pick_confirm']));
        }
        if ($order['order_status'] != 5 && $order['order_status'] > 1 && $order['order_status'] < 10) {
            $core->tpl->block('body', 'buttons');
        }
        if ($order['geoip_country']) {
            $geoip = $order['geoip_city'] ? $order['geoip_city'] : '';
            if ($order['geoip_region']) {
                $geoip .= ', ' . $order['geoip_region'];
            }
            if ($order['geoip_district']) {
                $geoip .= ', ' . $order['geoip_district'];
            }
            $geoip = trim($geoip, ', ');
            if (!$geoip) {
                $geoip = $order['geoip_country'];
            }
            if ($order['geoip_lat'] && $order['geoip_lng']) {
                $geoip = '<a target="_blank" href="http://maps.yandex.ru/?ll=' . $order['geoip_lng'] . '%2C' . $order['geoip_lat'] . '">' . $geoip . '</a>';
            }
            $core->tpl->vars('body', array('order_country' => $geoip));
        }
        $core->tpl->output('body');
        $core->footer();
    } else {
        $where = array();
        // User filter
        if ($core->user->level || $core->user->call) {
            if (isset($core->get['c']) && $core->get['c']) {
                $c = (int) $core->get['c'];
                $where[] = "comp_id = '{$c}'";
            } else {
                $c = false;
            }
        } else {
            if (isset($core->get['a']) && ($a = (int) $core->get['a'])) {
                $where[] = "user_id = '" . $core->user->id . "'";
            } else {
                $where[] = "comp_id = '" . $core->user->comp . "'";
            }
            $manager = $core->wmsale->get('mans', $core->user->comp);
            $manager[0] = '———';
        }
        // WebMaster and Source Filters
        if (isset($core->get['wm']) && $core->get['wm']) {
            $wm = (int) $core->get['wm'];
            $where[] = "wm_id = '{$wm}'";
        } else {
            $wm = false;
        }
        if (isset($core->get['src']) && $core->get['src']) {
            $src = $core->text->link($core->get['src']);
            $where[] = "ext_src = '{$src}'";
        } else {
            $src = false;
        }
        // Search
        if (isset($core->get['s']) && $core->get['s']) {
            $s = $core->text->line($core->get['s']);
            if (preg_match('#^([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)$#i', $s) && ($ips = ip2int($s))) {
                $where[] = " order_ip = '{$ips}' ";
            } elseif (preg_match('#^[0-9]{11}$#i', $s)) {
                $where[] = " order_phone = '{$s}' ";
            } else {
                require_once PATH_CORE . 'search.php';
                $search = new SearchWords($core->get['s']);
                if ($s = $search->get()) {
                    $where[] = $search->field(array('order_name', 'order_addr', 'order_street', 'order_city', 'order_area'));
                } else {
                    $s = false;
                }
            }
        } else {
            $s = false;
        }
        // Status filtering
        if (isset($core->get['f']) && $core->get['f'] != '') {
            $f = (int) $core->get['f'];
            if ($f < 0) {
                switch ($f) {
                    case -1:
                        $where[] = "order_status NOT IN ( 5, 12 )";
                        break;
                    case -2:
                        $where[] = "order_status < 5";
                        break;
                    case -3:
                        $where[] = "order_status > 5 AND order_status < 12";
                        break;
                    default:
                        $f = '';
                }
            } else {
                $where[] = "order_status = '{$f}'";
            }
        } else {
            $f = '';
        }
        // Offer filtering
        if (isset($core->get['o']) && $core->get['o']) {
            $o = (int) $core->get['o'];
            $where[] = "offer_id = '{$o}'";
        } else {
            $o = false;
        }
        // Date filtering
        if ($d = $core->get['d']) {
            $dd = explode('-', $d);
            $ds = mktime(0, 0, 0, $dd[1], $dd[2], $dd[0]);
            $de = mktime(23, 59, 59, $dd[1], $dd[2], $dd[0]);
            $where[] = "( order_time BETWEEN '{$ds}' AND '{$de}' )";
        } else {
            $d = false;
        }
        $where = count($where) ? implode(' AND ', $where) : '1';
        $csv = $core->get['mode'] == 'csv' ? 1 : 0;
        $ipsl = $phsl = array();
        if (!$csv) {
            $sh = 20;
            $st = $sh * ($page - 1);
            $orders = $core->db->field("SELECT COUNT(*) FROM " . DB_ORDER . " WHERE {$where}");
            $order = $orders ? $core->db->data("SELECT * FROM " . DB_ORDER . " WHERE {$where} ORDER BY order_status ASC, order_time DESC LIMIT {$st}, {$sh}") : false;
            foreach ($order as &$ooo) {
                $ipsl[] = $ooo['order_ip'];
                $phls[] = $ooo['order_phone'];
            }
            unset($ooo);
        } else {
            $order = $core->db->data("SELECT * FROM " . DB_ORDER . " WHERE {$where} ORDER BY order_status ASC, order_time DESC");
        }
        $company = $core->user->comp ? $core->wmsale->get('comp', $core->user->comp) : false;
        $offer = $core->wmsale->get('offers');
        $vars = array();
        // Check for the bans
        if ($ipls || $phls) {
            require_once PATH . 'lib/ban.php';
            $banip = check_ip_bans($core, $ipls);
            $banph = check_phone_bans($core, $phls);
        } else {
            $banip = $banph = array();
        }
        $core->mainline->add($core->lang['orders_h'], $core->url('m', 'order'));
        if (!$csv) {
            $core->header();
        }
        $core->tpl->load('body', $csv ? 'csv-index' : 'index');
        $core->tpl->vars('body', array('title' => $core->lang['orders_h'], 'text' => $core->text->lines($core->lang['orders_t']), 'offer' => $core->lang['offer'], 'phone' => $core->lang['phone'], 'name' => $core->lang['username'], 'address' => $core->lang['address'], 'time' => $core->lang['time'], 'price' => $core->lang['price'], 'status' => $core->lang['status'], 'action' => $core->lang['action'], 'pay' => $core->lang['pay'], 'edit' => $core->lang['edit'], 'del' => $core->lang['del'], 'confirm' => $core->lang['confirma'], 'call_confirm' => $core->lang['order_call_confirm'], 'call_default' => $core->lang['order_call_action'], 'call_ok' => $core->lang['order_call_ok'], 'call_re' => $core->lang['order_call_re'], 'call_no' => $core->lang['order_call_no'], 'pickup' => $core->lang['order_pick_up'], 'pick_confirm' => $core->lang['order_pick_confirm'], 'packed' => $core->lang['order_packed'], 'packdocs' => $core->lang['order_pack_docs'], 'pack_confirm' => $core->lang['order_pack_confirm'], 'track_code' => $core->lang['track_code'], 'track_send' => $core->lang['track_send'], 'track_confirm' => $core->lang['track_confirm'], 'info' => $core->lang['inf'], 'work' => $core->lang['order_work'], 'pack' => $core->lang['order_pack'], 'cancel' => $core->lang['order_cancel'], 'later' => $core->lang['order_later'], 'showall' => $core->lang['order_showall'], 'company' => $core->lang['company'], 'd' => $d, 's' => $search ? $search->get() : $s, 'wm' => $wm, 'src' => $src, 'pages' => pages($core->url('m', '?') . ($f ? 'f=' . $f . '&' : '') . ($d ? 'd=' . $d . '&' : '') . ($s ? 's=' . $s . '&' : '') . ($a ? 'a=' . $a . '&' : '') . ($c ? 'c=' . $c . '&' : '') . ($o ? 'o=' . $o . '&' : '') . ($wm ? 'wm=' . $wm . '&' : '') . ($src ? 'src=' . $src . '&' : ''), $orders, $sh, $page), 'shown' => sprintf($core->lang['shown'], $st + 1, min($st + $sh, $orders), $orders), 'filter' => $core->lang['filter'], 'date' => $core->lang['date'], 'search' => $core->lang['search'], 'find' => $core->lang['find'], 'u_pickup' => $core->url('a', 'order-pickup', ''), 'o_pickup' => $core->lang['order_pick_up_smth'], 'u_courier' => $core->url('m', 'courier'), 'courier' => $core->lang['order_courier'], 'u_csv' => $core->url('m', '?mode=csv&') . ($f ? 'f=' . $f . '&' : '') . ($d ? 'd=' . $d . '&' : '') . ($s ? 's=' . $s . '&' : '') . ($a ? 'a=' . $a . '&' : '') . ($c ? 'c=' . $c . '&' : '') . ($o ? 'o=' . $o . '&' : '') . ($wm ? 'wm=' . $wm . '&' : '') . ($src ? 'src=' . $src . '&' : ''), 'esend' => $core->lang['order_esend'], 'es_confirm' => $core->lang['order_es_confirm'], 'o_1' => $f == -1 ? 'selected="selected"' : '', 'o_2' => $f == -2 ? 'selected="selected"' : '', 'o_3' => $f == -3 ? 'selected="selected"' : ''));
        if ($company['comp_spsr']) {
            $core->tpl->block('body', 'couriers');
        }
        if ($core->user->work < 2) {
            $core->tpl->block('body', 'pickitup');
        }
        foreach ($core->lang['statuso'] as $i => $st) {
            $core->tpl->block('body', 'status', array('name' => $st, 'value' => $i, 'select' => $f != '' && $f == $i ? 'selected="selected"' : ''));
        }
        $comp = $core->wmsale->get('comps');
        if ($core->user->level || $core->user->call) {
            $core->tpl->block('body', 'comps');
            foreach ($comp as $ci => $cn) {
                $core->tpl->block('body', 'comps.c', array('name' => $cn, 'value' => $ci, 'select' => $c == $ci ? 'selected="selected"' : ''));
            }
        } else {
            $core->tpl->block('body', 'all', array('a' => $a ? 'checked="checked"' : ''));
        }
        foreach ($offer as $i => $of) {
            $core->tpl->block('body', 'offer', array('name' => $of, 'value' => $i, 'select' => $o == $i ? 'selected="selected"' : ''));
        }
        $callscheme = ($callscheme = $core->wmsale->get('comp', $core->user->comp, 'callscheme')) ? $callscheme : 'tel:+%s';
        if ($order) {
            foreach ($order as &$r) {
                $addr = $r['order_addr'];
                if ($r['order_street']) {
                    $addr = $r['order_street'] . ', ' . $addr;
                }
                if ($r['order_city']) {
                    $addr = $r['order_city'] . ', ' . $addr;
                }
                if ($r['order_area']) {
                    $addr = $r['order_area'] . ', ' . $addr;
                }
                $addr = trim($addr, ', ');
                $uid = $r['wm_id'];
                $user = $uid ? $core->user->get($uid) : array();
                $core->tpl->block('body', 'ord', array('oid' => $r['offer_id'], 'offer' => $offer[$r['offer_id']], 'id' => $r['order_id'], 'ip' => int2ip($r['order_ip']), 'ip_class' => $banip[$r['order_ip']] ? $banip[$r['order_ip']] < 10 ? 'yellow' : 'red' : 'green', 'country' => $r['order_country'] ? $r['order_country'] : ($r['geoip_country'] ? $r['geoip_country'] : 'zz'), 'name' => $search ? $search->highlight($r['order_name']) : $r['order_name'], 'addr' => $search ? $search->highlight($addr) : $addr, 'index' => $r['order_index'], 'comment' => $r['order_comment'], 'phone' => $search ? $search->highlight($r['order_phone']) : $r['order_phone'], 'phone_call' => sprintf($callscheme, $r['order_phone']), 'phone_ok' => $r['order_phone_ok'] ? 'ok' : 'bad', 'phone_class' => $banph[$r['order_phone']] ? $banph[$r['order_phone']] < 10 ? 'yellow' : 'red' : 'green', 'count' => $r['order_count'], 'price' => rur($r['order_price']), 'price_csv' => (int) $r['order_price'], 'time' => smartdate($r['order_time']), 'stid' => $r['order_status'], 'status' => $core->lang['statuso'][$r['order_status']], 'edit' => $core->url('i', 'order', $r['order_id']), 'actcls' => $r['order_status'] < 5 || $r['order_status'] == 7 ? 'cb' : '', 'manager' => $manager[$r['user_id']], 'paid' => $r['paid_ok'], 'paidinfo' => $core->lang['order_paid'][$r['paid_ok']] . ($r['paid_time'] ? ' - ' . smartdate($r['paid_time']) : ''), 'calls' => $r['order_calls'] ? sprintf(' <small title="%s" class="red">(%s)</small>', $core->lang['order_calls'], $r['order_calls']) : '', 'delivery' => $r['order_delivery'], 'delivern' => $core->lang['delivers'][$r['order_delivery']], 'uid' => $uid, 'uname' => $uid ? $user['user_level'] ? '<b>' . $user['user_name'] . '</b>' : $user['user_name'] : $core->lang['order_src_sh'], 'uclass' => $r['order_check'] ? 'warn' : ($uid ? $r['ext_id'] ? 'ext' : ($user['user_vip'] ? 'vip' : 'user') : 'search')));
                if ($r['order_status'] == 1) {
                    $core->tpl->block('body', 'ord.pickup', array('u' => $core->url('a', 'order-pickup', $r['order_id'])));
                    if ($core->user->level || $core->user->call) {
                        $core->tpl->block('body', 'ord.pickup.move', array('u' => $core->url('a', 'order-move', $r['order_id'])));
                        foreach ($comp as $v => $n) {
                            $core->tpl->block('body', 'ord.pickup.move.comp', array('val' => $v, 'name' => $n));
                        }
                    }
                }
                if ($r['order_status'] > 1 && $r['order_status'] < 5) {
                    $core->tpl->block('body', 'ord.call', array('action' => $core->url('a', 'order-call', $r['order_id'])));
                    foreach ($core->lang['recallo'] as $v => $n) {
                        $core->tpl->block('body', 'ord.call.re', array('val' => $v, 'name' => $n));
                    }
                    foreach ($core->lang['nocallo'] as $v => $n) {
                        $core->tpl->block('body', 'ord.call.no', array('val' => $v, 'name' => $n));
                    }
                    foreach ($core->lang['reasono'] as $v => $n) {
                        $core->tpl->block('body', 'ord.call.cancel', array('val' => $v, 'name' => $n));
                    }
                }
                if ($r['order_status'] == 5) {
                    $core->tpl->block('body', 'ord.cancel', array('reason' => $r['order_reason'] ? $core->lang['reasono'][$r['order_reason']] : ($r['order_comment'] ? sprintf($core->lang['noreason_comment'], $r['order_comment']) : $core->lang['noreason'])));
                }
                if ($r['order_status'] == 6) {
                    $items = $r['order_items'] ? unserialize($r['order_items']) : false;
                    $iline = '';
                    if ($items) {
                        if (!count($vars[$r['offer_id']])) {
                            $vrs = $core->wmsale->get('vars', $r['offer_id']);
                            $vars[$r['offer_id']] = array();
                            foreach ($vrs as $w) {
                                $vars[$r['offer_id']][$w['var_id']] = $w['var_short'];
                            }
                        }
                        foreach ($items as $k => $x) {
                            $iline .= ' ' . $vars[$r['offer_id']][$k] . ': ' . $x . ' ';
                        }
                    }
                    $core->tpl->block('body', 'ord.pack', array('docs' => $core->url('a', 'order-docs', $r['order_id']), 'done' => $core->url('a', 'order-packed', $r['order_id']), 'items' => $iline));
                    if ($r['order_delivery'] == 1) {
                        $core->tpl->block('body', 'ord.pack.doc');
                    }
                }
                if ($r['order_status'] == 7) {
                    $core->tpl->block('body', 'ord.send', array('u' => $core->url('a', 'order-send', $r['order_id'])));
                    if ($r['order_delivery'] > 1) {
                        $core->tpl->block('body', 'ord.esend', array('u' => $core->url('a', 'order-esend', $r['order_id']), 'nc' => $r['order_courier'] ? 'new' : 'deliver', 'nu' => $core->url('a', $r['order_courier'] ? 'order-snew' : 'order-sold', $r['order_id']), 'nt' => $r['order_courier'] ? $core->lang['order_spsr_new'] : $core->lang['order_spsr_old']));
                    }
                }
                if ($r['order_status'] == 8 || $r['order_status'] == 9 || $r['order_status'] == 11) {
                    $core->tpl->block('body', 'ord.track', array('cls' => $r['track_status'] ? $r['order_status'] == 9 ? 'green' : 'blue' : 'red', 'check' => sprintf($core->lang['track_check'], smartdate($r['track_check'])), 'info' => $r['track_status'] ? sprintf("%s: %s", $r['track_date'], $r['track_status']) : $core->lang['track_wait'], 'url' => sprintf($core->lang['deliveru'][$r['order_delivery']], $r['track_code'])));
                    if ($r['order_status'] == 8) {
                        $core->tpl->block('body', 'ord.track.confirm', array('c' => $core->lang['order_arrive_conf'], 't' => $core->lang['order_arrived'], 'u' => $core->url('a', 'order-arrive', $r['order_id'])));
                    }
                    if ($r['order_status'] == 9) {
                        $core->tpl->block('body', 'ord.track.confirm', array('c' => $core->lang['order_payd_conf'], 't' => $core->lang['order_payd'], 'u' => $core->url('a', 'order-done', $r['order_id'])));
                    }
                }
                if ($core->user->level || $core->user->call) {
                    $core->tpl->block('body', 'ord.comp', array('id' => $r['comp_id'], 'name' => $comp[$r['comp_id']]));
                } else {
                    $core->tpl->block('body', 'ord.ip');
                }
            }
        }
        unset($r, $order);
        if ($core->user->work < 2 && $page < 2 && !($s || $f || $d || $a || $wm || $src)) {
            $recall = $core->user->call ? $core->db->data("SELECT * FROM " . DB_ORDER . " WHERE order_status IN ( 3, 4 ) AND order_recall < '" . time() . "'") : $core->db->data("SELECT * FROM " . DB_ORDER . " WHERE order_status IN ( 3, 4 ) AND order_recall < '" . time() . "' AND ( comp_id = '" . $core->user->comp . "' OR user_id = '" . $core->user->id . "' )");
            if ($recall) {
                $callscheme = ($callscheme = $core->wmsale->get('comp', $core->user->comp, 'callscheme')) ? $callscheme : 'tel:+%s';
                $core->tpl->block('body', 'recall', array('text' => $core->text->lines($core->lang['recall_t'])));
                foreach ($recall as &$r) {
                    $core->tpl->block('body', 'recall.ord', array('offer' => $offer[$r['offer_id']], 'id' => $r['order_id'], 'name' => $search ? $search->highlight($r['order_name']) : $r['order_name'], 'addr' => $search ? $search->highlight($r['order_addr']) : $r['order_addr'], 'index' => $r['order_index'], 'phone' => $search ? $search->highlight($r['order_phone']) : $r['order_phone'], 'phone_call' => sprintf($callscheme, $r['order_phone']), 'phone_ok' => $r['order_phone_ok'] ? 'ok' : 'bad', 'count' => $r['order_count'], 'price' => rur($r['order_price']), 'time' => smartdate($r['order_time']), 'stid' => $r['order_status'], 'status' => $core->lang['statuso'][$r['order_status']], 'calls' => $r['order_calls'] ? sprintf(' <small title="%s" class="red">(%s)</small>', $core->lang['order_calls'], $r['order_calls']) : '', 'action' => $core->url('a', 'order-call', $r['order_id']), 'edit' => $core->url('i', 'order', $r['order_id'])));
                    foreach ($core->lang['recallo'] as $v => $n) {
                        $core->tpl->block('body', 'recall.ord.re', array('val' => $v, 'name' => $n));
                    }
                    foreach ($core->lang['nocallo'] as $v => $n) {
                        $core->tpl->block('body', 'recall.ord.no', array('val' => $v, 'name' => $n));
                    }
                    foreach ($core->lang['reasono'] as $v => $n) {
                        $core->tpl->block('body', 'recall.ord.cancel', array('val' => $v, 'name' => $n));
                    }
                }
                unset($r, $recall);
            }
        }
        if ($csv) {
            header('Content-type: text/csv; charset=windows-1251');
            header('Content-disposition: attachment; filename=orders.csv');
            $core->tpl->output('body', 'windows-1251//IGNORE');
        } else {
            $core->tpl->output('body');
            $core->footer();
        }
    }
    $core->_die();
}