Добрый день! На админке сделал возможность как и товары делать экспорт найденных товаров. Помоги пожалуйста разобраться почему при нажатии на экспорт она не экспортирует. Какая функция или свойство нужно для этого?
Экспорт всех найденных?
На схеме exim в файле orders.functions.php написал как и на products 2 функции:
// MODIFIER
/**
* Gets found orders count for export.
*
* @return int
*/
function fn_exim_get_last_view_orders_count()
{
$last_view = new Backend(AREA, 'orders', 'index');
$view_id = $last_view->getCurrentViewId();
$last_view_results = $last_view->getViewParams($view_id);
if (!$last_view_results) {
return 0;
}
return $last_view_results['total_items'];
}
/**
* Gets found orders to export.
*
* @return int[]
*/
function fn_exim_get_last_view_order_ids_condition()
{
$last_view = new Backend(AREA, 'order', 'index');
$view_id = $last_view->getCurrentViewId();
$last_view_results = $last_view->getViewParams($view_id);
$data_function_params = [];
if ($last_view_results) {
unset(
$last_view_results['total_items'],
$last_view_results['sort_by'],
$last_view_results['sort_order'],
$last_view_results['sort_order_rev'],
$last_view_results['page'],
$last_view_results['items_per_page']
);
$data_function_params = $last_view_results;
}
$data_function_params['get_conditions'] = true;
$data_function_params['load_order_extra_data'] = false;
list($fields, $join, $condition) = fn_get_orders($data_function_params, 0, CART_LANGUAGE);
$order_ids = db_get_fields(
'SELECT DISTINCT ?p' .
' FROM ?:orders AS orders' .
' ?p' .
' WHERE 1 = 1' .
' ?p',
$fields['order_id'],
$join,
$condition
);
return [
'order_id' => $order_ids
];
}
Потом сделал кнопку на order.manage
{if $orders}
<li>{btn type="list" text="Экспорт найденных заказов" href="orders.export_found"}</li>
{/if}
И сделал mode для контроллера orders.php:
elseif ($mode == 'export_found') {
if (empty(Tygh::$app['session']['export_ranges'])) {
Tygh::$app['session']['export_ranges'] = [];
}
if (empty(Tygh::$app['session']['export_ranges']['orders']['pattern_id'])) {
Tygh::$app['session']['export_ranges']['orders'] = ['pattern_id' => 'orders'];
}
Tygh::$app['session']['export_ranges']['orders']['data_provider'] = [
'count_function' => 'fn_exim_get_last_view_orders_count',
'function' => 'fn_exim_get_last_view_order_ids_condition',
];
unset($_REQUEST['redirect_url'], Tygh::$app['session']['export_ranges']['orders']['data']);
return [
CONTROLLER_STATUS_OK,
'exim.export?section=orders&pattern_id=' . Tygh::$app['session']['export_ranges']['orders']['pattern_id'],
];
}
Да всех найденных внизу расписал как я делал
Все новое - хорошо забытое старое )))
Сработает ли такой метод для orders
Сработает, я переделал под заказы, полет нормальный
Круто работает!)
Добрый день!
Сделал такие поля в которых нужно добавить функцию поиска как у менеджера
Все сделал как и у менеджера issuers
Получаю ошибку:
Unknown column ‘issuers.firstname’ in ‘field list’ (1054)
SELECT cscart_orders.order_id, cscart_orders.issuer_id, cscart_orders.courier_id, cscart_orders.warehouseman_id, cscart_orders.user_id, cscart_orders.is_parent_order, cscart_orders.parent_order_id, cscart_orders.company_id, cscart_orders.company, cscart_orders.timestamp, cscart_orders.updated_at, cscart_orders.firstname, cscart_orders.lastname, cscart_orders.email, cscart_orders.company, cscart_orders.phone, cscart_orders.status, cscart_orders.total, CONCAT(issuers.firstname, ’ ', issuers.lastname) as issuer_name, issuers.email as issuer_email, CONCAT(couriers.firstname, ’ ', couriers.lastname) as courier_name, couriers.email as courier_email, CONCAT(couriers.firstname, ’ ', couriers.lastname) as courier_name, couriers.email as courier_email, invoice_docs.doc_id as invoice_id, memo_docs.doc_id as credit_memo_id, cscart_users.user_type, cscart_companies.company as company_name, cscart_order_data.data as points FROM cscart_orders LEFT JOIN cscart_users as warehousemans ON warehousemans.user_id = cscart_orders.warehouseman_id LEFT JOIN cscart_order_docs as invoice_docs ON invoice_docs.order_id = cscart_orders.order_id AND invoice_docs.type = ‘I’ LEFT JOIN cscart_order_docs as memo_docs ON memo_docs.order_id = cscart_orders.order_id AND memo_docs.type = ‘C’ LEFT JOIN cscart_users ON cscart_users.user_id = cscart_orders.user_id LEFT JOIN cscart_companies ON cscart_companies.company_id = cscart_orders.company_id LEFT JOIN cscart_order_data ON cscart_order_data.order_id = cscart_orders.order_id AND cscart_order_data.type = ‘W’ WHERE 1 AND cscart_orders.is_parent_order != ‘Y’ ORDER BY cscart_orders.timestamp desc, cscart_orders.order_id desc LIMIT 0, 10
Как доделать без ошибок? Подскажите пожалуйста
По моему понятию ошибка наверно в этом участке кода:
if (in_array('issuers', $params['extra'], true)) {
$fields[] = "CONCAT(issuers.firstname, ' ', issuers.lastname) as issuer_name";
$fields[] = 'issuers.email as issuer_email';
}
// MODIFIER
if (in_array('couriers', $params['extra'], true)) {
$fields[] = "CONCAT(couriers.firstname, ' ', couriers.lastname) as courier_name";
$fields[] = 'couriers.email as courier_email';
}
if (in_array('couriers', $params['extra'], true)) {
$fields[] = "CONCAT(couriers.firstname, ' ', couriers.lastname) as courier_name";
$fields[] = 'couriers.email as courier_email';
}
Да все правильно подумал! Там нужно было их обозначить для того чтобы система понимала что не таблица.