3 Commits

Author SHA1 Message Date
a52fc9580a Merge pull request 'ranjith-dev' (#123) from ranjith-dev into master
All checks were successful
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 11s
Reviewed-on: #123
2026-01-01 10:32:08 +00:00
dhanabalan
6cde9fc570 Item Description column added as Optional on view report and Invoice Types loaded based on user rights on report filter
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 9s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 10s
Gemini PR Review / review (pull_request) Failing after 35s
Laravel Pint / pint (pull_request) Successful in 2m35s
Laravel Larastan / larastan (pull_request) Failing after 3m4s
2026-01-01 15:56:04 +05:30
dhanabalan
ab1daa57e2 Export plant code instead of plant name and description column added in InvoiceValidationExporter
All checks were successful
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 10s
2026-01-01 15:48:12 +05:30
2 changed files with 538 additions and 532 deletions

View File

@@ -24,14 +24,16 @@ class InvoiceValidationExporter extends Exporter
// Increment and return the row number
return ++$rowNumber;
}),
ExportColumn::make('plant.name')
->label('PLANT'),
ExportColumn::make('plant.code')
->label('PLANT CODE'),
ExportColumn::make('invoice_number')
->label('INVOICE NUMBER'),
ExportColumn::make('serial_number')
->label('SERIAL NUMBER'),
ExportColumn::make('stickerMaster.item.code')
->label('ITEM CODE'),
ExportColumn::make('stickerMaster.item.description')
->label('ITEM DESCRIPTION'),
ExportColumn::make('motor_scanned_status')
->label('MOTOR SCANNED STATUS'),
ExportColumn::make('pump_scanned_status')

View File

@@ -10,12 +10,8 @@ use App\Models\InvoiceValidation;
use App\Models\Item;
use App\Models\Plant;
use App\Models\StickerMaster;
use Auth;
use Filament\Actions\Action as FilamentActionsAction;
use Filament\Actions\CreateAction;
use Filament\Facades\Filament;
use Filament\Forms;
use Filament\Forms\Components\Actions\Action as ActionsAction;
use Filament\Forms\Components\DateTimePicker;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Radio;
@@ -23,25 +19,23 @@ use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\ToggleButtons;
use Filament\Forms\Components\View;
use Filament\Forms\Form;
use Filament\Forms\Get;
use Filament\Notifications\Notification;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use Filament\Notifications\Notification;
use Filament\Tables\Actions\Action;
use Filament\Tables\Actions\ExportAction;
use Filament\Tables\Filters\Filter;
use Illuminate\Support\Facades\Storage;
use Maatwebsite\Excel\Facades\Excel;
use Livewire\Livewire;
use Str;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Mail;
use Filament\Forms\Components\View;
use Illuminate\Support\Facades\Storage;
use Livewire\Livewire;
use Maatwebsite\Excel\Facades\Excel;
use Str;
class InvoiceValidationResource extends Resource
{
@@ -53,8 +47,6 @@ class InvoiceValidationResource extends Resource
public $invoiceNumber;
public static function form(Form $form): Form
{
return $form
@@ -74,6 +66,7 @@ class InvoiceValidationResource extends Resource
->columnSpan(1)
->options(function (callable $get) {
$userHas = Filament::auth()->user()->plant_id;
return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray();
})
->default(function () {
@@ -91,10 +84,9 @@ class InvoiceValidationResource extends Resource
$set('total_quantity', null);
$set('scanned_quantity', null);
$set('ivPlantError', 'Please select a plant first.');
return;
}
else
{
} else {
$set('ivPlantError', null);
}
})
@@ -178,18 +170,17 @@ class InvoiceValidationResource extends Resource
->reactive()
->hidden(fn (callable $get) => ($get('invoice_number') == null || $get('update_invoice') == '0') || ! empty($get('serial_number')))
->afterStateUpdated(function ($state, callable $set, callable $get) {
if (!$get('plant_id'))
{
if (! $get('plant_id')) {
$set('update_invoice', null);
return;
}
if ($get('update_invoice') == "1")
{
if ($get('update_invoice') == '1') {
$totQuan = InvoiceValidation::where('invoice_number', $get('invoice_number'))->where('plant_id', $get('plant_id'))->count();
if ($totQuan <= 0)
{
if ($totQuan <= 0) {
$set('update_invoice', null);
return;
}
@@ -197,19 +188,16 @@ class InvoiceValidationResource extends Resource
$scanMQuan = InvoiceValidation::where('invoice_number', $get('invoice_number'))->whereNotNull('serial_number')->where('serial_number', '!=', '')->where('plant_id', $get('plant_id'))->count();
$scanSQuan = InvoiceValidation::where('invoice_number', $get('invoice_number'))->where('scanned_status', 'Scanned')->where('plant_id', $get('plant_id'))->count();
if ($totMQuan > 0)
{
if ($totQuan == $scanMQuan)
{
if ($totMQuan > 0) {
if ($totQuan == $scanMQuan) {
$set('update_invoice', null);
return;
}
}
else
{
if ($totQuan == $scanSQuan)
{
} else {
if ($totQuan == $scanSQuan) {
$set('update_invoice', null);
return;
}
}
@@ -224,7 +212,6 @@ class InvoiceValidationResource extends Resource
]);
}
public static function table(Table $table): Table
{
return $table
@@ -240,6 +227,7 @@ class InvoiceValidationResource extends Resource
$paginator = $livewire->getTableRecords();
$perPage = method_exists($paginator, 'perPage') ? $paginator->perPage() : 10;
$currentPage = method_exists($paginator, 'currentPage') ? $paginator->currentPage() : 1;
return ($currentPage - 1) * $perPage + $rowLoop->iteration;
}),
Tables\Columns\TextColumn::make('invoice_number')
@@ -250,6 +238,11 @@ class InvoiceValidationResource extends Resource
->label('Item Code')
->alignCenter()
->sortable(), // ->searchable()
Tables\Columns\TextColumn::make('stickerMaster.item.description')
->label('Item Description')
->alignCenter()
->sortable() // ->searchable()
->toggleable(isToggledHiddenByDefault: true),
Tables\Columns\TextColumn::make('serial_number')
->label('Serial Number')
->alignCenter()
@@ -269,6 +262,9 @@ class InvoiceValidationResource extends Resource
Tables\Columns\TextColumn::make('scanned_status')
->label('Scanned Status')
->alignCenter(),
// Tables\Columns\TextColumn::make('stickerMaster.panel_box_code')
// ->label('Panel Box Code')
// ->alignCenter(),
Tables\Columns\TextColumn::make('panel_box_supplier')
->label('Panel Box Supplier')
->alignCenter(),
@@ -335,6 +331,7 @@ class InvoiceValidationResource extends Resource
// ->options(Plant::pluck('name', 'id')->toArray()) // Fetch plant names and IDs
->options(function (callable $get) {
$userHas = Filament::auth()->user()->plant_id;
return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray();
})
->label('Select Plant')
@@ -378,42 +375,37 @@ class InvoiceValidationResource extends Resource
// /home/iot-dev/projects/pds/storage/app/private/uploads/temp/3RA0018735.xlsx
$totQuan = InvoiceValidation::where('invoice_number', $originalNameOnly)->count();
if ($totQuan > 0)
{
if ($totQuan > 0) {
$scanSQuan = InvoiceValidation::where('invoice_number', $originalNameOnly)->where('scanned_status', 'Scanned')->count();
if ($totQuan == $scanSQuan)
{
if ($totQuan == $scanSQuan) {
$invoiceFirst = InvoiceValidation::with('plant')->where('invoice_number', $originalNameOnly)->first();
$plantName = $invoiceFirst ? (String)$invoiceFirst->plant->name : null;
$plantName = $invoiceFirst ? (string) $invoiceFirst->plant->name : null;
Notification::make()
->title("Serial invoice number : '$originalNameOnly' already completed the scanning process for plant : '$plantName'.")
->danger()
->send();
if ($disk->exists($path))
{
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
else
{
} else {
$invoiceFirst = InvoiceValidation::with('plant')->where('invoice_number', $originalNameOnly)->first();
// $plantCode = $invoiceFirst ? (String)$invoiceFirst->plant->code : null;
$plantName = $invoiceFirst ? (String)$invoiceFirst->plant->name : null;
$plantName = $invoiceFirst ? (string) $invoiceFirst->plant->name : null;
$invoicePlantId = $invoiceFirst->plant_id;
if ($plantId != $invoicePlantId)
{
if ($plantId != $invoicePlantId) {
Notification::make()
->title("Serial invoice number : '$originalNameOnly' already exists for plant : '$plantName'.<br>Choose the valid 'Plant' to proceed!")
->danger()
->send();
if ($disk->exists($path))
{
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
}
@@ -422,26 +414,23 @@ class InvoiceValidationResource extends Resource
$totQuan = InvoiceValidation::where('invoice_number', $originalNameOnly)->where('plant_id', $plantId)->count();
$scanSQuan = InvoiceValidation::where('invoice_number', $originalNameOnly)->where('scanned_status', 'Scanned')->where('plant_id', $plantId)->count();
if ($totQuan > 0 && $totQuan == $scanSQuan)
{
if ($totQuan > 0 && $totQuan == $scanSQuan) {
Notification::make()
->title('Serial invoice already completed the scanning process for selected plant.')
->danger()
->send();
if ($disk->exists($path))
{
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
if ($fullPath && file_exists($fullPath))
{
if ($fullPath && file_exists($fullPath)) {
$rows = Excel::toArray(null, $fullPath)[0];
if ((count($rows) - 1) <= 0)
{
if ((count($rows) - 1) <= 0) {
Notification::make()
->title('Records Not Found')
->body("Import the valid 'Serial Invoice' file to proceed..!")
@@ -451,6 +440,7 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
@@ -462,9 +452,10 @@ class InvoiceValidationResource extends Resource
$seenSerialNumbers = [];
$validRowsFound = false;
foreach ($rows as $index => $row)
{
if ($index == 0) continue; // Skip header
foreach ($rows as $index => $row) {
if ($index == 0) {
continue;
} // Skip header
$materialCode = trim($row[0]);
$serialNumber = trim($row[1]);
@@ -473,24 +464,16 @@ class InvoiceValidationResource extends Resource
continue;
}
if (!empty($materialCode))
{
if (Str::length($materialCode) < 6 || !ctype_alnum($materialCode))
{
if (! empty($materialCode)) {
if (Str::length($materialCode) < 6 || ! ctype_alnum($materialCode)) {
$invalidMatCodes[] = $materialCode;
}
else
{
} else {
if (empty($serialNumber)) {
$missingSerials[] = $materialCode;
}
else if (Str::length($serialNumber) < 9 || !ctype_alnum($serialNumber))
{
} elseif (Str::length($serialNumber) < 9 || ! ctype_alnum($serialNumber)) {
$invalidSerialCodes[] = $serialNumber;
}
else
{
} else {
if (in_array($serialNumber, $seenSerialNumbers)) {
$duplicateSerials[] = $serialNumber;
} else {
@@ -500,9 +483,7 @@ class InvoiceValidationResource extends Resource
}
}
}
}
else
{
} else {
continue;
}
}
@@ -524,9 +505,9 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
else if (!empty($uniqueMissingSerials)) {
} elseif (! empty($uniqueMissingSerials)) {
Notification::make()
->title('Missing Serial Numbers')
->body("The following item codes doesn't have valid serial number:<br>".implode(', ', $uniqueMissingSerials))
@@ -535,9 +516,9 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
else if (!empty($uniqueSerialCodes)) {
} elseif (! empty($uniqueSerialCodes)) {
Notification::make()
->title('Invalid Serial Number')
->body('The following serial numbers should contain minimum 9 digit alpha numeric values:<br>'.implode(', ', $uniqueSerialCodes))
@@ -546,9 +527,9 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
else if (!empty($duplicateSerialCodes)) {
} elseif (! empty($duplicateSerialCodes)) {
Notification::make()
->title('Duplicate Serial Numbers')
->body('The following serial numbers are already exist in imported excel:<br>'.implode(', ', $duplicateSerialCodes))
@@ -557,6 +538,7 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
@@ -569,6 +551,7 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
@@ -584,8 +567,7 @@ class InvoiceValidationResource extends Resource
$missingCodes = array_diff($uniqueCodes, $matchedCodes);
if (!empty($missingCodes))
{
if (! empty($missingCodes)) {
$missingCount = count($missingCodes);
$message = $missingCount > 10 ? "'$missingCount' item codes are not found in database." : 'The following item codes are not found in database:<br>'.implode(', ', $missingCodes);
@@ -599,6 +581,7 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
@@ -608,8 +591,7 @@ class InvoiceValidationResource extends Resource
->pluck('item.code')
->toArray();
if (count($invalidCodes) > 10)
{
if (count($invalidCodes) > 10) {
Notification::make()
->title('Invalid item codes found')
->body(''.count($invalidCodes).'item codes found have material type.')
@@ -619,10 +601,9 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
else if (count($invalidCodes) > 0)
{
} elseif (count($invalidCodes) > 0) {
Notification::make()
->title('Invalid item codes found')
->body('Material invoice Item Codes found : '.implode(', ', $invalidCodes))
@@ -632,10 +613,9 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
else
{
} else {
// Save full file path to session
session(['uploaded_invoice_path' => $fullPath]);
Notification::make()
@@ -656,6 +636,7 @@ class InvoiceValidationResource extends Resource
// ->options(Plant::pluck('name', 'id')->toArray()) // Fetch plant names and IDs
->options(function (callable $get) {
$userHas = Filament::auth()->user()->plant_id;
return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray();
})
->label('Select Plant')
@@ -695,42 +676,37 @@ class InvoiceValidationResource extends Resource
$fullPath = Storage::disk('local')->path($path);
$totQuan = InvoiceValidation::where('invoice_number', $originalNameOnly)->count();
if ($totQuan > 0)
{
if ($totQuan > 0) {
$scanMQuan = InvoiceValidation::where('invoice_number', $originalNameOnly)->whereNotNull('serial_number')->where('serial_number', '!=', '')->count();
if ($totQuan == $scanMQuan)
{
if ($totQuan == $scanMQuan) {
$invoiceFirst = InvoiceValidation::with('plant')->where('invoice_number', $originalNameOnly)->first();
$plantName = $invoiceFirst ? (String)$invoiceFirst->plant->name : null;
$plantName = $invoiceFirst ? (string) $invoiceFirst->plant->name : null;
Notification::make()
->title("Material invoice number : '$originalNameOnly' already completed the scanning process for plant : '$plantName'.")
->danger()
->send();
if ($disk->exists($path))
{
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
else
{
} else {
$invoiceFirst = InvoiceValidation::with('plant')->where('invoice_number', $originalNameOnly)->first();
// $plantCode = $invoiceFirst ? (String)$invoiceFirst->plant->code : null;
$plantName = $invoiceFirst ? (String)$invoiceFirst->plant->name : null;
$plantName = $invoiceFirst ? (string) $invoiceFirst->plant->name : null;
$invoicePlantId = $invoiceFirst->plant_id;
if ($plantId != $invoicePlantId)
{
if ($plantId != $invoicePlantId) {
Notification::make()
->title("Material invoice number : '$originalNameOnly' already exists for plant : '$plantName'.<br>Choose the valid 'Plant' to proceed!")
->danger()
->send();
if ($disk->exists($path))
{
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
}
@@ -739,8 +715,7 @@ class InvoiceValidationResource extends Resource
$totQuan = InvoiceValidation::where('invoice_number', $originalNameOnly)->where('plant_id', $plantId)->count();
$scanMQuan = InvoiceValidation::where('invoice_number', $originalNameOnly)->whereNotNull('serial_number')->where('serial_number', '!=', '')->where('plant_id', $plantId)->count();
if ($totQuan > 0 && $totQuan == $scanMQuan)
{
if ($totQuan > 0 && $totQuan == $scanMQuan) {
Notification::make()
->title('Material invoice already completed the scanning process for selected plant.')
->danger()
@@ -748,15 +723,14 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
if ($fullPath && file_exists($fullPath))
{
if ($fullPath && file_exists($fullPath)) {
$rows = Excel::toArray(null, $fullPath)[0];
if ((count($rows) - 1) <= 0)
{
if ((count($rows) - 1) <= 0) {
Notification::make()
->title('Records Not Found')
->body("Import the valid 'Material Invoice' file to proceed..!")
@@ -766,6 +740,7 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
@@ -776,9 +751,10 @@ class InvoiceValidationResource extends Resource
$invalidMaterialQuan = [];
$validRowsFound = false;
foreach ($rows as $index => $row)
{
if ($index == 0) continue; // Skip header
foreach ($rows as $index => $row) {
if ($index == 0) {
continue;
} // Skip header
$materialCode = trim($row[0]);
$materialQuantity = trim($row[1]);
@@ -788,33 +764,21 @@ class InvoiceValidationResource extends Resource
}
if (! empty($materialCode)) {
if (Str::length($materialCode) < 6 || !ctype_alnum($materialCode))
{
if (Str::length($materialCode) < 6 || ! ctype_alnum($materialCode)) {
$invalidMatCodes[] = $materialCode;
}
else
{
if ($materialQuantity == 0)
{
} else {
if ($materialQuantity == 0) {
$invalidMaterialQuan[] = $materialCode;
}
else if (empty($materialQuantity))
{
} elseif (empty($materialQuantity)) {
$missingQuantities[] = $materialCode;
}
else if (!is_numeric($materialQuantity))
{
} elseif (! is_numeric($materialQuantity)) {
$invalidMatQuan[] = $materialCode;
}
else
{
} else {
$materialCodes[] = $materialCode;
$validRowsFound = true;
}
}
}
else
{
} else {
continue;
}
}
@@ -834,32 +798,35 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
if (! empty($uniqueaplhaMat)) {
Notification::make()
->title('Invalid Material Quantity')
->body("The following item codes material quantity must be a numeric values :<br>" . implode(', ', $uniqueaplhaMat))
->body('The following item codes material quantity must be a numeric values :<br>'.implode(', ', $uniqueaplhaMat))
->danger()
->send();
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
if (! empty($uniqueZeroMat)) {
Notification::make()
->title('Invalid Material Quantity')
->body("The following item codes material quantity should be greater than 0:<br>" . implode(', ', $uniqueZeroMat))
->body('The following item codes material quantity should be greater than 0:<br>'.implode(', ', $uniqueZeroMat))
->danger()
->send();
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
@@ -873,6 +840,7 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
@@ -886,6 +854,7 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
@@ -901,8 +870,7 @@ class InvoiceValidationResource extends Resource
$missingCodes = array_diff($uniqueCodes, $matchedCodes);
if (!empty($missingCodes))
{
if (! empty($missingCodes)) {
$missingCount = count($missingCodes);
$message = $missingCount > 10
@@ -918,6 +886,7 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
@@ -926,8 +895,7 @@ class InvoiceValidationResource extends Resource
->pluck('item.code')
->toArray();
if (count($invalidCodes) > 10)
{
if (count($invalidCodes) > 10) {
$invalidCodes = array_unique($invalidCodes);
Notification::make()
->title('Invalid item codes found')
@@ -938,10 +906,9 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
else if (count($invalidCodes) > 0)
{
} elseif (count($invalidCodes) > 0) {
$invalidCodes = array_unique($invalidCodes);
Notification::make()
->title('Invalid item codes found')
@@ -952,6 +919,7 @@ class InvoiceValidationResource extends Resource
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
@@ -959,24 +927,22 @@ class InvoiceValidationResource extends Resource
$zeroQtyCodes = [];
$notDivisibleCodes = [];
foreach ($matchedItems as $sticker)
{
foreach ($matchedItems as $sticker) {
$code = $sticker->item->code;
$materialType = $sticker->material_type;
if ($materialType == 2)
{
if ($materialType == 2) {
$bundleQty = $sticker->bundle_quantity ?? 0;
$totalExcelQty = 0;
foreach ($rows as $index => $row)
{
if ($index == 0) continue; // Skip header
foreach ($rows as $index => $row) {
if ($index == 0) {
continue;
} // Skip header
$excelCode = trim($row[0]);
$excelMatQty = trim($row[1]);
if ($excelCode == $code && is_numeric($excelMatQty)) {
$totalExcelQty += $excelMatQty; // Sum up the quantities
}
@@ -993,7 +959,9 @@ class InvoiceValidationResource extends Resource
}
$showValidationNotification = function (array $codes, string $message) {
if (count($codes) == 0) return;
if (count($codes) == 0) {
return;
}
$uniqueCodes = array_unique($codes);
$codeList = implode(', ', $uniqueCodes);
@@ -1009,19 +977,17 @@ class InvoiceValidationResource extends Resource
$zeroQtyCodes = array_unique($zeroQtyCodes);
$notDivisibleCodes = array_unique($notDivisibleCodes);
$showValidationNotification($nonNumericQtyCodes, "The following item codes contains invalid bundle quantity:");
$showValidationNotification($nonNumericQtyCodes, 'The following item codes contains invalid bundle quantity:');
$showValidationNotification($zeroQtyCodes, "The following item codes quantity should be greater than '0':");
$showValidationNotification($notDivisibleCodes, "The following item codes quantity is not divisible by bundle quantity.");
$showValidationNotification($notDivisibleCodes, 'The following item codes quantity is not divisible by bundle quantity.');
if ($nonNumericQtyCodes || $zeroQtyCodes || $notDivisibleCodes) {
if ($disk->exists($path))
{
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
else
{
} else {
// Save full file path to session
session(['uploaded_material_invoice' => $fullPath]);
Notification::make()
@@ -1052,11 +1018,50 @@ class InvoiceValidationResource extends Resource
Radio::make('invoice_type')
->label('Type ?')
->boolean()
->options([
// ->options([
// 'Serial' => 'Serial',
// 'Material' => 'Material',
// ])
->options(function () {
$userRights = Filament::auth()->user();
$hasBoth = ($userRights->hasRole(['Super Admin', 'Sales Employee', 'Sales Supervisor Hub', 'Sales Manager']) ?? null);
$hasSerial = ($userRights->hasRole(['Sales Supervisor 1', 'Sales Supervisor Inventory', 'Sales Employee Inventory']) ?? null);
$hasMaterial = $userRights->hasRole('Sales Supervisor 2') ?? null;
$retRes = [
'Serial' => 'Serial',
'Material' => 'Material'
])
->default('Serial')
'Material' => 'Material',
];
if ($hasBoth) {
return $retRes;
} elseif ($hasSerial) {
return ['Serial' => 'Serial'];
} elseif ($hasMaterial) {
return ['Material' => 'Material'];
} else {
return ['Serial' => 'Serial']; // return [];
}
})
// ->default('Serial')
->default(function () {
$userRights = Filament::auth()->user();
$hasBoth = ($userRights->hasRole(['Super Admin', 'Sales Employee', 'Sales Supervisor Hub', 'Sales Manager']) ?? null);
$hasSerial = ($userRights->hasRole(['Sales Supervisor 1', 'Sales Supervisor Inventory', 'Sales Employee Inventory']) ?? null);
$hasMaterial = $userRights->hasRole('Sales Supervisor 2') ?? null;
if ($hasBoth || $hasSerial) {
return 'Serial';
} elseif ($hasMaterial) {
return 'Material';
} else {
return 'Serial'; // return [];
}
})
->inlineLabel(false)
->inline(),
Select::make('Plant')
@@ -1067,6 +1072,7 @@ class InvoiceValidationResource extends Resource
// })
->options(function (callable $get) {
$userHas = Filament::auth()->user()->plant_id;
return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray();
})
->reactive()
@@ -1085,6 +1091,7 @@ class InvoiceValidationResource extends Resource
->nullable()
->options(function (callable $get) {
$pId = $get('Plant');
// if (empty($pId)) {
// return [];
// }
@@ -1111,12 +1118,9 @@ class InvoiceValidationResource extends Resource
->nullable()
->options(function (callable $get) {
$plantId = $get('Plant');
if (!$plantId)
{
if (! $plantId) {
return InvoiceValidation::whereNotNull('operator_id')->select('operator_id')->distinct()->pluck('operator_id', 'operator_id');
}
else
{
} else {
return InvoiceValidation::where('plant_id', $plantId)->whereNotNull('operator_id')->select('operator_id')->distinct()->pluck('operator_id', 'operator_id');
}
})
@@ -1136,13 +1140,13 @@ class InvoiceValidationResource extends Resource
->query(function ($query, array $data) {
// Hide all records initially if no filters are applied
if (empty($data['invoice_type']) || (empty($data['Plant']) && empty($data['invoice_number']) && empty($data['serial_number']) && empty($data['created_from']) && empty($data['created_to']) && empty($data['operator_id']) && empty($data['scanned_status']) && empty($data['sticker_master_id']))) {
if (empty($data['invoice_type']))
{
if (empty($data['invoice_type'])) {
Notification::make()
->title('Please, choose invoice type to filter.')
->danger()
->send();
}
return $query->whereRaw('1 = 0');
}
@@ -1154,7 +1158,7 @@ class InvoiceValidationResource extends Resource
$query->whereNotNull('scanned_status')->where('scanned_status', '!=', '');
} elseif ($data['scanned_status'] == 'Pending') {
// $query->whereNull('scanned_status')->orWhere('scanned_status', '');
$query->where(function ($query) use ($data) {
$query->where(function ($query) {
// if (empty($data['scanned_status']) || $data['scanned_status'] == 'Pending') {
$query->whereNull('scanned_status')->orWhere('scanned_status', '!=', 'Scanned');
// }
@@ -1168,7 +1172,7 @@ class InvoiceValidationResource extends Resource
if ($data['scanned_status'] == 'Scanned') {
$query->whereNotNull('serial_number')->where('serial_number', '!=', '');
} elseif ($data['scanned_status'] == 'Pending') {
$query->where(function ($query) use ($data) {
$query->where(function ($query) {
$query->whereNull('serial_number')->orWhere('serial_number', '=', '');
});
}
@@ -1246,7 +1250,7 @@ class InvoiceValidationResource extends Resource
}
return $indicators;
})
}),
])
->filtersFormMaxHeight('280px')
->actions([
@@ -1258,7 +1262,7 @@ class InvoiceValidationResource extends Resource
Tables\Actions\DeleteBulkAction::make(),
Tables\Actions\ForceDeleteBulkAction::make(),
Tables\Actions\RestoreBulkAction::make(),
FilamentExportBulkAction::make('export')
FilamentExportBulkAction::make('export'),
]),
]);
}