Files
anpdf/app/routes/order.php
2021-06-21 18:30:01 +03:00

247 lines
7.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* оформление заказа
*/
function checkout_kuri($priceslug, $delivery_id = 1){
$err_critical = false; // true - не введены обязательные поля
$add_order = false; //по умолчанию не добавлять заказ
$add = []; // массив заполнения заказа
$elements = []; //элементы формы
$pay_ids = [
'1' => 'Оплата на сайте',
'2' => 'Оплата при получении'
];
$pay_id = 2; // по умолчанию оплата при получении
/** был изменен способ доставки в форме
* 1 - электронная
* 2 - самовывоз
* 3 - курьером
*/
//print_r($_POST);
/* ищем есть ли товар */
$price_id = db_get("SELECT * FROM `price` WHERE `priceslug` = '$priceslug' LIMIT 1");
if (!isset($price_id['price_id'])) {
echo 'товар не найден';
return false;
}
/** определяем цену товара */
if ($delivery_id == 1){ // тип товара = 1 (только электронная)
$price = $price_id['price']; // электронный прайс
}
else {
if ($price_id['pieces'] > 0 ){
$price = $price_id['offline_price']; // бумажный прайс
$delivery = db_get("SELECT * FROM delivery WHERE delivery_id > 1"); // список доставок для бумажной версии
}
else{
echo 'Товара больше нет в наличии';
return;
}
}
/** фиксируем цену в базу */
$add['buy_price'] = $price;
$add['price'] = $price;
/** если клиент залогинен */
if (defined('CLIENT_ID')){
$client = client_find_id(CLIENT_ID);
if (isset($client['result']['client_id'])){
$client = $client['result'];
}
}
# если пришла форма
if (count($_POST) > 0){
$errors = []; // ошибки которые вернуться в форму
if (isset($_POST['delivery_id'])){
$delivery_id = (int)$_POST['delivery_id'];
}
if (isset($_POST['pay_id'])){
$pay_id = (int)$_POST['pay_id'];
}
# указан ли в поле email
if (isset($_POST['clientmail']) and trim($_POST['clientmail']) !== '') {
$clientmail = $_POST['clientmail'];
if (!filter_var($clientmail, FILTER_VALIDATE_EMAIL)){
$error['buy_email'] = 'Не указана электронная почта (обязательна для электронных заказов и оплаты онлайн)';
if ($delivery_id == 1 or $pay_id == 1){
$err_critical = True; # обязательное поле для цифрового заказа или оплаты онлайн
}
}
else {
$client = api_add_client($clientmail); # ищем или создаем клиента
}
}
# указано ли поле имя
if (isset($_POST['buy_name']) and trim($_POST['buy_name']) !== '' ) {
$add['buy_name'] = trim($_POST['buy_name']);
}
else {
if ($delivery_id > 1){
$err_critical = True; // обязательное поле для физических заказов
$errors['buy_name'] = 'Не указано имя. Обязательно для получения самовывозом';
}
}
# указано поле телефон
if (isset($_POST['buy_tel']) and trim($_POST['buy_tel']) !== '') {
$add['buy_tel'] = trim($_POST['buy_tel']);
}
else {
if ($delivery_id == 3){ // обязательное поле для доставки курьером
$err_critical = True;
$errors['buy_tel'] = 'Не указан телефон по которому можно уточнить детали доставки';
}
}
# указано поле адрес
if (isset($_POST['buy_adress']) and trim($_POST['buy_adress']) !== '') {
$add['buy_adress'] = trim($_POST['buy_adress']);
}
else {
if ($delivery_id == 3){
$err_critical = True; // обязательное поле для доставки курьером
$errors['buy_adress'] = 'Не указан адрес куда доставить товар';
}
}
// все поля формы заполнены - пушим заказ
if (!$err_critical){
$add_order = True;
}
}
/** фикстируем клиента в базу */
if (isset($client['client_id'])) {
$add['client_id'] = $client['client_id'];
$add['buy_email'] = $client['clientmail'];
if ($delivery_id == 1) {
$add_order = True; // для электронного заказа достаточно активного клиента
}
}
#создаем заказ
if ($add_order){
$add['buy_status'] = 0;
$add['mail_status'] = 0;
$add['number_id'] = $price_id['price_id'];
$add['pay_id'] = 3; // оплата через Юкассу
$add['delivery_id'] = $delivery_id;
$add['date_start'] = date('Y-m-d H:i:s');
$add['buy_active'] = 0;
$order_id = db_insert('anbuy', $add, 'chitatel'); // добавляем в базу заказ
$order_url = SITE."status/$order_id";
if (is_array($order_id)){ // неудалось создать заказ
$error_mail = True;
$error['no_order'] = 'Не удалось сформировать заказ';
}
else { # заказ создался
if ( $delivery_id == 1 or ($_POST['pay_id']) == 1){
//уводим на оплату в Юкассу
return anpay_kuri($order_id);
}
else { // даем пользователю номер заказа
#минус один товар со склада
$pieces = $price_id['pieces'] - 1;
$pi_sql = "UPDATE `price` SET `pieces` = '$pieces' WHERE `price_id` = '{$price_id['price_id']}';";
$pi_res = db_get($pi_sql, 'chitatel');
if (isset($add['buy_email'])) {
$message = "Ваш платеж подтвержден. Номер заказа $order_id\n
Сообщите его менеджеру при необходимости.\n";
$subject = "Аргументы Недели: платеж подтвержден";
$result = klanmail($add['buy_email'], $subject, $message, set('klanmail'));
// echo $result;
}
header("Location: $order_url"); // переводим на инфу про заказа
}
}
}
$submit_link = SITE."checkout/$priceslug/$delivery_id";
include VIEWPATH.'checkout.phtml';
}
# страница с которой
function status_kuri($order_id){
# получаем инфу о заказе
$buy_find = "
SELECT
`buy_id`,
`buy_status`,
`delivery_id`,
`shop_id`
FROM
`anbuy`
WHERE
`buy_id` = '$order_id'
LIMIT 1
";
$buy_id = db_get($buy_find);
include(VIEWPATH.'order_status.phtml');
}