Files
anpdf/app/routes/order.php

247 lines
7.8 KiB
PHP
Raw Normal View History

2021-06-19 23:26:37 +03:00
<?php
/**
* оформление заказа
*/
2021-06-20 18:20:21 +03:00
function checkout_kuri($priceslug, $delivery_id = 1){
2021-06-19 23:26:37 +03:00
2021-06-21 17:55:53 +03:00
$err_critical = false; // true - не введены обязательные поля
$add_order = false; //по умолчанию не добавлять заказ
$add = []; // массив заполнения заказа
$elements = []; //элементы формы
$pay_ids = [
'1' => 'Оплата на сайте',
'2' => 'Оплата при получении'
];
$pay_id = 2; // по умолчанию оплата при получении
/** был изменен способ доставки в форме
* 1 - электронная
* 2 - самовывоз
* 3 - курьером
*/
//print_r($_POST);
/* ищем есть ли товар */
2021-06-19 23:26:37 +03:00
$price_id = db_get("SELECT * FROM `price` WHERE `priceslug` = '$priceslug' LIMIT 1");
2021-06-21 17:55:53 +03:00
if (!isset($price_id['price_id'])) {
echo 'товар не найден';
return false;
}
2021-06-19 23:26:37 +03:00
2021-06-21 17:55:53 +03:00
/** определяем цену товара */
if ($delivery_id == 1){ // тип товара = 1 (только электронная)
$price = $price_id['price']; // электронный прайс
}
else {
2021-06-21 18:30:01 +03:00
if ($price_id['pieces'] > 0 ){
$price = $price_id['offline_price']; // бумажный прайс
$delivery = db_get("SELECT * FROM delivery WHERE delivery_id > 1"); // список доставок для бумажной версии
}
else{
echo 'Товара больше нет в наличии';
return;
}
2021-06-21 17:55:53 +03:00
}
2021-06-19 23:26:37 +03:00
2021-06-21 17:55:53 +03:00
/** фиксируем цену в базу */
2021-06-19 23:26:37 +03:00
2021-06-21 17:55:53 +03:00
$add['buy_price'] = $price;
$add['price'] = $price;
/** если клиент залогинен */
if (defined('CLIENT_ID')){
2021-06-19 23:26:37 +03:00
2021-06-21 17:55:53 +03:00
$client = client_find_id(CLIENT_ID);
2021-06-19 23:26:37 +03:00
2021-06-21 17:55:53 +03:00
if (isset($client['result']['client_id'])){
$client = $client['result'];
}
2021-06-19 23:26:37 +03:00
2021-06-21 17:55:53 +03:00
}
# если пришла форма
if (count($_POST) > 0){
$errors = []; // ошибки которые вернуться в форму
if (isset($_POST['delivery_id'])){
$delivery_id = (int)$_POST['delivery_id'];
2021-06-19 23:26:37 +03:00
}
2021-06-21 17:55:53 +03:00
if (isset($_POST['pay_id'])){
$pay_id = (int)$_POST['pay_id'];
}
# указан ли в поле email
if (isset($_POST['clientmail']) and trim($_POST['clientmail']) !== '') {
2021-06-19 23:26:37 +03:00
$clientmail = $_POST['clientmail'];
if (!filter_var($clientmail, FILTER_VALIDATE_EMAIL)){
2021-06-21 17:55:53 +03:00
$error['buy_email'] = 'Не указана электронная почта (обязательна для электронных заказов и оплаты онлайн)';
if ($delivery_id == 1 or $pay_id == 1){
$err_critical = True; # обязательное поле для цифрового заказа или оплаты онлайн
}
2021-06-19 23:26:37 +03:00
}
else {
2021-06-21 17:55:53 +03:00
$client = api_add_client($clientmail); # ищем или создаем клиента
2021-06-19 23:26:37 +03:00
}
2021-06-21 17:55:53 +03:00
2021-06-19 23:26:37 +03:00
}
2021-06-20 18:20:21 +03:00
2021-06-21 17:55:53 +03:00
# указано ли поле имя
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'] = 'Не указано имя. Обязательно для получения самовывозом';
2021-06-20 18:20:21 +03:00
}
2021-06-21 17:55:53 +03:00
}
# указано поле телефон
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'] = 'Не указан телефон по которому можно уточнить детали доставки';
2021-06-20 18:20:21 +03:00
}
2021-06-21 17:55:53 +03:00
}
# указано поле адрес
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'];
2021-06-20 18:20:21 +03:00
2021-06-21 17:55:53 +03:00
if ($delivery_id == 1) {
$add_order = True; // для электронного заказа достаточно активного клиента
2021-06-19 23:26:37 +03:00
}
2021-06-21 17:55:53 +03:00
}
2021-06-19 23:26:37 +03:00
2021-06-21 17:55:53 +03:00
#создаем заказ
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 { # заказ создался
2021-06-21 18:30:01 +03:00
2021-06-21 17:55:53 +03:00
if ( $delivery_id == 1 or ($_POST['pay_id']) == 1){
2021-06-21 18:30:01 +03:00
//уводим на оплату в Юкассу
2021-06-21 17:55:53 +03:00
return anpay_kuri($order_id);
}
else { // даем пользователю номер заказа
2021-06-21 18:30:01 +03:00
#минус один товар со склада
$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');
2021-06-21 17:55:53 +03:00
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"); // переводим на инфу про заказа
}
}
2021-06-19 23:26:37 +03:00
}
2021-06-21 17:55:53 +03:00
$submit_link = SITE."checkout/$priceslug/$delivery_id";
include VIEWPATH.'checkout.phtml';
2021-06-19 23:26:37 +03:00
2021-06-21 17:55:53 +03:00
}
# страница с которой
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');
2021-06-19 23:26:37 +03:00
2021-06-20 18:20:21 +03:00
}
2021-06-21 17:55:53 +03:00