mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-09-20 08:21:34 +02:00
Report Controllers
This commit is contained in:
parent
4840207b3b
commit
3a429605b7
@ -33868,7 +33868,7 @@ class USStates
|
|||||||
return self::$states;
|
return self::$states;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getState(string $zip): string
|
public static function getState(?string $zip = '90210'): string
|
||||||
{
|
{
|
||||||
if(isset(self::$zip_code_map[$zip]))
|
if(isset(self::$zip_code_map[$zip]))
|
||||||
return self::$zip_code_map[$zip];
|
return self::$zip_code_map[$zip];
|
||||||
|
84
app/Http/Controllers/Reports/ARDetailReportController.php
Normal file
84
app/Http/Controllers/Reports/ARDetailReportController.php
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://www.elastic.co/licensing/elastic-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Reports;
|
||||||
|
|
||||||
|
use App\Utils\Traits\MakesHash;
|
||||||
|
use App\Jobs\Report\SendToAdmin;
|
||||||
|
use App\Services\Report\ARDetailReport;
|
||||||
|
use App\Http\Controllers\BaseController;
|
||||||
|
use App\Http\Requests\Report\GenericReportRequest;
|
||||||
|
|
||||||
|
class ARDetailReportController extends BaseController
|
||||||
|
{
|
||||||
|
use MakesHash;
|
||||||
|
|
||||||
|
private string $filename = 'ar_detail.csv';
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OA\Post(
|
||||||
|
* path="/api/v1/reports/tasks",
|
||||||
|
* operationId="getTaskReport",
|
||||||
|
* tags={"reports"},
|
||||||
|
* summary="Task reports",
|
||||||
|
* description="Export task reports",
|
||||||
|
* @OA\Parameter(ref="#/components/parameters/X-Requested-With"),
|
||||||
|
* @OA\RequestBody(
|
||||||
|
* required=true,
|
||||||
|
* @OA\JsonContent(ref="#/components/schemas/GenericReportSchema")
|
||||||
|
* ),
|
||||||
|
* @OA\Response(
|
||||||
|
* response=200,
|
||||||
|
* description="success",
|
||||||
|
* @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\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 __invoke(GenericReportRequest $request)
|
||||||
|
{
|
||||||
|
if ($request->has('send_email') && $request->get('send_email')) {
|
||||||
|
SendToAdmin::dispatch(auth()->user()->company(), $request->all(), ARDetailReport::class, $this->filename);
|
||||||
|
|
||||||
|
return response()->json(['message' => 'working...'], 200);
|
||||||
|
}
|
||||||
|
// expect a list of visible fields, or use the default
|
||||||
|
|
||||||
|
$export = new ARDetailReport(auth()->user()->company(), $request->all());
|
||||||
|
|
||||||
|
$csv = $export->run();
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Disposition' => 'attachment',
|
||||||
|
'Content-Type' => 'text/csv',
|
||||||
|
];
|
||||||
|
|
||||||
|
return response()->streamDownload(function () use ($csv) {
|
||||||
|
echo $csv;
|
||||||
|
}, $this->filename, $headers);
|
||||||
|
}
|
||||||
|
}
|
84
app/Http/Controllers/Reports/ARSummaryReportController.php
Normal file
84
app/Http/Controllers/Reports/ARSummaryReportController.php
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://www.elastic.co/licensing/elastic-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Reports;
|
||||||
|
|
||||||
|
use App\Http\Controllers\BaseController;
|
||||||
|
use App\Http\Requests\Report\GenericReportRequest;
|
||||||
|
use App\Jobs\Report\SendToAdmin;
|
||||||
|
use App\Services\Report\ARSummaryReport;
|
||||||
|
use App\Utils\Traits\MakesHash;
|
||||||
|
|
||||||
|
class ARSummaryReportController extends BaseController
|
||||||
|
{
|
||||||
|
use MakesHash;
|
||||||
|
|
||||||
|
private string $filename = 'ar_summary.csv';
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OA\Post(
|
||||||
|
* path="/api/v1/reports/tasks",
|
||||||
|
* operationId="getTaskReport",
|
||||||
|
* tags={"reports"},
|
||||||
|
* summary="Task reports",
|
||||||
|
* description="Export task reports",
|
||||||
|
* @OA\Parameter(ref="#/components/parameters/X-Requested-With"),
|
||||||
|
* @OA\RequestBody(
|
||||||
|
* required=true,
|
||||||
|
* @OA\JsonContent(ref="#/components/schemas/GenericReportSchema")
|
||||||
|
* ),
|
||||||
|
* @OA\Response(
|
||||||
|
* response=200,
|
||||||
|
* description="success",
|
||||||
|
* @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\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 __invoke(GenericReportRequest $request)
|
||||||
|
{
|
||||||
|
if ($request->has('send_email') && $request->get('send_email')) {
|
||||||
|
SendToAdmin::dispatch(auth()->user()->company(), $request->all(), ARSummaryReport::class, $this->filename);
|
||||||
|
|
||||||
|
return response()->json(['message' => 'working...'], 200);
|
||||||
|
}
|
||||||
|
// expect a list of visible fields, or use the default
|
||||||
|
|
||||||
|
$export = new ARSummaryReport(auth()->user()->company(), $request->all());
|
||||||
|
|
||||||
|
$csv = $export->run();
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Disposition' => 'attachment',
|
||||||
|
'Content-Type' => 'text/csv',
|
||||||
|
];
|
||||||
|
|
||||||
|
return response()->streamDownload(function () use ($csv) {
|
||||||
|
echo $csv;
|
||||||
|
}, $this->filename, $headers);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,85 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://www.elastic.co/licensing/elastic-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Reports;
|
||||||
|
|
||||||
|
use App\Utils\Traits\MakesHash;
|
||||||
|
use App\Jobs\Report\SendToAdmin;
|
||||||
|
use App\Http\Controllers\BaseController;
|
||||||
|
use App\Services\Report\ARSummaryReport;
|
||||||
|
use App\Services\Report\ClientBalanceReport;
|
||||||
|
use App\Http\Requests\Report\GenericReportRequest;
|
||||||
|
|
||||||
|
class ClientBalanceReportController extends BaseController
|
||||||
|
{
|
||||||
|
use MakesHash;
|
||||||
|
|
||||||
|
private string $filename = 'client_balance.csv';
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OA\Post(
|
||||||
|
* path="/api/v1/reports/tasks",
|
||||||
|
* operationId="getTaskReport",
|
||||||
|
* tags={"reports"},
|
||||||
|
* summary="Task reports",
|
||||||
|
* description="Export task reports",
|
||||||
|
* @OA\Parameter(ref="#/components/parameters/X-Requested-With"),
|
||||||
|
* @OA\RequestBody(
|
||||||
|
* required=true,
|
||||||
|
* @OA\JsonContent(ref="#/components/schemas/GenericReportSchema")
|
||||||
|
* ),
|
||||||
|
* @OA\Response(
|
||||||
|
* response=200,
|
||||||
|
* description="success",
|
||||||
|
* @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\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 __invoke(GenericReportRequest $request)
|
||||||
|
{
|
||||||
|
if ($request->has('send_email') && $request->get('send_email')) {
|
||||||
|
SendToAdmin::dispatch(auth()->user()->company(), $request->all(), ClientBalanceReport::class, $this->filename);
|
||||||
|
|
||||||
|
return response()->json(['message' => 'working...'], 200);
|
||||||
|
}
|
||||||
|
// expect a list of visible fields, or use the default
|
||||||
|
|
||||||
|
$export = new ClientBalanceReport(auth()->user()->company(), $request->all());
|
||||||
|
|
||||||
|
$csv = $export->run();
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Disposition' => 'attachment',
|
||||||
|
'Content-Type' => 'text/csv',
|
||||||
|
];
|
||||||
|
|
||||||
|
return response()->streamDownload(function () use ($csv) {
|
||||||
|
echo $csv;
|
||||||
|
}, $this->filename, $headers);
|
||||||
|
}
|
||||||
|
}
|
85
app/Http/Controllers/Reports/ClientSalesReportController.php
Normal file
85
app/Http/Controllers/Reports/ClientSalesReportController.php
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://www.elastic.co/licensing/elastic-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Reports;
|
||||||
|
|
||||||
|
use App\Utils\Traits\MakesHash;
|
||||||
|
use App\Jobs\Report\SendToAdmin;
|
||||||
|
use App\Http\Controllers\BaseController;
|
||||||
|
use App\Services\Report\ClientSalesReport;
|
||||||
|
use App\Services\Report\ClientBalanceReport;
|
||||||
|
use App\Http\Requests\Report\GenericReportRequest;
|
||||||
|
|
||||||
|
class ClientSalesReportController extends BaseController
|
||||||
|
{
|
||||||
|
use MakesHash;
|
||||||
|
|
||||||
|
private string $filename = 'client_sales.csv';
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OA\Post(
|
||||||
|
* path="/api/v1/reports/tasks",
|
||||||
|
* operationId="getTaskReport",
|
||||||
|
* tags={"reports"},
|
||||||
|
* summary="Task reports",
|
||||||
|
* description="Export task reports",
|
||||||
|
* @OA\Parameter(ref="#/components/parameters/X-Requested-With"),
|
||||||
|
* @OA\RequestBody(
|
||||||
|
* required=true,
|
||||||
|
* @OA\JsonContent(ref="#/components/schemas/GenericReportSchema")
|
||||||
|
* ),
|
||||||
|
* @OA\Response(
|
||||||
|
* response=200,
|
||||||
|
* description="success",
|
||||||
|
* @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\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 __invoke(GenericReportRequest $request)
|
||||||
|
{
|
||||||
|
if ($request->has('send_email') && $request->get('send_email')) {
|
||||||
|
SendToAdmin::dispatch(auth()->user()->company(), $request->all(), ClientSalesReport::class, $this->filename);
|
||||||
|
|
||||||
|
return response()->json(['message' => 'working...'], 200);
|
||||||
|
}
|
||||||
|
// expect a list of visible fields, or use the default
|
||||||
|
|
||||||
|
$export = new ClientSalesReport(auth()->user()->company(), $request->all());
|
||||||
|
|
||||||
|
$csv = $export->run();
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Disposition' => 'attachment',
|
||||||
|
'Content-Type' => 'text/csv',
|
||||||
|
];
|
||||||
|
|
||||||
|
return response()->streamDownload(function () use ($csv) {
|
||||||
|
echo $csv;
|
||||||
|
}, $this->filename, $headers);
|
||||||
|
}
|
||||||
|
}
|
85
app/Http/Controllers/Reports/TaxSummaryReportController.php
Normal file
85
app/Http/Controllers/Reports/TaxSummaryReportController.php
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://www.elastic.co/licensing/elastic-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Reports;
|
||||||
|
|
||||||
|
use App\Utils\Traits\MakesHash;
|
||||||
|
use App\Jobs\Report\SendToAdmin;
|
||||||
|
use App\Http\Controllers\BaseController;
|
||||||
|
use App\Services\Report\TaxSummaryReport;
|
||||||
|
use App\Services\Report\ClientSalesReport;
|
||||||
|
use App\Http\Requests\Report\GenericReportRequest;
|
||||||
|
|
||||||
|
class TaxSummaryReportController extends BaseController
|
||||||
|
{
|
||||||
|
use MakesHash;
|
||||||
|
|
||||||
|
private string $filename = 'tax_summary.csv';
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OA\Post(
|
||||||
|
* path="/api/v1/reports/tasks",
|
||||||
|
* operationId="getTaskReport",
|
||||||
|
* tags={"reports"},
|
||||||
|
* summary="Task reports",
|
||||||
|
* description="Export task reports",
|
||||||
|
* @OA\Parameter(ref="#/components/parameters/X-Requested-With"),
|
||||||
|
* @OA\RequestBody(
|
||||||
|
* required=true,
|
||||||
|
* @OA\JsonContent(ref="#/components/schemas/GenericReportSchema")
|
||||||
|
* ),
|
||||||
|
* @OA\Response(
|
||||||
|
* response=200,
|
||||||
|
* description="success",
|
||||||
|
* @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\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 __invoke(GenericReportRequest $request)
|
||||||
|
{
|
||||||
|
if ($request->has('send_email') && $request->get('send_email')) {
|
||||||
|
SendToAdmin::dispatch(auth()->user()->company(), $request->all(), TaxSummaryReport::class, $this->filename);
|
||||||
|
|
||||||
|
return response()->json(['message' => 'working...'], 200);
|
||||||
|
}
|
||||||
|
// expect a list of visible fields, or use the default
|
||||||
|
|
||||||
|
$export = new TaxSummaryReport(auth()->user()->company(), $request->all());
|
||||||
|
|
||||||
|
$csv = $export->run();
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Disposition' => 'attachment',
|
||||||
|
'Content-Type' => 'text/csv',
|
||||||
|
];
|
||||||
|
|
||||||
|
return response()->streamDownload(function () use ($csv) {
|
||||||
|
echo $csv;
|
||||||
|
}, $this->filename, $headers);
|
||||||
|
}
|
||||||
|
}
|
85
app/Http/Controllers/Reports/UserSalesReportController.php
Normal file
85
app/Http/Controllers/Reports/UserSalesReportController.php
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://www.elastic.co/licensing/elastic-license
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Reports;
|
||||||
|
|
||||||
|
use App\Utils\Traits\MakesHash;
|
||||||
|
use App\Jobs\Report\SendToAdmin;
|
||||||
|
use App\Http\Controllers\BaseController;
|
||||||
|
use App\Services\Report\UserSalesReport;
|
||||||
|
use App\Services\Report\TaxSummaryReport;
|
||||||
|
use App\Http\Requests\Report\GenericReportRequest;
|
||||||
|
|
||||||
|
class UserSalesReportController extends BaseController
|
||||||
|
{
|
||||||
|
use MakesHash;
|
||||||
|
|
||||||
|
private string $filename = 'user_sales.csv';
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OA\Post(
|
||||||
|
* path="/api/v1/reports/tasks",
|
||||||
|
* operationId="getTaskReport",
|
||||||
|
* tags={"reports"},
|
||||||
|
* summary="Task reports",
|
||||||
|
* description="Export task reports",
|
||||||
|
* @OA\Parameter(ref="#/components/parameters/X-Requested-With"),
|
||||||
|
* @OA\RequestBody(
|
||||||
|
* required=true,
|
||||||
|
* @OA\JsonContent(ref="#/components/schemas/GenericReportSchema")
|
||||||
|
* ),
|
||||||
|
* @OA\Response(
|
||||||
|
* response=200,
|
||||||
|
* description="success",
|
||||||
|
* @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\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 __invoke(GenericReportRequest $request)
|
||||||
|
{
|
||||||
|
if ($request->has('send_email') && $request->get('send_email')) {
|
||||||
|
SendToAdmin::dispatch(auth()->user()->company(), $request->all(), UserSalesReport::class, $this->filename);
|
||||||
|
|
||||||
|
return response()->json(['message' => 'working...'], 200);
|
||||||
|
}
|
||||||
|
// expect a list of visible fields, or use the default
|
||||||
|
|
||||||
|
$export = new UserSalesReport(auth()->user()->company(), $request->all());
|
||||||
|
|
||||||
|
$csv = $export->run();
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Disposition' => 'attachment',
|
||||||
|
'Content-Type' => 'text/csv',
|
||||||
|
];
|
||||||
|
|
||||||
|
return response()->streamDownload(function () use ($csv) {
|
||||||
|
echo $csv;
|
||||||
|
}, $this->filename, $headers);
|
||||||
|
}
|
||||||
|
}
|
@ -5063,6 +5063,8 @@ $LANG = array(
|
|||||||
'industry_Restaurant & Catering' => 'Restaurant & Catering',
|
'industry_Restaurant & Catering' => 'Restaurant & Catering',
|
||||||
'show_credits_table' => 'Show Credits Table',
|
'show_credits_table' => 'Show Credits Table',
|
||||||
'manual_payment' => 'Payment Manual',
|
'manual_payment' => 'Payment Manual',
|
||||||
|
'tax_summary_report' => 'Tax Summary Report',
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@ -90,12 +90,18 @@ use App\Http\Controllers\Reports\PaymentReportController;
|
|||||||
use App\Http\Controllers\Reports\ProductReportController;
|
use App\Http\Controllers\Reports\ProductReportController;
|
||||||
use App\Http\Controllers\Reports\ProfitAndLossController;
|
use App\Http\Controllers\Reports\ProfitAndLossController;
|
||||||
use App\Http\Controllers\Reports\ActivityReportController;
|
use App\Http\Controllers\Reports\ActivityReportController;
|
||||||
|
use App\Http\Controllers\Reports\ARDetailReportController;
|
||||||
use App\Http\Controllers\Reports\DocumentReportController;
|
use App\Http\Controllers\Reports\DocumentReportController;
|
||||||
|
use App\Http\Controllers\Reports\ARSummaryReportController;
|
||||||
use App\Http\Controllers\Reports\QuoteItemReportController;
|
use App\Http\Controllers\Reports\QuoteItemReportController;
|
||||||
|
use App\Http\Controllers\Reports\UserSalesReportController;
|
||||||
|
use App\Http\Controllers\Reports\TaxSummaryReportController;
|
||||||
use App\Http\Controllers\Support\Messages\SendingController;
|
use App\Http\Controllers\Support\Messages\SendingController;
|
||||||
|
use App\Http\Controllers\Reports\ClientSalesReportController;
|
||||||
use App\Http\Controllers\Reports\InvoiceItemReportController;
|
use App\Http\Controllers\Reports\InvoiceItemReportController;
|
||||||
use App\Http\Controllers\PaymentNotificationWebhookController;
|
use App\Http\Controllers\PaymentNotificationWebhookController;
|
||||||
use App\Http\Controllers\Reports\ProductSalesReportController;
|
use App\Http\Controllers\Reports\ProductSalesReportController;
|
||||||
|
use App\Http\Controllers\Reports\ClientBalanceReportController;
|
||||||
use App\Http\Controllers\Reports\ClientContactReportController;
|
use App\Http\Controllers\Reports\ClientContactReportController;
|
||||||
use App\Http\Controllers\Reports\RecurringInvoiceReportController;
|
use App\Http\Controllers\Reports\RecurringInvoiceReportController;
|
||||||
|
|
||||||
@ -285,7 +291,14 @@ Route::group(['middleware' => ['throttle:api', 'api_db', 'token_auth', 'locale']
|
|||||||
Route::post('reports/product_sales', ProductSalesReportController::class);
|
Route::post('reports/product_sales', ProductSalesReportController::class);
|
||||||
Route::post('reports/tasks', TaskReportController::class);
|
Route::post('reports/tasks', TaskReportController::class);
|
||||||
Route::post('reports/profitloss', ProfitAndLossController::class);
|
Route::post('reports/profitloss', ProfitAndLossController::class);
|
||||||
|
|
||||||
|
Route::post('reports/ar_detail_report', ARDetailReportController::class);
|
||||||
|
Route::post('reports/ar_summary_report', ARSummaryReportController::class);
|
||||||
|
Route::post('reports/client_balance_report', ClientBalanceReportController::class);
|
||||||
|
Route::post('reports/client_sales_report', ClientSalesReportController::class);
|
||||||
|
Route::post('reports/tax_summary_report', TaxSummaryReportController::class);
|
||||||
|
Route::post('reports/user_sales_report', UserSalesReportController::class);
|
||||||
|
|
||||||
Route::resource('task_schedulers', TaskSchedulerController::class);
|
Route::resource('task_schedulers', TaskSchedulerController::class);
|
||||||
Route::post('task_schedulers/bulk', [TaskSchedulerController::class, 'bulk'])->name('task_schedulers.bulk');
|
Route::post('task_schedulers/bulk', [TaskSchedulerController::class, 'bulk'])->name('task_schedulers.bulk');
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ use App\Services\Report\ARDetailReport;
|
|||||||
use App\Services\Report\UserSalesReport;
|
use App\Services\Report\UserSalesReport;
|
||||||
use App\Utils\Traits\MakesHash;
|
use App\Utils\Traits\MakesHash;
|
||||||
use Illuminate\Routing\Middleware\ThrottleRequests;
|
use Illuminate\Routing\Middleware\ThrottleRequests;
|
||||||
|
use Tests\MockAccountData;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -44,6 +45,7 @@ class ARDetailReportTest extends TestCase
|
|||||||
);
|
);
|
||||||
|
|
||||||
$this->withoutExceptionHandling();
|
$this->withoutExceptionHandling();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public $company;
|
public $company;
|
||||||
|
@ -399,7 +399,7 @@ class EuTaxTest extends TestCase
|
|||||||
'status_id' => Invoice::STATUS_SENT,
|
'status_id' => Invoice::STATUS_SENT,
|
||||||
'tax_data' => new Response([
|
'tax_data' => new Response([
|
||||||
'geoState' => 'CA',
|
'geoState' => 'CA',
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$process = new Rule();
|
$process = new Rule();
|
||||||
|
Loading…
Reference in New Issue
Block a user