Files
wticreatorstudio/Modules/StaffPayroll/Http/Controllers/API/InvoicePayoutController.php
T
2024-02-12 22:54:20 -05:00

54 lines
1.5 KiB
PHP

<?php
namespace Modules\StaffPayroll\Http\Controllers\API;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\StaffPayroll\Entities\Payout;
use Modules\StaffPayroll\Entities\Invoice;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Support\Facades\DB;
use Modules\JobPortal\Entities\VendorPayout;
use Modules\StaffPayroll\Services\InvoiceAmountResponseService;
use Modules\StaffPayroll\Services\InvoiceService;
class InvoicePayoutController extends Controller
{
public function store(Request $request, Invoice $invoice)
{
try {
DB::beginTransaction();
$invoice = $invoice->load('items.incentive');
$amount = InvoiceAmountResponseService::amountFloat((new InvoiceService)->getInvoiceAmount($invoice));
$data = [
'vendor_id' => $invoice->user_id,
'invoice_id' => $invoice->id,
'total' => $amount,
'status' => VendorPayout::PENDING,
'create_user' => auth()->id()
];
VendorPayout::updateOrCreate(
[
'invoice_id' => $invoice->id
],
$data
);
DB::commit();
return response()->noContent();
} catch (\Exception $ex) {
DB::rollBack();
throw new \Exception($ex->getMessage());
}
}
public function destroy(Invoice $invoice)
{
$invoice->payout()->delete();
return response()->noContent();
}
}