Muhammad Iqbal Afandi 4 лет назад
Родитель
Сommit
27c350ac37

+ 21
- 4
app/Http/Controllers/PurchaseController.php Просмотреть файл

15
 use Illuminate\Database\QueryException;
15
 use Illuminate\Database\QueryException;
16
 use App\Http\Requests\Purchase\StorePurchaseRequest;
16
 use App\Http\Requests\Purchase\StorePurchaseRequest;
17
 use App\Http\Requests\Purchase\UpdatePurchaseRequest;
17
 use App\Http\Requests\Purchase\UpdatePurchaseRequest;
18
+use App\Models\Company;
19
+use App\Services\PurchaseService;
18
 
20
 
19
 class PurchaseController extends Controller
21
 class PurchaseController extends Controller
20
 {
22
 {
43
                         "name" => $purchase->supplier->name,
45
                         "name" => $purchase->supplier->name,
44
                         "phone" => $purchase->supplier->phone,
46
                         "phone" => $purchase->supplier->phone,
45
                         "email" => $purchase->supplier->email,
47
                         "email" => $purchase->supplier->email,
46
-                        "price" => HelperService::setRupiahFormat(
47
-                            $purchase->purchaseDetail->sum("price")
48
+                        "price" => HelperService::rupiahFormat(
49
+                            PurchaseService::totalPrice($purchase)
48
                         ),
50
                         ),
49
                         "status" => $purchase->status,
51
                         "status" => $purchase->status,
50
                     ]
52
                     ]
323
 
325
 
324
     public function invoice(Purchase $purchase)
326
     public function invoice(Purchase $purchase)
325
     {
327
     {
326
-        $pdf = Pdf::loadView("PDF.Purchases.Invoice", compact("purchase"));
328
+        $ppn = Ppn::first()->ppn;
329
+
330
+        $company = Company::first();
331
+
332
+        $pdf = Pdf::loadView(
333
+            "PDF.Purchases.Invoice",
334
+            compact("purchase", "company", "ppn")
335
+        );
336
+
327
         return $pdf->stream();
337
         return $pdf->stream();
328
     }
338
     }
329
 
339
 
330
     public function deliveryOrder(Purchase $purchase)
340
     public function deliveryOrder(Purchase $purchase)
331
     {
341
     {
332
-        $pdf = Pdf::loadView("PDF.Purchases.Do", compact("purchase"));
342
+        $company = Company::first();
343
+
344
+        $pdf = Pdf::loadView(
345
+            "PDF.Purchases.Do",
346
+            compact("purchase", "company")
347
+        );
348
+
333
         $pdf->setPaper("a3", "landscape");
349
         $pdf->setPaper("a3", "landscape");
350
+
334
         return $pdf->stream();
351
         return $pdf->stream();
335
     }
352
     }
336
 }
353
 }

+ 1
- 1
app/Http/Controllers/SalesController.php Просмотреть файл

41
                         "name" => $sale->customer->name,
41
                         "name" => $sale->customer->name,
42
                         "phone" => $sale->customer->phone,
42
                         "phone" => $sale->customer->phone,
43
                         "email" => $sale->customer->email,
43
                         "email" => $sale->customer->email,
44
-                        "price" => HelperService::setRupiahFormat(
44
+                        "price" => HelperService::rupiahFormat(
45
                             $sale->saleDetail->sum("price")
45
                             $sale->saleDetail->sum("price")
46
                         ),
46
                         ),
47
                         "status" => $sale->status,
47
                         "status" => $sale->status,

+ 1
- 1
app/Http/Controllers/StockProductController.php Просмотреть файл

31
                         "id" => $stockProduct->id,
31
                         "id" => $stockProduct->id,
32
                         "updatedAt" => $stockProduct->updated_at,
32
                         "updatedAt" => $stockProduct->updated_at,
33
                         "name" => $stockProduct->product->name,
33
                         "name" => $stockProduct->product->name,
34
-                        "price" => HelperService::setRupiahFormat(
34
+                        "price" => HelperService::rupiahFormat(
35
                             $stockProduct->price
35
                             $stockProduct->price
36
                         ),
36
                         ),
37
                         "qty" => $stockProduct->qty,
37
                         "qty" => $stockProduct->qty,

+ 2
- 0
app/Models/Purchase.php Просмотреть файл

13
 
13
 
14
     protected $fillable = ["number", "ppn", "status", "supplier_id", "user_id"];
14
     protected $fillable = ["number", "ppn", "status", "supplier_id", "user_id"];
15
 
15
 
16
+    protected $with = ["purchaseDetail.product", "supplier"];
17
+
16
     protected function updatedAt(): Attribute
18
     protected function updatedAt(): Attribute
17
     {
19
     {
18
         return Attribute::make(
20
         return Attribute::make(

+ 2
- 2
app/Models/PurchaseDetail.php Просмотреть файл

20
                 $ppn = Ppn::first()->ppn;
20
                 $ppn = Ppn::first()->ppn;
21
 
21
 
22
                 return $this->purchase->ppn
22
                 return $this->purchase->ppn
23
-                    ? HelperService::addPPN($value, $ppn) * $this->qty
24
-                    : $value * $this->qty;
23
+                    ? HelperService::ppn($value, $ppn)
24
+                    : $value;
25
             }
25
             }
26
         );
26
         );
27
     }
27
     }

+ 1
- 1
app/Models/SaleDetail.php Просмотреть файл

20
                 $ppn = Ppn::first()->ppn;
20
                 $ppn = Ppn::first()->ppn;
21
 
21
 
22
                 return $this->sale->ppn
22
                 return $this->sale->ppn
23
-                    ? HelperService::addPPN($value, $ppn) * $this->qty
23
+                    ? HelperService::ppn($value, $ppn) * $this->qty
24
                     : $value * $this->qty;
24
                     : $value * $this->qty;
25
             }
25
             }
26
         );
26
         );

+ 1
- 3
app/Models/StockProduct.php Просмотреть файл

30
             get: function ($value) {
30
             get: function ($value) {
31
                 $ppn = Ppn::first()->ppn;
31
                 $ppn = Ppn::first()->ppn;
32
 
32
 
33
-                return $this->ppn
34
-                    ? HelperService::addPPN($value, $ppn)
35
-                    : $value;
33
+                return $this->ppn ? HelperService::ppn($value, $ppn) : $value;
36
             }
34
             }
37
         );
35
         );
38
     }
36
     }

+ 2
- 2
app/Services/HelperService.php Просмотреть файл

19
         return $i;
19
         return $i;
20
     }
20
     }
21
 
21
 
22
-    public static function setRupiahFormat(int $num, bool $sign = true)
22
+    public static function rupiahFormat(int $num, bool $sign = true)
23
     {
23
     {
24
         if ($sign) {
24
         if ($sign) {
25
             if ($num < 0) {
25
             if ($num < 0) {
36
         }
36
         }
37
     }
37
     }
38
 
38
 
39
-    public static function addPPN(int $price, int $ppn)
39
+    public static function ppn(int $price, int $ppn)
40
     {
40
     {
41
         return $price + $price * ($ppn / 100);
41
         return $price + $price * ($ppn / 100);
42
     }
42
     }

+ 15
- 0
app/Services/PurchaseService.php Просмотреть файл

1
+<?php
2
+
3
+namespace App\Services;
4
+
5
+use App\Models\Purchase;
6
+
7
+class PurchaseService
8
+{
9
+    public static function totalPrice(Purchase $purchase)
10
+    {
11
+        return $purchase->purchaseDetail->sum(function ($purchaseDetail) {
12
+            return $purchaseDetail->price * $purchaseDetail->qty;
13
+        });
14
+    }
15
+}

+ 1
- 1
app/Services/SaleService.php Просмотреть файл

14
             $ppn = Ppn::first()->ppn;
14
             $ppn = Ppn::first()->ppn;
15
 
15
 
16
             return $sale->ppn
16
             return $sale->ppn
17
-                ? HelperService::addPPN($saleDetail->price, $ppn)
17
+                ? HelperService::ppn($saleDetail->price, $ppn)
18
                 : $saleDetail->price;
18
                 : $saleDetail->price;
19
         });
19
         });
20
     }
20
     }

+ 14
- 12
resources/views/PDF/Purchases/Do.blade.php Просмотреть файл

54
         }
54
         }
55
     </style>
55
     </style>
56
 
56
 
57
-    <title>Sale Delivery Order</title>
57
+    <title>Purchase Delivery Order</title>
58
 </head>
58
 </head>
59
 
59
 
60
 <body>
60
 <body>
72
                             <td style="padding: 0;">
72
                             <td style="padding: 0;">
73
                                 <table style="border-spacing: 0;">
73
                                 <table style="border-spacing: 0;">
74
                                     <tr>
74
                                     <tr>
75
-                                        <td>XXXXXXXXXXXX</td>
75
+                                        <td>{{ $purchase->supplier->name }}</td>
76
                                     </tr>
76
                                     </tr>
77
                                     <tr>
77
                                     <tr>
78
-                                        <td>XXXXXXXXXXXX</td>
78
+                                        <td>{{ $purchase->supplier->address }}</td>
79
                                     </tr>
79
                                     </tr>
80
                                 </table>
80
                                 </table>
81
                             </td>
81
                             </td>
97
                             <td style="padding: 0">
97
                             <td style="padding: 0">
98
                                 <table style="border-spacing: 0">
98
                                 <table style="border-spacing: 0">
99
                                     <tr>
99
                                     <tr>
100
-                                        <td>XXXXXXXXXXXX</td>
100
+                                        <td>{{ $purchase->supplier->phone }}</td>
101
                                     </tr>
101
                                     </tr>
102
                                 </table>
102
                                 </table>
103
                             </td>
103
                             </td>
117
                                     <tr>
117
                                     <tr>
118
                                         <td>DATE</td>
118
                                         <td>DATE</td>
119
                                         <td>:</td>
119
                                         <td>:</td>
120
-                                        <td>XXXXXXXXXXXX</td>
120
+                                        <td>{{ $purchase->updated_at }}</td>
121
                                     </tr>
121
                                     </tr>
122
                                     <tr>
122
                                     <tr>
123
                                         <td>PO NO</td>
123
                                         <td>PO NO</td>
124
                                         <td>:</td>
124
                                         <td>:</td>
125
-                                        <td>XXXXXXXXXXXX</td>
125
+                                        <td>{{ $purchase->number }}</td>
126
                                     </tr>
126
                                     </tr>
127
                                     <tr>
127
                                     <tr>
128
                                         <td>TTB NO</td>
128
                                         <td>TTB NO</td>
158
                 </tr>
158
                 </tr>
159
             </thead>
159
             </thead>
160
             <tbody style="text-align: center;">
160
             <tbody style="text-align: center;">
161
-                @for ($i = 0; $i < 150; $i++)
161
+                @foreach ($purchase->purchaseDetail as $purchaseDetail)
162
                     <tr>
162
                     <tr>
163
                         <td style="border-left: 1px solid black;">1</td>
163
                         <td style="border-left: 1px solid black;">1</td>
164
-                        <td style="border-left: 1px solid black; text-align: left;">IMPORTA KURSI OFFICE</td>
165
-                        <td style="border-left: 1px solid black;">1</td>
164
+                        <td style="border-left: 1px solid black; text-align: left;">
165
+                            {{ $purchaseDetail->product->name }}</td>
166
+                        <td style="border-left: 1px solid black;">{{ $purchaseDetail->qty }}</td>
166
                         <td style="border-left: 1px solid black;">UNIT</td>
167
                         <td style="border-left: 1px solid black;">UNIT</td>
167
                         <td style="border-left: 1px solid black;"></td>
168
                         <td style="border-left: 1px solid black;"></td>
168
                     </tr>
169
                     </tr>
169
-                @endfor
170
+                @endforeach
170
             </tbody>
171
             </tbody>
171
         </table>
172
         </table>
172
 
173
 
183
                                         <td></td>
184
                                         <td></td>
184
                                         <td></td>
185
                                         <td></td>
185
                                         <td colspan="1">
186
                                         <td colspan="1">
186
-                                            <p style="margin-bottom: 75px; margin-top: 70px;">XXXXXXXXXXXX</p>
187
+                                            <p style="margin-bottom: 75px; margin-top: 70px;">
188
+                                                {{ $company->name ?? '-' }}</p>
187
                                         </td>
189
                                         </td>
188
                                     </tr>
190
                                     </tr>
189
                                 </thead>
191
                                 </thead>
200
                                         </td>
202
                                         </td>
201
                                         <td>
203
                                         <td>
202
                                             <span
204
                                             <span
203
-                                                style="border-top: 1px solid black; width: 150px;display: inline-block; text-align: center;">XXXXXXXXXXXX</span>
205
+                                                style="border-top: 1px solid black; width: 150px;display: inline-block; text-align: center;"></span>
204
                                         </td>
206
                                         </td>
205
                                     </tr>
207
                                     </tr>
206
                                 </tbody>
208
                                 </tbody>

+ 31
- 15
resources/views/PDF/Purchases/Invoice.blade.php Просмотреть файл

54
         }
54
         }
55
     </style>
55
     </style>
56
 
56
 
57
-    <title>Sale Invoice</title>
57
+    <title>Purchase Invoice</title>
58
 </head>
58
 </head>
59
 
59
 
60
 <body>
60
 <body>
72
                             <td style="padding: 0;">
72
                             <td style="padding: 0;">
73
                                 <table style="border-spacing: 0;">
73
                                 <table style="border-spacing: 0;">
74
                                     <tr>
74
                                     <tr>
75
-                                        <td>XXXXXXXXXXXX</td>
75
+                                        <td>{{ $purchase->supplier->name }}</td>
76
                                     </tr>
76
                                     </tr>
77
                                     <tr>
77
                                     <tr>
78
-                                        <td>XXXXXXXXXXXX</td>
78
+                                        <td>{{ $purchase->supplier->address }}</td>
79
                                     </tr>
79
                                     </tr>
80
                                 </table>
80
                                 </table>
81
                             </td>
81
                             </td>
86
                             <td style="padding: 0">
86
                             <td style="padding: 0">
87
                                 <table style="border-spacing: 0">
87
                                 <table style="border-spacing: 0">
88
                                     <tr>
88
                                     <tr>
89
-                                        <td>XXXXXXXXXXXX</td>
89
+                                        <td>{{ $purchase->supplier->npwp }}</td>
90
                                     </tr>
90
                                     </tr>
91
                                 </table>
91
                                 </table>
92
                             </td>
92
                             </td>
101
                                     <tr>
101
                                     <tr>
102
                                         <td>NPWP</td>
102
                                         <td>NPWP</td>
103
                                         <td>:</td>
103
                                         <td>:</td>
104
-                                        <td>XXXXXXXXXXXXXXX</td>
104
+                                        <td>{{ $company->npwp ?? '-' }}</td>
105
                                     </tr>
105
                                     </tr>
106
                                     <tr>
106
                                     <tr>
107
                                         <td>Invoice No</td>
107
                                         <td>Invoice No</td>
111
                                     <tr>
111
                                     <tr>
112
                                         <td>Date</td>
112
                                         <td>Date</td>
113
                                         <td>:</td>
113
                                         <td>:</td>
114
-                                        <td>XXXXXXXXXXXX</td>
114
+                                        <td>{{ $purchase->updated_at }}</td>
115
                                     </tr>
115
                                     </tr>
116
                                     <tr>
116
                                     <tr>
117
                                         <td>PO No</td>
117
                                         <td>PO No</td>
118
                                         <td>:</td>
118
                                         <td>:</td>
119
-                                        <td>XXXXXXXXXXXX</td>
119
+                                        <td>{{ $purchase->number }}</td>
120
                                     </tr>
120
                                     </tr>
121
                                     <tr>
121
                                     <tr>
122
                                         <td>DO No</td>
122
                                         <td>DO No</td>
153
                 </tr>
153
                 </tr>
154
             </thead>
154
             </thead>
155
             <tbody style="text-align: center;">
155
             <tbody style="text-align: center;">
156
-                @for ($i = 0; $i < 150; $i++)
156
+                @foreach ($purchase->purchaseDetail as $purchaseDetail)
157
                     <tr>
157
                     <tr>
158
                         <th>1</th>
158
                         <th>1</th>
159
-                        <td style="text-align: left;">IMPORT KURSI OFFICE</td>
160
-                        <td>1</td>
159
+                        <td style="text-align: left;">{{ $purchaseDetail->product->name }}</td>
160
+                        <td>{{ $purchaseDetail->qty }}</td>
161
                         <td>UNIT</td>
161
                         <td>UNIT</td>
162
-                        <td style="text-align: right;">800.000</td>
163
-                        <td style="text-align: right;">800.000</td>
162
+                        <td style="text-align: right;">
163
+                            {{ App\Services\HelperService::rupiahFormat($purchaseDetail->price) }}
164
+                        </td>
165
+                        <td style="text-align: right;">
166
+                            {{ App\Services\HelperService::rupiahFormat($purchaseDetail->price * $purchaseDetail->qty) }}
167
+                        </td>
164
                     </tr>
168
                     </tr>
165
-                @endfor
169
+                @endforeach
166
             </tbody>
170
             </tbody>
167
             <tfoot style="border-top: 1px solid black; border-bottom: 1px solid black; text-align: right;">
171
             <tfoot style="border-top: 1px solid black; border-bottom: 1px solid black; text-align: right;">
168
                 <tr>
172
                 <tr>
173
+                    <td colspan="4"></td>
174
+                    <td>TOTAL</td>
175
+                    <td>{{ App\Services\HelperService::rupiahFormat(App\Services\PurchaseService::totalPrice($purchase)) }}
176
+                    </td>
177
+                </tr>
178
+                {{-- <tr>
169
                     <td colspan="4"></td>
179
                     <td colspan="4"></td>
170
                     <td>SUB. TOTAL</td>
180
                     <td>SUB. TOTAL</td>
171
                     <td>800.000</td>
181
                     <td>800.000</td>
179
                     <td colspan="4"></td>
189
                     <td colspan="4"></td>
180
                     <td>TOTAL IDR</td>
190
                     <td>TOTAL IDR</td>
181
                     <td>888.000</td>
191
                     <td>888.000</td>
182
-                </tr>
192
+                </tr> --}}
183
             </tfoot>
193
             </tfoot>
184
         </table>
194
         </table>
185
 
195
 
196
+        <p style="margin: 0; font-size: x-small; font-weight: bold; text-align: right;">Semua produk dikenapan ppn
197
+            sebebar
198
+            {{ $purchase->ppn ? $ppn : 0 }} %
199
+        </p>
200
+
186
         <div style="position: absolute; bottom: 0; left: 0; right: 0;">
201
         <div style="position: absolute; bottom: 0; left: 0; right: 0;">
187
             <table>
202
             <table>
188
                 <tbody>
203
                 <tbody>
194
                                     <tr>
209
                                     <tr>
195
                                         <td></td>
210
                                         <td></td>
196
                                         <td colspan="1">
211
                                         <td colspan="1">
197
-                                            <p style="margin-bottom: 75px; margin-top: 70px;">XXXXXXXXXXXX</p>
212
+                                            <p style="margin-bottom: 75px; margin-top: 70px;">
213
+                                                {{ $company->name ?? '-' }}</p>
198
                                         </td>
214
                                         </td>
199
                                     </tr>
215
                                     </tr>
200
                                 </thead>
216
                                 </thead>

+ 1
- 1
routes/web.php Просмотреть файл

61
         "invoice",
61
         "invoice",
62
     ])->name("purchases.invoice");
62
     ])->name("purchases.invoice");
63
 
63
 
64
-    Route::get("/purchases/pdf/do/{sale}", [
64
+    Route::get("/purchases/pdf/do/{purchase}", [
65
         PurchaseController::class,
65
         PurchaseController::class,
66
         "deliveryOrder",
66
         "deliveryOrder",
67
     ])->name("purchases.do");
67
     ])->name("purchases.do");