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 = []; //элементы формы
|
|
|
|
|
|
|
2021-08-18 01:29:32 +03:00
|
|
|
|
if (isset($_POST['delivery_id'])){
|
|
|
|
|
|
$delivery_id = (int)$_POST['delivery_id'];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
|
|
|
|
|
|
$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-08-18 00:30:21 +03:00
|
|
|
|
}
|
2021-06-21 17:55:53 +03:00
|
|
|
|
|
2021-08-18 00:30:21 +03:00
|
|
|
|
# отправляем цену на форму в js
|
2021-06-21 17:55:53 +03:00
|
|
|
|
if ($delivery_id == 1){ // тип товара = 1 (только электронная)
|
|
|
|
|
|
$price = $price_id['price']; // электронный прайс
|
|
|
|
|
|
}
|
2021-08-18 00:30:21 +03:00
|
|
|
|
else {
|
|
|
|
|
|
$price = $price_id['offline_price']; // бумажный прайс
|
2022-02-03 15:15:10 +00:00
|
|
|
|
$delivery = delivery_list($price_id['weight']); // список доставок для бумажной версии
|
2021-08-18 00:30:21 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** если клиент залогинен */
|
|
|
|
|
|
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['pay_id'])){
|
|
|
|
|
|
$pay_id = (int)$_POST['pay_id'];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-08-18 00:30:21 +03:00
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
# указан ли в поле 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-08-15 09:41:01 +00:00
|
|
|
|
$errors['buy_email'] = 'Не верно указана электронная почта';
|
2021-08-15 09:32:02 +00:00
|
|
|
|
// if ($delivery_id == 1 or $pay_id == 1){
|
2021-06-21 17:55:53 +03:00
|
|
|
|
$err_critical = True; # обязательное поле для цифрового заказа или оплаты онлайн
|
2021-08-15 09:32:02 +00:00
|
|
|
|
// }
|
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-08-15 09:32:02 +00:00
|
|
|
|
else {
|
|
|
|
|
|
$err_critical = True;
|
2021-08-15 09:41:01 +00:00
|
|
|
|
$errors['buy_email'] = 'Не указана электронная почта (обязательна для электронных заказов и оплаты онлайн)';
|
2021-08-15 09:35:50 +00:00
|
|
|
|
|
2021-08-15 09:32:02 +00: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
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-08-18 00:30: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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-08-18 00:30:21 +03:00
|
|
|
|
if (isset($_POST['count']))
|
|
|
|
|
|
$count = $_POST['count'];
|
|
|
|
|
|
else
|
|
|
|
|
|
$count = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** определяем цену товара */
|
2021-08-18 01:29:32 +03:00
|
|
|
|
|
2021-08-18 00:30:21 +03:00
|
|
|
|
|
|
|
|
|
|
if ($delivery_id == 1){ // тип товара = 1 (только электронная)
|
|
|
|
|
|
$price = $price_id['price']; // электронный прайс
|
|
|
|
|
|
}
|
|
|
|
|
|
else { # физический товар
|
|
|
|
|
|
|
|
|
|
|
|
if ($price_id['pieces'] > 0 ){
|
|
|
|
|
|
|
|
|
|
|
|
$price = $price_id['offline_price']; // бумажный прайс
|
|
|
|
|
|
|
|
|
|
|
|
if ($delivery_id == 2){ #самовывоз
|
|
|
|
|
|
$price = $price * $count;
|
|
|
|
|
|
}
|
2021-08-18 01:29:32 +03:00
|
|
|
|
elseif($delivery_id == 3){ #курьером 300рэ
|
2021-08-18 00:30:21 +03:00
|
|
|
|
$price = $price * $count;
|
|
|
|
|
|
$price = $price + 300;
|
|
|
|
|
|
}
|
2021-08-18 01:29:32 +03:00
|
|
|
|
elseif($delivery_id == 4){ #почта россии за каждый кулек своя доставка
|
2021-08-18 00:30:21 +03:00
|
|
|
|
$price = $price + 250;
|
|
|
|
|
|
$price = $price * $count;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
echo 'Товара больше нет в наличии';
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2021-06-21 17:55:53 +03:00
|
|
|
|
}
|
2021-08-18 00:30:21 +03:00
|
|
|
|
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
/** фикстируем клиента в базу */
|
|
|
|
|
|
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;
|
2021-08-18 00:30:21 +03:00
|
|
|
|
$add['count'] = $count;
|
|
|
|
|
|
|
|
|
|
|
|
/** фиксируем цену в базу */
|
|
|
|
|
|
$add['buy_price'] = $price;
|
|
|
|
|
|
$add['price'] = $price;
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
$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-22 00:37:38 +03:00
|
|
|
|
if ( $delivery_id == 1){
|
|
|
|
|
|
//уводим на оплату онлайн в Юкассу
|
2021-06-21 17:55:53 +03:00
|
|
|
|
return anpay_kuri($order_id);
|
|
|
|
|
|
}
|
|
|
|
|
|
else { // даем пользователю номер заказа
|
|
|
|
|
|
|
2021-06-21 18:30:01 +03:00
|
|
|
|
#минус один товар со склада
|
2021-07-28 20:28:53 +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
|
|
|
|
|
2021-06-22 00:37:38 +03:00
|
|
|
|
if ($_POST['pay_id'] == 1){ # оплата на сайте
|
|
|
|
|
|
return anpay_kuri($order_id);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
if (isset($add['buy_email'])) {
|
|
|
|
|
|
|
2021-08-18 01:29:32 +03:00
|
|
|
|
$message = "Ваш заказ «{$price_id['pricename']}» в количестве $count штук на сумму ($price руб.) подтвержден.<br>
|
2021-07-28 20:28:53 +03:00
|
|
|
|
Номер заказа $order_id.<br>
|
|
|
|
|
|
Сообщите его менеджеру при необходимости.<br>";
|
2021-08-18 01:29:32 +03:00
|
|
|
|
$subject = "Аргументы Недели: заказ подтвержден";
|
2021-06-21 17:55:53 +03:00
|
|
|
|
$result = klanmail($add['buy_email'], $subject, $message, set('klanmail'));
|
2021-07-28 20:28:53 +03:00
|
|
|
|
|
|
|
|
|
|
if ($result == True){ # сообщение отправлено клиенту
|
2021-06-21 22:31:49 +03:00
|
|
|
|
push_ok($order_id);
|
|
|
|
|
|
}
|
2021-07-28 20:28:53 +03:00
|
|
|
|
|
|
|
|
|
|
# отправляем заказ оператору:
|
|
|
|
|
|
$subject = "Заказ № $order_id c klan.argumenti.ru";
|
|
|
|
|
|
$message = "Номер заказа $order_id.<br>
|
2021-08-18 01:29:32 +03:00
|
|
|
|
ID товара: {$price_id['price_id']}<br>
|
|
|
|
|
|
Наименование: {$price_id['pricename']}<br>
|
2021-08-18 10:53:30 +03:00
|
|
|
|
Цена: {$price_id['offline_price']}<br>
|
2021-08-18 00:48:23 +03:00
|
|
|
|
Кол-во: $count<br>
|
|
|
|
|
|
Доставка: {$delivery[$delivery_id]['delivery']}<br>
|
|
|
|
|
|
Сумма заказа: $price руб.<br>
|
2021-08-18 01:29:32 +03:00
|
|
|
|
Оплата: при получении<br>
|
|
|
|
|
|
E-mail: {$add['buy_email']}<br>
|
2021-07-28 20:28:53 +03:00
|
|
|
|
Имя: {$add['buy_name']}<br>
|
|
|
|
|
|
Адрес: {$add['buy_adress']}<br>
|
|
|
|
|
|
Телефон: {$add['buy_tel']}<br>
|
|
|
|
|
|
";
|
|
|
|
|
|
|
|
|
|
|
|
$mresult = klanmail(OFFMAIL, $subject, $message, set('klanmail'));
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
header("Location: $order_url"); // переводим на инфу про заказа
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2021-06-19 23:26:37 +03:00
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
|
2021-08-18 01:29:32 +03:00
|
|
|
|
$submit_link = SITE."checkout/$priceslug";
|
2021-06-21 17:55:53 +03:00
|
|
|
|
|
|
|
|
|
|
|
2021-07-06 20:30:30 +03:00
|
|
|
|
$tempcontent = VIEWPATH.'checkout.phtml';
|
|
|
|
|
|
include VIEWPATH.'layout_pay.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);
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-07-06 20:30:30 +03:00
|
|
|
|
//$tempcontent = VIEWPATH.'order_status.phtml';
|
|
|
|
|
|
//include VIEWPATH.'order_status.phtml';
|
|
|
|
|
|
$tempcontent = VIEWPATH.'order_status.phtml';
|
|
|
|
|
|
include VIEWPATH.'layout_pay.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
|
|
|
|
|
2021-06-21 22:31:49 +03:00
|
|
|
|
|
2022-02-03 15:15:10 +00:00
|
|
|
|
function delivery_list($weight = 250) {
|
2021-06-21 22:31:49 +03:00
|
|
|
|
|
|
|
|
|
|
$result = [];
|
|
|
|
|
|
|
|
|
|
|
|
$delivery = db_get("SELECT * FROM delivery WHERE delivery_id > 1");
|
|
|
|
|
|
|
|
|
|
|
|
foreach ($delivery as $del){
|
2022-02-03 15:15:10 +00:00
|
|
|
|
|
2021-06-21 22:31:49 +03:00
|
|
|
|
$key = $del['delivery_id'];
|
|
|
|
|
|
$result[$key] = $del;
|
|
|
|
|
|
|
2022-02-03 15:15:10 +00:00
|
|
|
|
if ($del['delivery_id'] == 4){
|
|
|
|
|
|
if ($weight > 250){
|
|
|
|
|
|
$result[$key]['delivery_price'] = 450;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-06-21 22:31:49 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return $result;
|
|
|
|
|
|
}
|
|
|
|
|
|
|