From aa0f1b3bdf492ed6c6bbf342592b446bd96ac96e Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 25 Aug 2021 12:03:58 +1000 Subject: [PATCH] Client Statements --- app/Http/Controllers/ClientController.php | 59 --------------- .../Controllers/ClientStatementController.php | 73 +++++++++++++++++++ .../Statements/CreateStatementRequest.php | 4 +- app/Services/PdfMaker/Design.php | 2 +- 4 files changed, 76 insertions(+), 62 deletions(-) diff --git a/app/Http/Controllers/ClientController.php b/app/Http/Controllers/ClientController.php index 9d3d272e65bd..7f52eedb2968 100644 --- a/app/Http/Controllers/ClientController.php +++ b/app/Http/Controllers/ClientController.php @@ -585,64 +585,5 @@ class ClientController extends BaseController } -/** - * Update the specified resource in storage. - * - * @param UploadClientRequest $request - * @param Client $client - * @return Response - * - * - * - * @OA\Put( - * path="/api/v1/clients/{id}/adjust_ledger", - * operationId="adjustLedger", - * tags={"clients"}, - * summary="Adjust the client ledger to rebalance", - * description="Adjust the client ledger to rebalance", - * @OA\Parameter(ref="#/components/parameters/X-Api-Secret"), - * @OA\Parameter(ref="#/components/parameters/X-Api-Token"), - * @OA\Parameter(ref="#/components/parameters/X-Requested-With"), - * @OA\Parameter(ref="#/components/parameters/include"), - * @OA\Parameter( - * name="id", - * in="path", - * description="The Client Hashed ID", - * example="D2J234DFA", - * required=true, - * @OA\Schema( - * type="string", - * format="string", - * ), - * ), - * @OA\Response( - * response=200, - * description="Returns the client object", - * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"), - * @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"), - * @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"), - * @OA\JsonContent(ref="#/components/schemas/Client"), - * ), - * @OA\Response( - * response=422, - * description="Validation error", - * @OA\JsonContent(ref="#/components/schemas/ValidationError"), - * - * ), - * @OA\Response( - * response="default", - * description="Unexpected Error", - * @OA\JsonContent(ref="#/components/schemas/Error"), - * ), - * ) - */ - //@deprecated - not available - public function adjustLedger(AdjustClientLedgerRequest $request, Client $client) - { - // $adjustment = $request->input('adjustment'); - // $notes = $request->input('notes'); - - // $client->service()->updateBalance - } } diff --git a/app/Http/Controllers/ClientStatementController.php b/app/Http/Controllers/ClientStatementController.php index 3f3a85044e47..6acf4d6d89bc 100644 --- a/app/Http/Controllers/ClientStatementController.php +++ b/app/Http/Controllers/ClientStatementController.php @@ -35,6 +35,79 @@ class ClientStatementController extends BaseController parent::__construct(); } + /** + * Update the specified resource in storage. + * + * @param CreateStatementRequest $request + * @return Response + * + * @OA\Post( + * path="/api/v1/client_statement", + * operationId="clientStatement", + * tags={"clients"}, + * summary="Return a PDF of the client statement", + * description="Return a PDF of the client statement", + * @OA\Parameter(ref="#/components/parameters/X-Api-Secret"), + * @OA\Parameter(ref="#/components/parameters/X-Api-Token"), + * @OA\Parameter(ref="#/components/parameters/X-Requested-With"), + * @OA\Parameter(ref="#/components/parameters/include"), + * @OA\RequestBody( + * description="Statment Options", + * required=true, + * @OA\MediaType( + * mediaType="application/json", + * @OA\Schema( + * type="object", + * @OA\Property( + * property="start_date", + * description="The start date of the statement period - format Y-m-d", + * type="string", + * ), + * @OA\Property( + * property="end_date", + * description="The start date of the statement period - format Y-m-d", + * type="string", + * ), + * @OA\Property( + * property="client_id", + * description="The hashed ID of the client", + * type="string", + * ), + * @OA\Property( + * property="show_payments_table", + * description="Flag which determines if the payments table is shown", + * type="boolean", + * ), + * @OA\Property( + * property="show_aging_table", + * description="Flag which determines if the aging table is shown", + * type="boolean", + * ) + * ) + * ) + * ), + * @OA\Response( + * response=200, + * description="Returns the client object", + * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"), + * @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"), + * @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"), + * @OA\JsonContent(ref="#/components/schemas/Client"), + * ), + * @OA\Response( + * response=422, + * description="Validation error", + * @OA\JsonContent(ref="#/components/schemas/ValidationError"), + * + * ), + * @OA\Response( + * response="default", + * description="Unexpected Error", + * @OA\JsonContent(ref="#/components/schemas/Error"), + * ), + * ) + */ + public function statement(CreateStatementRequest $request) { $pdf = $this->createStatement($request); diff --git a/app/Http/Requests/Statements/CreateStatementRequest.php b/app/Http/Requests/Statements/CreateStatementRequest.php index 71e2ee11f7fc..9a75794a550d 100644 --- a/app/Http/Requests/Statements/CreateStatementRequest.php +++ b/app/Http/Requests/Statements/CreateStatementRequest.php @@ -31,8 +31,8 @@ class CreateStatementRequest extends Request public function rules() { return [ - 'start_date' => ['required'], - 'end_date' => ['required'], + 'start_date' => 'required|date_format:Y-m-d', + 'end_date' => 'required|date_format:Y-m-d', 'client_id' => 'bail|required|exists:clients,id,company_id,'.auth()->user()->company()->id, 'show_payments_table' => 'boolean', 'show_aging_table' => 'boolean', diff --git a/app/Services/PdfMaker/Design.php b/app/Services/PdfMaker/Design.php index 86a98b5c1b4d..818307c806ef 100644 --- a/app/Services/PdfMaker/Design.php +++ b/app/Services/PdfMaker/Design.php @@ -424,7 +424,7 @@ class Design extends BaseDesign public function statementPaymentTableTotals(): array { - if ($this->type !== self::STATEMENT) { + if ($this->type !== self::STATEMENT || !$this->payments->first()) { return []; }