]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
api orders update
authorkirostumm <kirostumm@gmail.com>
Wed, 10 Jan 2024 08:50:11 +0000 (11:50 +0300)
committerkirostumm <kirostumm@gmail.com>
Wed, 10 Jan 2024 08:50:11 +0000 (11:50 +0300)
erp24/controllers/OrdersController.php

index f3234649038421b8643b5a52e75e1333632f84dc..91536a9cb29aefa468655f39460717cb95acb9f3 100644 (file)
@@ -5,9 +5,11 @@ namespace app\controllers;
 include_once('../inc/base_new.php');
 include_once('../inc/amo_inc.php');
 
+use Exception;
 use Yii;
 use yii\web\Controller;
 use yii_app\records\CreateChecks;
+use yii_app\records\ExportImportTable;
 use yii_app\records\OrdersAmo;
 use yii_app\records\OrdersAmoSearch;
 
@@ -49,8 +51,8 @@ class OrdersController extends Controller
                         ->where([
                             'amo_id' => $arr0["id"]
                         ])
-                    ->asArray()
-                    ->one();
+                        ->asArray()
+                        ->one();
 
                     if (empty($dat)) echo "<div> " . $dat["delivery_date"] . " " . $dat["status_id"] . "  Заказа нет в системе " . $dat["id"] . "  " . $dat["price"] . " </div>";
 
@@ -152,4 +154,143 @@ class OrdersController extends Controller
         }
 
     }
+
+    public function actionAjax_create_check_json()
+    {
+        if (!empty($_REQUEST["order_id"])) {
+            $order_id = (int)$_REQUEST["order_id"];
+
+
+            $seller_id = "3d8f7db1-8d67-11eb-bf83-b42e991aff6c"; // продавец
+            $store_id = "dbd70103-2c7b-11e9-9b87-c85b76f0e893"; // аэродромная
+            $kkm_id = "d0d6c742-4db8-11ea-b917-0018f353130f"; //Мочалина Г. М. ИП(Центральный склад) ??
+            $payments_type_id = "cd891514-855f-11ea-a625-40618658b055";  // оплата на сайте - старый cd891514-855f-11ea-a625-40618658b055
+            $terminal_id = "7909401c-703b-11ea-8b4b-0018f353130f"; //Сбербанк ПАО/Мочалина Г. М. ИП 7909401c-703b-11ea-8b4b-0018f353130f
+
+            $payments_array = [
+                "Оплата на сайте (Visa, Mastercard, Мир)" => array("payments_type_id" => "cd891514-855f-11ea-a625-40618658b055", "kkm_id" => "d0d6c742-4db8-11ea-b917-0018f353130f", "terminal_id" => "7909401c-703b-11ea-8b4b-0018f353130f"), //  09 Доставка Букетов
+                "Перевод на карту Сбербанк" => array("payments_type_id" => "a69ea4d1-feff-11e8-8ae7-1c6f659fb563", "kkm_id" => "d0d6c742-4db8-11ea-b917-0018f353130f"), //, "terminal_id"=>"a22aeb16-1c6a-11ec-88f6-fc349715dc38" //payments_type_id = наличные. kkm_id 09 Доставка
+                "Наличными курьеру (+100 руб.)" => array("payments_type_id" => "a69ea4d1-feff-11e8-8ae7-1c6f659fb563", "kkm_id" => "d0d6c742-4db8-11ea-b917-0018f353130f"),
+                "PayPal" => array("payments_type_id" => "cd891514-855f-11ea-a625-40618658b055", "kkm_id" => "a22aeb16-1c6a-11ec-88f6-fc349715dc38", "terminal_id" => "a22aeb16-1c6a-11ec-88f6-fc349715dc38")
+            ];
+
+
+            try {
+                $row = OrdersAmo::find()
+                    ->where([
+                        'AND',
+                        ['NOT IN', 'delivery', ['Самовывоз', 'Доставка из магазина']],
+                        ['amo_id' => $order_id]
+                    ])
+                    ->orderBy([
+                        'delivery_date' => SORT_DESC
+                    ])
+                    ->asArray()
+                    ->one();
+
+            } catch (Exception $e) {
+                var_dump($e);
+            }
+
+            echo " amo_id = " . $row["amo_id"] . " Вид оплаты " . $row["payment_type_id"] . "  " . $row["pay"] . "  " . $row["pay_text"] . " florist_id=" . $row["florist_id"] . " seller_id =$seller_id ";
+
+
+            if ($row) {
+
+                // по ID сотрудника узнаем его GUID
+                $seller_id = ExportImportTable::find()
+                    ->select([
+                        'export_val'
+                    ])
+                    ->where([
+                        'AND',
+                        ['entity' => 'admin'],
+                        ['export_id' => 1],
+                        ['entity_id' => $row['florist_id']]
+                    ])
+                    ->asArray()
+                    ->one();
+
+                $products = [];
+                $products_json = json_decode($row["products_json"], true);
+                if (!empty($products_json)) {
+                    $amount_total = 0;
+                    echo "<table class=\"table\"><tbody>";
+                    foreach ($products_json as $k => $arp) {
+                        foreach ($arp["items"] as $item) {
+                            $a = [];
+                            $a["product_id"] = $item["guid"];
+                            if (!empty($item["color_id"])) $a["color_id"] = $item["color_id"];
+                            if (!empty($item["quantity"])) $a["quantity"] = round($item["quantity"], 2);
+                            $a["price"] = round($item["price"], 2);;
+                            if (!empty($seller_id)) $a["seller_id"] = $seller_id;
+                            $products[] = $a;
+                            $amount_total += $a["price"] * $a["quantity"];
+
+                            echo "<tr>
+   <td class=\"text-center\"><b class=\"mr-2 ml-2\">" . str_replace(".00", "", $item["quantity"]) . "</b></td>
+   <td class=\"text-left\">" . $item["name"] . "</td>
+   <td>" . $item["color_id"] . "</td>
+   <td class=\"text-center\">" . str_replace(".00", "", $item["price"]) . "</td></tr>";
+                        }
+
+                    }
+                    echo '</tbody></table><br> 
+Итого <b>' . $amount_total . '</b> руб.<br>';
+
+                }
+// ставим в соответствие вид оплаты
+
+                $date = CreateChecks::find()
+                    ->select([
+                        'date' => 'UNIX_TIMESTAMP(date)'
+                    ])
+                    ->where([
+                        'AND',
+                        ['order_id' => $lid_id],
+                        ['type' => 'Продажа']
+                    ])
+                    ->orderBy([
+                        'UNIX_TIMESTAMP(date)' => SORT_DESC
+                    ])
+                    ->limit(1)
+                    ->asArray()
+                    ->one();
+
+                $error = "";
+                if ($date > (time() - 60) and !empty($date)) $error = "Чек не создан так как чек с таким заказом уже создан";
+                if (!empty($error)) echo($error);
+                if (empty($error)) {
+                    if (!empty($payments_array[$row["payment_type_id"]])) {
+
+                        $pays_arr = [];
+                        $payments = [];
+                        $pays_arr["type_id"] = $payments_array[$row["payment_type_id"]]["payments_type_id"];
+                        if (!empty($terminal_id)) {
+                            $pays_arr["terminal_id"] = $terminal_id;
+                        }
+                        $pays_arr["summ"] = round($row["price"], 2);
+                        $payments[] = $pays_arr;
+
+                        try {
+                            $check_id = create_guid_my("01", $order_id);
+                            if (empty($seller_id)) $seller_id = "00000000-0000-0000-0000-000000000000";
+                            $check = new CreateChecks(['check_id' => $check_id, 'date' => date('Y-m-d H:i:s'), 'kkm_id' => $kkm_id, 'seller_id' => $seller_id, 'store_id' => $store_id, 'type' => "Продажа", 'order_id' => $order_id, 'items' => json_encode($products, JSON_UNESCAPED_UNICODE), 'payments' => json_encode($payments, JSON_UNESCAPED_UNICODE)]);
+
+                            echo "<h1>Чек поставлен в очередь на пробитие в 1с $check_id</h1>";
+                        } catch (Exception $e) {
+                            var_dump($e);
+                        }
+
+                    } else {
+                        $error = "Тип оплаты не определен - чек не возможно создать";
+
+                    }
+                }
+                echo $error;
+
+            }
+
+        } else echo("Отсуствует ID заказа");
+    }
 }
\ No newline at end of file