import { useState, useEffect } from “react”;
import { Button } from “@/components/ui/button”;
import { Input } from “@/components/ui/input”;
import { Label } from “@/components/ui/label”;
import { Card, CardContent } from “@/components/ui/card”;
export default function CompanyAccountForm() {
const [formData, setFormData] = useState({
itemNumber: “”,
date: “”,
description: “”,
type: “Capital Gain”,
amountLKR: “”,
amountRMB: “”,
billImage: null,
adminPassword: “”
});
const [entries, setEntries] = useState([]);
const [balance, setBalance] = useState(0);
const [searchTerm, setSearchTerm] = useState(“”);
const [filterType, setFilterType] = useState(“”);
const [editIndex, setEditIndex] = useState(null);
useEffect(() => {
const storedEntries = JSON.parse(localStorage.getItem(“companyEntries”)) || [];
setEntries(storedEntries);
calculateBalance(storedEntries);
}, []);
const handleChange = (e) => {
const { name, value } = e.target;
setFormData({ …formData, [name]: value });
};
const handleFileChange = (e) => {
setFormData({ …formData, billImage: e.target.files[0] });
};
const calculateBalance = (entries) => {
let totalBalance = 0;
entries.forEach((entry) => {
if (entry.type === “Capital Gain”) {
totalBalance += parseFloat(entry.amountLKR);
} else {
totalBalance -= parseFloat(entry.amountLKR);
}
});
setBalance(totalBalance);
};
const handleSubmit = (e) => {
e.preventDefault();
if (formData.adminPassword !== “123258”) {
alert(“Incorrect admin password!”);
return;
}
const newEntry = { …formData, amountLKR: parseFloat(formData.amountLKR), amountRMB: parseFloat(formData.amountRMB) };
let updatedEntries;
if (editIndex !== null) {
updatedEntries = […entries];
updatedEntries[editIndex] = newEntry;
setEditIndex(null);
} else {
updatedEntries = […entries, newEntry];
}
setEntries(updatedEntries);
localStorage.setItem(“companyEntries”, JSON.stringify(updatedEntries));
calculateBalance(updatedEntries);
setFormData({
itemNumber: “”,
date: “”,
description: “”,
type: “Capital Gain”,
amountLKR: “”,
amountRMB: “”,
billImage: null,
adminPassword: “”
});
};
const handleEdit = (index) => {
setFormData(entries[index]);
setEditIndex(index);
};
const handleDelete = (index) => {
if (window.confirm(“Are you sure you want to delete this entry?”)) {
const updatedEntries = entries.filter((_, i) => i !== index);
setEntries(updatedEntries);
localStorage.setItem(“companyEntries”, JSON.stringify(updatedEntries));
calculateBalance(updatedEntries);
}
};
const filteredEntries = entries.filter(entry =>
(entry.description.toLowerCase().includes(searchTerm.toLowerCase()) ||
entry.itemNumber.includes(searchTerm)) &&
(filterType ? entry.type === filterType : true)
);
return (
Transaction Records
setSearchTerm(e.target.value)} className=”mt-2″ />
Item No | Date | Description | Type | Amount (LKR) | Amount (RMB) | Actions |
---|---|---|---|---|---|---|
{entry.itemNumber} | {entry.date} | {entry.description} | {entry.type} | {entry.amountLKR} | {entry.amountRMB} |
|
);
}