ranjith-dev #476
@@ -14,6 +14,7 @@ class StockDataMasterExporter extends Exporter
|
|||||||
public static function getColumns(): array
|
public static function getColumns(): array
|
||||||
{
|
{
|
||||||
static $rowNumber = 0;
|
static $rowNumber = 0;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
ExportColumn::make('no')
|
ExportColumn::make('no')
|
||||||
->label('NO')
|
->label('NO')
|
||||||
@@ -29,7 +30,7 @@ class StockDataMasterExporter extends Exporter
|
|||||||
->label('TYPE')
|
->label('TYPE')
|
||||||
->formatStateUsing(fn ($state) => match ($state) {
|
->formatStateUsing(fn ($state) => match ($state) {
|
||||||
'0' => 'FG',
|
'0' => 'FG',
|
||||||
'1' => 'SFG',
|
'1' => 'NON-FG',
|
||||||
default => '-',
|
default => '-',
|
||||||
}),
|
}),
|
||||||
ExportColumn::make('location')
|
ExportColumn::make('location')
|
||||||
@@ -93,7 +94,7 @@ class StockDataMasterExporter extends Exporter
|
|||||||
$scanned = $record->scanned_quantity ?? 0;
|
$scanned = $record->scanned_quantity ?? 0;
|
||||||
|
|
||||||
return $scanned + $duplicate + $notInStock;
|
return $scanned + $duplicate + $notInStock;
|
||||||
}),
|
}),
|
||||||
|
|
||||||
ExportColumn::make('stock_difference')
|
ExportColumn::make('stock_difference')
|
||||||
->label('STOCK DIFFERENCE COUNT')
|
->label('STOCK DIFFERENCE COUNT')
|
||||||
@@ -114,7 +115,7 @@ class StockDataMasterExporter extends Exporter
|
|||||||
$difference = $physicalStock - $systemStock;
|
$difference = $physicalStock - $systemStock;
|
||||||
|
|
||||||
return max($difference, 0);
|
return max($difference, 0);
|
||||||
}),
|
}),
|
||||||
ExportColumn::make('created_at')
|
ExportColumn::make('created_at')
|
||||||
->label('CREATED AT'),
|
->label('CREATED AT'),
|
||||||
ExportColumn::make('updated_at')
|
ExportColumn::make('updated_at')
|
||||||
@@ -131,10 +132,10 @@ class StockDataMasterExporter extends Exporter
|
|||||||
|
|
||||||
public static function getCompletedNotificationBody(Export $export): string
|
public static function getCompletedNotificationBody(Export $export): string
|
||||||
{
|
{
|
||||||
$body = 'Your stock data master export has completed and ' . number_format($export->successful_rows) . ' ' . str('row')->plural($export->successful_rows) . ' exported.';
|
$body = 'Your stock data master export has completed and '.number_format($export->successful_rows).' '.str('row')->plural($export->successful_rows).' exported.';
|
||||||
|
|
||||||
if ($failedRowsCount = $export->getFailedRowsCount()) {
|
if ($failedRowsCount = $export->getFailedRowsCount()) {
|
||||||
$body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to export.';
|
$body .= ' '.number_format($failedRowsCount).' '.str('row')->plural($failedRowsCount).' failed to export.';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $body;
|
return $body;
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ use App\Models\Item;
|
|||||||
use App\Models\Plant;
|
use App\Models\Plant;
|
||||||
use App\Models\StickerMaster;
|
use App\Models\StickerMaster;
|
||||||
use App\Models\StockDataMaster;
|
use App\Models\StockDataMaster;
|
||||||
|
use Filament\Actions\Imports\Exceptions\RowImportFailedException;
|
||||||
use Filament\Actions\Imports\ImportColumn;
|
use Filament\Actions\Imports\ImportColumn;
|
||||||
use Filament\Actions\Imports\Importer;
|
use Filament\Actions\Imports\Importer;
|
||||||
use Filament\Actions\Imports\Models\Import;
|
use Filament\Actions\Imports\Models\Import;
|
||||||
use Filament\Facades\Filament;
|
use Filament\Facades\Filament;
|
||||||
use Str;
|
use Str;
|
||||||
use Filament\Actions\Imports\Exceptions\RowImportFailedException;
|
|
||||||
|
|
||||||
class StockDataMasterImporter extends Importer
|
class StockDataMasterImporter extends Importer
|
||||||
{
|
{
|
||||||
@@ -23,46 +23,46 @@ class StockDataMasterImporter extends Importer
|
|||||||
ImportColumn::make('plant')
|
ImportColumn::make('plant')
|
||||||
->requiredMapping()
|
->requiredMapping()
|
||||||
->exampleHeader('PLANT CODE')
|
->exampleHeader('PLANT CODE')
|
||||||
->example('1000')
|
->examples(['1000', '1000'])
|
||||||
->label('PLANT CODE')
|
->label('PLANT CODE')
|
||||||
->relationship(resolveUsing: 'code')
|
->relationship(resolveUsing: 'code')
|
||||||
->rules(['required']),
|
->rules(['required']),
|
||||||
ImportColumn::make('type')
|
ImportColumn::make('type')
|
||||||
->requiredMapping()
|
->requiredMapping()
|
||||||
->exampleHeader('TYPE')
|
->exampleHeader('TYPE')
|
||||||
->example('FG/SFG')
|
->examples(['FG', 'NON-FG'])
|
||||||
->label('TYPE'),
|
->label('TYPE'),
|
||||||
ImportColumn::make('location')
|
ImportColumn::make('location')
|
||||||
->requiredMapping()
|
->requiredMapping()
|
||||||
->exampleHeader('LOCATION')
|
->exampleHeader('LOCATION')
|
||||||
->example('2001')
|
->examples(['2001', '2002'])
|
||||||
->label('LOCATION')
|
->label('LOCATION')
|
||||||
->rules(['required']),
|
->rules(['required']),
|
||||||
ImportColumn::make('item_reference')// stickerMaster
|
ImportColumn::make('item_reference')
|
||||||
->requiredMapping()
|
->requiredMapping()
|
||||||
->exampleHeader('ITEM CODE')
|
->exampleHeader('ITEM CODE')
|
||||||
->example('123456')
|
->examples(['123456', '246118'])
|
||||||
->label('ITEM CODE')
|
->label('ITEM CODE')
|
||||||
->rules(['required']),
|
->rules(['required']),
|
||||||
ImportColumn::make('serial_number')
|
ImportColumn::make('serial_number')
|
||||||
->requiredMapping()
|
->requiredMapping()
|
||||||
->exampleHeader('SERIAL NUMBER')
|
->exampleHeader('SERIAL NUMBER')
|
||||||
->example('200235236622')
|
->examples(['200235236622', '200235236623'])
|
||||||
->label('SERIAL NUMBER'),
|
->label('SERIAL NUMBER'),
|
||||||
ImportColumn::make('batch')
|
ImportColumn::make('batch')
|
||||||
->requiredMapping()
|
->requiredMapping()
|
||||||
->exampleHeader('BATCH')
|
->exampleHeader('BATCH')
|
||||||
->example('20102')
|
->examples(['20102', '20103'])
|
||||||
->label('BATCH'),
|
->label('BATCH'),
|
||||||
ImportColumn::make('quantity')
|
ImportColumn::make('quantity')
|
||||||
->requiredMapping()
|
->requiredMapping()
|
||||||
->exampleHeader('QUANTITY')
|
->exampleHeader('QUANTITY')
|
||||||
->example('1')
|
->examples(['1', '1'])
|
||||||
->label('QUANTITY'),
|
->label('QUANTITY'),
|
||||||
ImportColumn::make('doc_no')
|
ImportColumn::make('doc_no')
|
||||||
->requiredMapping()
|
->requiredMapping()
|
||||||
->exampleHeader('DOCUMENT NUMBER')
|
->exampleHeader('DOCUMENT NUMBER')
|
||||||
->example('156566')
|
->examples(['82128', '21222'])
|
||||||
->label('DOCUMENT NUMBER'),
|
->label('DOCUMENT NUMBER'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -86,26 +86,21 @@ class StockDataMasterImporter extends Importer
|
|||||||
|
|
||||||
$operatorName = $user->name;
|
$operatorName = $user->name;
|
||||||
|
|
||||||
|
|
||||||
if ($plantCod == null || $plantCod == '') {
|
if ($plantCod == null || $plantCod == '') {
|
||||||
$warnMsg[] = "Plant code can't be empty!";
|
$warnMsg[] = "Plant code can't be empty!";
|
||||||
}
|
} elseif ($typeValue == null || $typeValue == '') {
|
||||||
else if ($typeValue == null || $typeValue == '') {
|
|
||||||
$warnMsg[] = "Type can't be empty!";
|
$warnMsg[] = "Type can't be empty!";
|
||||||
}
|
} elseif ($iCode == null || $iCode == '') {
|
||||||
else if ($iCode == null || $iCode == '') {
|
|
||||||
$warnMsg[] = "Item code can't be empty!";
|
$warnMsg[] = "Item code can't be empty!";
|
||||||
}
|
} elseif ($location == null || $location == '') {
|
||||||
else if ($location == null || $location == '') {
|
|
||||||
$warnMsg[] = "Location can't be empty!";
|
$warnMsg[] = "Location can't be empty!";
|
||||||
}
|
} elseif ($serialNumber == null || $serialNumber == '') {
|
||||||
else if ($serialNumber == null || $serialNumber == '') {
|
|
||||||
$warnMsg[] = "Serial number can't be empty!";
|
$warnMsg[] = "Serial number can't be empty!";
|
||||||
}
|
}
|
||||||
// else if ($batch == null || $batch == '') {
|
// else if ($batch == null || $batch == '') {
|
||||||
// $warnMsg[] = "Batch can't be empty!";
|
// $warnMsg[] = "Batch can't be empty!";
|
||||||
// }
|
// }
|
||||||
else if ($quantity == null || $quantity == '') {
|
elseif ($quantity == null || $quantity == '') {
|
||||||
$warnMsg[] = "Quantity can't be empty!";
|
$warnMsg[] = "Quantity can't be empty!";
|
||||||
}
|
}
|
||||||
// else if ($docNo == null || $docNo == '') {
|
// else if ($docNo == null || $docNo == '') {
|
||||||
@@ -152,33 +147,27 @@ class StockDataMasterImporter extends Importer
|
|||||||
|
|
||||||
$typeValue = strtoupper($typeValue);
|
$typeValue = strtoupper($typeValue);
|
||||||
|
|
||||||
if (! in_array($typeValue, ['FG', 'SFG'])) {
|
if (! in_array($typeValue, ['FG', 'NON-FG'])) {
|
||||||
$warnMsg[] = 'Invalid type found! It should be either FG or SFG and fg/sfg.';
|
$warnMsg[] = 'Invalid type found! It should be either FG or NON-FG.';
|
||||||
}
|
} elseif (Str::length($location) < 4) {
|
||||||
else if (Str::length($location) < 4) {
|
|
||||||
$warnMsg[] = 'Location should contain minimum 4 digits!';
|
$warnMsg[] = 'Location should contain minimum 4 digits!';
|
||||||
}
|
} elseif (! ctype_digit((string) $location)) {
|
||||||
else if (! ctype_digit((string) $location)) {
|
|
||||||
$warnMsg[] = 'Location must be an integer!';
|
$warnMsg[] = 'Location must be an integer!';
|
||||||
}
|
} elseif (Str::length($serialNumber) < 9) {
|
||||||
else if (Str::length($serialNumber) < 9) {
|
|
||||||
$warnMsg[] = 'Serial number should contain minimum 9 digits!';
|
$warnMsg[] = 'Serial number should contain minimum 9 digits!';
|
||||||
}
|
} elseif (! ctype_alnum($serialNumber)) {
|
||||||
else if (!ctype_alnum($serialNumber)) {
|
|
||||||
$warnMsg[] = 'Serial number should contain alpha-numeric values!';
|
$warnMsg[] = 'Serial number should contain alpha-numeric values!';
|
||||||
}
|
} elseif (! ctype_digit((string) $quantity) || (int) $quantity <= 0) {
|
||||||
|
|
||||||
else if (! ctype_digit((string) $quantity) || (int) $quantity <= 0) {
|
|
||||||
$warnMsg[] = 'Quantity must be an integer and greater than 0!';
|
$warnMsg[] = 'Quantity must be an integer and greater than 0!';
|
||||||
}
|
}
|
||||||
|
|
||||||
if($batch){
|
if ($batch) {
|
||||||
if (Str::length($batch) < 5) {
|
if (Str::length($batch) < 5) {
|
||||||
$warnMsg[] = 'Batch should contain minimum 5 digits!';
|
$warnMsg[] = 'Batch should contain minimum 5 digits!';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($docNo){
|
if ($docNo) {
|
||||||
if (Str::length($docNo) < 5) {
|
if (Str::length($docNo) < 5) {
|
||||||
$warnMsg[] = 'Document number contain minimum 5 digits!';
|
$warnMsg[] = 'Document number contain minimum 5 digits!';
|
||||||
}
|
}
|
||||||
@@ -190,7 +179,7 @@ class StockDataMasterImporter extends Importer
|
|||||||
|
|
||||||
$type = match ($typeValue) {
|
$type = match ($typeValue) {
|
||||||
'FG' => '0',
|
'FG' => '0',
|
||||||
'SFG' => '1',
|
'NON-FG' => '1',
|
||||||
default => null,
|
default => null,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -199,7 +188,7 @@ class StockDataMasterImporter extends Importer
|
|||||||
$record = StockDataMaster::where([
|
$record = StockDataMaster::where([
|
||||||
'plant_id' => $plantId,
|
'plant_id' => $plantId,
|
||||||
'sticker_master_id' => $stickId,
|
'sticker_master_id' => $stickId,
|
||||||
'serial_number' => $serialNumber
|
'serial_number' => $serialNumber,
|
||||||
])->first();
|
])->first();
|
||||||
|
|
||||||
if ($record) {
|
if ($record) {
|
||||||
@@ -234,10 +223,10 @@ class StockDataMasterImporter extends Importer
|
|||||||
|
|
||||||
public static function getCompletedNotificationBody(Import $import): string
|
public static function getCompletedNotificationBody(Import $import): string
|
||||||
{
|
{
|
||||||
$body = 'Your stock data master import has completed and ' . number_format($import->successful_rows) . ' ' . str('row')->plural($import->successful_rows) . ' imported.';
|
$body = 'Your stock data master import has completed and '.number_format($import->successful_rows).' '.str('row')->plural($import->successful_rows).' imported.';
|
||||||
|
|
||||||
if ($failedRowsCount = $import->getFailedRowsCount()) {
|
if ($failedRowsCount = $import->getFailedRowsCount()) {
|
||||||
$body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to import.';
|
$body .= ' '.number_format($failedRowsCount).' '.str('row')->plural($failedRowsCount).' failed to import.';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $body;
|
return $body;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,6 @@
|
|||||||
namespace App\Filament\Resources;
|
namespace App\Filament\Resources;
|
||||||
|
|
||||||
use App\Filament\Resources\DuplicateStockResource\Pages;
|
use App\Filament\Resources\DuplicateStockResource\Pages;
|
||||||
use App\Filament\Resources\DuplicateStockResource\RelationManagers;
|
|
||||||
use App\Models\DuplicateStock;
|
use App\Models\DuplicateStock;
|
||||||
use Filament\Facades\Filament;
|
use Filament\Facades\Filament;
|
||||||
use Filament\Forms;
|
use Filament\Forms;
|
||||||
@@ -97,7 +96,7 @@ class DuplicateStockResource extends Resource
|
|||||||
->searchable()
|
->searchable()
|
||||||
->formatStateUsing(fn ($state) => match ($state) {
|
->formatStateUsing(fn ($state) => match ($state) {
|
||||||
'0' => 'FG',
|
'0' => 'FG',
|
||||||
'1' => 'SFG',
|
'1' => 'NON-FG',
|
||||||
default => '-',
|
default => '-',
|
||||||
})
|
})
|
||||||
->sortable(),
|
->sortable(),
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
namespace App\Filament\Resources;
|
namespace App\Filament\Resources;
|
||||||
|
|
||||||
use App\Filament\Resources\NotInStockResource\Pages;
|
use App\Filament\Resources\NotInStockResource\Pages;
|
||||||
use App\Filament\Resources\NotInStockResource\RelationManagers;
|
|
||||||
use App\Models\NotInStock;
|
use App\Models\NotInStock;
|
||||||
use App\Models\StickerMaster;
|
use App\Models\StickerMaster;
|
||||||
use Filament\Facades\Filament;
|
use Filament\Facades\Filament;
|
||||||
@@ -38,15 +37,15 @@ class NotInStockResource extends Resource
|
|||||||
->required()
|
->required()
|
||||||
->searchable()
|
->searchable()
|
||||||
->options(function ($get) {
|
->options(function ($get) {
|
||||||
if (!$get('plant_id')) {
|
if (! $get('plant_id')) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return StickerMaster::with('item')
|
return StickerMaster::with('item')
|
||||||
->where('plant_id', $get('plant_id'))
|
->where('plant_id', $get('plant_id'))
|
||||||
->get()
|
->get()
|
||||||
->pluck('item.code', 'id')
|
->pluck('item.code', 'id')
|
||||||
->toArray();
|
->toArray();
|
||||||
}),
|
}),
|
||||||
Forms\Components\TextInput::make('location')
|
Forms\Components\TextInput::make('location')
|
||||||
->label('Location'),
|
->label('Location'),
|
||||||
@@ -64,7 +63,7 @@ class NotInStockResource extends Resource
|
|||||||
->label('Type')
|
->label('Type')
|
||||||
->options([
|
->options([
|
||||||
'0' => 'FG',
|
'0' => 'FG',
|
||||||
'1' => 'SFG',
|
'1' => 'NON-FG',
|
||||||
]),
|
]),
|
||||||
Forms\Components\TextInput::make('motor_scanned_status')
|
Forms\Components\TextInput::make('motor_scanned_status')
|
||||||
->label('Motor Scanned Status'),
|
->label('Motor Scanned Status'),
|
||||||
@@ -122,7 +121,7 @@ class NotInStockResource extends Resource
|
|||||||
->searchable()
|
->searchable()
|
||||||
->formatStateUsing(fn ($state) => match ($state) {
|
->formatStateUsing(fn ($state) => match ($state) {
|
||||||
'0' => 'FG',
|
'0' => 'FG',
|
||||||
'1' => 'SFG',
|
'1' => 'NON-FG',
|
||||||
default => '-',
|
default => '-',
|
||||||
})
|
})
|
||||||
->sortable(),
|
->sortable(),
|
||||||
|
|||||||
@@ -5,28 +5,26 @@ namespace App\Filament\Resources;
|
|||||||
use App\Filament\Exports\StockDataMasterExporter;
|
use App\Filament\Exports\StockDataMasterExporter;
|
||||||
use App\Filament\Imports\StockDataMasterImporter;
|
use App\Filament\Imports\StockDataMasterImporter;
|
||||||
use App\Filament\Resources\StockDataMasterResource\Pages;
|
use App\Filament\Resources\StockDataMasterResource\Pages;
|
||||||
use App\Filament\Resources\StockDataMasterResource\RelationManagers;
|
|
||||||
use App\Models\Item;
|
use App\Models\Item;
|
||||||
use App\Models\Plant;
|
use App\Models\Plant;
|
||||||
use App\Models\SerialValidation;
|
|
||||||
use App\Models\StickerMaster;
|
use App\Models\StickerMaster;
|
||||||
use App\Models\StockDataMaster;
|
use App\Models\StockDataMaster;
|
||||||
use Filament\Facades\Filament;
|
use Filament\Facades\Filament;
|
||||||
use Filament\Forms;
|
use Filament\Forms;
|
||||||
|
use Filament\Forms\Components\DateTimePicker;
|
||||||
|
use Filament\Forms\Components\Radio;
|
||||||
|
use Filament\Forms\Components\Select;
|
||||||
|
use Filament\Forms\Components\TextInput;
|
||||||
use Filament\Forms\Form;
|
use Filament\Forms\Form;
|
||||||
|
use Filament\Notifications\Notification;
|
||||||
use Filament\Resources\Resource;
|
use Filament\Resources\Resource;
|
||||||
use Filament\Tables;
|
use Filament\Tables;
|
||||||
use Filament\Tables\Table;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use Illuminate\Database\Eloquent\SoftDeletingScope;
|
|
||||||
use Filament\Tables\Actions\ExportAction;
|
use Filament\Tables\Actions\ExportAction;
|
||||||
use Filament\Tables\Actions\ImportAction;
|
use Filament\Tables\Actions\ImportAction;
|
||||||
use Filament\Tables\Filters\Filter;
|
use Filament\Tables\Filters\Filter;
|
||||||
use Filament\Forms\Components\Select;
|
use Filament\Tables\Table;
|
||||||
use Filament\Forms\Components\TextInput;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Filament\Forms\Components\DateTimePicker;
|
use Illuminate\Database\Eloquent\SoftDeletingScope;
|
||||||
use Filament\Forms\Components\Radio;
|
|
||||||
use Filament\Notifications\Notification;
|
|
||||||
|
|
||||||
class StockDataMasterResource extends Resource
|
class StockDataMasterResource extends Resource
|
||||||
{
|
{
|
||||||
@@ -51,15 +49,15 @@ class StockDataMasterResource extends Resource
|
|||||||
->required()
|
->required()
|
||||||
->searchable()
|
->searchable()
|
||||||
->options(function ($get) {
|
->options(function ($get) {
|
||||||
if (!$get('plant_id')) {
|
if (! $get('plant_id')) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return StickerMaster::with('item')
|
return StickerMaster::with('item')
|
||||||
->where('plant_id', $get('plant_id'))
|
->where('plant_id', $get('plant_id'))
|
||||||
->get()
|
->get()
|
||||||
->pluck('item.code', 'id')
|
->pluck('item.code', 'id')
|
||||||
->toArray();
|
->toArray();
|
||||||
}),
|
}),
|
||||||
Forms\Components\TextInput::make('location')
|
Forms\Components\TextInput::make('location')
|
||||||
->label('Location'),
|
->label('Location'),
|
||||||
@@ -77,7 +75,7 @@ class StockDataMasterResource extends Resource
|
|||||||
->label('Type')
|
->label('Type')
|
||||||
->options([
|
->options([
|
||||||
'0' => 'FG',
|
'0' => 'FG',
|
||||||
'1' => 'SFG',
|
'1' => 'NON-FG',
|
||||||
]),
|
]),
|
||||||
Forms\Components\TextInput::make('motor_scanned_status')
|
Forms\Components\TextInput::make('motor_scanned_status')
|
||||||
->label('Motor Scanned Status'),
|
->label('Motor Scanned Status'),
|
||||||
@@ -135,7 +133,7 @@ class StockDataMasterResource extends Resource
|
|||||||
->searchable()
|
->searchable()
|
||||||
->formatStateUsing(fn ($state) => match ($state) {
|
->formatStateUsing(fn ($state) => match ($state) {
|
||||||
'0' => 'FG',
|
'0' => 'FG',
|
||||||
'1' => 'SFG',
|
'1' => 'NON-FG',
|
||||||
default => '-',
|
default => '-',
|
||||||
})
|
})
|
||||||
->sortable(),
|
->sortable(),
|
||||||
@@ -258,27 +256,27 @@ class StockDataMasterResource extends Resource
|
|||||||
|
|
||||||
return $scanned + $duplicate + $notInStock;
|
return $scanned + $duplicate + $notInStock;
|
||||||
}),
|
}),
|
||||||
Tables\Columns\TextColumn::make('stock_difference')
|
Tables\Columns\TextColumn::make('stock_difference')
|
||||||
->label('Stock Difference Count')
|
->label('Stock Difference Count')
|
||||||
->alignCenter()
|
->alignCenter()
|
||||||
->getStateUsing(function ($record) {
|
->getStateUsing(function ($record) {
|
||||||
|
|
||||||
$duplicate = \App\Models\DuplicateStock::where('stock_data_master_id', $record->id)->count();
|
$duplicate = \App\Models\DuplicateStock::where('stock_data_master_id', $record->id)->count();
|
||||||
|
|
||||||
$notInStock = \App\Models\NotInStock::where('serial_number', $record->serial_number)
|
$notInStock = \App\Models\NotInStock::where('serial_number', $record->serial_number)
|
||||||
->where('plant_id', $record->plant_id)
|
->where('plant_id', $record->plant_id)
|
||||||
->count();
|
->count();
|
||||||
|
|
||||||
$scanned = (int) $record->scanned_quantity;
|
$scanned = (int) $record->scanned_quantity;
|
||||||
|
|
||||||
$physicalStock = $scanned + $duplicate + $notInStock;
|
$physicalStock = $scanned + $duplicate + $notInStock;
|
||||||
|
|
||||||
$systemStock = (int) $record->quantity;
|
$systemStock = (int) $record->quantity;
|
||||||
|
|
||||||
$difference = $physicalStock - $systemStock;
|
$difference = $physicalStock - $systemStock;
|
||||||
|
|
||||||
return max($difference, 0); // prevents negative values
|
return max($difference, 0); // prevents negative values
|
||||||
}),
|
}),
|
||||||
Tables\Columns\TextColumn::make('created_at')
|
Tables\Columns\TextColumn::make('created_at')
|
||||||
->label('Created At')
|
->label('Created At')
|
||||||
->alignCenter()
|
->alignCenter()
|
||||||
@@ -307,7 +305,7 @@ class StockDataMasterResource extends Resource
|
|||||||
->label('Stock Type')
|
->label('Stock Type')
|
||||||
->options([
|
->options([
|
||||||
'0' => 'FG',
|
'0' => 'FG',
|
||||||
'1' => 'SFG',
|
'1' => 'NON-FG',
|
||||||
])
|
])
|
||||||
->inline()
|
->inline()
|
||||||
->default('0')
|
->default('0')
|
||||||
@@ -346,6 +344,7 @@ class StockDataMasterResource extends Resource
|
|||||||
if (empty($pId)) {
|
if (empty($pId)) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return Item::whereHas('stickerMasters', function ($query) use ($pId) {
|
return Item::whereHas('stickerMasters', function ($query) use ($pId) {
|
||||||
if ($pId) {
|
if ($pId) {
|
||||||
$query->where('plant_id', $pId);
|
$query->where('plant_id', $pId);
|
||||||
@@ -389,7 +388,7 @@ class StockDataMasterResource extends Resource
|
|||||||
->native(false),
|
->native(false),
|
||||||
])
|
])
|
||||||
->query(function ($query, array $data) {
|
->query(function ($query, array $data) {
|
||||||
if (!isset($data['type']) && (empty($data['Plant']) && empty($data['location']) && empty($data['serial_number']) && empty($data['created_from']) && empty($data['created_to']) && empty($data['updated_by']) && empty($data['scanned_status']) && empty($data['sticker_master_id']))) {
|
if (! isset($data['type']) && (empty($data['Plant']) && empty($data['location']) && empty($data['serial_number']) && empty($data['created_from']) && empty($data['created_to']) && empty($data['updated_by']) && empty($data['scanned_status']) && empty($data['sticker_master_id']))) {
|
||||||
|
|
||||||
if (empty($data['type'])) {
|
if (empty($data['type'])) {
|
||||||
Notification::make()
|
Notification::make()
|
||||||
@@ -397,16 +396,17 @@ class StockDataMasterResource extends Resource
|
|||||||
->danger()
|
->danger()
|
||||||
->send();
|
->send();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $query->whereRaw('1 = 0');
|
return $query->whereRaw('1 = 0');
|
||||||
}
|
}
|
||||||
|
|
||||||
if($data['type'] != ''){
|
if ($data['type'] != '') {
|
||||||
|
|
||||||
if ($data['type'] == '0') {
|
if ($data['type'] == '0') {
|
||||||
|
|
||||||
$query->where('type', '0');
|
$query->where('type', '0');
|
||||||
|
|
||||||
if (!empty($data['scanned_status'])) {
|
if (! empty($data['scanned_status'])) {
|
||||||
|
|
||||||
if ($data['scanned_status'] == 'Scanned') {
|
if ($data['scanned_status'] == 'Scanned') {
|
||||||
$query->whereNotNull('scanned_status')
|
$query->whereNotNull('scanned_status')
|
||||||
@@ -428,32 +428,31 @@ class StockDataMasterResource extends Resource
|
|||||||
|
|
||||||
if ($data['scanned_status'] == 'Scanned') {
|
if ($data['scanned_status'] == 'Scanned') {
|
||||||
|
|
||||||
$query->whereNotNull('scanned_status')
|
$query->whereNotNull('scanned_status')
|
||||||
->where('scanned_status', '!=', '');
|
->where('scanned_status', '!=', '');
|
||||||
|
|
||||||
} elseif ($data['scanned_status'] == 'Pending') {
|
} elseif ($data['scanned_status'] == 'Pending') {
|
||||||
|
|
||||||
$query->where(function ($q) {
|
$query->where(function ($q) {
|
||||||
$q->whereNull('scanned_status')
|
$q->whereNull('scanned_status')
|
||||||
->orWhere('scanned_status', '!=', 'Scanned');
|
->orWhere('scanned_status', '!=', 'Scanned');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
if ($data['scanned_status']) {
|
if ($data['scanned_status']) {
|
||||||
|
|
||||||
if ($data['scanned_status'] == 'Scanned') {
|
if ($data['scanned_status'] == 'Scanned') {
|
||||||
|
|
||||||
$query->whereNotNull('scanned_status')
|
$query->whereNotNull('scanned_status')
|
||||||
->where('scanned_status', '!=', '');
|
->where('scanned_status', '!=', '');
|
||||||
|
|
||||||
} elseif ($data['scanned_status'] == 'Pending') {
|
} elseif ($data['scanned_status'] == 'Pending') {
|
||||||
|
|
||||||
$query->where(function ($q) {
|
$query->where(function ($q) {
|
||||||
$q->whereNull('scanned_status')
|
$q->whereNull('scanned_status')
|
||||||
->orWhere('scanned_status', '!=', 'Scanned');
|
->orWhere('scanned_status', '!=', 'Scanned');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user