Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 30
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
ReturnController
0.00% covered (danger)
0.00%
0 / 30
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 1
 saleReturn
0.00% covered (danger)
0.00%
0 / 30
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2
3namespace App\Http\Controllers\admin;
4
5use App\Http\Controllers\Controller;
6use App\Models\admin\Sale;
7use App\Models\admin\SaleDetalis;
8use App\Models\admin\SalePayment;
9use App\Models\ReturnItem;
10use Illuminate\Support\Facades\DB;
11
12class ReturnController extends Controller
13{
14    public function saleReturn($id)
15    {
16        try {
17            DB::beginTransaction();
18            $sale = SaleDetalis::query()->findOrFail($id);
19
20            ReturnItem::query()->create([
21                'sale_id' => $sale->sale_id,
22                'product_id' => $sale->product_id,
23                'qty' => $sale->qty,
24                'category_id' => $sale->category_id,
25                'brand_id' => $sale->brand_id,
26                'color_id' => $sale->color_id,
27                'size_id' => $sale->size_id,
28                'origin_id' => $sale->origin_id,
29                'selling_price' => $sale->selling_price,
30            ]);
31            $price = $sale->qty * $sale->selling_price;
32            $payment = SalePayment::query()->where('sale_id', $sale->sale_id)->first();
33            $total = $payment->total - $price;
34            $paid = $payment->paid - $price;
35            $due = $total - $paid;
36
37            $payment->update(['total' => $total, 'paid' => $paid, 'due' => $due]);
38            $saleId = $sale->sale_id;
39            $sale->delete();
40            $checkSale = SaleDetalis::query()->where('sale_id', $saleId)->exists();
41            if ($checkSale == false) {
42                Sale::query()->findOrFail($saleId)->update(['is_return' => 1]);
43            }
44
45            DB::commit();
46
47            return redirect()->back();
48
49        } catch (\Throwable $e) {
50            DB::rollBack();
51            report($e);
52
53            return back()->with('error', 'Could not process the return.');
54        }
55    }
56}