diff --git a/app/Http/Controllers/Admin/Finance/EmployeeAdvanceController.php b/app/Http/Controllers/Admin/Finance/EmployeeAdvanceController.php index 3ecff39..7c484db 100644 --- a/app/Http/Controllers/Admin/Finance/EmployeeAdvanceController.php +++ b/app/Http/Controllers/Admin/Finance/EmployeeAdvanceController.php @@ -5,7 +5,6 @@ use App\Http\Controllers\Concerns\FlashesEntityMessage; use App\Http\Controllers\Concerns\ParsesDataTableQuery; use App\Http\Controllers\Controller; -use App\Http\Requests\Admin\Finance\ApproveEmployeeAdvanceRequest; use App\Http\Requests\Admin\Finance\DestroyEmployeeAdvanceRequest; use App\Http\Requests\Admin\Finance\EmployeeAdvanceRequest; use App\Http\Requests\Admin\Finance\PayEmployeeAdvanceRequest; diff --git a/app/Services/Finance/CashService.php b/app/Services/Finance/CashService.php index 2147d5b..9df8b75 100644 --- a/app/Services/Finance/CashService.php +++ b/app/Services/Finance/CashService.php @@ -30,7 +30,6 @@ public function getDefaultAccount(): CashAccount return CashAccount::query()->firstOrFail(); } - public function paginateForIndex(CashAccount $cashAccount, array $tableQuery, string $referenceType = ''): LengthAwarePaginator { $query = CashTransaction::query() @@ -65,7 +64,6 @@ public function paginateForIndex(CashAccount $cashAccount, array $tableQuery, st }); } - public function deposit(CashAccount $cashAccount, array $validated, User $user): CashTransaction { try { @@ -111,7 +109,6 @@ public function deposit(CashAccount $cashAccount, array $validated, User $user): return $transaction; } - public function withdraw(CashAccount $cashAccount, array $validated, User $user): CashTransaction { try { @@ -258,7 +255,6 @@ public function recordIncoming( } } - public function updateDeposit(CashTransaction $transaction, array $validated): void { $this->ensureEditable($transaction); @@ -412,7 +408,6 @@ public function deleteReferencedTransaction(CashTransaction $transaction): void } } - private function syncPhotos(CashTransaction $transaction, array $validated): void { $this->mediaService->syncCollection( diff --git a/app/Services/Finance/EmployeeAdvanceService.php b/app/Services/Finance/EmployeeAdvanceService.php index d0c76f4..e1a4be9 100644 --- a/app/Services/Finance/EmployeeAdvanceService.php +++ b/app/Services/Finance/EmployeeAdvanceService.php @@ -25,7 +25,6 @@ public function __construct( private readonly PushNotificationService $pushNotificationService, ) {} - public function outstandingSummary(?User $user = null): array { $query = EmployeeAdvance::query() @@ -43,7 +42,6 @@ public function outstandingSummary(?User $user = null): array ]; } - public function paginateForIndex(array $tableQuery, User $user, string $status = ''): LengthAwarePaginator { $query = EmployeeAdvance::query() @@ -70,7 +68,6 @@ public function paginateForIndex(array $tableQuery, User $user, string $status = ->withQueryString(); } - public function create(array $validated, User $user): void { $employee = $this->resolveAuthenticatedEmployee($user); @@ -105,7 +102,6 @@ public function create(array $validated, User $user): void ); } - public function update(EmployeeAdvance $employeeAdvance, array $validated, User $user): void { try { diff --git a/app/Services/Finance/ExpenseService.php b/app/Services/Finance/ExpenseService.php index 00022e6..81ecd65 100644 --- a/app/Services/Finance/ExpenseService.php +++ b/app/Services/Finance/ExpenseService.php @@ -23,7 +23,6 @@ public function __construct( private readonly PushNotificationService $pushNotificationService, ) {} - public function paginateForIndex(array $tableQuery): LengthAwarePaginator { $query = Expense::query() @@ -50,7 +49,6 @@ public function paginateForIndex(array $tableQuery): LengthAwarePaginator }); } - public function create(array $validated, User $user): void { try { @@ -99,7 +97,6 @@ public function create(array $validated, User $user): void ); } - public function update(Expense $expense, array $validated): void { try { @@ -173,7 +170,6 @@ public function delete(Expense $expense): void ); } - private function syncPhotos(Expense $expense, array $validated): void { $this->mediaService->syncCollection( diff --git a/app/Services/Finance/PayrollService.php b/app/Services/Finance/PayrollService.php index 2688f96..2e65746 100644 --- a/app/Services/Finance/PayrollService.php +++ b/app/Services/Finance/PayrollService.php @@ -29,7 +29,6 @@ public function __construct( private readonly PushNotificationService $pushNotificationService, ) {} - public function listPeriods(): Collection { return PayrollPeriod::query() @@ -55,7 +54,6 @@ public function resolvePeriod(?int $periodId): ?PayrollPeriod ->first(); } - public function periodSummary(PayrollPeriod $period, User $user): array { $query = Payroll::query() @@ -79,7 +77,6 @@ public function periodSummary(PayrollPeriod $period, User $user): array ]; } - public function paginateForPeriod(PayrollPeriod $period, array $tableQuery, User $user): LengthAwarePaginator { $query = Payroll::query() @@ -206,7 +203,6 @@ public function generatePayrollsForPeriod(PayrollPeriod $period): void } } - public function addAdjustment(Payroll $payroll, array $validated, User $user): void { @@ -396,7 +392,6 @@ public function pay(Payroll $payroll, User $user): void } } - private function payrollEligibleEmployees(PayrollPeriod $period): Collection { $periodStart = Carbon::create($period->year, $period->month, 1)->startOfMonth(); diff --git a/app/Services/Hr/AttendanceService.php b/app/Services/Hr/AttendanceService.php index 379525a..8167e27 100644 --- a/app/Services/Hr/AttendanceService.php +++ b/app/Services/Hr/AttendanceService.php @@ -46,7 +46,6 @@ public function listForCalendar( ->get(); } - public function todayAttendanceForEmployee(Employee $employee): ?array { $attendance = Attendance::query() @@ -68,7 +67,6 @@ public function isOnLeaveToday(Employee $employee): bool ->exists(); } - public function checkIn(array $validated, User $user): void { $employee = $this->resolveAuthenticatedEmployee($user); @@ -107,7 +105,6 @@ public function checkIn(array $validated, User $user): void ); } - public function checkOut(array $validated, User $user): void { $employee = $this->resolveAuthenticatedEmployee($user); diff --git a/app/Services/Hr/EmployeeService.php b/app/Services/Hr/EmployeeService.php index 5bd694e..ec03d6c 100644 --- a/app/Services/Hr/EmployeeService.php +++ b/app/Services/Hr/EmployeeService.php @@ -21,7 +21,6 @@ public function __construct( private readonly MediaService $mediaService, ) {} - public function paginateForIndex( array $tableQuery, string $role = '', @@ -74,7 +73,6 @@ public function findForEdit(User $user): array ]; } - public function create(array $validated): void { try { @@ -120,7 +118,6 @@ public function create(array $validated): void } } - public function update(User $user, array $validated): void { $employee = $user->employee; @@ -132,7 +129,6 @@ public function update(User $user, array $validated): void 'username' => $validated['username'], ]); - $profile = $user->profile()->updateOrCreate( ['user_id' => $user->id], [ @@ -225,7 +221,6 @@ public function delete(User $user): void } } - private function syncProfilePhoto(UserProfile $profile, array $validated): void { $newFiles = ! empty($validated['profile_photo']) ? [$validated['profile_photo']] : []; diff --git a/app/Services/Hr/LeaveRequestService.php b/app/Services/Hr/LeaveRequestService.php index d49a962..20b5370 100644 --- a/app/Services/Hr/LeaveRequestService.php +++ b/app/Services/Hr/LeaveRequestService.php @@ -23,7 +23,6 @@ public function __construct( private readonly PushNotificationService $pushNotificationService, ) {} - public function paginateForIndex(array $tableQuery, User $user): LengthAwarePaginator { $query = LeaveRequest::query() @@ -48,7 +47,6 @@ public function paginateForIndex(array $tableQuery, User $user): LengthAwarePagi ->withQueryString(); } - public function create(array $validated, User $user): void { $employee = $this->resolveAuthenticatedEmployee($user); @@ -85,7 +83,6 @@ public function create(array $validated, User $user): void ); } - public function update(LeaveRequest $leaveRequest, array $validated, User $user): void { $startDate = Carbon::parse($validated['start_date'])->startOfDay(); diff --git a/app/Services/Manage/CuttingResultPriceResolver.php b/app/Services/Manage/CuttingResultPriceResolver.php index a90e41b..9434f2d 100644 --- a/app/Services/Manage/CuttingResultPriceResolver.php +++ b/app/Services/Manage/CuttingResultPriceResolver.php @@ -20,7 +20,6 @@ public function resolve(int $productVariantId, PriceType $priceType): ?CuttingRe ->first(); } - public function latestPricesForVariant(int $productVariantId): array { $prices = []; @@ -36,7 +35,6 @@ public function latestPricesForVariant(int $productVariantId): array return $prices; } - public function latestPricesForVariants(array $variantIds): Collection { if (empty($variantIds)) { diff --git a/app/Services/Manage/CuttingService.php b/app/Services/Manage/CuttingService.php index 9e64999..53e1fb8 100644 --- a/app/Services/Manage/CuttingService.php +++ b/app/Services/Manage/CuttingService.php @@ -16,7 +16,6 @@ use App\Support\Media\MediaPresenter; use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\Collection as EloquentCollection; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; @@ -72,7 +71,6 @@ public function paginateForIndex(array $tableQuery, User $user): LengthAwarePagi }); } - public function getInProgressCuttings(User $user): Collection { return Cutting::query() @@ -98,7 +96,6 @@ public function getInProgressCuttings(User $user): Collection }); } - public function getCompletedCuttings(User $user): Collection { return Cutting::query() @@ -124,7 +121,6 @@ public function getCompletedCuttings(User $user): Collection }); } - public function rawMaterialCatalog(?Cutting $cutting = null, ?User $user = null): Collection { $selectedPriceIds = $cutting @@ -159,7 +155,6 @@ public function rawMaterialCatalog(?Cutting $cutting = null, ?User $user = null) }); } - public function productCatalog(?Cutting $cutting = null, ?User $user = null): Collection { $selectedVariantIds = $cutting @@ -229,7 +224,6 @@ public function findForEdit(Cutting $cutting): Cutting return $cutting; } - public function draftMaterialsForUser(User $user): array { return $this->draftMaterialsQuery($user) @@ -243,7 +237,6 @@ public function draftMaterialsForUser(User $user): array ->all(); } - public function draftResultsForUser(User $user): array { return $this->draftResultsQuery($user) @@ -257,7 +250,6 @@ public function draftResultsForUser(User $user): array ->all(); } - public function syncDraftMaterial(array $validated, User $user): array { $price = RawMaterialPrice::query() @@ -291,7 +283,6 @@ public function syncDraftMaterial(array $validated, User $user): array return $this->presentDraftMaterial($item); } - public function syncDraftResult(array $validated, User $user): array { $variant = ProductVariant::query() @@ -365,18 +356,16 @@ public function removeDraftResult(User $user, ProductVariant $productVariant): v ->delete(); } - public function create(array $validated, User $user): Cutting { try { $cutting = DB::transaction(function () use ($validated, $user): Cutting { - + $draftMaterials = $this->draftMaterialsQuery($user) ->with('rawMaterialPrice.rawMaterial') ->lockForUpdate() ->get(); - $draftResults = $this->draftResultsQuery($user) ->lockForUpdate() ->get(); @@ -440,7 +429,6 @@ public function create(array $validated, User $user): Cutting return $cutting; } - public function update(Cutting $cutting, array $validated): void { if (! $cutting->status->isEditable()) { @@ -651,7 +639,6 @@ public function transitionStatus( ); } - private function buildMaterials(array $materials): array { return collect($materials) @@ -682,7 +669,6 @@ private function buildMaterials(array $materials): array ->all(); } - private function buildResults(array $results): array { return collect($results) @@ -834,7 +820,6 @@ private function applySorting(Builder $query, string $sort, string $direction): $query->latest(); } - private function draftMaterialsQuery(User $user): Builder { return CuttingMaterial::query() @@ -842,7 +827,6 @@ private function draftMaterialsQuery(User $user): Builder ->where('user_id', $user->id); } - private function draftResultsQuery(User $user): Builder { return CuttingResult::query() @@ -850,7 +834,6 @@ private function draftResultsQuery(User $user): Builder ->where('user_id', $user->id); } - private function presentDraftMaterial(CuttingMaterial $item): array { $price = $item->rawMaterialPrice; @@ -868,7 +851,6 @@ private function presentDraftMaterial(CuttingMaterial $item): array ]; } - private function presentDraftResult(CuttingResult $item): array { $variant = $item->productVariant; @@ -956,7 +938,6 @@ public function calculateCostPerUnit(Cutting $cutting): int return (int) round($this->calculateTotalProductionCost($cutting) / $totalPieces); } - private function storeResultPrices(Cutting $cutting, array $resultPrices): void { $costPerUnit = (int) ($cutting->cost_per_unit ?? $this->calculateCostPerUnit($cutting)); diff --git a/app/Services/Manage/OrderService.php b/app/Services/Manage/OrderService.php index a221e8c..6f9f2fc 100644 --- a/app/Services/Manage/OrderService.php +++ b/app/Services/Manage/OrderService.php @@ -56,7 +56,6 @@ public function stockColumn(ProductStockQuality $quality): string }; } - public function paginateForIndex(array $tableQuery, User $user): LengthAwarePaginator { $query = Order::query() @@ -105,7 +104,6 @@ public function paginateForIndex(array $tableQuery, User $user): LengthAwarePagi }); } - public function customerOptions(): array { return Customer::query() @@ -118,7 +116,6 @@ public function customerOptions(): array ->all(); } - public function marketingOptions(): array { return User::query() @@ -134,7 +131,6 @@ public function marketingOptions(): array ->all(); } - public function storePriceTypeOptions(): array { return collect(PriceType::cases()) @@ -147,7 +143,6 @@ public function storePriceTypeOptions(): array ->all(); } - public function catalogItems(?Order $order = null, ?User $user = null): Collection { $orderVariantIds = $order @@ -283,7 +278,6 @@ public function findForShow(Order $order): Order return $order; } - public function draftItemsForUser(User $user): array { return $this->draftItemsQuery($user) @@ -297,7 +291,6 @@ public function draftItemsForUser(User $user): array ->all(); } - public function syncDraftItem(array $validated, User $user): array { // Force retail price type and stock quality for cashier role @@ -355,7 +348,6 @@ public function removeDraftItem(User $user, ProductVariant $productVariant, Prod ->delete(); } - public function resyncDraftPrices(User $user, string $priceTypeValue): array { // Force retail price type for cashier role @@ -388,7 +380,6 @@ public function resyncDraftPrices(User $user, string $priceTypeValue): array return $this->draftItemsForUser($user); } - public function create(array $validated, User $user): Order { try { @@ -403,7 +394,6 @@ public function create(array $validated, User $user): Order $order = DB::transaction(function () use ($validated, $user): Order { $priceType = $this->resolvePriceType($validated['channel'], $validated['price_type']); - $draftItems = $this->draftItemsQuery($user) ->lockForUpdate() ->get(); @@ -509,7 +499,6 @@ public function create(array $validated, User $user): Order return $order; } - public function update(Order $order, array $validated): void { $order->ensureEditable(); @@ -694,7 +683,6 @@ public function transitionStatus(Order $order, OrderStatus $status): void ); } - private function buildLineItems(array $items, PriceType $priceType): array { return collect($items) @@ -753,7 +741,6 @@ private function resolvePriceType(string $channel, string $priceType): PriceType return $priceTypeEnum; } - private function draftItemsQuery(User $user): Builder { return OrderItem::query() @@ -761,7 +748,6 @@ private function draftItemsQuery(User $user): Builder ->where('user_id', $user->id); } - private function presentDraftItem(OrderItem $item): array { $variant = $item->productVariant; @@ -778,7 +764,6 @@ private function presentDraftItem(OrderItem $item): array ]; } - private function applyDraftPrices(EloquentCollection $items, PriceType $priceType): void { foreach ($items as $index => $item) { @@ -817,7 +802,6 @@ private function availableStock(ProductVariant $variant, ProductStockQuality $st return (int) $variant->{$this->stockColumn($stockQuality)}; } - private function syncPhotos(Order $order, array $validated): void { $paymentType = $validated['payment_type'] ?? null; @@ -834,7 +818,6 @@ private function syncPhotos(Order $order, array $validated): void ); } - private function lineItemsForSnapshot(EloquentCollection|array $items): array { return collect($items) @@ -870,7 +853,6 @@ private function resolveUnitPrice(int $variantId, PriceType $priceType, ?string return (int) $price->price; } - private function presentVariantPrices(int $variantId): array { return collect($this->cuttingResultPriceResolver->latestPricesForVariant($variantId)) diff --git a/app/Services/Manage/OwnerVerificationService.php b/app/Services/Manage/OwnerVerificationService.php index 3d60f38..4a19167 100644 --- a/app/Services/Manage/OwnerVerificationService.php +++ b/app/Services/Manage/OwnerVerificationService.php @@ -15,10 +15,10 @@ use App\Services\Master\ProductService; use App\Services\Master\RawMaterialService; use App\Services\System\PushNotificationService; -use App\Support\ActivityLog\ModelLabel; -use App\Support\OwnerVerification\VerificationChangeFormatter; use App\Services\System\Setting\MarketplaceService; use App\Settings\MarketplaceSettings; +use App\Support\ActivityLog\ModelLabel; +use App\Support\OwnerVerification\VerificationChangeFormatter; use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Database\Eloquent\Builder; use Illuminate\Pagination\LengthAwarePaginator as Paginator; @@ -47,7 +47,6 @@ public function hasPendingMarketplaceVerification(): bool ->exists(); } - public function paginateForIndex( User $user, array $tableQuery, @@ -101,7 +100,6 @@ public function paginateForIndex( ->through(fn (OwnerVerificationRequest $request) => $this->presentRequestRow($request)); } - private function pendingCuttingRows(User $user, array $tableQuery): Collection { $rows = $this->stockService @@ -143,7 +141,6 @@ public function pendingCountForUser(User $user): int return $requestCount + Cutting::query()->pendingVerification()->count(); } - public function subjectTypeOptions(User $user): array { $options = OwnerVerificationRequest::query() @@ -317,7 +314,6 @@ private function clearVerificationRequestMedia(OwnerVerificationRequest $request }; } - private function presentRequestRow(OwnerVerificationRequest $request): array { $payload = is_array($request->payload) ? $request->payload : []; @@ -347,7 +343,6 @@ private function presentRequestRow(OwnerVerificationRequest $request): array ]; } - private function presentCuttingRow(Cutting $cutting): array { $totalPieces = $cutting->results->sum('cutting_result'); @@ -379,7 +374,6 @@ private function presentCuttingRow(Cutting $cutting): array ]; } - private function buildVerificationRequestQuery( User $user, array $tableQuery, @@ -454,7 +448,6 @@ private function shouldIncludeCuttings( return Cutting::query()->pendingVerification()->exists(); } - private function makePaginator( Collection $items, int $total, @@ -490,7 +483,7 @@ private function requestTitle(OwnerVerificationRequest $request): string $payload = is_array($request->payload) ? $request->payload : []; $newData = $payload['new'] ?? []; - return ($newData['product_name'] ?? 'Produk') . ' - ' . ($newData['variant_name'] ?? $request->subject->name); + return ($newData['product_name'] ?? 'Produk').' - '.($newData['variant_name'] ?? $request->subject->name); } $payload = is_array($request->payload) ? $request->payload : []; diff --git a/app/Services/Manage/PurchaseService.php b/app/Services/Manage/PurchaseService.php index f224f49..3450f78 100644 --- a/app/Services/Manage/PurchaseService.php +++ b/app/Services/Manage/PurchaseService.php @@ -16,7 +16,6 @@ use App\Support\Media\MediaPresenter; use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\Collection as EloquentCollection; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; @@ -31,7 +30,6 @@ public function __construct( private readonly PushNotificationService $pushNotificationService, ) {} - public function paginateForIndex(array $tableQuery): LengthAwarePaginator { $query = Purchase::query() @@ -76,7 +74,6 @@ public function paginateForIndex(array $tableQuery): LengthAwarePaginator }); } - public function supplierOptions(): array { return Supplier::query() @@ -89,7 +86,6 @@ public function supplierOptions(): array ->all(); } - public function catalogItems(?Purchase $purchase = null, ?User $user = null): Collection { $purchasePriceIds = $purchase @@ -150,7 +146,6 @@ public function findForEdit(Purchase $purchase): Purchase return $purchase; } - public function draftItemsForUser(User $user): array { return $this->draftItemsQuery($user) @@ -164,7 +159,6 @@ public function draftItemsForUser(User $user): array ->all(); } - public function syncDraftItem(array $validated, User $user): array { $price = RawMaterialPrice::query() @@ -205,12 +199,11 @@ public function removeDraftItem(User $user, RawMaterialPrice $rawMaterialPrice): ->delete(); } - public function create(array $validated, User $user): Purchase { try { $purchase = DB::transaction(function () use ($validated, $user): Purchase { - + $draftItems = $this->draftItemsQuery($user) ->lockForUpdate() ->get(); @@ -282,7 +275,6 @@ public function create(array $validated, User $user): Purchase return $purchase; } - public function update(Purchase $purchase, array $validated, User $user): void { $purchase->load(['supplier', 'items.rawMaterialPrice.rawMaterial:id,name']); @@ -434,7 +426,6 @@ public function applyDelete(OwnerVerificationRequest $verificationRequest): void $this->executeDelete($purchase); } - private function buildLineItems(array $items): array { return collect($items) @@ -461,7 +452,6 @@ private function buildLineItems(array $items): array ->all(); } - private function syncPhotos(Purchase $purchase, array $validated): void { $this->mediaService->syncCollection( @@ -475,7 +465,6 @@ private function syncPhotos(Purchase $purchase, array $validated): void ); } - private function draftItemsQuery(User $user): Builder { return PurchaseItem::query() @@ -483,7 +472,6 @@ private function draftItemsQuery(User $user): Builder ->where('user_id', $user->id); } - private function presentDraftItem(PurchaseItem $item): array { $price = $item->rawMaterialPrice; @@ -561,7 +549,6 @@ private function executeDelete(Purchase $purchase): void }); } - private function applyPayloadToPurchase( Purchase $purchase, array $payload, @@ -601,7 +588,6 @@ private function applyPayloadToPurchase( }); } - private function snapshotPurchase(Purchase $purchase): array { $purchase->load([ @@ -631,7 +617,6 @@ private function snapshotPurchase(Purchase $purchase): array ]; } - private function buildPayloadFromValidated(array $validated): array { $lineItems = $this->enrichLineItems($this->buildLineItems($validated['items'])); @@ -654,7 +639,6 @@ private function buildPayloadFromValidated(array $validated): array ]; } - private function enrichLineItems(array $lineItems): array { $prices = RawMaterialPrice::query() @@ -675,7 +659,6 @@ private function enrichLineItems(array $lineItems): array ->all(); } - private function syncRequestPhotos(OwnerVerificationRequest $verificationRequest, array $validated): void { $this->mediaService->syncCollection( @@ -689,7 +672,6 @@ private function syncRequestPhotos(OwnerVerificationRequest $verificationRequest ); } - private function applyRequestPhotos( OwnerVerificationRequest $verificationRequest, Purchase $purchase, @@ -710,7 +692,6 @@ private function applyRequestPhotos( } } - private function payloadNew(OwnerVerificationRequest $verificationRequest): array { $payload = $verificationRequest->payload ?? []; diff --git a/app/Services/Manage/StockRetailService.php b/app/Services/Manage/StockRetailService.php index 231b6fa..4044d7d 100644 --- a/app/Services/Manage/StockRetailService.php +++ b/app/Services/Manage/StockRetailService.php @@ -19,7 +19,6 @@ public function __construct( private readonly PushNotificationService $pushNotificationService, ) {} - public function transfer(int $variantId, int $quantity, User $user, ?string $notes = null): OwnerVerificationRequest { if ($quantity <= 0) { @@ -100,7 +99,6 @@ public function transfer(int $variantId, int $quantity, User $user, ?string $not } } - public function applyStockRetailTransfer(OwnerVerificationRequest $request): void { $payload = $request->payload ?? []; @@ -137,7 +135,6 @@ public function applyStockRetailTransfer(OwnerVerificationRequest $request): voi }); } - public function rejectStockRetailTransfer(OwnerVerificationRequest $request): void { // No-op: nothing was changed yet, so nothing to rollback. diff --git a/app/Services/Manage/StockService.php b/app/Services/Manage/StockService.php index 4b084ef..7109d90 100644 --- a/app/Services/Manage/StockService.php +++ b/app/Services/Manage/StockService.php @@ -20,7 +20,6 @@ public function __construct( private readonly PushNotificationService $pushNotificationService, ) {} - public function getPendingVerificationCuttings(User $user): Collection { return Cutting::query() @@ -39,7 +38,6 @@ public function getPendingVerificationCuttings(User $user): Collection }); } - public function getPendingApprovalCuttings(User $user): Collection { return Cutting::query() @@ -60,7 +58,6 @@ public function getPendingApprovalCuttings(User $user): Collection }); } - public function submitVerification( Cutting $cutting, User $user, @@ -125,7 +122,6 @@ public function submitVerification( ); } - public function approveVerification( Cutting $cutting, User $user, @@ -176,7 +172,6 @@ public function approveVerification( ); } - public function rejectVerification( Cutting $cutting, User $user, @@ -245,7 +240,6 @@ private function applyProductStockOnVerify(Cutting $cutting): void } } - private function storeResultPrices(Cutting $cutting, array $resultPrices): void { // Extract harga_modal from the first variant's prices and set as cost_per_unit @@ -285,7 +279,6 @@ private function storeResultPrices(Cutting $cutting, array $resultPrices): void } } - private function applyResultPricesToProducts(Cutting $cutting): void { $resultPrices = $cutting->resultPrices()->with('productVariant')->get(); diff --git a/app/Services/Manage/StokOpnameService.php b/app/Services/Manage/StokOpnameService.php index b018652..8fd8e4a 100644 --- a/app/Services/Manage/StokOpnameService.php +++ b/app/Services/Manage/StokOpnameService.php @@ -4,6 +4,7 @@ use App\Enums\StokOpnameStatus; use App\Models\Product; +use App\Models\ProductVariant; use App\Models\StokOpname; use App\Models\User; use App\Services\System\PushNotificationService; @@ -19,7 +20,6 @@ public function __construct( private readonly PushNotificationService $pushNotificationService, ) {} - public function paginateForIndex(array $tableQuery): LengthAwarePaginator { $query = StokOpname::query() @@ -44,7 +44,6 @@ public function paginateForIndex(array $tableQuery): LengthAwarePaginator ->withQueryString(); } - public function catalogItems(): array { return Product::query() @@ -69,7 +68,6 @@ public function catalogItems(): array ->toArray(); } - public function findForEdit(StokOpname $stokOpname): array { $stokOpname->load(['items.productVariant.product', 'createdBy.profile']); @@ -96,7 +94,6 @@ public function findForEdit(StokOpname $stokOpname): array ]; } - public function create(array $validated, User $user): StokOpname { try { @@ -125,7 +122,6 @@ public function create(array $validated, User $user): StokOpname } } - public function update(StokOpname $stokOpname, array $validated): void { if ($stokOpname->status !== StokOpnameStatus::DRAFT && $stokOpname->status !== StokOpnameStatus::REJECTED) { @@ -183,7 +179,6 @@ public function delete(StokOpname $stokOpname): void } } - public function submit(StokOpname $stokOpname, User $user): void { if ($stokOpname->status !== StokOpnameStatus::DRAFT && $stokOpname->status !== StokOpnameStatus::REJECTED) { @@ -224,7 +219,6 @@ public function submit(StokOpname $stokOpname, User $user): void ); } - public function verify(StokOpname $stokOpname, User $user, ?string $verificationNotes = null): void { if ($stokOpname->status !== StokOpnameStatus::PENDING) { @@ -269,7 +263,6 @@ public function verify(StokOpname $stokOpname, User $user, ?string $verification ); } - public function reject(StokOpname $stokOpname, User $user, string $reason): void { if ($stokOpname->status !== StokOpnameStatus::PENDING) { @@ -306,7 +299,6 @@ public function reject(StokOpname $stokOpname, User $user, string $reason): void ); } - public function autoSave(array $validated, User $user): StokOpname { try { @@ -345,13 +337,12 @@ public function autoSave(array $validated, User $user): StokOpname } } - private function syncItems(StokOpname $stokOpname, array $items): void { $stokOpname->items()->delete(); foreach ($items as $item) { - $systemStock = \App\Models\ProductVariant::find($item['product_variant_id'])?->stock ?? 0; + $systemStock = ProductVariant::find($item['product_variant_id'])?->stock ?? 0; $stokOpname->items()->create([ 'product_variant_id' => $item['product_variant_id'], diff --git a/app/Services/Master/ProductService.php b/app/Services/Master/ProductService.php index 82e9215..ce80ce2 100644 --- a/app/Services/Master/ProductService.php +++ b/app/Services/Master/ProductService.php @@ -27,7 +27,6 @@ public function __construct( private readonly PushNotificationService $pushNotificationService, ) {} - public function paginateForIndex(array $tableQuery, string $isActive, string $categoryId = '', string $stockStatus = ''): LengthAwarePaginator { $query = Product::query() @@ -114,7 +113,6 @@ public function findForEdit(Product $product): Product return $product; } - public function create(array $validated, User $user): void { try { @@ -169,7 +167,6 @@ public function create(array $validated, User $user): void ); } - public function update(Product $product, array $validated, User $user): void { try { @@ -243,7 +240,6 @@ public function delete(Product $product, User $user): void ); } - public function toggleStatus(Product $product, array $validated, User $user): void { try { @@ -348,7 +344,6 @@ public function applyUpdate(OwnerVerificationRequest $verificationRequest): void $this->applyPayloadToProduct($product, $this->payloadNew($verificationRequest), $verificationRequest); } - private function applyPayloadToProduct( Product $product, array $payload, @@ -500,7 +495,6 @@ private function rollbackUpdate(OwnerVerificationRequest $verificationRequest): $this->applyPayloadToProduct($product, $oldPayload); } - private function payloadOld(OwnerVerificationRequest $verificationRequest): array { $payload = $verificationRequest->payload ?? []; @@ -512,7 +506,6 @@ private function payloadOld(OwnerVerificationRequest $verificationRequest): arra return []; } - private function payloadNew(OwnerVerificationRequest $verificationRequest): array { $payload = $verificationRequest->payload ?? []; @@ -524,7 +517,6 @@ private function payloadNew(OwnerVerificationRequest $verificationRequest): arra return $payload; } - private function snapshotProduct(Product $product): array { $product->load(['categories', 'variants']); @@ -545,7 +537,6 @@ private function snapshotProduct(Product $product): array ]); } - private function enrichPayload(array $data): array { $categoryIds = $data['category_ids'] ?? []; @@ -557,7 +548,6 @@ private function enrichPayload(array $data): array return $data; } - private function buildPayloadFromValidated(array $validated): array { return [ @@ -576,7 +566,6 @@ private function buildPayloadFromValidated(array $validated): array ]; } - private function syncVariantImages( ProductVariant $variant, array $variantData, @@ -593,7 +582,6 @@ private function syncVariantImages( ); } - private function syncRequestVariantImages( OwnerVerificationRequest $verificationRequest, array $variantData, @@ -613,7 +601,6 @@ private function syncRequestVariantImages( ); } - private function applyVariantImageChanges( OwnerVerificationRequest $verificationRequest, ProductVariant $variant, diff --git a/app/Services/Master/RawMaterialService.php b/app/Services/Master/RawMaterialService.php index 3d54598..4e1bd47 100644 --- a/app/Services/Master/RawMaterialService.php +++ b/app/Services/Master/RawMaterialService.php @@ -27,7 +27,6 @@ public function __construct( private readonly PushNotificationService $pushNotificationService, ) {} - public function paginateForIndex(array $tableQuery, string $isActive, string $stockStatus = ''): LengthAwarePaginator { $query = RawMaterial::query() @@ -108,7 +107,6 @@ public function findForEdit(RawMaterial $rawMaterial): RawMaterial return $rawMaterial; } - public function create(array $validated, User $user): void { try { @@ -155,7 +153,6 @@ public function create(array $validated, User $user): void ); } - public function update(RawMaterial $rawMaterial, array $validated, User $user): void { try { @@ -229,7 +226,6 @@ public function delete(RawMaterial $rawMaterial, User $user): void ); } - public function toggleStatus(RawMaterial $rawMaterial, array $validated, User $user): void { try { @@ -387,7 +383,6 @@ public function applyToggleStatus(OwnerVerificationRequest $verificationRequest) ]); } - private function applyPayloadToRawMaterial( RawMaterial $rawMaterial, array $payload, @@ -482,7 +477,6 @@ private function rollbackUpdate(OwnerVerificationRequest $verificationRequest): $this->applyPayloadToRawMaterial($rawMaterial, $oldPayload); } - private function payloadOld(OwnerVerificationRequest $verificationRequest): array { $payload = $verificationRequest->payload ?? []; @@ -494,7 +488,6 @@ private function payloadOld(OwnerVerificationRequest $verificationRequest): arra return []; } - private function payloadNew(OwnerVerificationRequest $verificationRequest): array { $payload = $verificationRequest->payload ?? []; @@ -506,7 +499,6 @@ private function payloadNew(OwnerVerificationRequest $verificationRequest): arra return $payload; } - private function snapshotRawMaterial(RawMaterial $rawMaterial): array { $rawMaterial->load(['prices']); @@ -526,7 +518,6 @@ private function snapshotRawMaterial(RawMaterial $rawMaterial): array ]); } - private function enrichPayload(array $data): array { if (isset($data['unit'])) { @@ -541,7 +532,6 @@ private function enrichPayload(array $data): array return $data; } - private function buildPayloadFromValidated(array $validated): array { return [ @@ -570,7 +560,6 @@ private function applySorting(Builder $query, string $sort, string $direction): $query->latest(); } - private function createPrice(RawMaterial $rawMaterial, array $priceData, int $index): RawMaterialPrice { $price = $rawMaterial->prices()->create([ @@ -584,7 +573,6 @@ private function createPrice(RawMaterial $rawMaterial, array $priceData, int $in return $price; } - private function syncPriceImages(RawMaterialPrice $price, array $priceData, int $index): void { $this->mediaService->syncCollection( @@ -598,7 +586,6 @@ private function syncPriceImages(RawMaterialPrice $price, array $priceData, int ); } - private function syncRequestPriceImages( OwnerVerificationRequest $verificationRequest, array $priceData, @@ -618,7 +605,6 @@ private function syncRequestPriceImages( ); } - private function applyPriceImageChanges( OwnerVerificationRequest $verificationRequest, RawMaterialPrice $price, diff --git a/app/Services/Media/MediaService.php b/app/Services/Media/MediaService.php index 0983b4a..4dc28fa 100644 --- a/app/Services/Media/MediaService.php +++ b/app/Services/Media/MediaService.php @@ -12,7 +12,6 @@ class MediaService { - public function syncCollection( HasMedia $model, string $collection, @@ -115,7 +114,6 @@ public function replaceSingleFile( return $this->addUploadedFile($model, $file, $collection, $type); } - private function customProperties(HasMedia $model, ?string $type): array { $properties = [ diff --git a/app/Services/System/AnalysisService.php b/app/Services/System/AnalysisService.php index 00bb366..263b7c8 100644 --- a/app/Services/System/AnalysisService.php +++ b/app/Services/System/AnalysisService.php @@ -293,7 +293,7 @@ public function getExpenseSummary(?Carbon $startDate = null, ?Carbon $endDate = ->first(); $purchaseTotal = (int) ($purchase->total ?? 0); - if (auth()->user()?->hasRole(\App\Enums\Role::ADMIN_TOKO->value)) { + if (auth()->user()?->hasRole(Role::ADMIN_TOKO->value)) { $purchaseTotal = 0; } $expenseTotal = (int) ($expenses->total ?? 0); @@ -352,7 +352,7 @@ public function getMonthlyExpense(?Carbon $startDate = null, ?Carbon $endDate = $monthLabel = $current->locale('id')->translatedFormat('M Y'); $purchaseAmount = (int) ($purchases->firstWhere('month_key', $key)->total ?? 0); - if (auth()->user()?->hasRole(\App\Enums\Role::ADMIN_TOKO->value)) { + if (auth()->user()?->hasRole(Role::ADMIN_TOKO->value)) { $purchaseAmount = 0; } $expenseAmount = (int) ($expenses->firstWhere('month_key', $key)->total ?? 0); @@ -433,7 +433,7 @@ public function getProfitMetrics(?Carbon $startDate = null, ?Carbon $endDate = n ->when($startDate && $endDate, fn ($q) => $q->whereBetween('purchases.created_at', [$startDate, $endDate])) ->sum('total'); - if (auth()->user()?->hasRole(\App\Enums\Role::ADMIN_TOKO->value)) { + if (auth()->user()?->hasRole(Role::ADMIN_TOKO->value)) { $purchaseTotal = 0; } diff --git a/app/Services/System/DashboardService.php b/app/Services/System/DashboardService.php index 851c09c..a60fa6f 100644 --- a/app/Services/System/DashboardService.php +++ b/app/Services/System/DashboardService.php @@ -5,6 +5,7 @@ use App\Enums\OrderChannel; use App\Enums\OrderStatus; use App\Enums\PaymentType; +use App\Enums\Role; use App\Models\Attendance; use App\Models\CashAccount; use App\Models\CashTransaction; @@ -19,7 +20,6 @@ class DashboardService { - public function getTodayAttendanceForUser(User $user): ?array { $employee = $user->employee; @@ -160,7 +160,7 @@ public function getExpenseSummary(): array ->first(); $purchaseTotal = (int) ($purchase->total ?? 0); - if (auth()->user()?->hasRole(\App\Enums\Role::ADMIN_TOKO->value)) { + if (auth()->user()?->hasRole(Role::ADMIN_TOKO->value)) { $purchaseTotal = 0; } $expenseTotal = (int) ($expenses->total ?? 0); diff --git a/app/Services/System/PushNotificationService.php b/app/Services/System/PushNotificationService.php index f19fed8..6d2e90e 100644 --- a/app/Services/System/PushNotificationService.php +++ b/app/Services/System/PushNotificationService.php @@ -6,19 +6,16 @@ class PushNotificationService { - public function sendToRoles(string $title, string $body, array $roles, string $url = '/admin/dashboard'): void { SendPushNotificationJob::dispatch($title, $body, $url, $roles); } - public function sendToUser(string $title, string $body, int $userId, string $url = '/admin/dashboard'): void { SendPushNotificationJob::dispatch($title, $body, $url, [], $userId); } - public function sendToAll(string $title, string $body, string $url = '/admin/dashboard'): void { SendPushNotificationJob::dispatch($title, $body, $url, []); diff --git a/app/Services/System/PushSubscriptionService.php b/app/Services/System/PushSubscriptionService.php index 01e1334..46bf2c7 100644 --- a/app/Services/System/PushSubscriptionService.php +++ b/app/Services/System/PushSubscriptionService.php @@ -6,7 +6,6 @@ class PushSubscriptionService { - public function updateOrCreateSubscription(array $validated, int $userId): void { PushSubscription::updateOrCreate( @@ -21,7 +20,6 @@ public function updateOrCreateSubscription(array $validated, int $userId): void ); } - public function deleteSubscription(string $endpoint, int $userId): void { PushSubscription::where('user_id', $userId) diff --git a/app/Services/System/RoleService.php b/app/Services/System/RoleService.php index 117dade..33f41e5 100644 --- a/app/Services/System/RoleService.php +++ b/app/Services/System/RoleService.php @@ -2,8 +2,8 @@ namespace App\Services\System; -use App\Enums\Role as EnumsRole; use App\Enums\Permission as PermissionEnum; +use App\Enums\Role as EnumsRole; use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\DB; diff --git a/app/Services/System/Setting/MarketplaceService.php b/app/Services/System/Setting/MarketplaceService.php index ecb9b14..fded44c 100644 --- a/app/Services/System/Setting/MarketplaceService.php +++ b/app/Services/System/Setting/MarketplaceService.php @@ -20,7 +20,6 @@ public function __construct( private readonly PushNotificationService $pushNotificationService, ) {} - private function tiktokFeeKeys(): array { return [ @@ -33,7 +32,6 @@ private function tiktokFeeKeys(): array ]; } - private function shopeeFeeKeys(): array { return [ @@ -153,7 +151,6 @@ public function applyVerificationRequest(OwnerVerificationRequest $request): voi $this->saveSettings($newPayload); } - public function buildOrderSnapshot(OrderChannel $channel, int $totalAmount, array $lineItems, bool $isAffiliate = false): ?array { $feeSnapshot = $this->feeRulesForChannel($channel); @@ -186,7 +183,6 @@ public function buildOrderSnapshot(OrderChannel $channel, int $totalAmount, arra ]; } - private function excludeAffiliateFee(array $fees, OrderChannel $channel): array { $affiliateKey = match ($channel) { @@ -206,7 +202,6 @@ private function excludeAffiliateFee(array $fees, OrderChannel $channel): array return $fees; } - private function feeRulesForChannel(OrderChannel $channel): ?array { $settings = app(MarketplaceSettings::class); @@ -241,13 +236,11 @@ private function feeRulesForChannel(OrderChannel $channel): ?array }; } - private function presentFeeRule(array $data): array { return MarketplaceFeeRule::fromArray($data)->toArray(); } - private function normalizeFeeRule(array $data): array { return MarketplaceFeeRule::fromArray($data)->toArray(); diff --git a/app/Support/ActivityLog/ModelLabel.php b/app/Support/ActivityLog/ModelLabel.php index 4456cc2..51256bf 100644 --- a/app/Support/ActivityLog/ModelLabel.php +++ b/app/Support/ActivityLog/ModelLabel.php @@ -31,6 +31,7 @@ use App\Models\SystemConfiguration; use App\Models\User; use App\Models\UserProfile; +use App\Settings\MarketplaceSettings; class ModelLabel { @@ -67,7 +68,7 @@ class ModelLabel SystemConfiguration::class => 'Konfigurasi Sistem', User::class => 'Pengguna', UserProfile::class => 'Profil Pengguna', - \App\Settings\MarketplaceSettings::class => 'Pengaturan Marketplace', + MarketplaceSettings::class => 'Pengaturan Marketplace', ]; public static function for(?string $modelClass): string diff --git a/app/Support/OwnerVerification/VerificationChangeFormatter.php b/app/Support/OwnerVerification/VerificationChangeFormatter.php index 9b5aa22..aba59c8 100644 --- a/app/Support/OwnerVerification/VerificationChangeFormatter.php +++ b/app/Support/OwnerVerification/VerificationChangeFormatter.php @@ -134,8 +134,8 @@ private static function presentValue(string $field, mixed $value): mixed $val = $value['value']; $formattedValue = $value['value_type'] === 'percent' - ? rtrim(rtrim(number_format($val, 2, ',', '.'), '0'), ',') . '%' - : 'Rp ' . number_format($val, 0, ',', '.'); + ? rtrim(rtrim(number_format($val, 2, ',', '.'), '0'), ',').'%' + : 'Rp '.number_format($val, 0, ',', '.'); $scopeStr = $value['scope'] === 'item' ? 'per Item' : 'per Transaksi'; diff --git a/routes/web.php b/routes/web.php index 8a6a43b..fd7c9cb 100644 --- a/routes/web.php +++ b/routes/web.php @@ -21,17 +21,17 @@ use App\Http\Controllers\Admin\Manage\OwnerVerificationController; use App\Http\Controllers\Admin\Manage\Purchase\PurchaseController; use App\Http\Controllers\Admin\Manage\Purchase\PurchaseDraftItemController; -use App\Http\Controllers\Admin\Manage\StokOpnameController; use App\Http\Controllers\Admin\Manage\Stock\StockController; use App\Http\Controllers\Admin\Manage\Stock\StockRetailController; +use App\Http\Controllers\Admin\Manage\StokOpnameController; use App\Http\Controllers\Admin\Master\CategoryController; use App\Http\Controllers\Admin\Master\CustomerController; use App\Http\Controllers\Admin\Master\ProductController; use App\Http\Controllers\Admin\Master\RawMaterialController; use App\Http\Controllers\Admin\Master\SupplierController; +use App\Http\Controllers\Admin\NotificationController; use App\Http\Controllers\Admin\System\ActivityLogController; use App\Http\Controllers\Admin\System\RoleController; -use App\Http\Controllers\Admin\NotificationController; use App\Http\Controllers\Admin\System\SettingController; use App\Http\Controllers\Auth\LoginController; use App\Http\Controllers\Auth\LogoutController; diff --git a/tests/Feature/Admin/Master/RawMaterialTest.php b/tests/Feature/Admin/Master/RawMaterialTest.php index 699dbe6..6b2aaf2 100644 --- a/tests/Feature/Admin/Master/RawMaterialTest.php +++ b/tests/Feature/Admin/Master/RawMaterialTest.php @@ -4,7 +4,6 @@ use App\Enums\OwnerVerificationStatus; use App\Enums\Permission as PermissionEnum; use App\Enums\RawMaterialUnit; -use App\Models\OwnerVerificationRequest; use App\Models\RawMaterial; use App\Models\RawMaterialPrice; use App\Models\User; diff --git a/tests/Pest.php b/tests/Pest.php index a6141c4..a269196 100644 --- a/tests/Pest.php +++ b/tests/Pest.php @@ -1,5 +1,7 @@ pending()->latest()->firstOrFail(); + $verificationRequest = OwnerVerificationRequest::query()->pending()->latest()->firstOrFail(); test()->actingAs($verifier) ->post(route('admin.manage.owner_verifications.approve_request', $verificationRequest))