Compare commits
17 Commits
a8f717d99a
...
cbbf35eec9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cbbf35eec9 | ||
|
|
550792372a | ||
|
|
be9457c4e2 | ||
|
|
09acb4453c | ||
|
|
0971c25a5c | ||
|
|
04c44ae416 | ||
|
|
85329ff557 | ||
|
|
f014d9fd42 | ||
|
|
4633066b13 | ||
|
|
79b889ec39 | ||
|
|
a6b9f88101 | ||
|
|
a275e18d0b | ||
|
|
9aacf25eb5 | ||
|
|
2c1efb1bf0 | ||
|
|
c8e2a9c7b9 | ||
|
|
38c37c74ed | ||
|
|
e328569cc1 |
@@ -34,6 +34,9 @@ class BlockImporter extends Importer
|
|||||||
public function resolveRecord(): ?Block
|
public function resolveRecord(): ?Block
|
||||||
{
|
{
|
||||||
$plant = \App\Models\Plant::where('name', $this->data['plant'])->first();
|
$plant = \App\Models\Plant::where('name', $this->data['plant'])->first();
|
||||||
|
if (!$plant) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return Block::updateOrCreate([
|
return Block::updateOrCreate([
|
||||||
'name' => $this->data['name'],
|
'name' => $this->data['name'],
|
||||||
'plant_id' => $plant->id
|
'plant_id' => $plant->id
|
||||||
|
|||||||
@@ -46,6 +46,9 @@ class ItemImporter extends Importer
|
|||||||
public function resolveRecord(): ?Item
|
public function resolveRecord(): ?Item
|
||||||
{
|
{
|
||||||
$plant = \App\Models\Plant::where('name', $this->data['plant'])->first();
|
$plant = \App\Models\Plant::where('name', $this->data['plant'])->first();
|
||||||
|
if (!$plant) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return Item::updateOrCreate([
|
return Item::updateOrCreate([
|
||||||
'code' => $this->data['code'],
|
'code' => $this->data['code'],
|
||||||
'plant_id' => $plant->id
|
'plant_id' => $plant->id
|
||||||
|
|||||||
@@ -39,6 +39,9 @@ class LineImporter extends Importer
|
|||||||
public function resolveRecord(): ?Line
|
public function resolveRecord(): ?Line
|
||||||
{
|
{
|
||||||
$plant = \App\Models\Plant::where('name', $this->data['plant'])->first();
|
$plant = \App\Models\Plant::where('name', $this->data['plant'])->first();
|
||||||
|
if (!$plant) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return Line::updateOrCreate([
|
return Line::updateOrCreate([
|
||||||
'name' => $this->data['name'],
|
'name' => $this->data['name'],
|
||||||
'plant_id' => $plant->id
|
'plant_id' => $plant->id
|
||||||
|
|||||||
@@ -46,6 +46,19 @@ class PlantImporter extends Importer
|
|||||||
public function resolveRecord(): ?Plant
|
public function resolveRecord(): ?Plant
|
||||||
{
|
{
|
||||||
$company = \App\Models\Company::where('name', $this->data['company'])->first();
|
$company = \App\Models\Company::where('name', $this->data['company'])->first();
|
||||||
|
if (!$company) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$plantCN = \App\Models\Plant::where('code', $this->data['code'])->where('name', $this->data['name'])->first();
|
||||||
|
if (!$plantCN) {
|
||||||
|
$plantCode = \App\Models\Plant::where('code', $this->data['code'])->first();
|
||||||
|
$plantName = \App\Models\Plant::where('name', $this->data['name'])->first();
|
||||||
|
if ($plantCode || $plantName) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return Plant::updateOrCreate([
|
return Plant::updateOrCreate([
|
||||||
'code' => $this->data['code'],
|
'code' => $this->data['code'],
|
||||||
'name' => $this->data['name'],
|
'name' => $this->data['name'],
|
||||||
|
|||||||
@@ -68,6 +68,12 @@ class ProductionLineStopImporter extends Importer
|
|||||||
->label('Plant Name')
|
->label('Plant Name')
|
||||||
->relationship(resolveUsing:'name')
|
->relationship(resolveUsing:'name')
|
||||||
->rules(['required']),
|
->rules(['required']),
|
||||||
|
ImportColumn::make('operator_id')
|
||||||
|
->requiredMapping()
|
||||||
|
->exampleHeader('Operator ID')
|
||||||
|
->example('admin')
|
||||||
|
->label('Operator ID')
|
||||||
|
->rules(['required']),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -61,6 +61,12 @@ class ProductionPlanImporter extends Importer
|
|||||||
->example('30-01-2025 19:11:00')
|
->example('30-01-2025 19:11:00')
|
||||||
->label('Updated DateTime')
|
->label('Updated DateTime')
|
||||||
->rules(['required']),
|
->rules(['required']),
|
||||||
|
ImportColumn::make('operator_id')
|
||||||
|
->requiredMapping()
|
||||||
|
->exampleHeader('Operator ID')
|
||||||
|
->example('admin')
|
||||||
|
->label('Operator ID')
|
||||||
|
->rules(['required']),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,12 +21,12 @@ class ProductionQuantityImporter extends Importer
|
|||||||
->example('12-02-2025 15:51:00')
|
->example('12-02-2025 15:51:00')
|
||||||
->label('Created DateTime')
|
->label('Created DateTime')
|
||||||
->rules(['required']),
|
->rules(['required']),
|
||||||
// ImportColumn::make('hourly_quantity')
|
ImportColumn::make('production_order')
|
||||||
// ->requiredMapping()
|
->requiredMapping()
|
||||||
// ->exampleHeader('Hourly Quantity')
|
->exampleHeader('Production Order')
|
||||||
// ->label('Hourly Quantity')
|
->example('1234567')
|
||||||
// ->numeric()
|
->label('Production Order')
|
||||||
// ->rules(['required', 'integer']),
|
->numeric(),
|
||||||
ImportColumn::make('item')
|
ImportColumn::make('item')
|
||||||
->requiredMapping()
|
->requiredMapping()
|
||||||
->exampleHeader('Item Code')
|
->exampleHeader('Item Code')
|
||||||
@@ -67,17 +67,44 @@ class ProductionQuantityImporter extends Importer
|
|||||||
->example('12-02-2025 15:51:00')
|
->example('12-02-2025 15:51:00')
|
||||||
->label('Updated DateTime')
|
->label('Updated DateTime')
|
||||||
->rules(['required']),
|
->rules(['required']),
|
||||||
|
ImportColumn::make('operator_id')
|
||||||
|
->requiredMapping()
|
||||||
|
->exampleHeader('Operator ID')
|
||||||
|
->example('admin')
|
||||||
|
->label('Operator ID')
|
||||||
|
->rules(['required']),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function resolveRecord(): ?ProductionQuantity
|
public function resolveRecord(): ?ProductionQuantity
|
||||||
{
|
{
|
||||||
|
$plant = \App\Models\Plant::where('name', $this->data['plant'])->first();
|
||||||
|
$item = \App\Models\Item::where('code', $this->data['item'])->where('plant_id', $plant->id)->first();
|
||||||
|
$line = \App\Models\Line::where('name', $this->data['line'])->where('plant_id', $plant->id)->first();
|
||||||
|
$shift = \App\Models\Shift::where('name', $this->data['shift'])->where('plant_id', $plant->id)->first();
|
||||||
|
if (!$plant || !$item || !$line || !$shift) {
|
||||||
|
// Optionally handle missing plant/item/line/shift
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return ProductionQuantity::updateOrCreate([
|
||||||
|
'serial_number' => $this->data['serial_number'],
|
||||||
|
'plant_id' => $plant->id,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'shift_id' => $shift->id,
|
||||||
|
'line_id' => $line->id,
|
||||||
|
'item_id' => $item->id,
|
||||||
|
'production_order' => $this->data['production_order'] ?? null,
|
||||||
|
'created_at' => $this->data['created_at'],
|
||||||
|
'updated_at' => $this->data['updated_at']
|
||||||
|
]
|
||||||
|
);
|
||||||
// return ProductionQuantity::firstOrNew([
|
// return ProductionQuantity::firstOrNew([
|
||||||
// // Update existing records, matching them by `$this->data['column_name']`
|
// // Update existing records, matching them by `$this->data['column_name']`
|
||||||
// 'email' => $this->data['email'],
|
// 'email' => $this->data['email'],
|
||||||
// ]);
|
// ]);
|
||||||
|
|
||||||
return new ProductionQuantity();
|
// return new ProductionQuantity();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getCompletedNotificationBody(Import $import): string
|
public static function getCompletedNotificationBody(Import $import): string
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Filament\Resources;
|
namespace App\Filament\Resources;
|
||||||
|
|
||||||
|
use AlperenErsoy\FilamentExport\Actions\FilamentExportBulkAction;
|
||||||
use App\Filament\Exports\InvoiceValidationExporter;
|
use App\Filament\Exports\InvoiceValidationExporter;
|
||||||
use App\Filament\Resources\InvoiceValidationResource\Pages;
|
use App\Filament\Resources\InvoiceValidationResource\Pages;
|
||||||
use App\Models\InvoiceValidation;
|
use App\Models\InvoiceValidation;
|
||||||
@@ -122,6 +123,10 @@ class InvoiceValidationResource extends Resource
|
|||||||
'x-model' => 'value',
|
'x-model' => 'value',
|
||||||
'wire:keydown.enter.prevent' => 'processSerialNumber(value)', // Using wire:keydown
|
'wire:keydown.enter.prevent' => 'processSerialNumber(value)', // Using wire:keydown
|
||||||
])
|
])
|
||||||
|
->afterStateUpdated(function ($state, callable $set, callable $get) {
|
||||||
|
$set('update_invoice', 0);
|
||||||
|
// if (!$invNo) { return; } else { }
|
||||||
|
})
|
||||||
->columnSpan(1),
|
->columnSpan(1),
|
||||||
Forms\Components\TextInput::make('total_quantity')
|
Forms\Components\TextInput::make('total_quantity')
|
||||||
->label('Total Quantity')
|
->label('Total Quantity')
|
||||||
@@ -136,7 +141,7 @@ class InvoiceValidationResource extends Resource
|
|||||||
->boolean()
|
->boolean()
|
||||||
->grouped()
|
->grouped()
|
||||||
->reactive()
|
->reactive()
|
||||||
->hidden(fn (callable $get) => ($get('invoice_number') == null || $get('update_invoice') === '0') || !empty($get('serial_number')))
|
->hidden(fn (callable $get) => ($get('invoice_number') == null || $get('update_invoice') == '0') || !empty($get('serial_number')))
|
||||||
->afterStateUpdated(function ($state, callable $set, callable $get) {
|
->afterStateUpdated(function ($state, callable $set, callable $get) {
|
||||||
if(!$get('plant_id'))
|
if(!$get('plant_id'))
|
||||||
{
|
{
|
||||||
@@ -904,6 +909,7 @@ class InvoiceValidationResource extends Resource
|
|||||||
Tables\Actions\DeleteBulkAction::make(),
|
Tables\Actions\DeleteBulkAction::make(),
|
||||||
Tables\Actions\ForceDeleteBulkAction::make(),
|
Tables\Actions\ForceDeleteBulkAction::make(),
|
||||||
Tables\Actions\RestoreBulkAction::make(),
|
Tables\Actions\RestoreBulkAction::make(),
|
||||||
|
FilamentExportBulkAction::make('export')
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
|
|
||||||
public $plantId;
|
public $plantId;
|
||||||
|
|
||||||
|
public $hasQuanTyp = false;
|
||||||
|
|
||||||
public $invoiceNumber;
|
public $invoiceNumber;
|
||||||
|
|
||||||
public bool $hasSearched = false;
|
public bool $hasSearched = false;
|
||||||
@@ -137,6 +139,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
Notification::make()
|
Notification::make()
|
||||||
->title("Start the scanning process!")
|
->title("Start the scanning process!")
|
||||||
->info()
|
->info()
|
||||||
|
->seconds(1)
|
||||||
->send();
|
->send();
|
||||||
// $hasRecords = InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->first()->stickerMasterRelation->material_type ?? null;
|
// $hasRecords = InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->first()->stickerMasterRelation->material_type ?? null;
|
||||||
// $this->dispatch( (!empty($hasRecords) && $hasRecords) ? 'refreshMaterialInvoiceData' : 'refreshInvoiceData', invoiceNumber: $invoiceNumber, plantId: $plantId); //$this->invoiceNumber
|
// $this->dispatch( (!empty($hasRecords) && $hasRecords) ? 'refreshMaterialInvoiceData' : 'refreshInvoiceData', invoiceNumber: $invoiceNumber, plantId: $plantId); //$this->invoiceNumber
|
||||||
@@ -174,6 +177,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$materialCodes = [];
|
$materialCodes = [];
|
||||||
$missingQuantities = [];
|
$missingQuantities = [];
|
||||||
$invalidMatQuan = [];
|
$invalidMatQuan = [];
|
||||||
|
$hasQuanTypIds = [];
|
||||||
$validRowsFound = false;
|
$validRowsFound = false;
|
||||||
|
|
||||||
foreach ($rows as $index => $row)
|
foreach ($rows as $index => $row)
|
||||||
@@ -234,7 +238,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
|
|
||||||
if (!empty($uniqueInvalidCodes)) {
|
if (!empty($uniqueInvalidCodes)) {
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->title('Invalid Item Codes')
|
->title('Invalid: Item Codes')
|
||||||
->body('The following item codes should contain minimum 6 digit alpha numeric values:<br>' . implode(', ', $uniqueInvalidCodes))
|
->body('The following item codes should contain minimum 6 digit alpha numeric values:<br>' . implode(', ', $uniqueInvalidCodes))
|
||||||
->danger()
|
->danger()
|
||||||
->send();
|
->send();
|
||||||
@@ -348,7 +352,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$message = $missingCount > 10 ? "'$missingCount' Serial Invoice item codes found." : "'Serial Invoice' item codes found:<br>" . implode(', ', $invalidCodes);
|
$message = $missingCount > 10 ? "'$missingCount' Serial Invoice item codes found." : "'Serial Invoice' item codes found:<br>" . implode(', ', $invalidCodes);
|
||||||
|
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->title('Invalid Item Codes')
|
->title('Invalid: Item Codes')
|
||||||
->body($message)
|
->body($message)
|
||||||
->danger()
|
->danger()
|
||||||
->send();
|
->send();
|
||||||
@@ -362,6 +366,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$nonNumericQtyCodes = [];
|
$nonNumericQtyCodes = [];
|
||||||
$zeroQtyCodes = [];
|
$zeroQtyCodes = [];
|
||||||
$notDivisibleCodes = [];
|
$notDivisibleCodes = [];
|
||||||
|
$hasQuanTyp = false;
|
||||||
|
|
||||||
foreach ($matchedItems as $sticker)
|
foreach ($matchedItems as $sticker)
|
||||||
{
|
{
|
||||||
@@ -380,6 +385,9 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$excelCode = trim($row[0]);
|
$excelCode = trim($row[0]);
|
||||||
$excelMatQty = trim($row[1]);
|
$excelMatQty = trim($row[1]);
|
||||||
|
|
||||||
|
if (empty($excelCode) || empty($excelMatQty)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
||||||
$totalExcelQty += $excelMatQty; // Sum up the quantities
|
$totalExcelQty += $excelMatQty; // Sum up the quantities
|
||||||
@@ -394,6 +402,11 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$notDivisibleCodes[] = $code;
|
$notDivisibleCodes[] = $code;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ($materialType == 3)
|
||||||
|
{
|
||||||
|
$hasQuanTyp = true;
|
||||||
|
$hasQuanTypIds[] = $sticker->id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$showValidationNotification = function(array $codes, string $message) {
|
$showValidationNotification = function(array $codes, string $message) {
|
||||||
@@ -428,7 +441,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$inserted = 0;
|
$inserted = 0;
|
||||||
foreach ($matchedItems as $sticker)
|
foreach ($matchedItems as $sticker)
|
||||||
{
|
{
|
||||||
if ($newQuan === -1)
|
if ($newQuan === -1 && !$hasQuanTyp)
|
||||||
{
|
{
|
||||||
InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->where(function($query) {
|
InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->where(function($query) {
|
||||||
$query->whereNull('serial_number')->orWhere('serial_number', '');
|
$query->whereNull('serial_number')->orWhere('serial_number', '');
|
||||||
@@ -436,7 +449,15 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
$newQuan = InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->count();
|
$newQuan = InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->count();
|
||||||
continue;
|
}
|
||||||
|
else if ($newQuan === -1 && $hasQuanTyp)
|
||||||
|
{
|
||||||
|
InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->where(function($query) {
|
||||||
|
$query->whereNull('serial_number')->orWhere('serial_number', '');
|
||||||
|
})->whereNotIn('sticker_master_id', $hasQuanTypIds)
|
||||||
|
->delete();
|
||||||
|
|
||||||
|
$newQuan = InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->count();
|
||||||
}
|
}
|
||||||
|
|
||||||
$code = $sticker->item->code;
|
$code = $sticker->item->code;
|
||||||
@@ -454,6 +475,10 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$excelCode = trim($row[0]);
|
$excelCode = trim($row[0]);
|
||||||
$excelMatQty = trim($row[1]);
|
$excelMatQty = trim($row[1]);
|
||||||
|
|
||||||
|
if (empty($excelCode) || empty($excelMatQty)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
||||||
$totalExcelQty += $excelMatQty; // Sum up the quantities
|
$totalExcelQty += $excelMatQty; // Sum up the quantities
|
||||||
}
|
}
|
||||||
@@ -491,6 +516,10 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$excelCode = trim($row[0]);
|
$excelCode = trim($row[0]);
|
||||||
$excelMatQty = trim($row[1]);
|
$excelMatQty = trim($row[1]);
|
||||||
|
|
||||||
|
if (empty($excelCode) || empty($excelMatQty)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
||||||
$totalExcelQty += $excelMatQty; // Sum up the quantities
|
$totalExcelQty += $excelMatQty; // Sum up the quantities
|
||||||
}
|
}
|
||||||
@@ -518,6 +547,115 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ($materialType == 3)
|
||||||
|
{
|
||||||
|
$totalExcelQty = 0;
|
||||||
|
|
||||||
|
foreach ($rows as $index => $row)
|
||||||
|
{
|
||||||
|
if ($index === 0) continue; // Skip header
|
||||||
|
|
||||||
|
$excelCode = trim($row[0]);
|
||||||
|
$excelMatQty = trim($row[1]);
|
||||||
|
|
||||||
|
if (empty($excelCode) || empty($excelMatQty)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
||||||
|
$totalExcelQty += $excelMatQty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$existEmpRecQty = InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->where(function($query) {
|
||||||
|
$query->whereNull('serial_number')->orWhere('serial_number', '');
|
||||||
|
})->where('sticker_master_id', $sticker->id)->first();
|
||||||
|
$existEmpQty = $existEmpRecQty ? $existEmpRecQty->quantity : 0;
|
||||||
|
|
||||||
|
$existComQty = InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->where(function($query) {
|
||||||
|
$query->whereNotNull('serial_number')->where('serial_number', '!=', '');
|
||||||
|
})
|
||||||
|
->where('sticker_master_id', $sticker->id)
|
||||||
|
->sum(column: 'quantity');
|
||||||
|
$existComQty = $existComQty ? $existComQty : 0;
|
||||||
|
|
||||||
|
// 8 = 3 + 5 // 8 = 5 + 3 // 8 = 0 + 8 // 8 = 8 + 0
|
||||||
|
// 8 = 3 + 5 // 8 = 5 + 3 // 8 = 0 + 8 // 8 = 8 + 0
|
||||||
|
// 0 = 0 + 0
|
||||||
|
$existQty = $existEmpQty + $existComQty;
|
||||||
|
|
||||||
|
// 8 <= 11 // 8 <= 8 // 8 <= 11 // 8 <= 9
|
||||||
|
// 8 <= 7 // 8 <= 7 // 8 <= 7 // 8 <= 7
|
||||||
|
// 0 <= 5
|
||||||
|
|
||||||
|
if ($existQty <= $totalExcelQty)
|
||||||
|
{
|
||||||
|
// 6 = 11 - 5 // 5 = 8 - 3 // 3 = 11 - 8 // 9 = 9 - 0
|
||||||
|
// 5 = 5 - 0
|
||||||
|
$newInsQty = $totalExcelQty - $existComQty;
|
||||||
|
|
||||||
|
// 3 > 0 // 5 > 0 // 0 > 0 // 8 > 0
|
||||||
|
// 0 > 0
|
||||||
|
if($existEmpQty > 0) // update
|
||||||
|
{
|
||||||
|
// 3 = 6 // 5 = 5 // 0 = 3 // 8 = 9
|
||||||
|
// 0 = 5
|
||||||
|
if($existEmpQty == $newInsQty) { continue; }
|
||||||
|
// $existEmpRecQty->delete();
|
||||||
|
$existEmpRecQty->update([
|
||||||
|
'quantity' => $newInsQty,
|
||||||
|
'operator_id'=> $operatorName,
|
||||||
|
'updated_at' => now(),
|
||||||
|
]);
|
||||||
|
$newQuan--;
|
||||||
|
$inserted++;
|
||||||
|
}
|
||||||
|
else if ($newInsQty > 0) // if ($sticker) // create
|
||||||
|
{
|
||||||
|
InvoiceValidation::create([
|
||||||
|
'sticker_master_id' => $sticker->id,
|
||||||
|
'plant_id' => $plantId,
|
||||||
|
'invoice_number' => $invoiceNumber,
|
||||||
|
'quantity' => $newInsQty,
|
||||||
|
'operator_id'=> $operatorName,
|
||||||
|
]);
|
||||||
|
$inserted++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 8 > 7 // 8 > 7 // 8 > 7 // 8 > 7
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 2 = 7 - 5 // 4 = 7 - 3 // -1 = 7 - 8 // 7 = 7 - 0
|
||||||
|
$newInsQty = $totalExcelQty - $existComQty;
|
||||||
|
|
||||||
|
// 3 > 0 // 5 > 0 // 0 > 0 // 8 > 0
|
||||||
|
if($existEmpQty > 0) // update
|
||||||
|
{
|
||||||
|
// 3 = 2 // 5 = 4 // 0 = -1 // 8 = 7
|
||||||
|
if($existEmpQty == $newInsQty) { continue; }
|
||||||
|
// $existEmpRecQty->delete();
|
||||||
|
$existEmpRecQty->update([
|
||||||
|
'quantity' => $newInsQty,
|
||||||
|
'operator_id'=> $operatorName,
|
||||||
|
'updated_at' => now(),
|
||||||
|
]);
|
||||||
|
$newQuan--;
|
||||||
|
$inserted++;
|
||||||
|
}
|
||||||
|
else if ($newInsQty > 0) // create
|
||||||
|
{
|
||||||
|
InvoiceValidation::create([
|
||||||
|
'sticker_master_id' => $sticker->id,
|
||||||
|
'plant_id' => $plantId,
|
||||||
|
'invoice_number' => $invoiceNumber,
|
||||||
|
'quantity' => $newInsQty,
|
||||||
|
'operator_id'=> $operatorName,
|
||||||
|
]);
|
||||||
|
$inserted++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($inserted > 0 || $oldQuan !== $newQuan)
|
if ($inserted > 0 || $oldQuan !== $newQuan)
|
||||||
@@ -754,7 +892,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
|
|
||||||
if (!empty($uniqueInvalidCodes)) {
|
if (!empty($uniqueInvalidCodes)) {
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->title('Invalid Item Codes')
|
->title('Invalid: Item Codes')
|
||||||
->body('The following item codes should contain minimum 6 digit alpha numeric values:<br>' . implode(', ', $uniqueInvalidCodes))
|
->body('The following item codes should contain minimum 6 digit alpha numeric values:<br>' . implode(', ', $uniqueInvalidCodes))
|
||||||
->danger()
|
->danger()
|
||||||
->send();
|
->send();
|
||||||
@@ -825,7 +963,6 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$invalidCodes = $matchedItems
|
$invalidCodes = $matchedItems
|
||||||
->filter(fn ($sticker) => !empty($sticker->material_type)) //filter invalid
|
->filter(fn ($sticker) => !empty($sticker->material_type)) //filter invalid
|
||||||
->pluck('item.code')
|
->pluck('item.code')
|
||||||
@@ -838,7 +975,30 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$message = $missingCount > 10 ? "'$missingCount' Material Invoice item codes found." : "'Material Invoice' item codes found:<br>" . implode(', ', $invalidCodes);
|
$message = $missingCount > 10 ? "'$missingCount' Material Invoice item codes found." : "'Material Invoice' item codes found:<br>" . implode(', ', $invalidCodes);
|
||||||
|
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->title('Invalid Item Codes')
|
->title('Invalid: Item Codes')
|
||||||
|
->body($message)
|
||||||
|
->danger()
|
||||||
|
->send();
|
||||||
|
|
||||||
|
if ($disk->exists($filePath)) {
|
||||||
|
$disk->delete($filePath);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$missPackCodes = $matchedItems
|
||||||
|
->filter(fn ($sticker) => empty($sticker->tube_sticker_motor) && empty($sticker->tube_sticker_pump) && empty($sticker->tube_sticker_pumpset) && empty($sticker->panel_box_code)) //filter invalid
|
||||||
|
->pluck('item.code')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
if (!empty($missPackCodes))
|
||||||
|
{
|
||||||
|
$missingCount = count($missPackCodes);
|
||||||
|
|
||||||
|
$message = $missingCount > 10 ? "'$missingCount' item codes doesn't have valid package type to proceed!" : "The following 'Item Code' doesn't have valid package type:<br>" . implode(', ', $missPackCodes);
|
||||||
|
|
||||||
|
Notification::make()
|
||||||
|
->title('Invalid: Item Codes')
|
||||||
->body($message)
|
->body($message)
|
||||||
->danger()
|
->danger()
|
||||||
->send();
|
->send();
|
||||||
@@ -1235,7 +1395,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
|
|
||||||
if (!empty($uniqueInvalidCodes)) {
|
if (!empty($uniqueInvalidCodes)) {
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->title('Invalid Item Codes')
|
->title('Invalid: Item Codes')
|
||||||
->body('The following item codes should contain minimum 6 digit alpha numeric values:<br>' . implode(', ', $uniqueInvalidCodes))
|
->body('The following item codes should contain minimum 6 digit alpha numeric values:<br>' . implode(', ', $uniqueInvalidCodes))
|
||||||
->danger()
|
->danger()
|
||||||
->send();
|
->send();
|
||||||
@@ -1348,7 +1508,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$message = $missingCount > 10 ? "'$missingCount' Serial Invoice item codes found." : "'Serial Invoice' item codes found:<br>" . implode(', ', $invalidCodes);
|
$message = $missingCount > 10 ? "'$missingCount' Serial Invoice item codes found." : "'Serial Invoice' item codes found:<br>" . implode(', ', $invalidCodes);
|
||||||
|
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->title('Invalid Item Codes')
|
->title('Invalid: Item Codes')
|
||||||
->body($message)
|
->body($message)
|
||||||
->danger()
|
->danger()
|
||||||
->send();
|
->send();
|
||||||
@@ -1380,6 +1540,9 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$excelCode = trim($row[0]);
|
$excelCode = trim($row[0]);
|
||||||
$excelMatQty = trim($row[1]);
|
$excelMatQty = trim($row[1]);
|
||||||
|
|
||||||
|
if (empty($excelCode) || empty($excelMatQty)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
||||||
$totalExcelQty += $excelMatQty; // Sum up the quantities
|
$totalExcelQty += $excelMatQty; // Sum up the quantities
|
||||||
@@ -1440,6 +1603,10 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$excelCode = trim($row[0]);
|
$excelCode = trim($row[0]);
|
||||||
$excelMatQty = trim($row[1]);
|
$excelMatQty = trim($row[1]);
|
||||||
|
|
||||||
|
if (empty($excelCode) || empty($excelMatQty)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
||||||
$totalExcelQty += $excelMatQty; // Sum up the quantities
|
$totalExcelQty += $excelMatQty; // Sum up the quantities
|
||||||
}
|
}
|
||||||
@@ -1471,6 +1638,10 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$excelCode = trim($row[0]);
|
$excelCode = trim($row[0]);
|
||||||
$excelMatQty = trim($row[1]);
|
$excelMatQty = trim($row[1]);
|
||||||
|
|
||||||
|
if (empty($excelCode) || empty($excelMatQty)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
||||||
$totalExcelQty += $excelMatQty; // Sum up the quantities
|
$totalExcelQty += $excelMatQty; // Sum up the quantities
|
||||||
}
|
}
|
||||||
@@ -1490,6 +1661,37 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ($materialType == 3)
|
||||||
|
{
|
||||||
|
$totalExcelQty = 0;
|
||||||
|
|
||||||
|
foreach ($rows as $index => $row)
|
||||||
|
{
|
||||||
|
if ($index === 0) continue; // Skip header
|
||||||
|
|
||||||
|
$excelCode = trim($row[0]);
|
||||||
|
$excelMatQty = trim($row[1]);
|
||||||
|
|
||||||
|
if (empty($excelCode) || empty($excelMatQty)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($excelCode === $code && is_numeric($excelMatQty)) {
|
||||||
|
$totalExcelQty += $excelMatQty; // Sum up the quantities
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($sticker) {
|
||||||
|
InvoiceValidation::create([
|
||||||
|
'sticker_master_id' => $sticker->id,
|
||||||
|
'plant_id' => $plantId,
|
||||||
|
'invoice_number' => $invoiceNumber,
|
||||||
|
'quantity' => $totalExcelQty,
|
||||||
|
'operator_id'=> $operatorName,
|
||||||
|
]);
|
||||||
|
$inserted++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($inserted > 0)
|
if ($inserted > 0)
|
||||||
@@ -1628,7 +1830,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
|
|
||||||
if (!empty($uniqueInvalidCodes)) {
|
if (!empty($uniqueInvalidCodes)) {
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->title('Invalid Item Codes')
|
->title('Invalid: Item Codes')
|
||||||
->body('The following item codes should contain minimum 6 digit alpha numeric values:<br>' . implode(', ', $uniqueInvalidCodes))
|
->body('The following item codes should contain minimum 6 digit alpha numeric values:<br>' . implode(', ', $uniqueInvalidCodes))
|
||||||
->danger()
|
->danger()
|
||||||
->send();
|
->send();
|
||||||
@@ -1721,7 +1923,30 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$message = $missingCount > 10 ? "'$missingCount' Material Invoice item codes found." : "'Material Invoice' item codes found:<br>" . implode(', ', $invalidCodes);
|
$message = $missingCount > 10 ? "'$missingCount' Material Invoice item codes found." : "'Material Invoice' item codes found:<br>" . implode(', ', $invalidCodes);
|
||||||
|
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->title('Invalid Item Codes')
|
->title('Invalid: Item Codes')
|
||||||
|
->body($message)
|
||||||
|
->danger()
|
||||||
|
->send();
|
||||||
|
|
||||||
|
if ($disk->exists($filePath)) {
|
||||||
|
$disk->delete($filePath);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$missPackCodes = $matchedItems
|
||||||
|
->filter(fn ($sticker) => empty($sticker->tube_sticker_motor) && empty($sticker->tube_sticker_pump) && empty($sticker->tube_sticker_pumpset) && empty($sticker->panel_box_code))
|
||||||
|
->pluck('item.code')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
if (!empty($missPackCodes))
|
||||||
|
{
|
||||||
|
$missingCount = count($missPackCodes);
|
||||||
|
|
||||||
|
$message = $missingCount > 10 ? "'$missingCount' item codes doesn't have valid package type to proceed!" : "The following 'Item Code' doesn't have valid package type:<br>" . implode(', ', $missPackCodes);
|
||||||
|
|
||||||
|
Notification::make()
|
||||||
|
->title('Invalid: Item Codes')
|
||||||
->body($message)
|
->body($message)
|
||||||
->danger()
|
->danger()
|
||||||
->send();
|
->send();
|
||||||
@@ -1932,6 +2157,9 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
|
|
||||||
public function processSerialNumber($serNo)
|
public function processSerialNumber($serNo)
|
||||||
{
|
{
|
||||||
|
$user = Filament::auth()->user();
|
||||||
|
$operatorName = $user->name;
|
||||||
|
|
||||||
$serialNumber = null;
|
$serialNumber = null;
|
||||||
$plantId = $this->form->getState()['plant_id'];
|
$plantId = $this->form->getState()['plant_id'];
|
||||||
$this->plantId = $plantId;
|
$this->plantId = $plantId;
|
||||||
@@ -1956,6 +2184,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => 0, //$totQuan
|
'total_quantity' => 0, //$totQuan
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> 0, //($totMQuan > 0) ? $scanMQuan : $scanSQuan
|
'scanned_quantity'=> 0, //($totMQuan > 0) ? $scanMQuan : $scanSQuan
|
||||||
]);
|
]);
|
||||||
$this->dispatch('refreshEmptyInvoice', invoiceNumber: $invoiceNumber, plantId: $plantId);
|
$this->dispatch('refreshEmptyInvoice', invoiceNumber: $invoiceNumber, plantId: $plantId);
|
||||||
@@ -1978,6 +2207,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanMQuan,
|
'scanned_quantity'=> $scanMQuan,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -2000,29 +2230,93 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanMQuan,
|
'scanned_quantity'=> $scanMQuan,
|
||||||
]);
|
]);
|
||||||
//$hasRecords = InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->first()->stickerMasterRelation->material_type ?? null;
|
//$hasRecords = InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->first()->stickerMasterRelation->material_type ?? null;
|
||||||
$this->dispatch( 'refreshMaterialInvoiceData', invoiceNumber: $invoiceNumber, plantId: $plantId);
|
$this->dispatch( 'refreshMaterialInvoiceData', invoiceNumber: $invoiceNumber, plantId: $plantId);
|
||||||
}
|
}
|
||||||
|
|
||||||
$pattern1 = '/^(?<item_code>[^|]+)\|(?<batch_number>[^|]+)\|(?<batch_id>[^|]+)\|(?<batch_count>.+)$/i';
|
$pattern1 = '/^(?<item_code>[^|]+)\|(?<batch_number>[^|]+)\|(?<batch_id>[^|]+)\|(?<batch_count>[^|]+)\/(?<batch_quantity>.+)$/i';
|
||||||
$pattern2 = '/^(?<item_code>[^|]+)\|(?<batch_id>[^|]+)-(?<batch_count>.+)$/i';
|
$pattern2 = '/^(?<item_code>[^|]+)\|(?<batch_number>[^|]+)\|(?<batch_id>[^|]+)\|(?<batch_count>.+)$/i';
|
||||||
|
$pattern3 = '/^(?<item_code>[^|]+)\|(?<batch_id>[^|]+)-(?<batch_count>.+)$/i';
|
||||||
$itemCode = '';
|
$itemCode = '';
|
||||||
$batchNumber = '';
|
$batchNumber = '';
|
||||||
|
$curScanQty = '';
|
||||||
|
|
||||||
if (preg_match($pattern1, $serNo, $matches)) {
|
if (preg_match($pattern1, $serNo, $matches)) {
|
||||||
$itemCode = $matches['item_code'];
|
$itemCode = $matches['item_code'];
|
||||||
$this->currentItemCode = $itemCode;
|
$this->currentItemCode = $itemCode;
|
||||||
$batchNumber = $matches['batch_number'];
|
$batchNumber = $matches['batch_number'];
|
||||||
$serialNumber = $matches['batch_id'] . '-' . $matches['batch_count'];
|
$serialNumber = $matches['batch_id'] . '-' . $matches['batch_count'];
|
||||||
|
$curScanQty = $matches['batch_quantity'];
|
||||||
|
|
||||||
|
if(empty($matches['batch_id']) || !$matches['batch_id'])
|
||||||
|
{
|
||||||
|
Notification::make()
|
||||||
|
->danger()
|
||||||
|
->title('Invalid Material QR Format')
|
||||||
|
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
|
||||||
|
->send();
|
||||||
|
|
||||||
|
$this->form->fill([
|
||||||
|
'plant_id' => $plantId,
|
||||||
|
'invoice_number' => $invoiceNumber,
|
||||||
|
'serial_number' => null,
|
||||||
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
|
'scanned_quantity'=> $scanMQuan,
|
||||||
|
]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
elseif (empty($matches['batch_count']) || !$matches['batch_count'])
|
||||||
|
{
|
||||||
|
Notification::make()
|
||||||
|
->danger()
|
||||||
|
->title('Invalid Material QR Format')
|
||||||
|
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
|
||||||
|
->send();
|
||||||
|
|
||||||
|
$this->form->fill([
|
||||||
|
'plant_id' => $plantId,
|
||||||
|
'invoice_number' => $invoiceNumber,
|
||||||
|
'serial_number' => null,
|
||||||
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
|
'scanned_quantity'=> $scanMQuan,
|
||||||
|
]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
elseif(!is_numeric($curScanQty))
|
||||||
|
{
|
||||||
|
Notification::make()
|
||||||
|
->danger()
|
||||||
|
->title('Invalid Material QR Format')
|
||||||
|
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
|
||||||
|
->send();
|
||||||
|
|
||||||
|
$this->form->fill([
|
||||||
|
'plant_id' => $plantId,
|
||||||
|
'invoice_number' => $invoiceNumber,
|
||||||
|
'serial_number' => null,
|
||||||
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
|
'scanned_quantity'=> $scanMQuan,
|
||||||
|
]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} elseif (preg_match($pattern2, $serNo, $matches)) {
|
||||||
|
$itemCode = $matches['item_code'];
|
||||||
|
$this->currentItemCode = $itemCode;
|
||||||
|
$batchNumber = $matches['batch_number'];
|
||||||
|
$serialNumber = $matches['batch_id'] . '-' . $matches['batch_count'];
|
||||||
|
|
||||||
if(empty($matches['batch_id']) || !$matches['batch_id'])
|
if(empty($matches['batch_id']) || !$matches['batch_id'])
|
||||||
{
|
{
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->danger()
|
->danger()
|
||||||
->title('Invalid Material QR Format')
|
->title('Invalid Material QR Format')
|
||||||
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
|
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
|
||||||
->send();
|
->send();
|
||||||
|
|
||||||
$this->form->fill([
|
$this->form->fill([
|
||||||
@@ -2030,6 +2324,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanMQuan,
|
'scanned_quantity'=> $scanMQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2039,7 +2334,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
Notification::make()
|
Notification::make()
|
||||||
->danger()
|
->danger()
|
||||||
->title('Invalid Material QR Format')
|
->title('Invalid Material QR Format')
|
||||||
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
|
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
|
||||||
->send();
|
->send();
|
||||||
|
|
||||||
$this->form->fill([
|
$this->form->fill([
|
||||||
@@ -2047,11 +2342,12 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanMQuan,
|
'scanned_quantity'=> $scanMQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} elseif (preg_match($pattern2, $serNo, $matches)) {
|
} elseif (preg_match($pattern3, $serNo, $matches)) {
|
||||||
$itemCode = $matches['item_code'];
|
$itemCode = $matches['item_code'];
|
||||||
$this->currentItemCode = $itemCode;
|
$this->currentItemCode = $itemCode;
|
||||||
$batchNumber = null; // batch_number not present in this pattern
|
$batchNumber = null; // batch_number not present in this pattern
|
||||||
@@ -2062,7 +2358,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
Notification::make()
|
Notification::make()
|
||||||
->danger()
|
->danger()
|
||||||
->title('Invalid Material QR Format')
|
->title('Invalid Material QR Format')
|
||||||
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
|
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
|
||||||
->send();
|
->send();
|
||||||
|
|
||||||
$this->form->fill([
|
$this->form->fill([
|
||||||
@@ -2070,6 +2366,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanMQuan,
|
'scanned_quantity'=> $scanMQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2079,7 +2376,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
Notification::make()
|
Notification::make()
|
||||||
->danger()
|
->danger()
|
||||||
->title('Invalid Material QR Format')
|
->title('Invalid Material QR Format')
|
||||||
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
|
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
|
||||||
->send();
|
->send();
|
||||||
|
|
||||||
$this->form->fill([
|
$this->form->fill([
|
||||||
@@ -2087,12 +2384,14 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanMQuan,
|
'scanned_quantity'=> $scanMQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$itemCode = null;
|
$itemCode = null;
|
||||||
|
$this->currentItemCode = '';
|
||||||
$batchNumber = null;
|
$batchNumber = null;
|
||||||
$serNo = null;
|
$serNo = null;
|
||||||
$serialNumber = null;
|
$serialNumber = null;
|
||||||
@@ -2100,7 +2399,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
Notification::make()
|
Notification::make()
|
||||||
->danger()
|
->danger()
|
||||||
->title('Invalid Material QR Format')
|
->title('Invalid Material QR Format')
|
||||||
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
|
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
|
||||||
->send();
|
->send();
|
||||||
|
|
||||||
$this->form->fill([
|
$this->form->fill([
|
||||||
@@ -2108,6 +2407,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanMQuan,
|
'scanned_quantity'=> $scanMQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2130,6 +2430,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanMQuan,
|
'scanned_quantity'=> $scanMQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2151,6 +2452,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanMQuan,
|
'scanned_quantity'=> $scanMQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2171,11 +2473,14 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanMQuan,
|
'scanned_quantity'=> $scanMQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$hasQuanTyp = ($record->material_type == 3) ? true : false;
|
||||||
|
|
||||||
$record = InvoiceValidation::where('invoice_number', $invoiceNumber)
|
$record = InvoiceValidation::where('invoice_number', $invoiceNumber)
|
||||||
->where('plant_id', $plantId)
|
->where('plant_id', $plantId)
|
||||||
->whereHas('stickerMasterRelation.item', function ($query) use ($itemCode) {
|
->whereHas('stickerMasterRelation.item', function ($query) use ($itemCode) {
|
||||||
@@ -2194,16 +2499,16 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanMQuan,
|
'scanned_quantity'=> $scanMQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//->where('serial_number', '!=', '')
|
// ->whereNotNull('serial_number')->where('serial_number', '!=', '')
|
||||||
$record = InvoiceValidation::where('invoice_number', $invoiceNumber)
|
$record = InvoiceValidation::where('invoice_number', $invoiceNumber)->where(function($query) {
|
||||||
->where('serial_number', null)
|
$query->whereNull('serial_number')->orWhere('serial_number', '');
|
||||||
->where('plant_id', $plantId)
|
})->where('plant_id', $plantId)->whereHas('stickerMasterRelation.item', function ($query) use ($itemCode) {
|
||||||
->whereHas('stickerMasterRelation.item', function ($query) use ($itemCode) {
|
|
||||||
$query->where('plant_id', $this->plantId)->where('code', $itemCode);
|
$query->where('plant_id', $this->plantId)->where('code', $itemCode);
|
||||||
})
|
})
|
||||||
->first();
|
->first();
|
||||||
@@ -2219,6 +2524,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanMQuan,
|
'scanned_quantity'=> $scanMQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2238,24 +2544,92 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanMQuan,
|
'scanned_quantity'=> $scanMQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$record->serial_number = $serialNumber;
|
if($hasQuanTyp)
|
||||||
if($batchNumber && !empty($batchNumber))
|
|
||||||
{
|
{
|
||||||
$record->batch_number = $batchNumber;
|
$createdDt = $record->created_at;
|
||||||
}
|
$stickMasterId = $record->sticker_master_id;
|
||||||
|
$curExistQty = $record->quantity;
|
||||||
|
// $curScanQty = 2;
|
||||||
|
|
||||||
|
if($curExistQty > $curScanQty) // 5 > 2
|
||||||
|
{
|
||||||
|
$record->quantity = $curExistQty - $curScanQty; // 5 - 2
|
||||||
|
$record->operator_id = $operatorName;
|
||||||
|
// $record->updated_at = now();
|
||||||
$record->save();
|
$record->save();
|
||||||
|
|
||||||
|
InvoiceValidation::create([
|
||||||
|
'sticker_master_id' => $stickMasterId,
|
||||||
|
'plant_id' => $plantId,
|
||||||
|
'invoice_number' => $invoiceNumber,
|
||||||
|
'serial_number' => $serialNumber,
|
||||||
|
'batch_number' => $batchNumber,
|
||||||
|
'quantity' => $curScanQty,
|
||||||
|
'created_at' => $createdDt,
|
||||||
|
'operator_id'=> $operatorName,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
else if($curExistQty == $curScanQty) // 2 = 2
|
||||||
|
{
|
||||||
|
// $record->delete();
|
||||||
|
$record->serial_number = $serialNumber;
|
||||||
|
$record->batch_number = $batchNumber;
|
||||||
|
$record->operator_id = $operatorName;
|
||||||
|
// $record->updated_at = now();
|
||||||
|
$record->save();
|
||||||
|
|
||||||
|
// InvoiceValidation::create([
|
||||||
|
// 'sticker_master_id' => $stickMasterId,
|
||||||
|
// 'plant_id' => $plantId,
|
||||||
|
// 'invoice_number' => $invoiceNumber,
|
||||||
|
// 'quantity' => $curScanQty,
|
||||||
|
// 'created_at' => $createdDt,
|
||||||
|
// 'operator_id'=> $operatorName,
|
||||||
|
// ]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Notification::make()
|
||||||
|
->title('Item Code Limit Exceeds')
|
||||||
|
->body("Scanned item code '$itemCode' has '$curScanQty' quantity.<br>But, '$curExistQty' quantity only available for the invoice '$invoiceNumber'.")
|
||||||
|
->danger()
|
||||||
|
->send();
|
||||||
|
|
||||||
|
$this->form->fill([
|
||||||
|
'plant_id' => $plantId,
|
||||||
|
'invoice_number' => $invoiceNumber,
|
||||||
|
'serial_number' => null,
|
||||||
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
|
'scanned_quantity'=> $scanMQuan,
|
||||||
|
]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$record->serial_number = $serialNumber;
|
||||||
|
// if($batchNumber && !empty($batchNumber)) {}
|
||||||
|
$record->batch_number = $batchNumber;
|
||||||
|
// $record->updated_at = now();
|
||||||
|
$record->operator_id = $operatorName;
|
||||||
|
$record->save();
|
||||||
|
}
|
||||||
|
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->title('Success: Material QR')
|
->title('Success: Material QR')
|
||||||
->body("'Material QR' scanned status updated, Scan next QR.")
|
->body("'Material QR' scanned status updated, Scan next QR.")
|
||||||
->success()
|
->success()
|
||||||
->send();
|
->send();
|
||||||
|
|
||||||
|
$totQuan = InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->count();
|
||||||
|
|
||||||
$scannedMQuantity = InvoiceValidation::where('invoice_number', $invoiceNumber)->whereNotNull('serial_number')->where('serial_number', '!=', '')->where('plant_id', $plantId)->count();
|
$scannedMQuantity = InvoiceValidation::where('invoice_number', $invoiceNumber)->whereNotNull('serial_number')->where('serial_number', '!=', '')->where('plant_id', $plantId)->count();
|
||||||
|
|
||||||
if($totQuan === $scannedMQuantity)
|
if($totQuan === $scannedMQuantity)
|
||||||
@@ -2271,6 +2645,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scannedMQuantity,
|
'scanned_quantity'=> $scannedMQuantity,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -2292,6 +2667,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scannedMQuantity,
|
'scanned_quantity'=> $scannedMQuantity,
|
||||||
]);
|
]);
|
||||||
$this->dispatch( 'refreshMaterialInvoiceData', invoiceNumber: $invoiceNumber, plantId: $plantId);
|
$this->dispatch( 'refreshMaterialInvoiceData', invoiceNumber: $invoiceNumber, plantId: $plantId);
|
||||||
@@ -2313,6 +2689,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -2335,6 +2712,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
//$hasRecords = InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->first()->stickerMasterRelation->material_type ?? null;
|
//$hasRecords = InvoiceValidation::where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->first()->stickerMasterRelation->material_type ?? null;
|
||||||
@@ -2353,6 +2731,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2376,7 +2755,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
if (!$record) {
|
if (!$record) {
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->title('Serial Number Not Found')
|
->title('Serial Number Not Found')
|
||||||
->body("Serial '$serialNumber' not found in database.")
|
->body("Serial '$serialNumber' not found in database for choosed plant.")
|
||||||
->danger()
|
->danger()
|
||||||
->send();
|
->send();
|
||||||
|
|
||||||
@@ -2385,6 +2764,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2405,6 +2785,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2429,6 +2810,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2444,6 +2826,25 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
$hadPumpSetQr = $record->scanned_status_set ?? null;
|
$hadPumpSetQr = $record->scanned_status_set ?? null;
|
||||||
$hadCapacitorQr = $record->capacitor_scanned_status ?? null;
|
$hadCapacitorQr = $record->capacitor_scanned_status ?? null;
|
||||||
|
|
||||||
|
if (!$hasMotorQr && !$hasPumpQr && !$hasPumpSetQr && !$hasCapacitorQr)
|
||||||
|
{
|
||||||
|
Notification::make()
|
||||||
|
->title('Invalid: Item Code')
|
||||||
|
->body("Scanned 'Item Code' doesn't have valid package type to proceed!")
|
||||||
|
->danger()
|
||||||
|
->send();
|
||||||
|
|
||||||
|
$this->form->fill([
|
||||||
|
'plant_id' => $plantId,
|
||||||
|
'invoice_number' => $invoiceNumber,
|
||||||
|
'serial_number' => null,
|
||||||
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
|
'scanned_quantity'=> $scanSQuan,
|
||||||
|
]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ($isMarkM) {
|
if ($isMarkM) {
|
||||||
if (!$hasMotorQr)
|
if (!$hasMotorQr)
|
||||||
{
|
{
|
||||||
@@ -2458,6 +2859,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2475,6 +2877,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2503,6 +2906,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
{
|
{
|
||||||
$record->scanned_status = 'Scanned';
|
$record->scanned_status = 'Scanned';
|
||||||
}
|
}
|
||||||
|
$record->operator_id = $operatorName;
|
||||||
$record->save();
|
$record->save();
|
||||||
|
|
||||||
Notification::make()
|
Notification::make()
|
||||||
@@ -2517,6 +2921,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scannedQuantity,
|
'scanned_quantity'=> $scannedQuantity,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -2560,6 +2965,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2577,6 +2983,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2605,6 +3012,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
{
|
{
|
||||||
$record->scanned_status = 'Scanned';
|
$record->scanned_status = 'Scanned';
|
||||||
}
|
}
|
||||||
|
$record->operator_id = $operatorName;
|
||||||
$record->save();
|
$record->save();
|
||||||
|
|
||||||
Notification::make()
|
Notification::make()
|
||||||
@@ -2619,6 +3027,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scannedQuantity,
|
'scanned_quantity'=> $scannedQuantity,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -2664,6 +3073,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2681,6 +3091,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2696,6 +3107,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scannedQuantity,
|
'scanned_quantity'=> $scannedQuantity,
|
||||||
]);
|
]);
|
||||||
$this->dispatch( 'refreshInvoiceData', invoiceNumber: $invoiceNumber, plantId: $plantId);
|
$this->dispatch( 'refreshInvoiceData', invoiceNumber: $invoiceNumber, plantId: $plantId);
|
||||||
@@ -2717,6 +3129,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2734,6 +3147,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scanSQuan,
|
'scanned_quantity'=> $scanSQuan,
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
@@ -2762,6 +3176,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
{
|
{
|
||||||
$record->scanned_status = 'Scanned';
|
$record->scanned_status = 'Scanned';
|
||||||
}
|
}
|
||||||
|
$record->operator_id = $operatorName;
|
||||||
$record->save();
|
$record->save();
|
||||||
|
|
||||||
Notification::make()
|
Notification::make()
|
||||||
@@ -2776,6 +3191,7 @@ class CreateInvoiceValidation extends CreateRecord
|
|||||||
'invoice_number' => $invoiceNumber,
|
'invoice_number' => $invoiceNumber,
|
||||||
'serial_number' => null,
|
'serial_number' => null,
|
||||||
'total_quantity' => $totQuan,
|
'total_quantity' => $totQuan,
|
||||||
|
'update_invoice' => false,
|
||||||
'scanned_quantity'=> $scannedQuantity,
|
'scanned_quantity'=> $scannedQuantity,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Filament\Resources;
|
namespace App\Filament\Resources;
|
||||||
|
|
||||||
|
use AlperenErsoy\FilamentExport\Actions\FilamentExportBulkAction;
|
||||||
use App\Filament\Exports\ProductionLineStopExporter;
|
use App\Filament\Exports\ProductionLineStopExporter;
|
||||||
use App\Filament\Imports\ProductionLineStopImporter;
|
use App\Filament\Imports\ProductionLineStopImporter;
|
||||||
use App\Filament\Resources\ProductionLineStopResource\Pages;
|
use App\Filament\Resources\ProductionLineStopResource\Pages;
|
||||||
@@ -39,6 +40,8 @@ class ProductionLineStopResource extends Resource
|
|||||||
|
|
||||||
protected static ?string $navigationGroup = 'Production';
|
protected static ?string $navigationGroup = 'Production';
|
||||||
|
|
||||||
|
protected static ?int $navigationSort = 2;
|
||||||
|
|
||||||
public static function form(Form $form): Form
|
public static function form(Form $form): Form
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -343,6 +346,7 @@ class ProductionLineStopResource extends Resource
|
|||||||
public static function table(Table $table): Table
|
public static function table(Table $table): Table
|
||||||
{
|
{
|
||||||
return $table
|
return $table
|
||||||
|
->query(ProductionLineStop::query())
|
||||||
->columns([
|
->columns([
|
||||||
Tables\Columns\TextColumn::make('id')
|
Tables\Columns\TextColumn::make('id')
|
||||||
->label('ID')
|
->label('ID')
|
||||||
@@ -456,14 +460,14 @@ class ProductionLineStopResource extends Resource
|
|||||||
TextInput::make('Line Stop Code'),
|
TextInput::make('Line Stop Code'),
|
||||||
|
|
||||||
|
|
||||||
Select::make('reason')
|
// Select::make('reason')
|
||||||
->label('Filter by Stop Reason')
|
// ->label('Filter by Stop Reason')
|
||||||
->options(function () {
|
// ->options(function () {
|
||||||
return \App\Models\Item::whereHas('stickerMasters', function ($query) {
|
// return \App\Models\Item::whereHas('stickerMasters', function ($query) {
|
||||||
$query->whereHas('qualityValidations');
|
// $query->whereHas('qualityValidations');
|
||||||
})->pluck('code', 'id');
|
// })->pluck('code', 'id');
|
||||||
})
|
// })
|
||||||
->searchable(),
|
// ->searchable(),
|
||||||
|
|
||||||
DateTimePicker::make(name: 'created_from')
|
DateTimePicker::make(name: 'created_from')
|
||||||
->label('Created From')
|
->label('Created From')
|
||||||
@@ -474,8 +478,59 @@ class ProductionLineStopResource extends Resource
|
|||||||
->label('Created To')
|
->label('Created To')
|
||||||
->reactive()
|
->reactive()
|
||||||
->native(false),
|
->native(false),
|
||||||
]),
|
|
||||||
])
|
])
|
||||||
|
->query(function ($query, array $data) {
|
||||||
|
if ($plant = $data['Plant'] ?? null) {
|
||||||
|
$query->where('plant_id', $plant);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filter by Shift
|
||||||
|
if ($shift = $data['Shift'] ?? null) {
|
||||||
|
// Get shift data here, if needed, but no block_id filtering yet
|
||||||
|
$query->where('shift_id', $shift);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($block = $data['Block'] ?? null) {
|
||||||
|
// Use whereHas to filter by block_id in the Shift table
|
||||||
|
$query->whereHas('shift', function ($query) use ($block) {
|
||||||
|
$query->where('block_id', $block);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($line = $data['line'] ?? null) {
|
||||||
|
$query->where('line_id', $line);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($code = $data['Line Stop Code'] ?? null) {
|
||||||
|
// Find the linestop_id by code entered
|
||||||
|
$lineStop = \App\Models\LineStop::where('code', 'like', "%{$code}%")->first();
|
||||||
|
|
||||||
|
// If we find a matching LineStop, use its id to filter production_line_stops
|
||||||
|
if ($lineStop) {
|
||||||
|
$query->where('linestop_id', $lineStop->id);
|
||||||
|
} else {
|
||||||
|
// If no match found, you can either handle it as an error or return no results
|
||||||
|
$query->where('linestop_id', null); // This will return no results if no match
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($reason = $data['reason'] ?? null) {
|
||||||
|
$query->where('reason_id', $reason);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($from = $data['created_from'] ?? null) {
|
||||||
|
$query->where('created_at', '>=', $from);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($to = $data['created_to'] ?? null) {
|
||||||
|
$query->where('created_at', '<=', $to);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
})
|
||||||
|
|
||||||
|
])
|
||||||
|
|
||||||
->filtersFormMaxHeight('280px')
|
->filtersFormMaxHeight('280px')
|
||||||
->actions([
|
->actions([
|
||||||
Tables\Actions\ViewAction::make(),
|
Tables\Actions\ViewAction::make(),
|
||||||
@@ -486,6 +541,7 @@ class ProductionLineStopResource extends Resource
|
|||||||
Tables\Actions\DeleteBulkAction::make(),
|
Tables\Actions\DeleteBulkAction::make(),
|
||||||
Tables\Actions\ForceDeleteBulkAction::make(),
|
Tables\Actions\ForceDeleteBulkAction::make(),
|
||||||
Tables\Actions\RestoreBulkAction::make(),
|
Tables\Actions\RestoreBulkAction::make(),
|
||||||
|
FilamentExportBulkAction::make('export')
|
||||||
]),
|
]),
|
||||||
])
|
])
|
||||||
->headerActions([
|
->headerActions([
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Filament\Resources;
|
namespace App\Filament\Resources;
|
||||||
|
|
||||||
|
use AlperenErsoy\FilamentExport\Actions\FilamentExportBulkAction;
|
||||||
use App\Filament\Exports\ProductionPlanExporter;
|
use App\Filament\Exports\ProductionPlanExporter;
|
||||||
use App\Filament\Imports\ProductionPlanImporter;
|
use App\Filament\Imports\ProductionPlanImporter;
|
||||||
use App\Filament\Resources\ProductionPlanResource\Pages;
|
use App\Filament\Resources\ProductionPlanResource\Pages;
|
||||||
@@ -33,6 +34,8 @@ class ProductionPlanResource extends Resource
|
|||||||
|
|
||||||
protected static ?string $navigationGroup = 'Production';
|
protected static ?string $navigationGroup = 'Production';
|
||||||
|
|
||||||
|
protected static ?int $navigationSort = 3;
|
||||||
|
|
||||||
public static function form(Form $form): Form
|
public static function form(Form $form): Form
|
||||||
{
|
{
|
||||||
return $form
|
return $form
|
||||||
@@ -553,6 +556,7 @@ class ProductionPlanResource extends Resource
|
|||||||
Tables\Actions\DeleteBulkAction::make(),
|
Tables\Actions\DeleteBulkAction::make(),
|
||||||
Tables\Actions\ForceDeleteBulkAction::make(),
|
Tables\Actions\ForceDeleteBulkAction::make(),
|
||||||
Tables\Actions\RestoreBulkAction::make(),
|
Tables\Actions\RestoreBulkAction::make(),
|
||||||
|
FilamentExportBulkAction::make('export')
|
||||||
]),
|
]),
|
||||||
])
|
])
|
||||||
->headerActions([
|
->headerActions([
|
||||||
|
|||||||
@@ -2,16 +2,19 @@
|
|||||||
|
|
||||||
namespace App\Filament\Resources;
|
namespace App\Filament\Resources;
|
||||||
|
|
||||||
|
use AlperenErsoy\FilamentExport\Actions\FilamentExportBulkAction as ActionsFilamentExportBulkAction;
|
||||||
use App\Filament\Exports\ProductionQuantityExporter;
|
use App\Filament\Exports\ProductionQuantityExporter;
|
||||||
use App\Filament\Imports\ProductionQuantityImporter;
|
use App\Filament\Imports\ProductionQuantityImporter;
|
||||||
use App\Filament\Resources\ProductionQuantityResource\Pages;
|
use App\Filament\Resources\ProductionQuantityResource\Pages;
|
||||||
use App\Filament\Resources\ProductionQuantityResource\RelationManagers;
|
use App\Filament\Resources\ProductionQuantityResource\RelationManagers;
|
||||||
|
use App\Forms\Components\PlantSelect;
|
||||||
use App\Models\Item;
|
use App\Models\Item;
|
||||||
use App\Models\ProductionQuantity;
|
use App\Models\ProductionQuantity;
|
||||||
use App\Models\Shift;
|
use App\Models\Shift;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Filament\Facades\Filament;
|
use Filament\Facades\Filament;
|
||||||
use Filament\Forms;
|
use Filament\Forms;
|
||||||
|
use Filament\Forms\Components\Hidden;
|
||||||
use Filament\Forms\Form;
|
use Filament\Forms\Form;
|
||||||
use Filament\Forms\Get;
|
use Filament\Forms\Get;
|
||||||
use Filament\Resources\Resource;
|
use Filament\Resources\Resource;
|
||||||
@@ -21,21 +24,30 @@ use Filament\Tables\Table;
|
|||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\SoftDeletingScope;
|
use Illuminate\Database\Eloquent\SoftDeletingScope;
|
||||||
use Filament\Forms\Components\Section;
|
use Filament\Forms\Components\Section;
|
||||||
|
use Filament\Forms\Components\Select;
|
||||||
|
use Filament\Forms\Concerns\InteractsWithForms;
|
||||||
use Filament\Notifications\Notification;
|
use Filament\Notifications\Notification;
|
||||||
use Filament\Tables\Actions\ExportAction;
|
use Filament\Tables\Actions\ExportAction;
|
||||||
use Livewire\Livewire;
|
use Livewire\Livewire;
|
||||||
// use Filament\Forms\Components\View;
|
// use Filament\Forms\Components\View;
|
||||||
|
use Filament\Tables\Actions\FilamentExportBulkAction;
|
||||||
|
|
||||||
|
|
||||||
class ProductionQuantityResource extends Resource
|
class ProductionQuantityResource extends Resource
|
||||||
{
|
{
|
||||||
|
|
||||||
protected static ?string $model = ProductionQuantity::class;
|
protected static ?string $model = ProductionQuantity::class;
|
||||||
|
|
||||||
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
|
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
|
||||||
|
|
||||||
// protected static ?string $navigationParentItem = 'Display Transactions';
|
// protected static ?string $navigationParentItem = 'Display Transactions';
|
||||||
|
// protected static string $view = 'filament.pages.hourly-production';
|
||||||
|
|
||||||
protected static ?string $navigationGroup = 'Production';
|
protected static ?string $navigationGroup = 'Production';
|
||||||
|
|
||||||
|
protected static ?int $navigationSort = 1;
|
||||||
|
|
||||||
|
|
||||||
// public $plant_id;
|
// public $plant_id;
|
||||||
public static function form(Form $form): Form
|
public static function form(Form $form): Form
|
||||||
{
|
{
|
||||||
@@ -48,6 +60,7 @@ class ProductionQuantityResource extends Resource
|
|||||||
->required()
|
->required()
|
||||||
// ->nullable()
|
// ->nullable()
|
||||||
->reactive()
|
->reactive()
|
||||||
|
// ->statePath('filters')
|
||||||
->columnSpan(2) //1
|
->columnSpan(2) //1
|
||||||
// ->default(fn () => optional(ProductionQuantity::latest()->first())->plant_id)
|
// ->default(fn () => optional(ProductionQuantity::latest()->first())->plant_id)
|
||||||
->default(function () {
|
->default(function () {
|
||||||
@@ -55,16 +68,9 @@ class ProductionQuantityResource extends Resource
|
|||||||
})
|
})
|
||||||
->disabled(fn (Get $get) => !empty($get('id')))
|
->disabled(fn (Get $get) => !empty($get('id')))
|
||||||
// ->afterStateUpdated(fn ($set) => $set('block_name', null))
|
// ->afterStateUpdated(fn ($set) => $set('block_name', null))
|
||||||
->afterStateUpdated(function ($state, callable $set, callable $get) {
|
|
||||||
|
->afterStateUpdated(function ($state, $set, callable $get,$livewire) {
|
||||||
$plantId = $get('plant_id');
|
$plantId = $get('plant_id');
|
||||||
|
|
||||||
//...
|
|
||||||
|
|
||||||
session(['select_plant' => $state]);
|
|
||||||
session()->forget('select_line'); // Reset line filter
|
|
||||||
|
|
||||||
//...
|
|
||||||
|
|
||||||
$set('block_name', null);
|
$set('block_name', null);
|
||||||
if (!$plantId)
|
if (!$plantId)
|
||||||
{
|
{
|
||||||
@@ -78,13 +84,14 @@ class ProductionQuantityResource extends Resource
|
|||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
->extraAttributes([
|
// ->extraAttributes([
|
||||||
'x-on:change' => "
|
// 'x-on:change' => "
|
||||||
if (\$event.target.value) {
|
// if (\$event.target.value) {
|
||||||
\$wire.dispatch('filtersUpdated', { plantId: \$event.target.value });
|
// \$wire.dispatch('plant-updated', { plantId: \$event.target.value });
|
||||||
}
|
// }
|
||||||
",
|
// ",
|
||||||
])
|
// ])
|
||||||
|
|
||||||
|
|
||||||
// ->extraAttributes([
|
// ->extraAttributes([
|
||||||
// 'x-on:change' => "\$wire.dispatch('filtersUpdated', { plantId: \$event.target.value })"
|
// 'x-on:change' => "\$wire.dispatch('filtersUpdated', { plantId: \$event.target.value })"
|
||||||
@@ -93,12 +100,25 @@ class ProductionQuantityResource extends Resource
|
|||||||
// 'x-on:change' => "\$wire.set('plantId', \$event.target.value)"
|
// 'x-on:change' => "\$wire.set('plantId', \$event.target.value)"
|
||||||
// ])
|
// ])
|
||||||
|
|
||||||
|
// ->extraAttributes([
|
||||||
|
// 'x-on:change' => '$dispatch("plant-updated", { plantId: $event.target.value })',
|
||||||
|
// // Dispatch Alpine event
|
||||||
|
// ])
|
||||||
|
// ->extraAttributes([
|
||||||
|
// 'x-on:change' => '$dispatch("plant-updated", { plantId: $event.target.value }); console.log("Plant updated:", $event.target.value);',
|
||||||
|
// ])
|
||||||
|
|
||||||
->extraAttributes(fn ($get) => [
|
|
||||||
'class' => $get('pqPlantError') ? 'border-red-500' : '',
|
|
||||||
])
|
|
||||||
|
// ->extraAttributes([
|
||||||
|
// 'x-data' => '{ value: "" }',
|
||||||
|
// 'x-model' => 'value',
|
||||||
|
// 'wire:keydown.enter.prevent' => 'processSelectedPlant(value)', // Call Livewire method
|
||||||
|
// ])
|
||||||
->hint(fn ($get) => $get('pqPlantError') ? $get('pqPlantError') : null)
|
->hint(fn ($get) => $get('pqPlantError') ? $get('pqPlantError') : null)
|
||||||
->hintColor('danger'),
|
->hintColor('danger'),
|
||||||
|
|
||||||
Forms\Components\Select::make('block_name')
|
Forms\Components\Select::make('block_name')
|
||||||
->label('Block')
|
->label('Block')
|
||||||
->required()
|
->required()
|
||||||
@@ -133,8 +153,8 @@ class ProductionQuantityResource extends Resource
|
|||||||
$blockId = $get('block_name');
|
$blockId = $get('block_name');
|
||||||
$set('shift_id', null);
|
$set('shift_id', null);
|
||||||
|
|
||||||
session(['select_plant' => $get('plant_id')]);
|
// session(['select_plant' => $get('plant_id')]);
|
||||||
session()->forget('select_line');
|
// session()->forget('select_line');
|
||||||
|
|
||||||
if (!$blockId) {
|
if (!$blockId) {
|
||||||
$set('pqBlockError', 'Please select a block first.');
|
$set('pqBlockError', 'Please select a block first.');
|
||||||
@@ -185,9 +205,6 @@ class ProductionQuantityResource extends Resource
|
|||||||
$curShiftId = $get('shift_id');
|
$curShiftId = $get('shift_id');
|
||||||
$set('line_id', null);
|
$set('line_id', null);
|
||||||
|
|
||||||
session(['select_plant' => $get('plant_id')]);
|
|
||||||
session()->forget('select_line');
|
|
||||||
|
|
||||||
if (!$curShiftId) {
|
if (!$curShiftId) {
|
||||||
$set('pqShiftError', 'Please select a shift first.');
|
$set('pqShiftError', 'Please select a shift first.');
|
||||||
return;
|
return;
|
||||||
@@ -240,8 +257,8 @@ class ProductionQuantityResource extends Resource
|
|||||||
$lineId = $get('line_id');
|
$lineId = $get('line_id');
|
||||||
$set('item_code', null);
|
$set('item_code', null);
|
||||||
|
|
||||||
session(['select_plant' => $get('plant_id')]);
|
// session(['select_line' => $get('line_id')]);
|
||||||
session()->forget('select_line');
|
|
||||||
session(['select_line' => $state]);
|
session(['select_line' => $state]);
|
||||||
|
|
||||||
if (!$lineId) {
|
if (!$lineId) {
|
||||||
@@ -873,35 +890,6 @@ class ProductionQuantityResource extends Resource
|
|||||||
'x-data' => '{ value: "" }',
|
'x-data' => '{ value: "" }',
|
||||||
'x-model' => 'value',
|
'x-model' => 'value',
|
||||||
'wire:keydown.enter.prevent' => 'processAllValues(value)',
|
'wire:keydown.enter.prevent' => 'processAllValues(value)',
|
||||||
// 'x-data' => '{ value: "" }',
|
|
||||||
// 'x-model' => 'value',
|
|
||||||
// 'x-on:keydown.enter.prevent' => '$wire.processQr(value)',
|
|
||||||
//'wire:keydown.enter.prevent' => 'processQr(value)',
|
|
||||||
|
|
||||||
//working fine on text enter
|
|
||||||
// 'x-data' => '{}',
|
|
||||||
// 'x-on:keydown.enter.prevent' => '
|
|
||||||
// const formData = new FormData($event.target.form);
|
|
||||||
// const data = Object.fromEntries(formData.entries());
|
|
||||||
// $wire.processAllValues(data)
|
|
||||||
// ',
|
|
||||||
|
|
||||||
// 'x-data' => '{}',
|
|
||||||
// 'x-on:change' => '
|
|
||||||
// const formData = new FormData($event.target.form);
|
|
||||||
// const data = Object.fromEntries(formData.entries());
|
|
||||||
// $wire.processAllValues(data)
|
|
||||||
// ',
|
|
||||||
|
|
||||||
// 'x-data' => '{}',
|
|
||||||
// 'x-on:keydown.enter.prevent' => '
|
|
||||||
// $event.target.blur(); // Ensures value is updated
|
|
||||||
// setTimeout(() => {
|
|
||||||
// const formData = new FormData($event.target.form);
|
|
||||||
// const data = Object.fromEntries(formData.entries());
|
|
||||||
// $wire.processAllValues(data)
|
|
||||||
// }, 10); // Small delay to allow value update
|
|
||||||
// ',
|
|
||||||
]),
|
]),
|
||||||
Forms\Components\Hidden::make('serial_number')
|
Forms\Components\Hidden::make('serial_number')
|
||||||
->required(),
|
->required(),
|
||||||
@@ -940,8 +928,6 @@ class ProductionQuantityResource extends Resource
|
|||||||
->default(Filament::auth()->user()->name),
|
->default(Filament::auth()->user()->name),
|
||||||
])
|
])
|
||||||
->columns(12), //6
|
->columns(12), //6
|
||||||
|
|
||||||
//View::make('filament.pages.hourly-production'),
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -996,6 +982,7 @@ class ProductionQuantityResource extends Resource
|
|||||||
Tables\Actions\DeleteBulkAction::make(),
|
Tables\Actions\DeleteBulkAction::make(),
|
||||||
Tables\Actions\ForceDeleteBulkAction::make(),
|
Tables\Actions\ForceDeleteBulkAction::make(),
|
||||||
Tables\Actions\RestoreBulkAction::make(),
|
Tables\Actions\RestoreBulkAction::make(),
|
||||||
|
ActionsFilamentExportBulkAction::make('export')
|
||||||
]),
|
]),
|
||||||
])
|
])
|
||||||
->headerActions([
|
->headerActions([
|
||||||
@@ -1014,6 +1001,12 @@ class ProductionQuantityResource extends Resource
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public function updatedDataPlantId($value)
|
||||||
|
// {
|
||||||
|
// session(['select_plant' => $value]);
|
||||||
|
// $this->dispatch('filtersUpdated', $value);
|
||||||
|
// }
|
||||||
|
|
||||||
public static function getRelations(): array
|
public static function getRelations(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
@@ -1039,6 +1032,26 @@ class ProductionQuantityResource extends Resource
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getNavigationLabel(): string
|
||||||
|
{
|
||||||
|
return 'Production Reports';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// public function triggerChartUpdate(): void
|
||||||
|
// {
|
||||||
|
// if (session()->has('select_plant') && session()->has('select_line')) {
|
||||||
|
// $this->dispatch('filtersUpdated');
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public function updatedDataPlantId($newPlantId)
|
||||||
|
// {
|
||||||
|
// session(['select_plant' => $newPlantId]);
|
||||||
|
|
||||||
|
// $this->emit('filtersUpdated', $newPlantId);
|
||||||
|
// }
|
||||||
|
|
||||||
// public function mount(): void
|
// public function mount(): void
|
||||||
// {
|
// {
|
||||||
// // Fetch the value from the database based on your conditions
|
// // Fetch the value from the database based on your conditions
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ class StickerMasterResource extends Resource
|
|||||||
->nullable()
|
->nullable()
|
||||||
->searchable()
|
->searchable()
|
||||||
->reactive()
|
->reactive()
|
||||||
->disabled(fn (Get $get) => !empty($get('id')))
|
// ->disabled(fn (Get $get) => !empty($get('id')))
|
||||||
->live(debounce: 500) // Enable live updates
|
->live(debounce: 500) // Enable live updates
|
||||||
->afterStateUpdated(function ($state, callable $set, callable $get) {
|
->afterStateUpdated(function ($state, callable $set, callable $get) {
|
||||||
|
|
||||||
@@ -179,6 +179,7 @@ class StickerMasterResource extends Resource
|
|||||||
->options([
|
->options([
|
||||||
'1' => 'Individual',
|
'1' => 'Individual',
|
||||||
'2' => 'Bundle',
|
'2' => 'Bundle',
|
||||||
|
'3' => 'Quantity',
|
||||||
])
|
])
|
||||||
->reactive()
|
->reactive()
|
||||||
->afterStateUpdated(function ($state, callable $set, callable $get) {
|
->afterStateUpdated(function ($state, callable $set, callable $get) {
|
||||||
@@ -206,6 +207,7 @@ class StickerMasterResource extends Resource
|
|||||||
->integer()
|
->integer()
|
||||||
->readOnly(fn (callable $get) => $get('material_type') !== "2")
|
->readOnly(fn (callable $get) => $get('material_type') !== "2")
|
||||||
->nullable()
|
->nullable()
|
||||||
|
->minValue(2)
|
||||||
->reactive()
|
->reactive()
|
||||||
->afterStateUpdated(function ($state, callable $set,callable $get) {
|
->afterStateUpdated(function ($state, callable $set,callable $get) {
|
||||||
if($get('material_type') !== "2")
|
if($get('material_type') !== "2")
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace App\Livewire;
|
|||||||
use App\Filament\Resources\InvoiceValidationResource\Pages\CreateInvoiceValidation;
|
use App\Filament\Resources\InvoiceValidationResource\Pages\CreateInvoiceValidation;
|
||||||
use App\Models\InvoiceValidation;
|
use App\Models\InvoiceValidation;
|
||||||
use App\Models\StickerMaster;
|
use App\Models\StickerMaster;
|
||||||
|
use Filament\Facades\Filament;
|
||||||
use Filament\Notifications\Notification;
|
use Filament\Notifications\Notification;
|
||||||
use Livewire\Component;
|
use Livewire\Component;
|
||||||
|
|
||||||
@@ -147,6 +148,10 @@ class InvoiceDataTable extends Component
|
|||||||
{
|
{
|
||||||
$row['material_type'] = 'Bundle';
|
$row['material_type'] = 'Bundle';
|
||||||
}
|
}
|
||||||
|
else if($matType === 3)
|
||||||
|
{
|
||||||
|
$row['material_type'] = 'Quantity';
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$row['material_type'] = 'N/A';
|
$row['material_type'] = 'N/A';
|
||||||
@@ -179,6 +184,9 @@ class InvoiceDataTable extends Component
|
|||||||
|
|
||||||
public function processCapacitorInput()
|
public function processCapacitorInput()
|
||||||
{
|
{
|
||||||
|
$user = Filament::auth()->user();
|
||||||
|
$operatorName = $user->name;
|
||||||
|
|
||||||
if (!$this->capacitorInput) {
|
if (!$this->capacitorInput) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -265,6 +273,7 @@ class InvoiceDataTable extends Component
|
|||||||
'panel_box_serial_number' => $serialNumber,
|
'panel_box_serial_number' => $serialNumber,
|
||||||
'capacitor_scanned_status' => 1,
|
'capacitor_scanned_status' => 1,
|
||||||
'scanned_status' => 'Scanned',
|
'scanned_status' => 'Scanned',
|
||||||
|
'operator_id'=> $operatorName,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -274,6 +283,7 @@ class InvoiceDataTable extends Component
|
|||||||
'panel_box_item_code' => $itemCode,
|
'panel_box_item_code' => $itemCode,
|
||||||
'panel_box_serial_number' => $serialNumber,
|
'panel_box_serial_number' => $serialNumber,
|
||||||
'capacitor_scanned_status' => 1,
|
'capacitor_scanned_status' => 1,
|
||||||
|
'operator_id'=> $operatorName,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -285,6 +295,7 @@ class InvoiceDataTable extends Component
|
|||||||
'panel_box_serial_number' => $serialNumber,
|
'panel_box_serial_number' => $serialNumber,
|
||||||
'capacitor_scanned_status' => 1,
|
'capacitor_scanned_status' => 1,
|
||||||
'scanned_status' => 'Scanned',
|
'scanned_status' => 'Scanned',
|
||||||
|
'operator_id'=> $operatorName,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,5 +43,8 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
|
|
||||||
Gate::policy(Role::class, RolePolicy::class);
|
Gate::policy(Role::class, RolePolicy::class);
|
||||||
Gate::policy(Permission::class, PermissionPolicy::class);
|
Gate::policy(Permission::class, PermissionPolicy::class);
|
||||||
|
|
||||||
|
ini_set('max_execution_time', 300); // 300 seconds = 5 minutes
|
||||||
|
ini_set('memory_limit', '512M'); // 512MB
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.2",
|
"php": "^8.2",
|
||||||
|
"alperenersoy/filament-export": "^3.0",
|
||||||
"althinect/filament-spatie-roles-permissions": "^2.3",
|
"althinect/filament-spatie-roles-permissions": "^2.3",
|
||||||
"filament/filament": "^3.3",
|
"filament/filament": "^3.3",
|
||||||
"laravel/framework": "^11.31",
|
"laravel/framework": "^11.31",
|
||||||
@@ -16,6 +17,7 @@
|
|||||||
"tpetry/laravel-postgresql-enhanced": "^2.3"
|
"tpetry/laravel-postgresql-enhanced": "^2.3"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
"barryvdh/laravel-debugbar": "^3.15",
|
||||||
"barryvdh/laravel-ide-helper": "^3.5",
|
"barryvdh/laravel-ide-helper": "^3.5",
|
||||||
"fakerphp/faker": "^1.23",
|
"fakerphp/faker": "^1.23",
|
||||||
"laravel/pail": "^1.1",
|
"laravel/pail": "^1.1",
|
||||||
|
|||||||
571
composer.lock
generated
571
composer.lock
generated
@@ -4,8 +4,64 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "ac6e7ab9568c0715b7379e52b53f4456",
|
"content-hash": "cb43ec04264890f09fbcd10ab0cb790c",
|
||||||
"packages": [
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "alperenersoy/filament-export",
|
||||||
|
"version": "v3.0.10",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/alperenersoy/filament-export.git",
|
||||||
|
"reference": "c755dcf4f4a46982ae35e93eba8ed42e2bf807f0"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/alperenersoy/filament-export/zipball/c755dcf4f4a46982ae35e93eba8ed42e2bf807f0",
|
||||||
|
"reference": "c755dcf4f4a46982ae35e93eba8ed42e2bf807f0",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"barryvdh/laravel-dompdf": "^2.0|>=v3.1.1",
|
||||||
|
"filament/tables": "^3.0",
|
||||||
|
"php": "^8.0",
|
||||||
|
"spatie/simple-excel": ">=3.2.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"filament/filament": "^3.0",
|
||||||
|
"orchestra/testbench": "^8.5",
|
||||||
|
"pestphp/pest": "^2.1",
|
||||||
|
"pestphp/pest-plugin-livewire": "^2.1"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"providers": [
|
||||||
|
"AlperenErsoy\\FilamentExport\\FilamentExportServiceProvider"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"AlperenErsoy\\FilamentExport\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "alperen ersoy",
|
||||||
|
"email": "ersoyalperen@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Customizable export and print functionality for Filament Admin Panel",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/alperenersoy/filament-export/issues",
|
||||||
|
"source": "https://github.com/alperenersoy/filament-export/tree/v3.0.10"
|
||||||
|
},
|
||||||
|
"time": "2025-03-25T10:05:26+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "althinect/filament-spatie-roles-permissions",
|
"name": "althinect/filament-spatie-roles-permissions",
|
||||||
"version": "v2.3",
|
"version": "v2.3",
|
||||||
@@ -135,6 +191,83 @@
|
|||||||
},
|
},
|
||||||
"time": "2025-03-22T08:49:12+00:00"
|
"time": "2025-03-22T08:49:12+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "barryvdh/laravel-dompdf",
|
||||||
|
"version": "v3.1.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/barryvdh/laravel-dompdf.git",
|
||||||
|
"reference": "8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d",
|
||||||
|
"reference": "8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"dompdf/dompdf": "^3.0",
|
||||||
|
"illuminate/support": "^9|^10|^11|^12",
|
||||||
|
"php": "^8.1"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"larastan/larastan": "^2.7|^3.0",
|
||||||
|
"orchestra/testbench": "^7|^8|^9|^10",
|
||||||
|
"phpro/grumphp": "^2.5",
|
||||||
|
"squizlabs/php_codesniffer": "^3.5"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"aliases": {
|
||||||
|
"PDF": "Barryvdh\\DomPDF\\Facade\\Pdf",
|
||||||
|
"Pdf": "Barryvdh\\DomPDF\\Facade\\Pdf"
|
||||||
|
},
|
||||||
|
"providers": [
|
||||||
|
"Barryvdh\\DomPDF\\ServiceProvider"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Barryvdh\\DomPDF\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Barry vd. Heuvel",
|
||||||
|
"email": "barryvdh@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A DOMPDF Wrapper for Laravel",
|
||||||
|
"keywords": [
|
||||||
|
"dompdf",
|
||||||
|
"laravel",
|
||||||
|
"pdf"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/barryvdh/laravel-dompdf/issues",
|
||||||
|
"source": "https://github.com/barryvdh/laravel-dompdf/tree/v3.1.1"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://fruitcake.nl",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/barryvdh",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-02-13T15:07:54+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "blade-ui-kit/blade-heroicons",
|
"name": "blade-ui-kit/blade-heroicons",
|
||||||
"version": "2.6.0",
|
"version": "2.6.0",
|
||||||
@@ -1073,6 +1206,161 @@
|
|||||||
],
|
],
|
||||||
"time": "2024-02-05T11:56:58+00:00"
|
"time": "2024-02-05T11:56:58+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "dompdf/dompdf",
|
||||||
|
"version": "v3.1.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/dompdf/dompdf.git",
|
||||||
|
"reference": "a51bd7a063a65499446919286fb18b518177155a"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/dompdf/dompdf/zipball/a51bd7a063a65499446919286fb18b518177155a",
|
||||||
|
"reference": "a51bd7a063a65499446919286fb18b518177155a",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"dompdf/php-font-lib": "^1.0.0",
|
||||||
|
"dompdf/php-svg-lib": "^1.0.0",
|
||||||
|
"ext-dom": "*",
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"masterminds/html5": "^2.0",
|
||||||
|
"php": "^7.1 || ^8.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"ext-gd": "*",
|
||||||
|
"ext-json": "*",
|
||||||
|
"ext-zip": "*",
|
||||||
|
"mockery/mockery": "^1.3",
|
||||||
|
"phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11",
|
||||||
|
"squizlabs/php_codesniffer": "^3.5",
|
||||||
|
"symfony/process": "^4.4 || ^5.4 || ^6.2 || ^7.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-gd": "Needed to process images",
|
||||||
|
"ext-gmagick": "Improves image processing performance",
|
||||||
|
"ext-imagick": "Improves image processing performance",
|
||||||
|
"ext-zlib": "Needed for pdf stream compression"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Dompdf\\": "src/"
|
||||||
|
},
|
||||||
|
"classmap": [
|
||||||
|
"lib/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"LGPL-2.1"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "The Dompdf Community",
|
||||||
|
"homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
|
||||||
|
"homepage": "https://github.com/dompdf/dompdf",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/dompdf/dompdf/issues",
|
||||||
|
"source": "https://github.com/dompdf/dompdf/tree/v3.1.0"
|
||||||
|
},
|
||||||
|
"time": "2025-01-15T14:09:04+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "dompdf/php-font-lib",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/dompdf/php-font-lib.git",
|
||||||
|
"reference": "6137b7d4232b7f16c882c75e4ca3991dbcf6fe2d"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/6137b7d4232b7f16c882c75e4ca3991dbcf6fe2d",
|
||||||
|
"reference": "6137b7d4232b7f16c882c75e4ca3991dbcf6fe2d",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"php": "^7.1 || ^8.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"FontLib\\": "src/FontLib"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"LGPL-2.1-or-later"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "The FontLib Community",
|
||||||
|
"homepage": "https://github.com/dompdf/php-font-lib/blob/master/AUTHORS.md"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A library to read, parse, export and make subsets of different types of font files.",
|
||||||
|
"homepage": "https://github.com/dompdf/php-font-lib",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/dompdf/php-font-lib/issues",
|
||||||
|
"source": "https://github.com/dompdf/php-font-lib/tree/1.0.1"
|
||||||
|
},
|
||||||
|
"time": "2024-12-02T14:37:59+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "dompdf/php-svg-lib",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/dompdf/php-svg-lib.git",
|
||||||
|
"reference": "eb045e518185298eb6ff8d80d0d0c6b17aecd9af"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/eb045e518185298eb6ff8d80d0d0c6b17aecd9af",
|
||||||
|
"reference": "eb045e518185298eb6ff8d80d0d0c6b17aecd9af",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"php": "^7.1 || ^8.0",
|
||||||
|
"sabberworm/php-css-parser": "^8.4"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Svg\\": "src/Svg"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"LGPL-3.0-or-later"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "The SvgLib Community",
|
||||||
|
"homepage": "https://github.com/dompdf/php-svg-lib/blob/master/AUTHORS.md"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A library to read, parse and export to PDF SVG files.",
|
||||||
|
"homepage": "https://github.com/dompdf/php-svg-lib",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/dompdf/php-svg-lib/issues",
|
||||||
|
"source": "https://github.com/dompdf/php-svg-lib/tree/1.0.0"
|
||||||
|
},
|
||||||
|
"time": "2024-04-29T13:26:35+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "dragonmantank/cron-expression",
|
"name": "dragonmantank/cron-expression",
|
||||||
"version": "v3.4.0",
|
"version": "v3.4.0",
|
||||||
@@ -5363,6 +5651,71 @@
|
|||||||
],
|
],
|
||||||
"time": "2025-02-25T09:09:36+00:00"
|
"time": "2025-02-25T09:09:36+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "sabberworm/php-css-parser",
|
||||||
|
"version": "v8.8.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/MyIntervals/PHP-CSS-Parser.git",
|
||||||
|
"reference": "3de493bdddfd1f051249af725c7e0d2c38fed740"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/3de493bdddfd1f051249af725c7e0d2c38fed740",
|
||||||
|
"reference": "3de493bdddfd1f051249af725c7e0d2c38fed740",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-iconv": "*",
|
||||||
|
"php": "^5.6.20 || ^7.0.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.41"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-mbstring": "for parsing UTF-8 CSS"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-main": "9.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Sabberworm\\CSS\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Raphael Schweikert"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Oliver Klee",
|
||||||
|
"email": "github@oliverklee.de"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jake Hotson",
|
||||||
|
"email": "jake.github@qzdesign.co.uk"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Parser for CSS Files written in PHP",
|
||||||
|
"homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser",
|
||||||
|
"keywords": [
|
||||||
|
"css",
|
||||||
|
"parser",
|
||||||
|
"stylesheet"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues",
|
||||||
|
"source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.8.0"
|
||||||
|
},
|
||||||
|
"time": "2025-03-23T17:59:05+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "spatie/color",
|
"name": "spatie/color",
|
||||||
"version": "1.8.0",
|
"version": "1.8.0",
|
||||||
@@ -5687,6 +6040,67 @@
|
|||||||
],
|
],
|
||||||
"time": "2021-11-30T21:13:59+00:00"
|
"time": "2021-11-30T21:13:59+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "spatie/simple-excel",
|
||||||
|
"version": "3.7.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/spatie/simple-excel.git",
|
||||||
|
"reference": "53546918bb480f7876c8ed295860408ded2e0ebf"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/spatie/simple-excel/zipball/53546918bb480f7876c8ed295860408ded2e0ebf",
|
||||||
|
"reference": "53546918bb480f7876c8ed295860408ded2e0ebf",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"illuminate/support": "^9.0|^10.0|^11.0|^12.0",
|
||||||
|
"openspout/openspout": "^4.19",
|
||||||
|
"php": "^8.1"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"pestphp/pest-plugin-laravel": "^1.3|^2.3|^3.0",
|
||||||
|
"phpunit/phpunit": "^9.4|^10.5|^11.0|^12.0",
|
||||||
|
"spatie/pest-plugin-snapshots": "^1.1|^2.1",
|
||||||
|
"spatie/phpunit-snapshot-assertions": "^4.0|^5.1",
|
||||||
|
"spatie/temporary-directory": "^1.2|^2.2"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Spatie\\SimpleExcel\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Freek Van der Herten",
|
||||||
|
"email": "freek@spatie.be",
|
||||||
|
"homepage": "https://spatie.be",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Read and write simple Excel and CSV files",
|
||||||
|
"homepage": "https://github.com/spatie/simple-excel",
|
||||||
|
"keywords": [
|
||||||
|
"simple-excel",
|
||||||
|
"spatie"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/spatie/simple-excel/tree/3.7.2"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/spatie",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-02-14T12:47:34+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/clock",
|
"name": "symfony/clock",
|
||||||
"version": "v7.2.0",
|
"version": "v7.2.0",
|
||||||
@@ -8331,6 +8745,91 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
|
{
|
||||||
|
"name": "barryvdh/laravel-debugbar",
|
||||||
|
"version": "v3.15.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/barryvdh/laravel-debugbar.git",
|
||||||
|
"reference": "c0667ea91f7185f1e074402c5788195e96bf8106"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/c0667ea91f7185f1e074402c5788195e96bf8106",
|
||||||
|
"reference": "c0667ea91f7185f1e074402c5788195e96bf8106",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"illuminate/routing": "^9|^10|^11|^12",
|
||||||
|
"illuminate/session": "^9|^10|^11|^12",
|
||||||
|
"illuminate/support": "^9|^10|^11|^12",
|
||||||
|
"php": "^8.1",
|
||||||
|
"php-debugbar/php-debugbar": "~2.1.1",
|
||||||
|
"symfony/finder": "^6|^7"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"mockery/mockery": "^1.3.3",
|
||||||
|
"orchestra/testbench-dusk": "^7|^8|^9|^10",
|
||||||
|
"phpunit/phpunit": "^9.5.10|^10|^11",
|
||||||
|
"squizlabs/php_codesniffer": "^3.5"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"aliases": {
|
||||||
|
"Debugbar": "Barryvdh\\Debugbar\\Facades\\Debugbar"
|
||||||
|
},
|
||||||
|
"providers": [
|
||||||
|
"Barryvdh\\Debugbar\\ServiceProvider"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.15-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/helpers.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"Barryvdh\\Debugbar\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Barry vd. Heuvel",
|
||||||
|
"email": "barryvdh@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHP Debugbar integration for Laravel",
|
||||||
|
"keywords": [
|
||||||
|
"debug",
|
||||||
|
"debugbar",
|
||||||
|
"dev",
|
||||||
|
"laravel",
|
||||||
|
"profiler",
|
||||||
|
"webprofiler"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/barryvdh/laravel-debugbar/issues",
|
||||||
|
"source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.15.4"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://fruitcake.nl",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/barryvdh",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-04-16T06:32:06+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "barryvdh/laravel-ide-helper",
|
"name": "barryvdh/laravel-ide-helper",
|
||||||
"version": "v3.5.5",
|
"version": "v3.5.5",
|
||||||
@@ -9301,6 +9800,76 @@
|
|||||||
},
|
},
|
||||||
"time": "2022-02-21T01:04:05+00:00"
|
"time": "2022-02-21T01:04:05+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "php-debugbar/php-debugbar",
|
||||||
|
"version": "v2.1.6",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-debugbar/php-debugbar.git",
|
||||||
|
"reference": "16fa68da5617220594aa5e33fa9de415f94784a0"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/16fa68da5617220594aa5e33fa9de415f94784a0",
|
||||||
|
"reference": "16fa68da5617220594aa5e33fa9de415f94784a0",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^8",
|
||||||
|
"psr/log": "^1|^2|^3",
|
||||||
|
"symfony/var-dumper": "^4|^5|^6|^7"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"dbrekelmans/bdi": "^1",
|
||||||
|
"phpunit/phpunit": "^8|^9",
|
||||||
|
"symfony/panther": "^1|^2.1",
|
||||||
|
"twig/twig": "^1.38|^2.7|^3.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"kriswallsmith/assetic": "The best way to manage assets",
|
||||||
|
"monolog/monolog": "Log using Monolog",
|
||||||
|
"predis/predis": "Redis storage"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.0-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"DebugBar\\": "src/DebugBar/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Maxime Bouroumeau-Fuseau",
|
||||||
|
"email": "maxime.bouroumeau@gmail.com",
|
||||||
|
"homepage": "http://maximebf.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Barry vd. Heuvel",
|
||||||
|
"email": "barryvdh@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Debug bar in the browser for php application",
|
||||||
|
"homepage": "https://github.com/php-debugbar/php-debugbar",
|
||||||
|
"keywords": [
|
||||||
|
"debug",
|
||||||
|
"debug bar",
|
||||||
|
"debugbar",
|
||||||
|
"dev"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/php-debugbar/php-debugbar/issues",
|
||||||
|
"source": "https://github.com/php-debugbar/php-debugbar/tree/v2.1.6"
|
||||||
|
},
|
||||||
|
"time": "2025-02-21T17:47:03+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-code-coverage",
|
"name": "phpunit/php-code-coverage",
|
||||||
"version": "11.0.9",
|
"version": "11.0.9",
|
||||||
|
|||||||
17
database/seeders/AdminSeeder.php
Normal file
17
database/seeders/AdminSeeder.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
|
||||||
|
class AdminSeeder extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*/
|
||||||
|
public function run(): void
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,7 +21,7 @@ class UserSeeder extends Seeder
|
|||||||
// Data to update/create
|
// Data to update/create
|
||||||
[
|
[
|
||||||
'name' => 'Admin',
|
'name' => 'Admin',
|
||||||
'password' => Hash::make('admin'),
|
'password' => Hash::make('jOtHi$9000'),
|
||||||
'updated_at' => now(),
|
'updated_at' => now(),
|
||||||
'created_at' => now()
|
'created_at' => now()
|
||||||
]
|
]
|
||||||
@@ -35,79 +35,60 @@ class UserSeeder extends Seeder
|
|||||||
|
|
||||||
$user2 = User::updateOrCreate(
|
$user2 = User::updateOrCreate(
|
||||||
// Unique identifier
|
// Unique identifier
|
||||||
['email' => 'jothi@cripumps.com'],
|
['email' => 'dhanabalan@cripumps.com'],
|
||||||
|
|
||||||
// Data to update/create
|
// Data to update/create
|
||||||
[
|
[
|
||||||
'name' => 'Jothi',
|
'name' => 'Dhanabalan S',
|
||||||
'password' => bcrypt('jothi@123'),
|
'password' => bcrypt('SdHaNa@123'),
|
||||||
'updated_at' => now(),
|
'updated_at' => now(),
|
||||||
'created_at' => now()
|
'created_at' => now()
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
// $user2 = User::firstOrCreate([
|
// $user2 = User::firstOrCreate([
|
||||||
// 'name' => 'Jothi',
|
// 'name' => 'Dhana',
|
||||||
// 'email' => 'jothi@cripumps.com',
|
// 'email' => 'dhana@cripumps.com',
|
||||||
// 'password' => bcrypt('jothi@123'),
|
// 'password' => bcrypt('dhana@123'),
|
||||||
// ]);
|
// ]);
|
||||||
$user2->assignRole('Super Admin');
|
$user2->assignRole('Super Admin');
|
||||||
|
|
||||||
$user3 = User::updateOrCreate(
|
$user3 = User::updateOrCreate(
|
||||||
// Unique identifier
|
// Unique identifier
|
||||||
['email' => 'dhana@cripumps.com'],
|
['email' => 'ranjith@cripumps.com'],
|
||||||
|
|
||||||
// Data to update/create
|
// Data to update/create
|
||||||
[
|
[
|
||||||
'name' => 'Dhana',
|
'name' => 'Ranjith B',
|
||||||
'password' => bcrypt('dhana@123'),
|
'password' => bcrypt('Ranjii@5503'),
|
||||||
'updated_at' => now(),
|
'updated_at' => now(),
|
||||||
'created_at' => now()
|
'created_at' => now()
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
// $user3 = User::firstOrCreate([
|
// $user3 = User::firstOrCreate([
|
||||||
// 'name' => 'Dhana',
|
// 'name' => 'Ranjith',
|
||||||
// 'email' => 'dhana@cripumps.com',
|
// 'email' => 'ranjith@cripumps.com',
|
||||||
// 'password' => bcrypt('dhana@123'),
|
// 'password' => bcrypt('ranjith@123'),
|
||||||
// ]);
|
// ]);
|
||||||
$user3->assignRole('Super Admin');
|
$user3->assignRole('Super Admin');
|
||||||
|
|
||||||
$user4 = User::updateOrCreate(
|
$user4 = User::updateOrCreate(
|
||||||
// Unique identifier
|
// Unique identifier
|
||||||
['email' => 'ranjith@cripumps.com'],
|
['email' => 'srimathi@cripumps.com'],
|
||||||
|
|
||||||
// Data to update/create
|
// Data to update/create
|
||||||
[
|
[
|
||||||
'name' => 'Ranjith',
|
'name' => 'Srimathi M',
|
||||||
'password' => bcrypt('ranjith@123'),
|
'password' => bcrypt('MsRi@123'),
|
||||||
'updated_at' => now(),
|
'updated_at' => now(),
|
||||||
'created_at' => now()
|
'created_at' => now()
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
// $user4 = User::firstOrCreate([
|
// $user4 = User::firstOrCreate([
|
||||||
// 'name' => 'Ranjith',
|
|
||||||
// 'email' => 'ranjith@cripumps.com',
|
|
||||||
// 'password' => bcrypt('ranjith@123'),
|
|
||||||
// ]);
|
|
||||||
$user4->assignRole('Super Admin');
|
|
||||||
|
|
||||||
$user5 = User::updateOrCreate(
|
|
||||||
// Unique identifier
|
|
||||||
['email' => 'srimathi@cripumps.com'],
|
|
||||||
|
|
||||||
// Data to update/create
|
|
||||||
[
|
|
||||||
'name' => 'Srimathi',
|
|
||||||
'password' => bcrypt('srimathi@123'),
|
|
||||||
'updated_at' => now(),
|
|
||||||
'created_at' => now()
|
|
||||||
]
|
|
||||||
);
|
|
||||||
// $user5 = User::firstOrCreate([
|
|
||||||
// 'name' => 'Srimathi',
|
// 'name' => 'Srimathi',
|
||||||
// 'email' => 'srimathi@cripumps.com',
|
// 'email' => 'srimathi@cripumps.com',
|
||||||
// 'password' => bcrypt('srimathi@123'),
|
// 'password' => bcrypt('srimathi@123'),
|
||||||
// ]);
|
// ]);
|
||||||
$user5->assignRole('Super Admin');
|
$user4->assignRole('Super Admin');
|
||||||
// User::factory()->count(5)->create();
|
// User::factory()->count(5)->create();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
30
public/css/app/filament-export-0.3.0.css
Normal file
30
public/css/app/filament-export-0.3.0.css
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
.preview-table {
|
||||||
|
background: white;
|
||||||
|
color: black;
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-table td,
|
||||||
|
.preview-table th {
|
||||||
|
border-color: #ededed;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 1px;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 2;
|
||||||
|
overflow: hidden;
|
||||||
|
padding-left: 6px;
|
||||||
|
word-break: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-table th {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-table-wrapper {
|
||||||
|
max-height: min(500px, 80vh);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
36
public/js/app/filament-export-0.3.0.js
Normal file
36
public/js/app/filament-export-0.3.0.js
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
function onElementRemoved(element, callback) {
|
||||||
|
new MutationObserver(function (mutations) {
|
||||||
|
if (!document.body.contains(element)) {
|
||||||
|
callback();
|
||||||
|
this.disconnect();
|
||||||
|
}
|
||||||
|
}).observe(element.parentElement, { childList: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
function triggerInputEvent(statePath, value) {
|
||||||
|
let input = document.getElementById(statePath);
|
||||||
|
input.value = value;
|
||||||
|
input.dispatchEvent(new Event('input', { bubbles: true }));
|
||||||
|
}
|
||||||
|
|
||||||
|
function printHTML(html, statePath, uniqueActionId) {
|
||||||
|
let iframe = document.createElement("iframe");
|
||||||
|
|
||||||
|
let random = Math.floor(Math.random() * 99999);
|
||||||
|
|
||||||
|
iframe.id = `print-${random}`;
|
||||||
|
|
||||||
|
iframe.srcdoc = html;
|
||||||
|
|
||||||
|
document.body.append(iframe);
|
||||||
|
|
||||||
|
onElementRemoved(iframe, () => triggerInputEvent(statePath, `afterprint-${uniqueActionId}`));
|
||||||
|
|
||||||
|
iframe.contentWindow.onafterprint = () => document.getElementById(iframe.id).remove();
|
||||||
|
|
||||||
|
iframe.contentWindow.onload = () => iframe.contentWindow.print();
|
||||||
|
}
|
||||||
|
|
||||||
|
window.triggerInputEvent = triggerInputEvent;
|
||||||
|
|
||||||
|
window.printHTML = printHTML;
|
||||||
@@ -7,3 +7,20 @@
|
|||||||
@livewire(\App\Filament\Widgets\ItemOverview::class)
|
@livewire(\App\Filament\Widgets\ItemOverview::class)
|
||||||
</div>
|
</div>
|
||||||
</x-filament-panels::page>
|
</x-filament-panels::page>
|
||||||
|
|
||||||
|
{{-- <x-filament-panels::page>
|
||||||
|
<div x-data x-init="
|
||||||
|
window.addEventListener('filtersUpdated', () => {
|
||||||
|
Livewire.emit('filtersUpdated');
|
||||||
|
});
|
||||||
|
" class="space-y-4">
|
||||||
|
|
||||||
|
{{-- Filters form --}}
|
||||||
|
{{-- {{ $this->filtersForm($this->form) }} --}}
|
||||||
|
|
||||||
|
{{-- Chart Widget --}}
|
||||||
|
{{-- @livewire(\App\Filament\Widgets\ItemOverview::class)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</x-filament-panels::page> --}}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<x-filament::page>
|
||||||
|
<form wire:submit.prevent="create" class="space-y-6">
|
||||||
|
{{-- Form Section --}}
|
||||||
|
<div class="filament-form space-y-6">
|
||||||
|
{{ $this->form }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{-- Livewire Component (Invoice Table) --}}
|
||||||
|
<div class="bg-white shadow rounded-xl p-4">
|
||||||
|
<livewire:select-plant />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{-- Actions --}}
|
||||||
|
<div class="filament-actions mt-6">
|
||||||
|
<x-filament::actions>
|
||||||
|
@foreach ($this->getFormActions() as $action)
|
||||||
|
{{ $action }}
|
||||||
|
@endforeach
|
||||||
|
</x-filament::actions>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</x-filament::page>
|
||||||
2
storage/debugbar/.gitignore
vendored
Normal file
2
storage/debugbar/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
*
|
||||||
|
!.gitignore
|
||||||
Reference in New Issue
Block a user