Index: app/Models/Order.php
===================================================================
--- app/Models/Order.php	(revision f003a24e7d1eb472814b53616f73c655cfa87efa)
+++ app/Models/Order.php	(revision b7b2297c6f46586b8a37439269e971ba95d3ee13)
@@ -1,4 +1,3 @@
 <?php
-
 namespace App\Models;
 
@@ -27,4 +26,14 @@
     ];
 
+    // Add this to ensure status is never null
+    protected $attributes = [
+        'status' => 'pending',
+    ];
+
+    protected $casts = [
+        'date' => 'date',
+        'estimated_delivery_date' => 'date',
+    ];
+
     public static function getValidationRules($id = null): array
     {
@@ -49,5 +58,4 @@
         return $this->belongsTo(Client::class, 'receiver_id');
     }
-
 
     public function payment(): BelongsTo
Index: app/Models/Payment.php
===================================================================
--- app/Models/Payment.php	(revision f003a24e7d1eb472814b53616f73c655cfa87efa)
+++ app/Models/Payment.php	(revision b7b2297c6f46586b8a37439269e971ba95d3ee13)
@@ -29,8 +29,8 @@
             'order_id' => 'required|string|exists:orders,id',
             'amount' => 'required|numeric|min:0|max:9999999.99',
-            'currency' => 'required|string|size:3|in:USD,EUR,MKD,GBP,JPY,CHF,CAD,AUD',
+            'currency' => 'required|string|size:3|in:USD,EUR,MKD,GBP,JPY,CNY,RUB',
             'due_date' => 'required|date|after_or_equal:today',
-            'exchange_rate' => 'nullable|numeric|min:0.0001|max:9999.9999',
-            'payment_date' => 'nullable|date|before_or_equal:today',
+            'exchange_rate' => 'required|numeric|min:0.0001|max:9999.9999',
+            'payment_date' => 'required|date|before_or_equal:today',
             'payment_method' => 'required|string|in:bank_transfer,credit_card,cash,check,wire_transfer',
             'payment_status' => 'required|string|in:pending,paid,failed,refunded,cancelled',
Index: database/seeders/BatchSeeder.php
===================================================================
--- database/seeders/BatchSeeder.php	(revision f003a24e7d1eb472814b53616f73c655cfa87efa)
+++ database/seeders/BatchSeeder.php	(revision b7b2297c6f46586b8a37439269e971ba95d3ee13)
@@ -5,4 +5,5 @@
 use App\Models\Batch;
 use App\Models\Product;
+use Carbon\Carbon;
 use Illuminate\Database\Console\Seeds\WithoutModelEvents;
 use Illuminate\Database\Seeder;
@@ -17,17 +18,25 @@
     {
         $products = Product::all();
+        $counter = 1;
 
         foreach ($products as $product) {
-            for ($i = 0; $i <= 3; $i++) {
+            $batchCounter = rand(2,4);
+
+            for ($i = 0; $i < $batchCounter; $i++) {
+                $productionDate = Carbon::now()->subDays(rand(30, 100));
+                $expirationDate = $productionDate->copy()->addYears(2);
+
                 Batch::create([
                     'id' => Str::uuid(),
                     'product_id' => $product->id,
-                    'batch_code' => 'BATCH-' . strtoupper(Str::random(6)),
-                    'production_date' => now()->subDays(rand(10, 100)),
-                    'expiration_date' => now()->addMonths(rand(6, 18)),
-                    'net_weight' => 1.5,
-                    'gross_weight' => 1.7,
-                    'units_per_batch' => 100000,
+                    'batch_code' => 'BATCH-' . str_pad($counter, 6, '0', STR_PAD_LEFT),
+                    'production_date' => $productionDate,
+                    'expiration_date' => $expirationDate,
+                    'net_weight' => rand(500, 5000) / 100,
+                    'gross_weight' => rand(600, 6000) / 100,
+                    'units_per_batch' => rand (10000, 100000),
                 ]);
+
+                $counter++;
             }
         }
Index: database/seeders/DatabaseSeeder.php
===================================================================
--- database/seeders/DatabaseSeeder.php	(revision f003a24e7d1eb472814b53616f73c655cfa87efa)
+++ database/seeders/DatabaseSeeder.php	(revision b7b2297c6f46586b8a37439269e971ba95d3ee13)
@@ -14,12 +14,12 @@
         $this->call([
             UserSeeder::class,
+            ClientSeeder::class,
             ProducerAndProductSeeder::class,
             BatchSeeder::class,
-            ClientSeeder::class,
             TransportSeeder::class,
             OrderSeeder::class,
-            PaymentSeeder::class
-            //invoiceseeder
-            //packinglistseeder
+            PaymentSeeder::class,
+            InvoiceSeeder::class,
+            PackingListSeeder::class,
         ]);
     }
Index: database/seeders/InvoiceSeeder.php
===================================================================
--- database/seeders/InvoiceSeeder.php	(revision b7b2297c6f46586b8a37439269e971ba95d3ee13)
+++ database/seeders/InvoiceSeeder.php	(revision b7b2297c6f46586b8a37439269e971ba95d3ee13)
@@ -0,0 +1,31 @@
+<?php
+namespace Database\Seeders;
+
+use App\Models\Invoice;
+use App\Models\Order;
+use Carbon\Carbon;
+use Illuminate\Database\Seeder;
+
+class InvoiceSeeder extends Seeder
+{
+    private array $statuses = ['draft', 'sent', 'paid', 'overdue', 'cancelled'];
+
+    public function run(): void
+    {
+        $orders = Order::all();
+
+        foreach ($orders as $order) {
+            // Create an invoice for about 80% of orders
+            if (rand(1, 100) <= 80) {
+                $invoiceDate = Carbon::parse($order->date)->addDays(rand(0, 7)); // Fixed: Use Carbon::parse()
+
+                Invoice::create([
+                    'invoice_date' => $invoiceDate,
+                    'status' => $this->statuses[array_rand($this->statuses)],
+                    'total_amount' => $order->total_amount,
+                    'order_id' => $order->id,
+                ]);
+            }
+        }
+    }
+}
Index: database/seeders/OrderSeeder.php
===================================================================
--- database/seeders/OrderSeeder.php	(revision f003a24e7d1eb472814b53616f73c655cfa87efa)
+++ database/seeders/OrderSeeder.php	(revision b7b2297c6f46586b8a37439269e971ba95d3ee13)
@@ -1,62 +1,67 @@
 <?php
-
 namespace Database\Seeders;
 
 use App\Models\Order;
 use App\Models\Client;
+use App\Models\Batch;
 use App\Models\Transport;
-use App\Models\Batch;
 use Illuminate\Database\Seeder;
+use Illuminate\Support\Facades\DB;
+use Carbon\Carbon;
 use Illuminate\Support\Str;
-use Illuminate\Support\Facades\DB;
 
 class OrderSeeder extends Seeder
 {
-    /**
-     * Run the database seeds.
-     */
+    private $statuses = ['pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled'];
+
     public function run(): void
     {
-        $buyers = Client::all();
-        $receivers = Client::all();
+        $clients = Client::all();
         $transports = Transport::all();
-        $batches = Batch::with('product')->get();
+        $batches = Batch::all();
 
-        if ($buyers->isEmpty() || $receivers->isEmpty() || $transports->isEmpty() || $batches->isEmpty()) {
-            $this->command->warn('No clients, transports, or batches found. Please seed these first.');
-            return;
+        if ($transports->isEmpty()) {
+            throw new \Exception("No transports found. Make sure TransportSeeder runs first.");
         }
 
-        $statuses = ['pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled'];
+        for ($i = 0; $i < 50; $i++) {
+            $orderDate = Carbon::now()->subDays(rand(1, 365));
+            $estimatedDelivery = $orderDate->copy()->addDays(rand(7, 30));
+            $status = $this->statuses[array_rand($this->statuses)];
 
-        for ($i = 0; $i < 20; $i++) {
-            $orderDate = now()->subDays(rand(1, 60));
-            $estimatedDeliveryDate = $orderDate->copy()->addDays(rand(7, 30));
+            $orderId = (string) Str::uuid();
 
-            $order = Order::create([
-                'id' => Str::uuid(),
-                'date' => $orderDate,
-                'status' => $statuses[array_rand($statuses)],
-                'estimated_delivery_date' => $estimatedDeliveryDate,
-                'buyer_id' => $buyers->random()->id,
-                'receiver_id' => $receivers->random()->id,
+            // Create order using DB facade to avoid any model issues
+            DB::table('orders')->insert([
+                'id' => $orderId,
+                'date' => $orderDate->format('Y-m-d'),
+                'status' => $status,
+                'estimated_delivery_date' => $estimatedDelivery->format('Y-m-d'),
+                'buyer_id' => $clients->random()->id,
+                'receiver_id' => $clients->random()->id,
                 'transport_id' => $transports->random()->id,
+                'created_at' => now(),
+                'updated_at' => now(),
             ]);
 
-            // Attach 1-3 random batches to this order
-            $selectedBatches = $batches->random(rand(1, min(3, $batches->count())));
+            // Attach 1-5 batches to each order
+            $orderBatches = $batches->random(rand(1, 5));
 
-            foreach ($selectedBatches as $batch) {
-                $quantity = rand(100, 1000);
-                $pricePerUnit = $batch->product->price ?? rand(10, 100);
+            foreach ($orderBatches as $batch) {
+                $quantity = rand(10, 100);
+                $pricePerUnit = $batch->product->price * (rand(80, 120) / 100);
                 $totalPrice = $quantity * $pricePerUnit;
 
+                // Cap the total price to prevent overflow - use lower limits
+                $cappedTotalPrice = min($totalPrice, 50000.00); // Lower cap for individual batch totals
+                $cappedPricePerUnit = min($pricePerUnit, 1000.00); // Lower cap for unit price
+
                 DB::table('order_batches')->insert([
-                    'id' => (string)Str::uuid(),
-                    'order_id' => $order->id,
+                    'id' => (string) Str::uuid(),
+                    'order_id' => $orderId,
                     'batch_id' => $batch->id,
                     'quantity' => $quantity,
-                    'price_per_unit' => $pricePerUnit,
-                    'total_price' => $totalPrice,
+                    'price_per_unit' => (float) sprintf('%.2f', $cappedPricePerUnit),
+                    'total_price' => (float) sprintf('%.2f', $cappedTotalPrice),
                     'created_at' => now(),
                     'updated_at' => now(),
@@ -64,6 +69,4 @@
             }
         }
-
-        $this->command->info('Orders with batches seeded successfully!');
     }
 }
Index: database/seeders/PackingListSeeder.php
===================================================================
--- database/seeders/PackingListSeeder.php	(revision b7b2297c6f46586b8a37439269e971ba95d3ee13)
+++ database/seeders/PackingListSeeder.php	(revision b7b2297c6f46586b8a37439269e971ba95d3ee13)
@@ -0,0 +1,30 @@
+<?php
+namespace Database\Seeders;
+
+use App\Models\PackingList;
+use App\Models\Order;
+use Illuminate\Database\Seeder;
+use Carbon\Carbon;
+
+class PackingListSeeder extends Seeder
+{
+    private $statuses = ['draft', 'prepared', 'packed', 'shipped'];
+
+    public function run(): void
+    {
+        $orders = Order::whereIn('status', ['processing', 'shipped', 'delivered'])->get();
+
+        foreach ($orders as $order) {
+            // Create a packing list for shipped/delivered orders
+            if (in_array($order->status, ['shipped', 'delivered']) || rand(1, 100) <= 60) {
+                $packingListDate = Carbon::parse($order->date)->addDays(rand(1, 5)); // Fixed: Use Carbon::parse()
+
+                PackingList::create([
+                    'order_id' => $order->id,
+                    'packing_list_date' => $packingListDate,
+                    'status' => $this->statuses[array_rand($this->statuses)],
+                ]);
+            }
+        }
+    }
+}
Index: database/seeders/PaymentSeeder.php
===================================================================
--- database/seeders/PaymentSeeder.php	(revision f003a24e7d1eb472814b53616f73c655cfa87efa)
+++ database/seeders/PaymentSeeder.php	(revision b7b2297c6f46586b8a37439269e971ba95d3ee13)
@@ -3,62 +3,64 @@
 namespace Database\Seeders;
 
+use App\Models\Payment;
+use App\Models\Order;
 use Illuminate\Database\Seeder;
-use Illuminate\Support\Facades\DB;
+use Carbon\Carbon;
 use Illuminate\Support\Str;
-use App\Models\Order;
 
 class PaymentSeeder extends Seeder
 {
-    /**
-     * Run the database seeds.
-     */
+    private $currencies = [
+        'USD' => 1.00,    // Base currency
+        'EUR' => 0.85,
+        'MKD' => 55.50,
+        'GBP' => 0.73,
+        'JPY' => 110.25,
+        'CNY' => 6.45,    // Added Chinese Yuan
+        'RUB' => 75.80,   // Added Russian Ruble
+    ];
+
+    private $methods = ['bank_transfer', 'credit_card', 'cash', 'check', 'wire_transfer'];
+    private $statuses = ['pending', 'paid', 'failed', 'refunded', 'cancelled'];
+
     public function run(): void
     {
-        // Ensure at least one order exists
-        if (Order::count() === 0) {
-            $this->command->warn('No orders found. Creating a dummy order first.');
+        $orders = Order::all();
 
-            $order = Order::create([
-                'id' => Str::uuid(),
-                'customer_id' => Str::uuid(), // adjust if you have customer relation
-                'order_date' => now(),
-                'status' => 'pending',
-                // add any other required fields from your orders migration
+        foreach ($orders as $order) {
+            $dueDate = Carbon::parse($order->date)->addDays(30);
+
+            // Select a random currency and get its fixed exchange rate
+            $currency = array_rand($this->currencies);
+            $exchangeRate = $this->currencies[$currency];
+
+            // Cap the amount to fit within decimal(10,2) which max is 9999999.99
+            $amount = min($order->total_amount, 9999999.99);
+
+            // Determine status
+            $status = $this->statuses[array_rand($this->statuses)];
+
+            // Set payment_date based on status
+            if ($status === 'paid') {
+                // For paid, set a random date between order date and due date
+                $daysAfterOrder = rand(1, 30);
+                $paymentDate = Carbon::parse($order->date)->addDays($daysAfterOrder);
+            } else {
+                // For non-paid, set to the due date
+                $paymentDate = $dueDate;
+            }
+
+            Payment::create([
+                'id' => (string) Str::uuid(),
+                'order_id' => $order->id,
+                'amount' => $amount,
+                'currency' => $currency,
+                'due_date' => $dueDate->format('Y-m-d'),
+                'exchange_rate' => $exchangeRate,
+                'payment_date' => $paymentDate->format('Y-m-d'),
+                'payment_method' => $this->methods[array_rand($this->methods)],
+                'payment_status' => $status,
             ]);
-        } else {
-            $order = Order::inRandomOrder()->first();
         }
-
-        // Example payment data
-        $payments = [
-            [
-                'id' => Str::uuid(),
-                'order_id' => $order->id,
-                'amount' => 1500.00,
-                'currency' => 'USD',
-                'due_date' => now()->addDays(30),
-                'exchange_rate' => 1.0,
-                'payment_date' => null,
-                'payment_method' => 'bank_transfer',
-                'payment_status' => 'pending',
-                'created_at' => now(),
-                'updated_at' => now(),
-            ],
-            [
-                'id' => Str::uuid(),
-                'order_id' => $order->id,
-                'amount' => 2000.00,
-                'currency' => 'EUR',
-                'due_date' => now()->addDays(15),
-                'exchange_rate' => 1.1,
-                'payment_date' => now()->addDays(5),
-                'payment_method' => 'credit_card',
-                'payment_status' => 'completed',
-                'created_at' => now(),
-                'updated_at' => now(),
-            ],
-        ];
-
-        DB::table('payments')->insert($payments);
     }
 }
Index: database/seeders/UserSeeder.php
===================================================================
--- database/seeders/UserSeeder.php	(revision f003a24e7d1eb472814b53616f73c655cfa87efa)
+++ database/seeders/UserSeeder.php	(revision b7b2297c6f46586b8a37439269e971ba95d3ee13)
@@ -14,5 +14,5 @@
         User::create([
             'name' => env('INIT_USER_NAME', 'Default User'),
-            'email' => env('INIT_USER_EMAIL', 'admin@pharmaexport.com'),
+            'email' => env('INIT_USER_EMAIL', 'admin@pharma.com'),
             'email_verified_at' => Carbon::now(),
             'password' => Hash::make(env('INIT_USER_PASS', 'password')),
@@ -23,5 +23,5 @@
         User::create([
             'name' => 'Regular User',
-            'email' => 'user@pharmaexport.com',
+            'email' => 'user@pharma.com',
             'email_verified_at' => Carbon::now(),
             'password' => Hash::make('password'),
Index: resources/css/app.css
===================================================================
--- resources/css/app.css	(revision f003a24e7d1eb472814b53616f73c655cfa87efa)
+++ resources/css/app.css	(revision b7b2297c6f46586b8a37439269e971ba95d3ee13)
@@ -75,5 +75,5 @@
 @layer base {
   * {
-    @apply border-border;
+    @apply border-border overflow-x-hidden;
   }
   body {
Index: resources/js/Layout/App.vue
===================================================================
--- resources/js/Layout/App.vue	(revision f003a24e7d1eb472814b53616f73c655cfa87efa)
+++ resources/js/Layout/App.vue	(revision b7b2297c6f46586b8a37439269e971ba95d3ee13)
@@ -247,12 +247,12 @@
                     <form>
                         <div class="relative">
-                            <Search
-                                class="text-muted-foreground absolute top-2.5 left-2.5 h-4 w-4"
-                            />
-                            <Input
-                                type="search"
-                                placeholder="Search products..."
-                                class="bg-background w-full appearance-none pl-8 shadow-none md:w-2/3 lg:w-1/3"
-                            />
+<!--                            <Search-->
+<!--                                class="text-muted-foreground absolute top-2.5 left-2.5 h-4 w-4"-->
+<!--                            />-->
+<!--                            <Input-->
+<!--                                type="search"-->
+<!--                                placeholder="Search products..."-->
+<!--                                class="bg-background w-full appearance-none pl-8 shadow-none md:w-2/3 lg:w-1/3"-->
+<!--                            />-->
                         </div>
                     </form>
