| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- namespace App\Http\Controllers;
- use App\Http\Requests\SettlePayableRequest;
- use App\Http\Requests\StoreFranchisorReceivableRequest;
- use App\Http\Resources\FranchiseeAccountReceiveResource;
- use App\Models\FranchiseeAccountReceive;
- use App\Services\FranchisorReceivableService;
- use Illuminate\Http\JsonResponse;
- use Illuminate\Http\Request;
- class FranchiseeAccountReceiveController extends Controller
- {
- public function __construct(
- protected FranchisorReceivableService $service,
- ) {}
- /**
- * Lista, na visão consolidada do Franqueador, os títulos a receber das
- * franquias (TBR gerada). É o mesmo registro que, do lado da franquia,
- * representa o "contas a pagar".
- */
- public function index(Request $request): JsonResponse
- {
- $query = FranchiseeAccountReceive::with(['unit', 'details', 'planAccount'])
- ->orderByDesc('due_date')
- ->orderByDesc('id');
- if ($request->filled('status')) {
- $query->where('status', $request->query('status'));
- }
- if ($request->filled('unit_id')) {
- $query->where('unit_id', $request->query('unit_id'));
- }
- return $this->successResponse(
- payload: FranchiseeAccountReceiveResource::collection($query->get()),
- );
- }
- public function store(StoreFranchisorReceivableRequest $request): JsonResponse
- {
- $item = $this->service->createManual($request->validated());
- return $this->successResponse(
- payload: new FranchiseeAccountReceiveResource($item),
- message: __('messages.created'),
- code: 201,
- );
- }
- public function settle(SettlePayableRequest $request, int $id): JsonResponse
- {
- $item = FranchiseeAccountReceive::find($id);
- if (! $item) {
- return $this->errorResponse(message: 'Conta a receber não encontrada', code: 404);
- }
- return $this->successResponse(
- payload: new FranchiseeAccountReceiveResource($this->service->settle($item, $request->validated())),
- message: 'Baixa realizada com sucesso',
- );
- }
- public function reopen(int $id): JsonResponse
- {
- $item = FranchiseeAccountReceive::find($id);
- if (! $item) {
- return $this->errorResponse(message: 'Conta a receber não encontrada', code: 404);
- }
- return $this->successResponse(
- payload: new FranchiseeAccountReceiveResource($this->service->reopen($item)),
- message: 'Conta reaberta',
- );
- }
- }
|