diff options
author | MikunoNaka <bokuwakanojogahoshii@yahoo.com> | 2021-06-25 18:06:56 +0530 |
---|---|---|
committer | MikunoNaka <bokuwakanojogahoshii@yahoo.com> | 2021-06-25 18:06:56 +0530 |
commit | 6874be2c3016b872016ba32181823a8e1232a1a7 (patch) | |
tree | 8e1469bfdc6b646738ff2e6ae5f0e2e1f032dd7f /src/components/Display/SummaryDisplay.txt | |
parent | 35a44621c25b06471ae5b29bbdfb35fdcf652cf1 (diff) |
Ported SummaryDisplay to tsx
Diffstat (limited to 'src/components/Display/SummaryDisplay.txt')
-rw-r--r-- | src/components/Display/SummaryDisplay.txt | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/src/components/Display/SummaryDisplay.txt b/src/components/Display/SummaryDisplay.txt deleted file mode 100644 index e06eac5..0000000 --- a/src/components/Display/SummaryDisplay.txt +++ /dev/null @@ -1,132 +0,0 @@ -/* - * OpenBills - Self hosted browser app to generate and keep track of simple invoices - * Version - 0 - * Licensed under the MIT license - https://opensource.org/licenses/MIT - * - * Copyright (c) 2021 Vidhu Kant Sharma -*/ - -import React from "react"; -import "./Display.scss"; - -interface props { -} - -const getBasicSummary = (items) => { - let totalRawPrice = 0; - let totalQuantity = 0; - - items.some((i) => { - totalRawPrice += i.TotalPrice; - totalQuantity += i.Quantity; - return null; - } - ) - - return ( - { - "TotalRawPrice": totalRawPrice, - "TotalQuantity": totalQuantity - } - ); -} - -// TODO: remove mutability from this function -const getFullSummary = (items) => { - let totalRawPrice = 0; - let totalDiscount = 0; // to be subtracted from totalRawPrice - let totalTax = 0; - - items.some((i) => { - const itemTotalPrice = i.TotalPrice; - const itemDiscount = (i.Discount / 100) * itemTotalPrice; - - totalRawPrice += itemTotalPrice; - totalDiscount += itemDiscount; - totalTax += i.igst === "" - ? ((i.sgst + i.cgst) / 100) * (itemTotalPrice - itemDiscount) - : (i.igst / 100) * (itemTotalPrice - itemDiscount); - return null; - }) - - - - const totalPriceAfterTax = (totalRawPrice - totalDiscount) + totalTax; - const totalRoundedOff = Math.abs(totalPriceAfterTax - Math.round(totalPriceAfterTax)); - return ( - { - "TotalRawPrice": parseFloat(totalRawPrice.toFixed(2)), - "TotalDiscountPrice": parseFloat(totalDiscount.toFixed(2)), - "TotalPriceAfterDiscount": parseFloat((totalRawPrice - totalDiscount).toFixed(2)), - "TotalTaxAmount": parseFloat(totalTax.toFixed(2)), - "TotalPriceAfterTax": parseFloat(totalPriceAfterTax.toFixed(2)), - "RoundedOff": parseFloat(totalRoundedOff.toFixed(2)), - "TotalPrice": Math.round(totalPriceAfterTax) - } - ); -} - -export const SummaryDisplayTR: React.FC<props> = (props) => { - const summary = getBasicSummary(props.items); - - return ( - <tr className={"SummaryDisplayTR"}> - <td>Total</td> - <td className={"disabledBorder"}></td> - <td className={"disabledBorder"}></td> - <td>{summary.TotalQuantity}</td> - <td className={"disabledBorder"}></td> - <td className={"disabledBorder"}></td> - <td className={"disabledBorder"}></td> - <td className={"disabledBorder"}></td> - <td className={"disabledBorder"}></td> - <td>{summary.TotalRawPrice}</td> - </tr> - ); -} - -const SummaryDisplay = (props) => { - const summary = getFullSummary(props.items); - - return ( - <div className={"SummaryDisplay"}> - <h1>Summary</h1> - <table> - <tbody> - <tr> - <td>Base Total</td> - <td>{summary.TotalRawPrice}</td> - </tr> - - {summary.TotalDiscountPrice !== 0.00 && - <tr> - <td>After Discount</td> - <td>{summary.TotalPriceAfterDiscount}</td> - <td>(-{summary.TotalDiscountPrice})</td> - </tr> - } - - <tr> - <td>After Tax</td> - <td>{summary.TotalPriceAfterTax}</td> - <td>(+{summary.TotalTaxAmount})</td> - </tr> - - {summary.RoundedOff !== 0.00 && - <tr> - <td>Rounded Off</td> - <td>{summary.RoundedOff}</td> - </tr> - } - - <tr className={"grandTotal"}> - <td>Grand Total</td> - <td>{summary.TotalPrice}</td> - </tr> - </tbody> - </table> - </div> - ); -} - -export default SummaryDisplay; |