Модель: Order
                
 Класс Models_Order реализует логику взаимодействия с заказами покупателей.
 - Проверяет корректность ввода данных в форме оформления заказа;
 - Добавляет заказ в базу данных.
 - Отправляет сообщения на электронные адреса пользователя и администраторов, при успешном оформлении заказа.
 - Удаляет заказ из базы данных.
Методы со знаком * содержат хуки
| bool|string | isValidData() * | 
                            Проверяет корректность ввода данных в форму заказа и регистрацию в системе покупателя.
$arrayData = array( | 
                    
| void | addNewUser() | 
                            Если заказ оформляется впервые на нового покупателя, то создает новую запись в таблице пользователей.
$model = new Models_Order(); | 
                    
| int | addOrder() * | 
                            Сохраняет заказ в базу сайта. Добавляет в массив корзины третий параметр 'цена товара', для сохранения в заказ. Это нужно для того, чтобы в последствии вывести детальную информацию о заказе. Если оставить только id то информация может оказаться неверной, так как цены меняются. @see Models_Order::isValidData() входящий массив 
$model = new Models_Order(); | 
                    
| void | sendStatusToEmail() * | 
                            Отправляет сообщение о смене статуса заказа его владельцу.
$model = new Models_Order; | 
                    
| bool | updateOrder() * | 
                            Изменяет данные о заказе
$array = array( | 
                    
| string | join1cidProducts() | 
                            Добавляет к товарам в заказе идентификаторы 1С. | 
                    
| bool | refreshCountProducts() * | 
                            Пересчитывает количество остатков продуктов при отмене заказа.
$model = new Models_Order; | 
                    
| bool | deleteOrder() * | 
                            Удаляет заказ из базы данных.
$model = new Models_Order; | 
                    
| array | getOrder() | 
                            Возвращает массив заказов подцепляя данные о способе доставки.
$model = new Models_Order; | 
                    
| bool | setOrderStatus() * | 
                            Устанавливает переданный статус заказа.
$result = Models_Order::setOrderStatus(5, 4); | 
                    
| string | _getHash() | 
                            Генерация случайного хэша.
$email = 'admin@mail.mail'; | 
                    
| array | getDeliveryMethod() | 
                            Получение данных о способах доставки.
$order = new Models_Order(); | 
                    
| bool | DeliveryExist() | 
                            Проверяет, существуют ли способы доставки.
var_dump(Models_Order::DeliveryExist());
 | 
                    
| string | getOrderStatus() | 
                            Расшифровка по id статуса заказа.
echo Models_Order::getOrderStatus(4);
 | 
                    
| array | getPaymentMethod() | 
                            Расшифровка по id методов оплаты.
$order = new Models_Order(); | 
                    
| array | getPaymentBlocksMethod() | 
                            Получает набор всех способов оплаты.
$order = new Models_Order(); | 
                    
| array | getListPayment() | 
                            Возвращает весь список способов оплаты в ассоциативном массиве с индексами.
$result = Models_Order::getListPayment(); | 
                    
| string | getMaxPrice() | 
                            Возвращает максимальную сумму заказа.
echo Models_Order::getMaxPrice();
 | 
                    
| string | getMinPrice() | 
                            Возвращает минимальную сумму заказа.
echo Models_Order::getMinPrice();
 | 
                    
| string | getMaxDate() | 
                            Возвращает дату последнего заказа.
echo Models_Order::getMaxDate();
 | 
                    
| array | getMinDate() | 
                            Возвращает дату первого заказа.
echo Models_Order::getMinDate();
 | 
                    
| array | getListDelivery() | 
                            Возвращает весь список способов доставки в ассоциативном массиве с индексами.
$result = Models_Order::getListDelivery(); | 
                    
| string | getPaidedStatus() | 
                            Получение статуса оплаты.
echo Models_Order::getPaidedStatus(5);
 | 
                    
| string | getOrderCount() | Возвращает общее количество заказов. | 
| void | sendMailOfPayed() * | 
                            Отправляет сообщение  об оплате заказа.
$model = new Models_Order; | 
                    
| array | getFileToOrder() | 
                            Возвращает ссылки на скачивания электронных товаров.
$model = new Models_Order; | 
                    
| bool | getFileByMd5() | 
                            Возвращает файл по хэшу.
Models_Order::getFileByMd5('$1$.z8cFb7V$zt15YCRQ3442XaOU8mkWh1');
 | 
                    
| void | sendLinkForElectro() | 
                            Отправляет письмо со ссылками на приобретенные электронные товары
$model = new Models_Order; | 
                    
| void | sendMailOfUpdateOrder() | 
                            Уведомляет админов о смене статуса заказа пользователем, высылая им письма.
$model = new Models_Order; | 
                    
| array | getParamArray() | 
                            Возвращает массив параметров оплаты.
$order = new Models_Order; | 
                    
| bool | cloneOrder() * | 
                            Создает дубль заказа
$order = new Models_Order; | 
                    
| int | getNewOrdersCount() | 
                            Возвращает общее количествo невыполненных заказов.
echo Models_Order::getNewOrdersCount();
 | 
                    
| array | getOrderStat() | 
                            Возвращает статистику заказов за каждый день начиная с открытия магазина.
$result = Models_Order::getOrderStat(); | 
                    
| array | getStatisticPeriod() | 
                            Возвращает статистику заказов за выбранный период.
$result = Models_Order::getStatisticPeriod('01.01.2017','01.01.2018'); | 
                    
| string | printOrder() | 
                            Выводит на экран печатную форму для печати заказа в админке.
$model = new Models_Order; | 
                    
| bool|void | getPdfOrder() | 
                            Отдает pdf файл на скачивание.
$model = new Models_Order; | 
                    
| void | getMassPdfOrders() | 
                            Отдает pdf с несколькими заказами на скачивание | 
                    
| void|string | printQittance() | 
                            Выводит на экран печатную форму для печати квитанции на оплату заказа.
$model = new Models_Order; | 
                    
| void | getExportCSV() | 
                            Экспортирует параметры конкретного заказа в CSV файл.
$order = new Models_Order; | 
                    
| bool | refreshCountAfterEdit() * | 
                            Пересчитывает количество остатков продуктов при редактировании заказа.
$orderId = 5; | 
                    
| bool | notSetGoods() * | 
                            Проверяет есть в заказе комплект или нет при копировании заказа
$result = Models_Order::notSetGoods(3); | 
                    
| string | exportToCsvOrder() | 
                            Выгружает список заказов в CSV файл.
$order = new Models_Order; | 
                    
| array | getOrderDiscount() * | 
                            Поиск скидки, применяемой к заказу по промокоду или в рамках накопительной/объемной скидки. 
$params = array( | 
                    
| array|false | getOrderAdminComments() | Получить список доп. комментариев менеджеров к заказу по id | 
| boolean | addAdminCommentOrder() | Добавляет комментарий менеджера к заказу: если это первый комментарий, то он становиться главным, если последующий, то дополнительным. | 
| boolean | deleteAdminCommentOrder() | Удаляет доп. комментарий менеджера из заказа | 
| void | getCorrectOrderContent() | 
                            Возвращает корзину заказа с округленной до копеек стоимостью товаров Исправляет расхождение суммы товаров с суммой заказа, если оно возникло в результате окргления  | 
                    
| number | getLastOrderId() | Возвращает идентификатор последнего заказа | 
| bool | checkOrderReturn() | 
                            Проверяет наличие товаров заказа. Используется при изменении статуса заказа с "Отменён" на какой-либо другой.  | 
                    
| bool | printReceipt() * | 
                            Генерирует хук отправки чека Используется для инициализации события отправки чека зачета предоплаты  | 
                    
| bool | setPaymentInfoAboutReceipt() | 
                            Добавляет в заказ информацию о чеках | 
                    
| array | honestSignGetMarkingCodes() | 
                            Получает маркировку | 
                    
| void | honestSignDeleteMarksData() | 
                            Удаляет данные из таблицы маркировки по определенному заказу | 
                    
| bool | honestSignIsMarksHasDuplicate() | 
                            Проверяет маркировку на наличие дубликатов | 
                    
| array | getMarkDuplicate() | 
                            Метод позволяет получить в каком заказе используется конкретная маркировка (для поиска дублей маркировки) | 
                    
| array | getOrderItemMarkCodes() | 
                            Получает маркировку по номеру заказа и определенному продукту | 
                    
| bool | honestSignSetMarksData() | 
                            Добавляет данные о маркировке в бд | 
                    
| bool | isOrderNeedSecondReceipt() | 
                            Запрашивает данные и возвращает флаг нужен второй чек или нет | 
                    
Метод
bool|string isValidData (array $arrayData, array $require = Array, bool $createUser = true, string $error)
                                                        Параметры
Результат работы метода можно изменить хуком: Models_Order_isValidData
Описание
Проверяет корректность ввода данных в форму заказа и регистрацию в системе покупателя.
$arrayData = array(
    'email' => 'admin@admin.ru', // почта пользователя
    'phone' => '+7 (111) 111-11-11', // телефон пользователя
    'fio' => 'Администратор', // имя покупателя
    'address' => 'addr', // адрес доставки
    'info' => 'comment', // комментарий покупателя
    'customer' => 'fiz', // плательщик (fiz - физическое лицо, yur - юридическое)
    'yur_info' => Array(
        'nameyur' => null, // название юр лица
        'adress' => null, // адрес юр лица
        'inn' => null, // инн юр лица
        'kpp' => null, // кпп юр лица
        'bank' => null, // банк юр лица
        'bik' => null, // бик юр лица
        'ks' => null, // К/Сч юр лица
        'rs' => null, // Р/Сч юр лица
    ),
    'delivery' => 1, // ID доставки
    'date_delivery' => '08.03.2018', // дата доставки
    'payment' => 2 // ID оплаты
);
$order = new Models_Order;
$order->isValidData($arrayData);
Метод
addNewUser ($data)
                            
                                
                                                        Описание
Если заказ оформляется впервые на нового покупателя, то создает новую запись в таблице пользователей.
$model = new Models_Order();
$model->newUser = true;
$model->email = 'user@mail.mail';
$model->fio = 'username';
$model->address = 'адрес';
$model->phone = '8 (555) 555-55-55';
$model->ip = '127.0.0.1';
$model->addNewUser();
Метод
int addOrder (bool $adminOrder = false)
                                                        Параметры
Результат работы метода можно изменить хуком: Models_Order_addOrder
Описание
Сохраняет заказ в базу сайта.
Добавляет в массив корзины третий параметр 'цена товара', для сохранения в заказ.
Это нужно для того, чтобы в последствии вывести детальную информацию о заказе.
Если оставить только id то информация может оказаться неверной, так как цены меняются.
@see Models_Order::isValidData() входящий массив
$model = new Models_Order();
$model->isValidData($arrayData);
$orderId = $model->addOrder();
echo $orderId;
Метод
sendStatusToEmail (int $id, int $statusId, string $text)
                                                        Параметры
Результат работы метода можно изменить хуком: Models_Order_sendStatusToEmail
Описание
Отправляет сообщение о смене статуса заказа его владельцу.
$model = new Models_Order;
$model->sendStatusToEmail(5, 3, 'Ваш заказ передан в службу доставки');
Метод
bool updateOrder (array $array, bool $informUser = false, string $text)
                                                        Параметры
Результат работы метода можно изменить хуком: Models_Order_updateOrder
Описание
Изменяет данные о заказе
$array = array(
    'address' => 'addr', // адрес доставки
    'date_delivery' => '08.03.2018', // дата доставки
    'comment' => 'comment', // комментарий менеджера
    'delivery_cost' => 700, // стоимость доставки
    'delivery_id' => 1, // ID доставки
    'id' => 3, // ID заказа
    'number' => 'M-0105268947551', // код заказа
    'name_buyer' => 'Администратор', // имя покупателя
    'payment_id' => 1, // ID оплаты
    'phone' => '+7 (111) 111-11-11', // телефон пользователя
    'status_id' => 0, // ID статуса заказа
    'summ' => 100, // сумма заказа без доставки
    'currency_iso' => 'RUR', // код валюты заказа
    'user_email' => 'admin@admin.ru', // почта авторизации пользователя
    'contact_email' => 'admin@admin.ru', // контактная почта пользователя
    'order_content' => 'string', // сериализованный массив состава заказа
    'storage' => 'default', // склад для заказа
    'summ_shop_curr' => 100, // сумма заказа без доставки в основной валюте магазина
    'delivery_shop_curr' => 700, // стоимость доставки в основной валюте магазина
    'yur_info' => 'string' // сериализованный массив юридических данных
)
$model = new Models_Order;
$model->updateOrder($array , true, 'Ваш заказ успешно обновлен');
Метод
string join1cidProducts (string $order_content)
                                                        Параметры
Описание
Добавляет к товарам в заказе идентификаторы 1С.
Метод
bool refreshCountProducts (int $orderId, int $status_id)
                                                        Параметры
Результат работы метода можно изменить хуком: Models_Order_refreshCountProducts
Описание
Пересчитывает количество остатков продуктов при отмене заказа.
$model = new Models_Order;
$model->refreshCountProducts(5, 4);
Метод
bool deleteOrder (int $id, array|null $arrayId)
                                                        Параметры
Результат работы метода можно изменить хуком: Models_Order_deleteOrder
Описание
Удаляет заказ из базы данных.
$model = new Models_Order;
$model->deleteOrder(false, array(1,2,3,4,5));
Метод
array getOrder (string $where, $limit)
                                                        Параметры
Описание
Возвращает массив заказов подцепляя данные о способе доставки.
$model = new Models_Order;
$orders = $model->getOrder('id IN (1,2,3,4,5)');
viewData($orders);
Метод
bool setOrderStatus (int $id, int $statusId)
                                                        Параметры
Результат работы метода можно изменить хуком: Models_Order_setOrderStatus
Описание
Устанавливает переданный статус заказа.
$result = Models_Order::setOrderStatus(5, 4);
var_dump($result);
Метод
string _getHash (string $string)
                                                        Параметры
Описание
Генерация случайного хэша.
$email = 'admin@mail.mail';
$hash = Models_Order::_getHash($email);
echo $hash;
Метод
array getDeliveryMethod (bool $returnArray = true, int $id = -1)
                                                        Параметры
Описание
Получение данных о способах доставки.
$order = new Models_Order();
$result = $order->getDeliveryMethod();
viewData($result);
Метод
bool DeliveryExist ()
                            
                                
                                                        Описание
Проверяет, существуют ли способы доставки.
var_dump(Models_Order::DeliveryExist());
Метод
string getOrderStatus (int $statusId)
                                                        Параметры
Описание
Расшифровка по id статуса заказа.
echo Models_Order::getOrderStatus(4);
Метод
array getPaymentMethod (int $paymentId, $check = true)
                                                        Параметры
Описание
Расшифровка по id методов оплаты.
$order = new Models_Order();
$result = $order->getPaymentMethod(14);
viewData($result);
Метод
array getPaymentBlocksMethod ()
                            
                                
                                                        Описание
Получает набор всех способов оплаты.
$order = new Models_Order();
$result = $order->getPaymentBlocksMethod();
viewData($result);
Метод
array getListPayment ()
                            
                                
                                                        Описание
Возвращает весь список способов оплаты в ассоциативном массиве с индексами.
$result = Models_Order::getListPayment();
viewData($result);
Метод
string getMaxPrice ()
                            
                                
                                                        Описание
Возвращает максимальную сумму заказа.
echo Models_Order::getMaxPrice();
Метод
string getMinPrice ()
                            
                                
                                                        Описание
Возвращает минимальную сумму заказа.
echo Models_Order::getMinPrice();
Метод
string getMaxDate ()
                            
                                
                                                        Описание
Возвращает дату последнего заказа.
echo Models_Order::getMaxDate();
Метод
array getListDelivery ()
                            
                                
                                                        Описание
Возвращает весь список способов доставки в ассоциативном массиве с индексами.
$result = Models_Order::getListDelivery();
viewData($result);
Метод
string getPaidedStatus (array $paidedId)
                                                        Параметры
Описание
Получение статуса оплаты.
echo Models_Order::getPaidedStatus(5);
Метод
string getOrderCount (string $where)
                                                        Параметры
Описание
Возвращает общее количество заказов.
Метод
sendMailOfPayed (string $orderNumber, string $paySumm, string $pamentId)
                                                        Параметры
Результат работы метода можно изменить хуком: Models_Order_sendMailOfPayed
Описание
Отправляет сообщение  об оплате заказа.
$model = new Models_Order;
$model->sendMailOfPayed(5, 1500, 19);
Метод
array getFileToOrder (int $orderId)
                                                        Параметры
Описание
Возвращает ссылки на скачивания электронных товаров.
$model = new Models_Order;
$result = $model->sendMailOfPayed(5);
viewData($result);
Метод
bool getFileByMd5 (string $md5)
                                                        Параметры
Описание
Возвращает файл по хэшу.
Models_Order::getFileByMd5('$1$.z8cFb7V$zt15YCRQ3442XaOU8mkWh1');
Метод
sendLinkForElectro (string $orderId)
                                                        Параметры
Описание
Отправляет письмо со ссылками на приобретенные электронные товары
$model = new Models_Order;
$model->sendLinkForElectro(5);
Метод
sendMailOfUpdateOrder (int $orderId, $comment, $status)
                                                        Параметры
Описание
Уведомляет админов о смене статуса заказа пользователем, высылая им письма.
$model = new Models_Order;
$model->sendMailOfUpdateOrder(5);
Метод
array getParamArray (int $pay, int $orderId, float $summ)
                                                        Параметры
Описание
Возвращает массив параметров оплаты.
$order = new Models_Order;
$paymentInfo = $order->getParamArray(15, 5, 1500);
viewData($paymentInfo);
Метод
bool cloneOrder ($id)
                                                        Параметры
Результат работы метода можно изменить хуком: Models_Order_cloneOrder
Описание
Создает дубль заказа
$order = new Models_Order;
$order->cloneOrder(5);
Метод
int getNewOrdersCount ()
                            
                                
                                                        Описание
Возвращает общее количествo невыполненных заказов.
echo Models_Order::getNewOrdersCount();
Метод
array getOrderStat ()
                            
                                
                                                        Описание
Возвращает статистику заказов за каждый день начиная с открытия магазина.
$result = Models_Order::getOrderStat();
viewData($result);
Метод
array getStatisticPeriod (string $dateFrom, string $dateTo)
                                                        Параметры
Описание
Возвращает статистику заказов за выбранный период.
$result = Models_Order::getStatisticPeriod('01.01.2017','01.01.2018');
viewData($result);
Метод
string printOrder (int $id, bool $sign = true, string $type = order, string $usestamp = false)
                                                        Параметры
Описание
Выводит на экран печатную форму для печати заказа в админке.
$model = new Models_Order;
echo $model->printOrder(5);
Метод
bool|void getPdfOrder (int $orderId, string $type = order, string $usestamp = false)
                                                        Параметры
Описание
Отдает pdf файл на скачивание.
$model = new Models_Order;
$model->getPdfOrder(5);
Метод
getMassPdfOrders (array $ordersIds)
                                                        Параметры
Описание
Отдает pdf с несколькими заказами на скачивание
Метод
void|string printQittance ($public = true)
                                                        Параметры
Описание
Выводит на экран печатную форму для печати квитанции на оплату заказа.
$model = new Models_Order;
$model->printQittance();
Метод
void getExportCSV ($orderId)
                                                        Параметры
Описание
Экспортирует параметры конкретного заказа в CSV файл.
$order = new Models_Order;
$order->getExportCSV(5);
Метод
bool refreshCountAfterEdit (int $orderId, string $newOrderContent)
                                                        Параметры
Результат работы метода можно изменить хуком: Models_Order_refreshCountAfterEdit
Описание
Пересчитывает количество остатков продуктов при редактировании заказа.
$orderId = 5;
$content = 'a:1:{i:0;a:16:{s:2:\"id\";s:2:\"40\";s:7:\"variant\";s:4:\"1099\";s:5:\"title\";s:72:\"Чехол на руку для смартфона Demix+ Зелёный\";s:4:\"name\";s:72:\"Чехол на руку для смартфона Demix+ Зелёный\";s:8:\"property\";s:0:\"\";s:5:\"price\";s:3:\"499\";s:8:\"fulPrice\";s:3:\"499\";s:4:\"code\";s:6:\"SKU343\";s:6:\"weight\";s:1:\"0\";s:12:\"currency_iso\";s:3:\"RUR\";s:5:\"count\";s:1:\"2\";s:6:\"coupon\";s:1:\"0\";s:4:\"info\";s:0:\"\";s:3:\"url\";s:69:\"aksessuary/chehly-dlya-smartfonov/chehol-na-ruku-dlya-smartfona-demix\";s:8:\"discount\";s:1:\"0\";s:8:\"discSyst\";s:11:\"false/false\";}}';
$order = new Models_Order;
$result = $order->refreshCountAfterEdit($orderId, $content);
var_dump($result);
Метод
bool notSetGoods (int $id)
                                                        Параметры
Результат работы метода можно изменить хуком: Models_Order_notSetGoods
Описание
Проверяет есть в заказе комплект или нет при копировании заказа
$result = Models_Order::notSetGoods(3);
var_dump($result);
Метод
string exportToCsvOrder (array $listOrderId, bool $full = false, $exportToCSV = false)
                                                        Параметры
Описание
Выгружает список заказов в CSV файл.
$order = new Models_Order;
echo $order->exportToCsvOrder();
Метод
array getOrderDiscount (array $params)
                                                        Параметры
Результат работы метода можно изменить хуком: Models_Order_getOrderDiscount
Описание
Поиск скидки, применяемой к заказу по промокоду или в рамках
накопительной/объемной скидки.
$params = array(
    'summ' => 1000, // сумма заказа
    'email' => 'admin@admin.ru', // почта покупателя
    'promocode' => 'DEFAULT-DISCONT', // код купона скидки
    'cumulative' => 'true', // накопительная скидка
    'volume' => 'true', // объемная скидка
    'paymentId' => 5, // ID способа
    'orderItems' => 'array' // массив с товарами заказа
);
$order = new Models_Order;
$order->getOrderDiscount($params);
Метод
array|false getOrderAdminComments (string|int $id)
                                                        Параметры
Описание
Получить список доп. комментариев менеджеров к заказу по id
Метод
boolean addAdminCommentOrder (string|int $id, string $text, string|int $user_id)
                                                        Параметры
Описание
Добавляет комментарий менеджера к заказу: если это первый комментарий, то он становиться главным, если последующий, то дополнительным.
Метод
boolean deleteAdminCommentOrder (string|int $id)
                                                        Параметры
Описание
Удаляет доп. комментарий менеджера из заказа
Метод
getCorrectOrderContent ()
                            
                                
                                                        Описание
Возвращает корзину заказа с округленной до копеек стоимостью товаров
Исправляет расхождение суммы товаров с суммой заказа, если оно возникло в результате окргления
Метод
bool checkOrderReturn (int $orderId)
                                                        Параметры
Описание
Проверяет наличие товаров заказа.
Используется при изменении статуса заказа с "Отменён" на какой-либо другой.
Метод
bool printReceipt (int $orderId)
                                                        Параметры
Результат работы метода можно изменить хуком: Models_Order_printReceipt
Описание
Генерирует хук отправки чека
Используется для инициализации события отправки чека зачета предоплаты
Метод
bool setPaymentInfoAboutReceipt (int $orderId, bool $firstReceipt = true, bool $secondReceipt = false, bool $needSecondReceipt = true)
                                                        Параметры
Описание
Добавляет в заказ информацию о чеках
Метод
array honestSignGetMarkingCodes (int $orderId)
                                                        Параметры
Описание
Получает маркировку
Метод
void honestSignDeleteMarksData (int $orderId)
                                                        Параметры
Описание
Удаляет данные из таблицы маркировки по определенному заказу
Метод
bool honestSignIsMarksHasDuplicate (array $honestSignMarksData, $idOrder)
                                                        Параметры
Описание
Проверяет маркировку на наличие дубликатов
Метод
array getMarkDuplicate (array $markCodes, int $excludeOrderId)
                                                        Параметры
Описание
Метод позволяет получить в каком заказе используется конкретная маркировка (для поиска дублей маркировки)
Метод
array getOrderItemMarkCodes (int $orderId, int $productId, int $variantId)
                                                        Параметры
Описание
Получает маркировку по номеру заказа и определенному продукту