Files
anpdf/app/routes/order.php
Your Name 7cc5655843 add count
2021-08-18 00:30:21 +03:00

322 lines
11 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;
}
# отправляем цену на форму в js
if ($delivery_id == 1){ // тип товара = 1 (только электронная)
$price = $price_id['price']; // электронный прайс
}
else {
$price = $price_id['offline_price']; // бумажный прайс
$delivery = delivery_list(); // список доставок для бумажной версии
}
/** если клиент залогинен */
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)){
$errors['buy_email'] = 'Не верно указана электронная почта';
// if ($delivery_id == 1 or $pay_id == 1){
$err_critical = True; # обязательное поле для цифрового заказа или оплаты онлайн
// }
}
else {
$client = api_add_client($clientmail); # ищем или создаем клиента
}
}
else {
$err_critical = True;
$errors['buy_email'] = 'Не указана электронная почта (обязательна для электронных заказов и оплаты онлайн)';
}
# указано ли поле имя
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($_POST['count']))
$count = $_POST['count'];
else
$count = 1;
/** определяем цену товара */
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;
}
elseif($delivery_id == 2){ #курьером 300рэ
$price = $price * $count;
$price = $price + 300;
}
elseif($delivery_id == 2){ #почта россии за каждый кулек своя доставка
$price = $price + 250;
$price = $price * $count;
}
}else{
echo 'Товара больше нет в наличии';
return;
}
}
}
/** фикстируем клиента в базу */
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;
$add['count'] = $count;
/** фиксируем цену в базу */
$add['buy_price'] = $price;
$add['price'] = $price;
$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){
//уводим на оплату онлайн в Юкассу
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 ($_POST['pay_id'] == 1){ # оплата на сайте
return anpay_kuri($order_id);
}
if (isset($add['buy_email'])) {
$message = "Ваш заказ «{$price_id['pricename']}» на сумму ($price руб.) подтвержден.<br>
Номер заказа $order_id.<br>
Сообщите его менеджеру при необходимости.<br>";
$subject = "Аргументы Недели: платеж подтвержден";
$result = klanmail($add['buy_email'], $subject, $message, set('klanmail'));
if ($result == True){ # сообщение отправлено клиенту
push_ok($order_id);
}
# отправляем заказ оператору:
$subject = "Заказ № $order_id c klan.argumenti.ru";
$message = "Номер заказа $order_id.<br>
Товар: {$price_id['pricename']}<br>
Имя: {$add['buy_name']}<br>
Адрес: {$add['buy_adress']}<br>
Телефон: {$add['buy_tel']}<br>
E-mail: {$add['buy_email']}<br>
Доставка: {$delivery[$delivery_id]['delivery']}<br>
Сумма заказа: $price руб.<br>
Оплата: при получении
";
$mresult = klanmail(OFFMAIL, $subject, $message, set('klanmail'));
}
header("Location: $order_url"); // переводим на инфу про заказа
}
}
}
$submit_link = SITE."checkout/$priceslug/$delivery_id";
$tempcontent = VIEWPATH.'checkout.phtml';
include VIEWPATH.'layout_pay.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);
//$tempcontent = VIEWPATH.'order_status.phtml';
//include VIEWPATH.'order_status.phtml';
$tempcontent = VIEWPATH.'order_status.phtml';
include VIEWPATH.'layout_pay.phtml';
}
function delivery_list() {
$result = [];
$delivery = db_get("SELECT * FROM delivery WHERE delivery_id > 1");
foreach ($delivery as $del){
$key = $del['delivery_id'];
$result[$key] = $del;
}
return $result;
}