From 060d935a47b244656e53c880cc9e792fd5841982 Mon Sep 17 00:00:00 2001 From: MikunoNaka Date: Sun, 2 May 2021 19:51:35 +0530 Subject: fixed errors and added new incomplete form to register a new client --- src/components/BillingPage.js | 37 ++-- src/components/Form/Document/DocumentInfoForm.js | 206 +++++++++++++++++++++++ src/components/Form/Items/AddNewItemForm.js | 12 +- src/components/Form/People/RegisterPersonForm.js | 87 ++++++++++ 4 files changed, 330 insertions(+), 12 deletions(-) create mode 100644 src/components/Form/Document/DocumentInfoForm.js create mode 100644 src/components/Form/People/RegisterPersonForm.js (limited to 'src') diff --git a/src/components/BillingPage.js b/src/components/BillingPage.js index 6ebaa1c..be2e299 100644 --- a/src/components/BillingPage.js +++ b/src/components/BillingPage.js @@ -12,6 +12,8 @@ import axios from "axios"; import AddNewItemForm from "./Form/Items/AddNewItemForm"; import RegisterItemForm from "./Form/Items/RegisterItemForm"; +import RegisterPersonForm from "./Form/People/RegisterPersonForm"; + import MetaInfoForm from "./Form/MetaInfoForm"; import ItemsDisplay from "./Display/ItemsDisplay"; @@ -19,7 +21,8 @@ import SummaryDisplay from "./Display/SummaryDisplay"; const BillingPage = () => { const [savedItems, getSavedItems] = useState([]); - const [registerFormVisibility, setRegisterFormVisibility] = useState(false); + const [registerItemFormVisibility, setRegisterItemFormVisibility] = useState(false); + const [registerPersonFormVisibility, setRegisterPersonFormVisibility] = useState(false); const getRegisteredItems = () => { axios.get(`/api/items`) @@ -49,21 +52,35 @@ const BillingPage = () => { return ( <> - - - {registerFormVisibility && + {registerItemFormVisibility && } - + {registerPersonFormVisibility && + + } + + + + +
diff --git a/src/components/Form/Document/DocumentInfoForm.js b/src/components/Form/Document/DocumentInfoForm.js new file mode 100644 index 0000000..a3f70b7 --- /dev/null +++ b/src/components/Form/Document/DocumentInfoForm.js @@ -0,0 +1,206 @@ +/* + * 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, { useState } from "react"; +import "./../Form.scss"; + + +const AddNewItemForm = (props) => { + const [itemNameValue, setItemNameValue] = useState(""); + const [itemDescValue, setItemDescValue] = useState(""); + const [itemPriceValue, setItemPriceValue] = useState(0.00); + const [itemDiscountValue, setItemDiscountValue] = useState(0.00); + const [itemGSTValue, setItemGSTValue] = useState(props.defGSTValue); + const [itemQtyValue, setItemQtyValue] = useState(1); + const [itemHSNValue, setItemHSNValue] = useState(0); + + const [itemToAdd, setItemToAdd] = useState({}); + + const enterItemNamePrompt = "start typing here"; + const registerItemPrompt = "add new"; + const emptyItemNames = [enterItemNamePrompt, registerItemPrompt, ""]; + + // Extract the model names from savedItems + let savedItemNames= []; + if (props.savedItems !== null) { + for (let i = 0; i < props.savedItems.length; i++) { + savedItemNames.push(props.savedItems[i].Model); + } + } + + // set description and price + // when item is entered + const setItemInfo = (itemName) => { + for (let i = 0; i < props.savedItems.length; i++) { + const mod = props.savedItems[i].Model.toLowerCase(); + const desc = props.savedItems[i].Description; + const price = props.savedItems[i].Price; + const hsn = props.savedItems[i].HSN; + const gst = props.savedItems[i].GST; + + if (mod === itemName) { + setItemDescValue(desc); + setItemPriceValue(price); + setItemHSNValue(hsn); + setItemGSTValue(gst); + break; + } + } + } + + const resetAllValues = () => { + setItemNameValue(""); + setItemDescValue(""); + setItemQtyValue(1); + setItemPriceValue(1); + setItemDiscountValue(0); + setItemHSNValue(0); + setItemGSTValue(props.defGSTValue); + } + + return ( +
+
{ + event.preventDefault(); + const newInvoiceItem = { + "Model": itemNameValue, + "Description": itemDescValue, + "Quantity": parseInt(itemQtyValue), + "UnitPrice": parseFloat(itemPriceValue), + "TotalPrice": parseFloat(itemPriceValue * itemQtyValue), + "Discount": parseInt(itemDiscountValue), + "HSN": parseInt(itemHSNValue), + "GST": parseInt(itemGSTValue) + }; + props.addItem(newInvoiceItem); + resetAllValues(); + } + }> +
+ + + +
+ +
+ + + + + + + + + +
+ +
+ props.registerFormVisibility(true)} + /> + + + + + + +
+
+
+ ) +} + +export default AddNewItemForm; diff --git a/src/components/Form/Items/AddNewItemForm.js b/src/components/Form/Items/AddNewItemForm.js index 6bce2ab..4eaea7d 100644 --- a/src/components/Form/Items/AddNewItemForm.js +++ b/src/components/Form/Items/AddNewItemForm.js @@ -47,6 +47,8 @@ const AddNewItemForm = (props) => { setItemHSNValue(hsn); setItemGSTValue(gst); break; + } else if (itemName === registerItemPrompt) { + props.registerItemFormVisibility(true); } } } @@ -65,6 +67,7 @@ const AddNewItemForm = (props) => {
{ + alert("submit") event.preventDefault(); const newInvoiceItem = { "Model": itemNameValue, @@ -103,7 +106,7 @@ const AddNewItemForm = (props) => {