Работа над сайтом 26

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2022-01-31 14:55:51 +10:00
parent 8abdaf4626
commit 953f99245c
13 changed files with 408 additions and 181 deletions

View File

@ -143,6 +143,50 @@ class Account extends Document implements IdentityInterface, PartnerInterface
[
'vrfy',
'validateVrfyUnique'
],
[
'taxn',
'integer',
'min' => 0,
'max' => 999999999999
],
[
'cntg',
'integer',
'min' => 0,
'max' => 99999999999999999999
],
[
'ladd',
'string',
'length' => [0, 200]
],
[
[
'desc',
'cntc'
],
'string',
'length' => [0, 500]
],
[
'simc',
'integer',
'min' => 0,
'max' => 999999999999999999999999999999
],
[
'comp',
'string',
'length' => [0, 40]
],
[
[
'name',
'boss'
],
'string',
'length' => [0, 100]
]
]
);
@ -711,73 +755,88 @@ class Account extends Document implements IdentityInterface, PartnerInterface
*/
public static function passwordGenerate(): ?string
{
return match (rand(1, 35)) {
1 => 'салазки',
2 => 'запчасти',
3 => 'инструменты',
4 => 'детали',
5 => 'компоненты',
6 => 'ремни',
7 => 'шестерни',
8 => 'блоки',
9 => 'коронки',
10 => 'вал',
11 => 'пыльник',
12 => 'шкив',
13 => 'станок',
14 => 'сальник',
15 => 'кольцо',
16 => 'цепь',
17 => 'редуктор',
18 => 'фильтр',
19 => 'клапан',
20 => 'фару',
21 => 'мотор',
22 => 'подшипник',
23 => 'болт',
24 => 'стартер',
25 => 'двигатель',
26 => 'трубку',
27 => 'прокладку',
28 => 'помпу',
29 => 'запчасть',
30 => 'втулку',
31 => 'уплотнение',
32 => 'ролик',
33 => 'датчик',
34 => 'насос',
default => 'машину'
$password = '';
$arr = array(
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'
);
for ($i = 0; $i < 6; $i++) {
$password .= $arr[random_int(0, count($arr) - 1)];
}
. ' ' . match (rand(1, 15)) {
1 => 'забыли',
2 => 'испортили',
3 => 'забрали',
4 => 'порвали',
5 => 'украли',
6 => 'обменяли',
7 => 'угнали',
8 => 'взорвали',
9 => 'поломали',
1 => 'доломали',
11 => 'утопили',
12 => 'испортили',
13 => 'добили',
14 => 'разбили',
15 => 'сорвали',
default => 'сломали'
}
. ' ' . match (rand(1, 9)) {
1 => 'закажу',
2 => 'найду',
3 => 'отыщу',
4 => 'запрошу',
5 => 'поищу',
6 => 'оформлю',
7 => 'заменю',
8 => 'поменяю',
default => 'куплю'
}
. ' в скиллпартс';
return $password;
// return match (rand(1, 35)) {
// 1 => 'салазки',
// 2 => 'запчасти',
// 3 => 'инструменты',
// 4 => 'детали',
// 5 => 'компоненты',
// 6 => 'ремни',
// 7 => 'шестерни',
// 8 => 'блоки',
// 9 => 'коронки',
// 10 => 'вал',
// 11 => 'пыльник',
// 12 => 'шкив',
// 13 => 'станок',
// 14 => 'сальник',
// 15 => 'кольцо',
// 16 => 'цепь',
// 17 => 'редуктор',
// 18 => 'фильтр',
// 19 => 'клапан',
// 20 => 'фару',
// 21 => 'мотор',
// 22 => 'подшипник',
// 23 => 'болт',
// 24 => 'стартер',
// 25 => 'двигатель',
// 26 => 'трубку',
// 27 => 'прокладку',
// 28 => 'помпу',
// 29 => 'запчасть',
// 30 => 'втулку',
// 31 => 'уплотнение',
// 32 => 'ролик',
// 33 => 'датчик',
// 34 => 'насос',
// default => 'машину'
// }
// . ' ' . match (rand(1, 15)) {
// 1 => 'забыли',
// 2 => 'испортили',
// 3 => 'забрали',
// 4 => 'порвали',
// 5 => 'украли',
// 6 => 'обменяли',
// 7 => 'угнали',
// 8 => 'взорвали',
// 9 => 'поломали',
// 1 => 'доломали',
// 11 => 'утопили',
// 12 => 'испортили',
// 13 => 'добили',
// 14 => 'разбили',
// 15 => 'сорвали',
// default => 'сломали'
// }
// . ' ' . match (rand(1, 9)) {
// 1 => 'закажу',
// 2 => 'найду',
// 3 => 'отыщу',
// 4 => 'запрошу',
// 5 => 'поищу',
// 6 => 'оформлю',
// 7 => 'заменю',
// 8 => 'поменяю',
// default => 'куплю'
// }
// . ' в скиллпартс';
}
/**

View File

@ -20,7 +20,9 @@ abstract class Document extends ActiveRecord
*/
public static function collectionName(): string
{
return throw new Exception('Не инициализировано название коллекции');
throw new Exception('Не инициализировано название коллекции');
return 'document';
}
/**

View File

@ -142,7 +142,7 @@ class Product extends Document
[
'prod',
'string',
'length' => [3, 80],
'length' => [2, 80],
'message' => '{attribute} должен быть строкой от 3 до 80 символов'
],
[
@ -624,13 +624,18 @@ class Product extends Document
/**
* Проверка на уникальность
*
* @param static|null $account Аккаунт
*
* @return bool|static true если создать новую запись, static если найден дубликат
*
* @todo
* 1. Обработка дубликатов
*/
public function validateForUniqueness(): bool|static
public function validateForUniqueness(Account|int|null $account = null): bool|static
{
// Инициализация аккаунта
$account = Account::initAccount($account);
if ($supplies = self::search(['catn' => $this->catn, 'prod' => $this->prod], limit: 100)) {
// Найдены поставки с таким же артикулом (catn) и производителем (prod)

View File

@ -27,7 +27,9 @@ class Settings extends Document
[
'search_period',
'search_connect_keep',
'delivery_from_default'
'delivery_from_default',
'addition_global',
'delivery_addition_global'
]
);
}
@ -42,7 +44,9 @@ class Settings extends Document
[
'search_period' => 'Поисковый период',
'search_connect_keep' => 'Режим удержания',
'delivery_from_default' => 'Место отправки поставки по умолчанию'
'delivery_from_default' => 'Место отправки поставки по умолчанию',
'addition_global' => 'Глобальная наценка',
'delivery_addition_global' => 'Глобальная надбавка к доставке'
]
);
}
@ -58,14 +62,16 @@ class Settings extends Document
[
[
'search_period',
'delivery_from_default'
'delivery_from_default',
'delivery_addition_global'
],
'integer',
'message' => '{attribute} должен хранить цифровое значение'
],
[
[
'search_connect_keep'
'search_connect_keep',
'addition_global'
],
'string',
'message' => '{attribute} должен хранить строковый тип'

View File

@ -446,85 +446,190 @@ class Supply extends Product implements ProductInterface, OfferInterface
foreach ($data as $doc) {
// Перебор полученных документов
// Инициализация буфера документов
$_doc = $doc;
foreach ($doc as $row) {
// Перебор строк
// Поиск всех артикулов (каталожных номеров)
$supplies = explode(',', $doc['catn'], 300);
// Поиск артикула
$article = $row['Артикул'] ?? $row['артикул'] ?? $row['Article'] ?? $row['article'] ?? $row['catn'];
// Поиск количества товаров
$amount = $doc['amnt'] ?? 1;
// Поиск количества товаров
$amount = $row['Количество'] ?? $row['количество'] ?? $row['Amount'] ?? $row['amount'] ?? $row['amnt'] ?? 1;
foreach ($supplies as $_supply) {
// Перебор продуктов (если catn перечислены через запятую)
// Поиск аналогов
$analogs = explode(',', $row['Артикул'] ?? $row['артикул'] ?? $row['Article'] ?? $row['article'] ?? $row['catn'], 50);
$_supply = trim($_supply);
// Инициализация функции создания поставки
$create = function (string $_supply) use ($row, $analogs, &$created, &$updated, &$imported, $amount, $account) {
// Очистка
$_supply = trim($_supply);
// Запись артикула (каталожного номера) в буфер
$_doc['catn'] = $_supply;
// Инициализация буфера документов
$_row = [];
// Инициализация продукта
$supply = new static($_doc);
$supply->scenario = $supply::SCENARIO_WRITE;
// Запись артикула (каталожного номера) в буфер
$_row['catn'] = $_supply;
$_row['cost'] = (float) preg_replace('/[^\d\.]+/', '', preg_replace('/\,+/', ' ', $row['Стоимость'] ?? $row['стоимость'] ?? $row['Цена'] ?? $row['цена'] ?? $row['Cost'] ?? $row['cost'] ?? $row['Price'] ?? $row['price']));
$_row['prod'] = $row['Производитель'] ?? $row['производитель'] ?? $row['Production'] ?? $row['production'] ?? $row['prod'];
$_row['oemn'] = $analogs;
if ($supply->validate()) {
// Проверка пройдена
// Инициализация буфера поставки
$supply = new static($_row);
if (($_supply = $supply->validateForUniqueness()) instanceof static) {
// Найден документ с такими параметрами
$supply->scenario = $supply::SCENARIO_WRITE;
// Инициализация буфера с параметрами загружаемого товара
$vars = $supply->getAttributes();
if ($supply->validate()) {
// Проверка пройдена
// Удаление _key, чтобы не перезаписать его при замене параметров документа в буфере
unset($vars['_key']);
if (($_supply = $supply->validateForUniqueness($account)) instanceof static) {
// Найден документ с такими параметрами
// Перенос данных в буфер (существующий в базе данных дубликат)
$_supply->setAttributes($vars, false);
if ($_supply->cost === $_row['cost']) {
// Стоимость не изменилась
// Перезапись существующего документа
$_supply->update();
if ($product = Product::searchByCatn($_supply->catn)) {
// Найден товар подходящий для привязки с этой поставкой
// Обновление счётчика
$updated++;
for ($i = 0; $i++ < $amount;) {
// Перебор создаваемых рёбер (так работает обозначение количества товаров в наличии)
// Запись поставки в буфер
$imported[] = $_supply;
} else {
// Не найден документ с такими параметрами
// Поиск ребёр
$edges = SupplyEdgeProduct::searchByVertex($supply->readId(), $product->readId(), limit: 50);
if ($supply->save()) {
// Поставка записана в базу данных
if ($amount === $edges) {
// Количество товаров в поставке не изменилось
// Раз изменений нет, то обновлять ничего не нужно
continue;
} else if ($amount < $edges) {
// Количество товаров в поставке стало МЕНЬШЕ
// Расчёт разницы
$delete = $edges - $amount;
// Инициализация количества рёбер которые не удалось удалить
$failed = 0;
for ($i = 0; $i < $delete; $i++) {
// Перебор рёбер на удаление (синхронизация)
if ($edges[$i]->delete() >= 1) {
// Удалено ребро
} else {
// Не удалено ребро
// Обновление количества рёбер которые не удалось удалить
++$failed;
}
}
// Отправка уведомления
Notification::_write("Не удалось удалить $failed рёбер у поставки $supply->catn");
} else if ($amount > $edges) {
// Количество товаров в поставке стало БОЛЬШЕ
// Расчёт разницы
$write = $amount - $edges;
// Инициализация количества рёбер которые не удалось записать
$failed = 0;
for ($i = 0; $i < $write; $i++) {
// Перебор рёбер на запись (синхронизация)
if (SupplyEdgeProduct::write($supply->readId(), $product->readId(), data: ['type' => 'connect'])) {
// Записано ребро
} else {
// Не записано ребро
// Обновление количества рёбер которые не удалось записать
++$failed;
}
}
// Отправка уведомления
Notification::_write("Не удалось записать $failed рёбер у поставки $supply->catn");
}
}
}
}
// Инициализация буфера с параметрами загружаемого товара
$vars = $supply->getAttributes();
// Удаление _key, чтобы не перезаписать его при замене параметров документа в буфере
unset($vars['_key']);
// Перенос данных в буфер (существующий в базе данных дубликат)
$_supply->setAttributes($vars, false);
// Перезапись существующего документа
$_supply->update();
// Обновление счётчика
$created++;
$updated++;
// Запись поставки в буфер
$imported[] = $supply;
};
}
$imported[] = $_supply;
if (Product::searchByCatn($supply->catn)) {
// Найден товар подходящий для привязки с только что созданной поставкой
// Запись в буфер (для универсальной обработки)
$supply = $_supply;
} else {
// Не найден документ с такими параметрами
if ($supply->save()) {
// Поставка записана в базу данных
// Обновление счётчика
$created++;
// Запись поставки в буфер
$imported[] = $supply;
};
}
if ($product = Product::searchByCatn($supply->catn)) {
// Найден товар подходящий для привязки с только что созданной поставкой
if (isset($product->prod) && $product->prod === $supply->prod) {
// Производитель совпадает с тем, что указан в товаре
for ($i = 0; $i++ < $amount;) {
// Перебор создаваемых рёбер (так работает обозначение количества товаров в наличии)
// Запись ребра (с проверкой на дубликат)
SupplyEdgeProduct::writeSafe($supply->readId(), $product->readId(), data: ['type' => 'connect']);
}
}
} else {
// Не найден товар подходящий для привязки с только что созданной поставкой
// Отправка уведомления
Notification::_write("Не найден товар подходящий для связи с поставкой: $supply->catn", account: '@authorized');
}
} else {
// Не найден товар подходящий для привязки с только что созданной поставкой
// Проверка не пройдена
// Отправка уведомления
Notification::_write("Не найден товар подходящий для связи с поставкой: $supply->catn", account: '@authorized');
// Добавление ошибок
foreach ($supply->errors as $attribute => $error) $this->addError($attribute, $error);
}
} else {
// Проверка не пройдена
};
// Добавление ошибок
foreach ($supply->errors as $attribute => $error) $this->addError($attribute, $error);
// Запись поставки
$create($article);
foreach ($analogs as $_supply) {
// Перебор аналогов (если найдены)
// Запись поставки
$create($_supply);
}
}
}
}
}
if ($imported > 0) {
if (count($imported) > 0) {
// Успешно записана минимум 1 поставка
// Инициализация инстанции импорта

View File

@ -5,9 +5,10 @@ declare(strict_types=1);
namespace app\models;
use app\models\traits\Xml2Array;
use carono\exchange1c\interfaces\OfferInterface;
class SupplyEdgeProduct extends Edge implements OfferInterface
class SupplyEdgeProduct extends Edge implements OfferInterface
{
use Xml2Array;

View File

@ -181,7 +181,7 @@ class Warehouse extends Document
// Инициализация
$list = [];
$cities = Dellin::read(9999);
$cities = Dellin::read(9999, order: ['dellin.data.name' => 'DESC']);
foreach ($cities as $city) {
// Перебор городов
@ -196,7 +196,7 @@ class Warehouse extends Document
}
// Запись
$list[$termial['id']] = $city->data['name'] . ' (' . $termial['address'] . ')';
$list[$termial['id']] = $city->data['name'];
}
}
@ -238,7 +238,7 @@ class Warehouse extends Document
// Параметр $var не найден в настройках аккаунта
// Сохранение параметра из данных аккаунта в начале массива
$list = ['Выберите' => 'Выберите'] + $list;
$list = ['Город отправления' => 'Город отправления'] + $list;
}
return $list;

View File

@ -11,7 +11,7 @@ use yii;
<?= $cart_button ?>
<a class="text-dark my-auto mr-2" title="Заказы" href="/orders" role="button" onclick="return page_orders();"><i class="fas fa-list mx-2"></i></a>
<div class="btn-group my-auto">
<a class="btn m-0 px-0 text-dark button_clean" title="Личный кабинет" href="/profile" role="button" onclick="return page_profile();"><b><?= yii::$app->user->identity->mail ?></b></a>
<a class="btn m-0 px-0 text-dark button_clean button_underline" title="Личный кабинет" href="/profile" role="button" onclick="return page_profile();"><b><?= yii::$app->user->identity->mail ?></b></a>
<button id="menu_auth_panel_button" class="pr-0 btn button_clean button_clean_full" type="button" onclick="return deauthentication();" title="Выход"><i class="fas fa-sign-out-alt"></i></button>
<!-- <div id="menu_auth_panel" class="py-1 text-center d-none">
<a class="py-1 px-3 d-block button_white text-dark" onclick="return deauthentication();"><b>Выход</b></a>

View File

@ -296,6 +296,46 @@ $timezone = $timezone[1][0];
<?= $form->errorSummary($model_settings, ['header' => 'Получены ошибки:']) ?>
<?= $form->field($model_settings, 'addition_global', ['options' => ['class' => "mb-1"]])->textInput(['value' => $model_settings['search_period'], 'onChange' => 'page_profile_panel_settings(this.parentElement.parentElement, \'profile_panel_input_settings\')']); ?>
<small class="d-block mb-1">Коэффициент умножаемый на цену каждого товара (доставка считается отдельно)</small>
<?php ActiveForm::end(); ?>
<?php
$form = ActiveForm::begin([
'id' => 'form_profile_panel_settings_search_period',
'action' => false,
'fieldConfig' => [
'template' => '{label}{input}',
],
'options' => [
'onsubmit' => 'return false;',
'class' => 'mb-4'
]
]);
?>
<?= $form->field($model_settings, 'delivery_addition_global', ['options' => ['class' => "mb-1"]])->textInput(['value' => $model_settings['search_period'], 'onChange' => 'page_profile_panel_settings(this.parentElement.parentElement, \'profile_panel_input_settings\')']); ?>
<small class="d-block mb-1">Время которое нужно добавить к доставке (дни)</small>
<?php ActiveForm::end(); ?>
<?php
$form = ActiveForm::begin([
'id' => 'form_profile_panel_settings_search_period',
'action' => false,
'fieldConfig' => [
'template' => '{label}{input}',
],
'options' => [
'onsubmit' => 'return false;',
'class' => 'mb-4'
]
]);
?>
<?= $form->errorSummary($model_settings, ['header' => 'Получены ошибки:']) ?>
<?= $form->field($model_settings, 'search_period', ['options' => ['class' => "mb-1"]])->textInput(['value' => $model_settings['search_period'], 'onChange' => 'page_profile_panel_settings(this.parentElement.parentElement, \'profile_panel_input_settings\')']); ?>
<small class="d-block mb-1">Время которое надо ждать для повторного поиска в секундах</small>

View File

@ -44,7 +44,7 @@ $panel ?? $panel = 'profile_panel_supplies_input_import';
<h5>Управление складами</h5>
<div class="dropdown-divider mb-4"></div>
<?php if (false && Account::isMinimalAuthorized()) : ?>
<?php if (Account::isMinimalAuthorized()) : ?>
<?php
$form = ActiveForm::begin([
'id' => 'form_product_import_excel',
@ -102,6 +102,10 @@ $panel ?? $panel = 'profile_panel_supplies_input_import';
break;
}
}
// Инициализация ссылки на скачивание
preg_match_all('/\/files\/.*$/', $import->file, $matches);
$download = $matches[0][0];
?>
<div class="mb-3 row">
@ -115,7 +119,7 @@ $panel ?? $panel = 'profile_panel_supplies_input_import';
<?= $create ?? 'Неизвестно' ?>
</div>
<a class="pr-0 my-auto col-auto fas fa-user text-dark" href="<?= $date_connect_with_account ?? 'Неизвестно' ?>"></a>
<a class="pr-0 my-auto col-auto fas fa-file-download text-dark" title="Скачать" href="<?= $download ?>" aria-hidden="true" download></a>
<a class="pr-0 my-auto col-auto fas fa-file-download text-dark" title="Скачать" href="<?= $download ?? '/#' ?>" aria-hidden="true" download></a>
<a class="my-auto col-auto fas fa-trash-alt text-dark" title="Удалить" type="button" aria-hidden="true" onclick="return page_profile_imports_delete(<?= $import->_key ?>);"></a>
</div>
@ -179,7 +183,7 @@ $panel ?? $panel = 'profile_panel_supplies_input_import';
<div class="col">
<?= $import[0]->name ?? 'Без названия' ?>
</div>
<a class="pr-0 my-auto col-auto fas fa-file-download text-dark" title="Скачать" href="<?= $download ?>" aria-hidden="true" download></a>
<a class="pr-0 my-auto col-auto fas fa-file-download text-dark" title="Скачать" href="<?= $download ?? '/#' ?>" aria-hidden="true" download></a>
<a class="my-auto col-auto fas fa-trash-alt text-dark" title="Удалить" type="button" aria-hidden="true" onclick="return page_profile_imports_delete(<?= $import->_key ?>);"></a>
</div>
<?php endforeach ?>
@ -219,27 +223,32 @@ $panel ?? $panel = 'profile_panel_supplies_input_import';
<!-- <b class="mb-2 row">Инструкция</b> -->
<small class="row">
<dl class="mb-0">
<dt>
1. Заполните Excel-документ, где в первой строке записаны названия колонок
<dt>1. Заполните Excel-документ, где в первой строке записаны названия колонок</dt>
<dd class="mx-4 mt-2 mb-1"><b>Артикул:</b> "артикул", "article", "catn"</dd>
<dd class="mx-4 mb-1"><b>Аналоги:</b> "аналоги", "analogs", "ОЕМ", "oemn",</dd>
<dd class="mx-4 mb-1"><b>Производитель:</b> "производитель", "production", "prod"</dd>
<dd class="mx-4 mb-1"><b>Стоимость:</b> "стоимость", "cost"</dd>
<dd class="mx-4 mb-1"><b>Стоимость:</b> "стоимость", "цена", "cost", "price"</dd>
<dd class="mx-4 mb-3"><b>Количество:</b> "количество", "amount", "amnt"</dd>
</dt>
<dt>
2. Выберите или создайте склад и настройте его
<dt>2. Выберите или создайте склад и настройте его</dt>
<dd class="mx-4 mt-2 mb-1"><b>1.</b> Установите город в котором находится склад</dd>
<dd class="mx-4 mb-1"><b>2.</b> Нажмите на кнопку "Обзор..." и выбирете Excel-документ</dd>
<dd class="mx-4 mb-1"><b>2.</b> Нажмите на кнопку "Обзор..." (может называться по другому) и выбирете Excel-документ</dd>
<dd class="mx-4 mb-1"><b>3.</b> Вам предложит подтвердить отправку на сервер</dd>
<dd class="mx-4 mb-3"><b>4.</b> Если вы не уверены, что правильно заполнили документ, то отклоните загрузку и вам предложит отправить документ модератору. Мы сами настроим и загрузим ваш документ, а так же пришлем исправления, если выявим ошибки</dd>
</dt>
<dt>
3. Проверьте что все товары загрузились успешно
<dt>3. Проверьте что все товары загрузились успешно</dt>
<dd class="mx-4 mt-2 mb-1"><b>1.</b> Присутствуют в поиске</dd>
<dd class="mx-4 mb-1"><b>2.</b> Отображаются в списке поставок склада</dd>
<dd class="mx-4 mb-3"><b>3.</b> В полученном уведомлении не написано об ошибках или непривязанных поставках. Если поставка не привязалась, то модератор автоматически получает запрос на решение проблемы (отсутствие товара в базе данных, либо неподходящие данные в документе). После обработки вам придёт уведомление и письмо на почту</dd>
</dt>
</dl>
<div class="col px-0">
<div class="row">
<img class="my-3 mx-auto border border-dark" src="/img/supplies/import_manual.jpg" title="Инструкция по форматированию документа для загрузки на сервер" alt="Инструкция по форматированию документа для загрузки на сервер">
</div>
<div class="row">
<a class="mx-auto" href="/files/system/supplies/sample.xlsx" download>Скачать файл с примером</a>
</div>
</div>
</small>
</section>
</div>

View File

@ -89,6 +89,14 @@ main {
background: none !important;
}
.button_underline:hover {
text-decoration: underline;
}
.button_underline:active {
text-decoration: none;
}
.form_control_clean,
.form_control_clean:hover,
.form_control_clean:focus,

View File

@ -84,19 +84,23 @@ function page_profile_supplies_import_excel(form, warehouse, account, panel) {
};
function page_profile_imports_delete(_key) {
$.ajax({
url: '/profile/imports/delete',
type: 'post',
dataType: 'json',
data: {
'_csrf': yii.getCsrfToken(),
_key
},
success: page_profile_response_success,
error: page_profile_response_error
});
if (confirm(`Удалить инстанцию поставок ${_key}?`)) {
$.ajax({
url: '/profile/imports/delete',
type: 'post',
dataType: 'json',
data: {
'_csrf': yii.getCsrfToken(),
_key
},
success: page_profile_response_success,
error: page_profile_response_error
});
return false;
return false;
}
return true;
};
function page_profile_warehouses_write() {
@ -115,19 +119,23 @@ function page_profile_warehouses_write() {
};
function page_profile_warehouses_delete(_key) {
$.ajax({
url: '/profile/warehouses/delete',
type: 'post',
dataType: 'json',
data: {
'_csrf': yii.getCsrfToken(),
_key
},
success: page_profile_response_success,
error: page_profile_response_error
});
if (confirm(`Удалить склад ${_key}?`)) {
$.ajax({
url: '/profile/warehouses/delete',
type: 'post',
dataType: 'json',
data: {
'_csrf': yii.getCsrfToken(),
_key
},
success: page_profile_response_success,
error: page_profile_response_error
});
return false;
return false;
}
return true;
};
function page_profile_warehouses_rename(_key, name) {

View File

@ -429,19 +429,6 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
input_ladd.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "ladd", this.value);');
input_ladd.value = account.ladd ?? '';
// Инициализация ярлыка "CHCK"
let label_chck = document.createElement('label');
label_chck.setAttribute('class', 'control-label');
label_chck.innerText = 'Расчетный счет';
// Инициализация поля "CHCK"
let input_chck = document.createElement('input');
input_chck.setAttribute('id', 'chck_' + account._key);
input_chck.setAttribute('class', 'form-control button_clean mb-3');
input_chck.setAttribute('type', 'text');
input_chck.setAttribute('onchange', 'return profile_panel_input_suppliers_requests_block_edit(' + account._key + ', "chck", this.value);');
input_chck.value = account.chck ?? '';
// Инициализация ярлыка "COMP"
let label_comp = document.createElement('label');
label_comp.setAttribute('class', 'control-label');
@ -458,7 +445,7 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
// Инициализация ярлыка "CNTC"
let label_cntc = document.createElement('label');
label_cntc.setAttribute('class', 'control-label');
label_cntc.innerText = 'Контакты';
label_cntc.innerText = 'Доп. информация';
// Инициализация поля "CNTC"
let input_cntc = document.createElement('textarea');
@ -544,9 +531,6 @@ function page_profile_panel_input_suppliers_requests_generate(suppliers) {
block_details.appendChild(label_ladd);
block_details.appendChild(input_ladd);
block_details.appendChild(label_chck);
block_details.appendChild(input_chck);
block_details.appendChild(label_cntc);
block_details.appendChild(input_cntc);