aboutsummaryrefslogtreecommitdiff
path: root/src/components/Form/Items/AddNewItemForm.tsx
diff options
context:
space:
mode:
authorMikunoNaka <bokuwakanojogahoshii@yahoo.com>2021-06-25 15:27:58 +0530
committerMikunoNaka <bokuwakanojogahoshii@yahoo.com>2021-06-25 15:27:58 +0530
commit35a44621c25b06471ae5b29bbdfb35fdcf652cf1 (patch)
tree377186f820685e9be05d60f0d7a2d8743a8b6a9c /src/components/Form/Items/AddNewItemForm.tsx
parent5d2222d9fa782b94ba6787e5c6b23aab1e468308 (diff)
Changed the way all the values are calculated for stability
Diffstat (limited to 'src/components/Form/Items/AddNewItemForm.tsx')
-rw-r--r--src/components/Form/Items/AddNewItemForm.tsx49
1 files changed, 24 insertions, 25 deletions
diff --git a/src/components/Form/Items/AddNewItemForm.tsx b/src/components/Form/Items/AddNewItemForm.tsx
index ae64b06..e51ecfc 100644
--- a/src/components/Form/Items/AddNewItemForm.tsx
+++ b/src/components/Form/Items/AddNewItemForm.tsx
@@ -22,15 +22,15 @@ const AddNewItemForm: React.FC<props> = (props) => {
const [itemNameValue, setItemNameValue] = useState<string>("");
const [itemDescValue, setItemDescValue] = useState<string>("");
const [itemPriceValue, setItemPriceValue] = useState<number>(0.00);
- const [itemDiscountValue, setItemDiscountValue] = useState<number>(0.00);
- const [itemGSTValue, setItemGSTValue] = useState<number>(props.defGSTValue);
+ const [itemDiscountPercentage, setItemDiscountPercentage] = useState<number>(0.00);
+ const [itemGSTPercentage, setItemGSTValue] = useState<number>(props.defGSTValue);
const [itemQTYValue, setItemQTYValue] = useState<number>(1);
const [itemHSNValue, setItemHSNValue] = useState<number>(0);
// to be handled by DocumentInfo
// check if client is in same state
// and apply cgst+sgst or igst accordingly
- // const inState: boolean = true;
+ const inState: boolean = true;
const enterItemNamePrompt: string = "start typing here";
const registerItemPrompt: string = "add new";
@@ -57,7 +57,7 @@ const AddNewItemForm: React.FC<props> = (props) => {
setItemDescValue("");
setItemQTYValue(1);
setItemPriceValue(1);
- setItemDiscountValue(0);
+ setItemDiscountPercentage(0);
setItemHSNValue(0);
setItemGSTValue(props.defGSTValue);
}
@@ -68,28 +68,27 @@ const AddNewItemForm: React.FC<props> = (props) => {
(event) => {
event.preventDefault();
- // TODO: maybe move calculation of GST and Discount here
+ const discountValue: number = (itemDiscountPercentage / 100) * itemPriceValue;
+ const totalGSTValue: number = (itemGSTPercentage / 100) * (itemQTYValue);
const newInvoiceItem: Item = {
- Model: itemNameValue,
- Description: itemDescValue,
- Quantity: itemQTYValue,
- UnitPrice: itemPriceValue,
- TotalValue: (itemPriceValue * itemQTYValue),
- Discount: itemDiscountValue,
- HSN: itemHSNValue,
- TotalGST: itemGSTValue,
+ Model: itemNameValue,
+ Description: itemDescValue,
+ Quantity: itemQTYValue,
+ UnitPrice: itemPriceValue,
+ TotalValue: itemPriceValue * itemQTYValue,
+ Discount: itemDiscountPercentage,
+ DiscountValue: discountValue,
+ HSN: itemHSNValue,
+ TotalGST: itemGSTPercentage,
+ TotalGSTValue: totalGSTValue,
// this also checks if igst applies or not
- // TODO: fix this
- SGST: 0,
- CGST: 0,
- IGST: 0
- // sgst: inState ? parseInt(itemGSTValue) / 2 : "",
- // cgst: inState ? parseInt(itemGSTValue) / 2 : "",
- // igst: inState ? "" : parseInt(itemGSTValue)
+ SGST: inState && totalGSTValue / 2,
+ CGST: inState && totalGSTValue / 2,
+ IGST: inState || totalGSTValue
}
- props.addItem(newInvoiceItem);
+ props.addItem(newInvoiceItem);
resetAllValues();
}
}>
@@ -144,10 +143,10 @@ const AddNewItemForm: React.FC<props> = (props) => {
<label>
Discount:
- <input className={"smallInputBox"} type="number" min="0" step="0.001" value={itemDiscountValue}
+ <input className={"smallInputBox"} type="number" min="0" step="0.001" value={itemDiscountPercentage}
onInput={
(event: React.FormEvent<HTMLInputElement>) =>
- setItemDiscountValue(parseInt(event.currentTarget.value))
+ setItemDiscountPercentage(parseInt(event.currentTarget.value))
}
/>
</label>
@@ -164,7 +163,7 @@ const AddNewItemForm: React.FC<props> = (props) => {
<label>
GST:
- <input className={"smallInputBox"} type="number" min="0" value={itemGSTValue}
+ <input className={"smallInputBox"} type="number" min="0" value={itemGSTPercentage}
onInput={
(event: React.FormEvent<HTMLInputElement>) =>
setItemGSTValue(parseInt(event.currentTarget.value))
@@ -189,7 +188,7 @@ const AddNewItemForm: React.FC<props> = (props) => {
(emptyItemNames.includes(itemNameValue)
|| itemQTYValue <= 0
|| itemPriceValue <= 0
- || itemGSTValue <= 0
+ || itemGSTPercentage <= 0
) ? true : false
}
/>