/* * 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, useEffect } from "react"; import axios from "axios"; import { Item, Person, Transport, Invoice } from "../../interfaces"; import AddNewItemForm from "./../Form/Items/AddNewItemForm"; import RegisterItemForm from "./../Form/Items/RegisterItemForm"; import RegisterPersonForm from "./../Form/People/RegisterPersonForm"; import DocumentInfoForm from "./../Form/Document/DocumentInfoForm"; import InvoiceInfoMenu from "./../Menu/InvoiceInfoMenu"; import ItemsDisplay from "./../Display/ItemsDisplay"; import SummaryDisplay from "./../Display/SummaryDisplay"; import TransportForm from "./../Form/Transport/TransportForm"; const BillingPage: React.FC = () => { const [savedItems, getSavedItems] = useState([]); const [savedPeople, getSavedPeople] = useState([]); const [registerItemFormVisibility, setRegisterItemFormVisibility] = useState(false); const [registerPersonFormVisibility, setRegisterPersonFormVisibility] = useState(false); const [items, setItems] = useState([]); const [invoiceNumber, setInvoiceNumber] = useState(1234); // get data from backend const [showTransportForm, setShowTransportForm] = useState(false); const [transporter, setTransporter] = useState({Name: "", VehicleNum: "", Method: "", GSTIN: "", Builty: ""}) console.log(transporter); const getRegisteredItems = () => axios.get(`/api/items/get-all`) .then((res) => getSavedItems(res.data)) .catch((res) => console.log(res)); const getRegisteredPeople = () => axios.get(`/api/people/get-all`) .then((res) => getSavedPeople(res.data)) .catch((res) => console.log(res)); // get data from server on startup useEffect(() => { getRegisteredItems(); getRegisteredPeople(); }, []); // TODO: to be handled by backend const defGSTValue = 18; // update the items from AddNewItemForm const getItems = (item: Item) => setItems([...items, item]); const postInvoice = () => { const newInvoice: Invoice = { Items: items, Transport: transporter } window.print(); // just for testing it will not save to DB axios.post("/api/invoice/preview", newInvoice) .then((res) => { alert("OH MY FUCKEN GOD") console.log(res) }) .catch((res) => { console.log(res) }) } return ( <> {registerItemFormVisibility && } {registerPersonFormVisibility && } {showTransportForm && }
); } export default BillingPage;