Jelajahi Sumber

moved fields from sku to product

Alexander Musikhin 7 bulan lalu
induk
melakukan
d77a16ce3e

+ 6 - 1
app/Http/Controllers/ProductController.php

@@ -40,6 +40,11 @@ class ProductController extends Controller
             'certificate_id'            => 'Сертификат',
             'passport_name'             => 'Наименование по паспорту',
             'statement_name'            => 'Наименование в ведомости',
+            'service_life'              => 'Срок службы',
+            'certificate_number'        => 'Номер сертификата',
+            'certificate_date'          => 'Дата сертификата',
+            'certificate_issuer'        => 'Орган сертификации',
+            'certificate_type'          => 'Вид сертификации',
         ],
         'searchFields' =>  [
             'nomenclature_number',
@@ -56,7 +61,7 @@ class ProductController extends Controller
         // fill filters
         $this->createFilters($model, 'type_tz', 'type', 'certificate_id');
         $this->createRangeFilters($model, 'nomenclature_number', 'product_price', 'installation_price', 'total_price');
-        $this->createDateFilters($model, 'created_at');
+        $this->createDateFilters($model, 'certificate_date', 'created_at');
 
         // create request
         $q = $model::query();

+ 1 - 7
app/Http/Controllers/ProductSKUController.php

@@ -31,11 +31,6 @@ class ProductSKUController extends Controller
             'rfid'                              => 'RFID',
             'factory_number'                    => 'Номер фабрики',
             'manufacture_date'                  => 'Дата производства',
-            'service_life'                      => 'Срок службы',
-            'certificate_number'                => 'Номер сертификата',
-            'certificate_date'                  => 'Дата сертификата',
-            'certificate_issuer'                => 'Орган сертификации',
-            'certificate_type'                  => 'Вид сертификации',
             'statement_number'                  => 'Номер ведомости',
             'statement_date'                    => 'Дата ведомости',
             'upd_number'                        => 'Номер УПД',
@@ -54,7 +49,6 @@ class ProductSKUController extends Controller
         'searchFields' =>  [
             'rfid',
             'factory_number',
-            'certificate_number',
             'statement_number',
             'upd_number',
             'order-object_address',
@@ -67,7 +61,7 @@ class ProductSKUController extends Controller
         $model = new ProductSKU;
 
         $this->createFilters($model, 'status', 'passport_id');
-        $this->createDateFilters($model, 'certificate_date', 'manufacture_date', 'statement_date');
+        $this->createDateFilters($model, 'manufacture_date', 'statement_date');
         $this->data['ranges'] = [];
 
         $q = $model::query();

+ 0 - 5
app/Http/Requests/ProductSKUStoreRequest.php

@@ -28,11 +28,6 @@ class ProductSKUStoreRequest extends FormRequest
             'rfid'                  => 'nullable|string',
             'factory_number'        => 'nullable|string',
             'manufacture_date'      => 'nullable|date',
-            'service_life'          => 'nullable|integer',
-            'certificate_number'    => 'nullable|string',
-            'certificate_date'      => 'nullable|date',
-            'certificate_issuer'    => 'nullable|string',
-            'certificate_type'      => 'nullable|string',
             'statement_number'      => 'nullable|string',
             'statement_date'        => 'nullable|date',
             'upd_number'            => 'nullable|string',

+ 5 - 0
app/Http/Requests/StoreProductRequest.php

@@ -37,6 +37,11 @@ class StoreProductRequest extends FormRequest
             'note'                  => 'nullable|string',
             'passport_name'         => 'nullable|string',
             'statement_name'        => 'nullable|string',
+            'service_life'          => 'nullable|string',
+            'certificate_number'    => 'nullable|string',
+            'certificate_date'      => 'nullable|string',
+            'certificate_issuer'    => 'nullable|string',
+            'certificate_type'      => 'nullable|string',
         ];
     }
 }

+ 5 - 0
app/Models/Product.php

@@ -38,6 +38,11 @@ class Product extends Model
         'certificate_id',
         'passport_name',
         'statement_name',
+        'service_life',
+        'certificate_number',
+        'certificate_date',
+        'certificate_issuer',
+        'certificate_type',
     ];
 
     // set year attribute to current selected year

+ 0 - 5
app/Models/ProductSKU.php

@@ -23,11 +23,6 @@ class ProductSKU extends Model
         'rfid',
         'factory_number',
         'manufacture_date',
-        'service_life',
-        'certificate_number',
-        'certificate_date',
-        'certificate_issuer',
-        'certificate_type',
         'statement_number',
         'statement_date',
         'upd_number',

+ 15 - 1
database/migrations/2025_04_27_202322_add_fields_to_products_table.php

@@ -14,6 +14,12 @@ return new class extends Migration
         Schema::table('products', function (Blueprint $table) {
             $table->string('passport_name')->nullable()->after('note');
             $table->string('statement_name')->nullable()->after('passport_name');
+
+            $table->unsignedInteger('service_life')->nullable()->after('statement_name');   // срок эксплуатации, месяцев
+            $table->string('certificate_number')->nullable()->after('service_life');        // номер сертификата
+            $table->date('certificate_date')->nullable()->after('certificate_number');      // дата выдачи сертификата
+            $table->string('certificate_issuer')->nullable()->after('certificate_date');    // орган сертификации
+            $table->string('certificate_type')->nullable()->after('certificate_issuer');    // декларация, сертификат, отказное письмо
         });
     }
 
@@ -23,7 +29,15 @@ return new class extends Migration
     public function down(): void
     {
         Schema::table('products', function (Blueprint $table) {
-            $table->dropColumn(['passport_name', 'statement_name']);
+            $table->dropColumn([
+                'passport_name',
+                'statement_name',
+                'service_life',
+                'certificate_number',
+                'certificate_date',
+                'certificate_issuer',
+                'certificate_type'
+            ]);
         });
     }
 };

+ 38 - 0
database/migrations/2025_04_28_195007_remove_fields_from_products_sku_table.php

@@ -0,0 +1,38 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     */
+    public function up(): void
+    {
+        Schema::table('products_sku', function (Blueprint $table) {
+            $table->dropColumn([
+                'service_life',
+                'certificate_number',
+                'certificate_date',
+                'certificate_issuer',
+                'certificate_type'
+            ]);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     */
+    public function down(): void
+    {
+        Schema::table('products_sku', function (Blueprint $table) {
+            $table->unsignedInteger('service_life')->nullable()->after('manufacture_date');    // срок эксплуатации, месяцев
+            $table->string('certificate_number')->nullable()->after('service_life');           // номер сертификата
+            $table->date('certificate_date')->nullable()->after('certificate_number');         // дата выдачи сертификата
+            $table->string('certificate_issuer')->nullable()->after('certificate_date');       // орган сертификации
+            $table->string('certificate_type')->nullable()->after('certificate_issuer');       // декларация, сертификат, отказное письмо
+        });
+    }
+};

+ 7 - 0
resources/views/catalog/edit.blade.php

@@ -43,6 +43,13 @@
                         @if($product->certificate)
                             @include('partials.input', ['name' => 'cert', 'title' => 'Сертификат', 'value' => $product->certificate->original_name, 'disabled' => true])
                         @endif
+
+                        @include('partials.input', ['name' => 'service_life', 'title' => 'Срок службы', 'type' => 'number', 'value' => $product->service_life])
+                        @include('partials.input', ['name' => 'certificate_number', 'title' => 'Номер сертификата', 'value' => $product->certificate_number])
+                        @include('partials.input', ['name' => 'certificate_date', 'title' => 'Дата сертификата', 'type' => 'date', 'value' => $product->certificate_date])
+                        @include('partials.input', ['name' => 'certificate_issuer', 'title' => 'Орган сертификации', 'value' => $product->certificate_issuer])
+                        @include('partials.input', ['name' => 'certificate_type', 'title' => 'Вид сертификации', 'value' => $product->certificate_type])
+
                         <div class="row mb-2">
                             <label for="note" class="col-form-label my-1">
                                 Примечание <sup>*</sup>

+ 1 - 1
resources/views/partials/submit.blade.php

@@ -1,5 +1,5 @@
 <div class="row">
-    <div class="@if(!($right ?? null)) offset-md-{{ $offset ?? 4 }} col-md-8 @endif buttons">
+    <div class="@if(!($right ?? null)) offset-md-{{ $offset ?? 4 }} col-md-{{ (isset($offset)) ? 12 - $offset : 8  }} @endif buttons">
         <button type="submit" class="btn btn-primary text-white">{{ $name ?? 'Сохранить' }}</button>
         @if(isset($delete) && !($deleteDisabled ?? false))
             <a href="#" class="btn btn-danger delete">{{ $delete['title'] ?? 'Удалить' }}</a>

+ 0 - 5
resources/views/products_sku/edit.blade.php

@@ -31,11 +31,6 @@
                 @include('partials.input', ['name' => 'rfid', 'title' => 'RFID', 'required' => true, 'value' => $product_sku->rfid])
                 @include('partials.input', ['name' => 'factory_number', 'title' => 'Номер фабрики', 'required' => true, 'value' => $product_sku->factory_number])
                 @include('partials.input', ['name' => 'manufacture_date', 'title' => 'Дата производства', 'type' => 'date', 'required' => true, 'value' => $product_sku->manufacture_date])
-                @include('partials.input', ['name' => 'service_life', 'title' => 'Срок службы', 'required' => true, 'type' => 'number', 'value' => $product_sku->service_life])
-                @include('partials.input', ['name' => 'certificate_number', 'title' => 'Номер сертификата', 'required' => true, 'value' => $product_sku->certificate_number])
-                @include('partials.input', ['name' => 'certificate_date', 'title' => 'Дата сертификата', 'type' => 'date', 'required' => true, 'value' => $product_sku->certificate_date])
-                @include('partials.input', ['name' => 'certificate_issuer', 'title' => 'Орган сертификации', 'required' => true, 'value' => $product_sku->certificate_issuer])
-                @include('partials.input', ['name' => 'certificate_type', 'title' => 'Вид сертификации', 'required' => true, 'value' => $product_sku->certificate_type])
                 @include('partials.input', ['name' => 'statement_number', 'title' => 'Номер ведомости', 'value' => $product_sku->statement_number])
                 @include('partials.input', ['name' => 'statement_date', 'title' => 'Дата ведомости', 'type' => 'date', 'value' => $product_sku->statement_date])
                 @include('partials.input', ['name' => 'upd_number', 'title' => 'Номер УПД', 'value' => $product_sku->upd_number])