Sfoglia il codice sorgente

Updated invoice breakdown

Samson Mutunga 7 mesi fa
parent
commit
a93dd72dc2

+ 28 - 2
app/Models/StoreOrder.php

@@ -164,10 +164,36 @@ class StoreOrder extends BaseModel
         return null;
     }
 
-    public function getOrderTestsSummary(){
+    public function selectedOptions(){
         $orderDetailJson = $this->detailJson();
-        $orderSelectedOptions = json_decode(@$orderDetailJson->selected_options ?? '{}', true);
+        return json_decode(@$orderDetailJson->selected_options ?? '{}', true);
+    }
+
+    public function getOrderTestsSummary(){
+        $orderSelectedOptions = $this->selectedOptions();
         return @$orderSelectedOptions['selectedOptionsSummary'] ?? [];
     }
 
+    public function getOrderAllTestsRequested(){
+        $summary = [];
+        $allTests = [];
+        $hasPartner = false;
+        $partnerDiscount = 0;
+        $orderTotal = 0;
+        $orders = $this->allAssociatedOrders();
+        foreach($orders as $order){
+            $orderSelectedOptions = $this->selectedOptions();
+            $hasPartner = @$orderSelectedOptions['partner'] ? true:false;
+            $partnerDiscount = floatval(@$orderSelectedOptions['partner_test_discount_amount']);            
+            $allTests = array_merge($allTests, (array) $order->getOrderTestsSummary());
+            $orderTotal = $orderTotal + floatval($order->order_total);
+        }
+        $summary['all_tests'] = $allTests;
+        $summary['final_total'] = $orderTotal;
+        $summary['has_partner'] = $hasPartner;
+        $summary['partner_discount_per_test'] = $partnerDiscount;
+
+        return $summary;
+    }
+
 }

+ 1 - 51
resources/views/app/my-account/admin/orders/sub/preview-invoice.blade.php

@@ -57,57 +57,7 @@
           <p style="font-size:15px">{{$appConfig['productUrl']}}</p>
         </div>
       </div>
-        <table border="0" cellspacing="0" cellpadding="0" style="background:#fff; border-collapse:collapse;border-spacing:0;margin-bottom:30px;margin-top:10px;margin-inline:auto;">
-            <tbody>
-                <?php
-                    $totalAmount = $order->order_total;
-                    $childrenOrders = $order->associatedOrders($order->id);
-                ?>
-
-                @include('app.my-account.admin.orders.sub.template.invoice-order-detail', ['order' => $order])
-
-                @foreach($childrenOrders as $childOrder)
-                    <?php
-                        $totalAmount = $totalAmount + $childOrder->order_total;
-                    ?>
-                    @include('app.my-account.admin.orders.sub.template.invoice-order-detail', ['order' => $childOrder, 'isChildOrder' => true])
-                @endforeach
-
-                @include('app.my-account.admin.orders.sub.template..display-invoice-total-amount', ['totalAmount' => $totalAmount])
-
-                <tr height="15">
-                    <td colspan="3"></td>
-                </tr>
-                <tr>
-                  <td>
-                    <table border="0" cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0;color:rgb(51,51,51);background-color:rgb(250,250,250);border-radius:3px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif">
-                      <tbody>
-                        <tr height="66">
-                          <td width="620" rowspan="3" style="vertical-align:initial;padding:20px;border-style:solid;border-color:white;border-left-width:0px;border-right-width:0px;border-top-width:0px;border-bottom-width:0px">
-                            <span style="color:#000;font-size:15px;padding:5px 0;text-transform:uppercase;font-weight:600;">Lab Information</span><br> <br>
-                            @if($selectedLab)
-                                <?= selected_lab_html_address($selectedLab); ?>
-                            @else
-                            ---
-                            @endif
-                          </td>
-                          <td width="595" rowspan="3" style="vertical-align:initial;padding:20px;border-style:solid;border-color:white;border-left-width:0px;border-right-width:0px;border-top-width:0px;border-bottom-width:0px">
-                            <span style="color:#000;font-size:15px;padding:5px 0;text-transform:uppercase;font-weight:600;">Billing Information</span><br> <br>
-                            <span style="font-weight:bold;">Bill To:</span> <br>
-                            {{$order->client->displayName()}}<br>
-                            <br>
-                            @if($order->paymentMethod)
-                            <span style="font-weight:bold;">Payment Method: </span> <br>
-                            <span style="margin-right:5px;text-transform:uppercase;">{{$order->paymentMethod->brand()}}</span> {{$order->paymentMethod->displayNameShort()}}
-                            @endif
-                          </td>
-                        </tr>
-                      </tbody>
-                    </table>
-                  </td>
-                </tr>
-            </tbody>
-        </table>
+        @include('app.my-account.admin.orders.sub.template.order-breakdown', ['storeOrder' => $order])
     </div>
     <div class="print-none mt-4">
         <footer class="bg-dark text-md-center py-2 d-flex justify-content-center flex-wrap">

+ 46 - 12
resources/views/app/my-account/admin/orders/sub/template/invoice-order-detail.blade.php

@@ -1,7 +1,7 @@
 <?php
     $orderDetailJson = $order->detailJson();
     $orderSelectedOptions = json_decode(@$orderDetailJson->selected_options ?? '{}');
-    $selectedOptionsSummary = @$orderSelectedOptions->selectedOptionsSummary ?? (object) [];
+    $orderSummary = $order->getOrderAllTestsRequested();
 ?>
 
 <tr>
@@ -9,7 +9,6 @@
         <table border="0" cellpadding="0" cellspacing="0"
             style="border-collapse:collapse;border-spacing:0;width:100%;color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif">
             <tbody>
-                @if(!@$isChildOrder)
                 <tr height="24" style="background-color:rgb(250,250,250)">
                     <td colspan="5" valign="top"
                         style="text-align:center;text-transform:uppercase;padding:10px;border-top-left-radius:3px;border-bottom-left-radius:3px">
@@ -40,19 +39,54 @@
                 <tr height="15">
                     <td colspan="5"></td>
                 </tr>
-                @endif
-                @foreach ($selectedOptionsSummary as $tkey => $test)
+                @foreach ($orderSummary['all_tests'] as $tkey => $test)
                     <tr>
                         <td colspan="3" style="padding:0 0 0 0;vertical-align:top;">
                             <span
-                                style="font-weight:400;">{{ $test->name }}</span>
+                                style="font-weight:400;">{{ $test['name'] }}</span>
                         </td>
                         <td align="right" valign="top" style="padding:0 0px;">
                             <span
-                                style="font-weight:400;white-space:nowrap;display:block;">${{ number_format($test->price, 2) }}</span>
+                                style="font-weight:400;white-space:nowrap;display:block;">${{ number_format($test['price'], 2) }}</span>
                         </td>
                     </tr>
                 @endforeach
+
+                @if (@$orderSelectedOptions->partner == 1)
+                <tr height="15">
+                    <td colspan="5"></td>
+                </tr>
+                <tr height="24" style="background-color:rgb(250,250,250)">
+                    <td colspan="5" valign="top"
+                        style="text-align:center;text-transform:uppercase;padding:6px;border-top-left-radius:3px;border-bottom-left-radius:3px">
+                        <span style="font-size:15px;font-weight:600">Partner Tests</span></td>
+                </tr>
+                <tr height="15">
+                    <td colspan="5"></td>
+                </tr>
+                <?php 
+                    $discountedAmountPerOrder = floatval($orderSummary['partner_discount_per_test']);
+                    $partnerDiscount = 0;
+                    $partnerTotalCost = 0;
+                ?>
+                @foreach ($orderSummary['all_tests'] as $pTestKey => $pTest)
+                    <?php 
+                        $partnerDiscount = $partnerDiscount + $discountedAmountPerOrder;
+                        $pTestAmount = floatval($pTest['price']) - $discountedAmountPerOrder;
+                        $partnerTotalCost = $partnerTotalCost + floatval($pTestAmount);
+                    ?>
+                    <tr>
+                        <td colspan="3" style="padding:0 0 0 0;vertical-align:top;">
+                            <span
+                                style="font-weight:400;">{{ $pTest['name'] }}</span>
+                        </td>
+                        <td align="right" valign="top" style="padding:0 0px;">
+                            <span
+                                style="font-weight:400;white-space:nowrap;display:block;">${{ number_format($pTestAmount, 2) }}</span>
+                        </td>
+                    </tr>
+                @endforeach
+                @endif
             </tbody>
         </table>
     </td>
@@ -84,32 +118,32 @@
                     <tr height="28">
                         <td align="right"
                             style="color:#000;font-size:14px;font-weight:400;padding:0 30px 0 0;border:none;border-width:1px;border-color:rgb(238,238,238)">
-                            Partner</td>
+                            Partner Total</td>
                         <td width="1" style="background-color:rgb(238,238,238);width:1px"></td>
                         <td width="90" align="right"
                             style="width:120px;font-size:16px;font-weight:400;white-space:nowrap">
-                            ${{ number_format(@$orderSelectedOptions->partner_test_total, 2) }}
+                            ${{ number_format(@$partnerTotalCost, 2) }}
                         </td>
                     </tr>
                     <tr height="28">
                         <td align="right"
                             style="color:#048a16;font-size:14px;font-weight:400;padding:0 30px 0 0;border:none;border-width:1px;border-color:rgb(238,238,238)">
-                            Discount</td>
+                            Partner Discount</td>
                         <td width="1" style="background-color:rgb(238,238,238);width:1px"></td>
                         <td width="90" align="right"
                             style="width:120px;font-size:16px;font-weight:400; color:#048a16;white-space:nowrap">
-                            -${{ number_format(@$orderSelectedOptions->partner_test_discount_amount, 2) }}
+                            -${{ number_format(@$partnerDiscount, 2) }}
                         </td>
                     </tr>
                 @endif
                 <tr height="28">
                     <td align="right"
                         style="color:#000;font-size:14px;font-weight:600;padding:0 30px 0 0;border:none;border-width:1px;border-color:rgb(238,238,238)">
-                        SUB-TOTAL</td>
+                        TOTAL</td>
                     <td width="1" style="background-color:rgb(238,238,238);width:1px"></td>
                     <td width="90" align="right"
                         style="width:120px;font-size:16px;font-weight:600;white-space:nowrap">
-                        ${{ number_format($order->order_total, 2) }}
+                        ${{ number_format(@$orderSummary['final_total'], 2) }}
                     </td>
                 </tr>
                 <tr height="10">

+ 53 - 0
resources/views/app/my-account/admin/orders/sub/template/order-breakdown.blade.php

@@ -0,0 +1,53 @@
+<?php
+$storeOrderDetailJson = $storeOrder->detailJson();
+$storeOrderSelectedOptions = json_decode(@$storeOrderDetailJson->selected_options ?? '{}');
+$selectedLab = @$storeOrderSelectedOptions->lab;
+
+?>
+<table border="0" cellspacing="0" cellpadding="0"
+    style="background:#fff; border-collapse:collapse;border-spacing:0;margin-bottom:30px;margin-top:10px;margin-inline:auto;">
+    <tbody>
+        @include('app.my-account.admin.orders.sub.template.invoice-order-detail', ['order' => $storeOrder])
+
+        <tr height="15">
+            <td colspan="3"></td>
+        </tr>
+        <tr>
+            <td>
+                <table border="0" cellpadding="0" cellspacing="0"
+                    style="border-collapse:collapse;border-spacing:0;color:rgb(51,51,51);background-color:rgb(250,250,250);border-radius:3px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif">
+                    <tbody>
+                        <tr height="66">
+                            <td width="620" rowspan="3"
+                                style="vertical-align:initial;padding:20px;border-style:solid;border-color:white;border-left-width:0px;border-right-width:0px;border-top-width:0px;border-bottom-width:0px">
+                                <span
+                                    style="color:#000;font-size:15px;padding:5px 0;text-transform:uppercase;font-weight:600;">Lab
+                                    Information</span><br> <br>
+                                @if ($selectedLab)
+                                    <?= selected_lab_html_address($selectedLab) ?>
+                                @else
+                                    ---
+                                @endif
+                            </td>
+                            <td width="595" rowspan="3"
+                                style="vertical-align:initial;padding:20px;border-style:solid;border-color:white;border-left-width:0px;border-right-width:0px;border-top-width:0px;border-bottom-width:0px">
+                                <span
+                                    style="color:#000;font-size:15px;padding:5px 0;text-transform:uppercase;font-weight:600;">Billing
+                                    Information</span><br> <br>
+                                <span style="font-weight:bold;">Bill To:</span> <br>
+                                {{ $storeOrder->client->displayName() }}<br>
+                                <br>
+                                @if ($storeOrder->paymentMethod)
+                                    <span style="font-weight:bold;">Payment Method: </span> <br>
+                                    <span
+                                        style="margin-right:5px;text-transform:uppercase;">{{ $storeOrder->paymentMethod->brand() }}</span>
+                                    {{ $storeOrder->paymentMethod->displayNameShort() }}
+                                @endif
+                            </td>
+                        </tr>
+                    </tbody>
+                </table>
+            </td>
+        </tr>
+    </tbody>
+</table>