Комплектация

pull/3/head
Rustem 2025-02-15 22:27:11 +05:00
parent ef075b39b8
commit a59837ceb2
11 changed files with 283 additions and 88 deletions

View File

@ -27,6 +27,7 @@ class PipiCarInstallCommands extends InstallCommand
'auto_brands', // Бренд авто
'auto_colors', // Цвета авто
'auto_types', // Типы авто
'auto_equipment', // Комплектация авто
'brand_models', // Модель авто
'auto_classes', // Класс авто
'auto_tariffs', // Тарифы авто

View File

@ -40,6 +40,7 @@ return new class extends \A7kz\Platform\Commands\InstallScript {
if ($count === 0) {
foreach ($segments as $segment) {
foreach ($data as $value) {
if ($value['ПометкаУдаления'] == 'Нет') {
$car = UniModel::model('pipi_auto', $segment->connector);
$car->code = $value['Код'];
$car->name = $value['Наименование'];
@ -84,14 +85,12 @@ return new class extends \A7kz\Platform\Commands\InstallScript {
$car->is_predefined = (bool) $value['Предопределенный'];
$car->predefined_data_name = $value['ИмяПредопределенныхДанных'];
$car->inspection_kit = json_validate($value['КомпректацияДляОсмотра']) ? $value['КомпректацияДляОсмотра'] : null;
if ($value['ПометкаУдаления'] == 'Да') {
$car->deleted_at = now();
}
$car->save();
}
}
}
}
}
private function upgrade(): void
{

View File

@ -0,0 +1,9 @@
{
"admin": [
"default",
"add",
"show",
"edit",
"delete"
]
}

View File

@ -0,0 +1,101 @@
{
"module": "pipicar",
"name": "pipicar.auto_equipment",
"type": "crud",
"title": "Комплектация Автомобилей",
"data": {
"table": "pipi_auto_equipment",
"pk": "id",
"limit": 25,
"segment": true,
"timestamp": false,
"fields": {
"id": {
"type": "pk"
},
"name": {
"type": "string"
}
}
},
"ui": {
"grid": {
"title": "Комплектация Автомобилей",
"template": "app.base.crud.grid",
"cols": [
{
"name": "name",
"caption": "Название комплектации"
}
],
"action": {
"head": [
"add"
],
"row": [
"edit",
"delete"
]
},
"filter": {
"template": "app.base.crud.filter",
"rows": [
{
"cols": [
{
"size": 6,
"input": {
"name": "name",
"label": "Название комплектации"
}
}
]
}
]
}
},
"forms": {
"add": {
"title": "Добавление комплектации",
"template": "app.base.crud.form",
"form": {
"submits": "struct:crud.form.edit.submits",
"rows": [
{
"cols": [
{
"size": 12,
"input": {
"name": "name",
"label": "Название комплектации"
}
}
]
}
]
}
},
"edit": {
"title": "Редактирование комплектации",
"template": "app.base.crud.form",
"form": {
"rows": [
{
"cols": [
{
"size": 12,
"input": {
"name": "name",
"label": "Название комплектации"
}
}
]
}
],
"submits": "struct:crud.form.edit.submits"
}
}
}
},
"actions": "struct:crud.actions"
}

View File

@ -0,0 +1,23 @@
<?php
use A7kz\Platform\Modules\Platform\Segment\Facades\Segment;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
$segments = Segment::listActive();
foreach ($segments as $segment) {
Schema::connection($segment->connector)->create('pipi_auto_equipment', static function (Blueprint $table) {
$table->id();
$table->string('name')->nullable()->comment('Наименование');
$table->timestamps();
$table->softDeletes();
});
}
}
};

View File

@ -0,0 +1,54 @@
<?php
use A7kz\Platform\Models\UniModel;
use A7kz\Platform\Modules\Platform\Core\Facades\Core;
use A7kz\Platform\Modules\Platform\Segment\Facades\Segment;
use Carbon\Carbon;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Storage;
use \A7kz\Platform\Commands\InstallScript;
return new class extends \A7kz\Platform\Commands\InstallScript {
public function install($module_name, $module_version)
{
}
public function update($module_name, $module_version): void
{
$this->upgrade();
$this->seed();
}
private function upgrade(): void
{
$segments = Segment::listActive();
foreach ($segments as $segment) {
if (!Schema::connection($segment->connector)->hasTable('pipi_auto_equipment')) {
Schema::connection($segment->connector)->create('pipi_auto_equipment', static function (Blueprint $table) {
$table->id();
$table->string('name')->nullable()->comment('Наименование');
$table->timestamps();
$table->softDeletes();
});
}
}
}
private function seed()
{
$count = UniModel::model('pipi_auto_equipment')->count();
if ($count === 0) {
$seed = Storage::disk('pipicar_crm')->get('auto_equipment/seeds/seed.json');
$data = json_decode($seed, true);
foreach ($data as $item) {
UniModel::model('pipi_auto_equipment')->create([
'name' => $item['name'],
]);
}
}
}
};

View File

@ -0,0 +1,8 @@
[
{
"name": "Полная"
},
{
"name": "Комфорт"
}
]

View File

@ -16,6 +16,7 @@ return new class extends Migration
$table->id();
$table->string('name')->nullable()->comment('Наименование');
$table->integer('year')->nullable()->comment('Год выпуска');
$table->unsignedBigInteger('equipment_id')->nullable('Комплектация');
$table->timestamps();
$table->softDeletes();

View File

@ -30,6 +30,7 @@ return new class extends \A7kz\Platform\Commands\InstallScript {
$table->id();
$table->string('name')->nullable()->comment('Наименование');
$table->integer('year')->nullable()->comment('Год выпуска');
$table->unsignedBigInteger('equipment_id')->nullable('Комплектация');
$table->timestamps();
$table->softDeletes();

View File

@ -68,6 +68,7 @@ return new class extends \A7kz\Platform\Commands\InstallScript {
if ($count === 0) {
foreach ($segments as $segment) {
foreach ($data as $value) {
if ($value['ПометкаУдаления'] == 'Нет') {
$model = UniModel::model('pipi_owner_contracts', $segment->connector);
$model->is_group = (bool) $value['ЭтоГруппа'];
$model->code = $value['Код'];
@ -79,12 +80,10 @@ return new class extends \A7kz\Platform\Commands\InstallScript {
$model->started_at = $this->formatDate($value['ДатаНачалаДействияДоговора'])?->format('Y-m-d');
$model->ended_at = $this->formatDate($value['ДатаОкончанияДействияДоговора'])?->format('Y-m-d');
$model->payment_type = $value['УсловияОплаты'];
if ($value['ПометкаУдаления'] = 'Да') {
$model->deleted_at = now();
}
$model->save();
}
}
}
foreach ($data as $value) {
$model = UniModel::model('pipi_owner_contracts')->where('name', $value['Наименование'])->first();

View File

@ -73,6 +73,7 @@ return new class extends \A7kz\Platform\Commands\InstallScript {
$segments = Segment::listActive();
foreach ($segments as $segment) {
foreach ($data as $value) {
if ($value['ПометкаУдаления'] == 'Нет') {
$model = UniModel::model('pipi_owners', $segment->connector);
$model->is_group = (bool) $value['ЭтоГруппа'];
$model->code = $value['Код'];
@ -97,12 +98,10 @@ return new class extends \A7kz\Platform\Commands\InstallScript {
'name' => $value['ОсновнойДоговор']
])->id;
}
if ($value['ПометкаУдаления'] == 'Да') {
$model->deleted_at = now();
}
$model->save();
}
}
}
foreach ($data as $value) {
$model = UniModel::model('pipi_owners')->where('name', $value['Наименование'])->first();