aboutsummaryrefslogtreecommitdiff
path: root/src/models/client.rs
diff options
context:
space:
mode:
authorVidhu Kant Sharma <vidhukant@vidhukant.com>2023-08-30 13:18:41 +0530
committerVidhu Kant Sharma <vidhukant@vidhukant.com>2023-08-30 13:18:41 +0530
commita68c5a2e52a62600d3baf579afa484f85d51efb9 (patch)
tree404a7c743bc9c39f2effdd3a9b231bf053a3283c /src/models/client.rs
parentcb86b7f9e4dcd1c1331025d70b272e4de33f164a (diff)
added clients list
Diffstat (limited to 'src/models/client.rs')
-rw-r--r--src/models/client.rs83
1 files changed, 83 insertions, 0 deletions
diff --git a/src/models/client.rs b/src/models/client.rs
new file mode 100644
index 0000000..a76af70
--- /dev/null
+++ b/src/models/client.rs
@@ -0,0 +1,83 @@
+/* openbills-web - Web client for Libre Billing Software
+ * Copyright (C) 2023 Vidhu Kant Sharma <vidhukant@vidhukant.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#[derive(Clone, PartialEq)]
+pub struct Address {
+ pub address_text: String,
+ pub city: String,
+ pub state: String,
+ pub postal_code: String,
+ pub country: String,
+}
+
+impl Address {
+ pub fn new() -> Address {
+ Address {
+ address_text: String::new(),
+ city: String::new(),
+ state: String::new(),
+ postal_code: String::new(),
+ country: String::new(),
+ }
+ }
+}
+
+#[derive(Clone, PartialEq)]
+pub struct Contact {
+ pub contact_name: String,
+ pub phone_number: String,
+ pub email_address: String,
+ pub website: String,
+}
+
+impl Contact {
+ pub fn new() -> Contact {
+ Contact {
+ contact_name: String::new(),
+ phone_number: String::new(),
+ email_address: String::new(),
+ website: String::new(),
+ }
+ }
+}
+
+#[derive(Clone, PartialEq)]
+pub struct Client {
+ pub id: u64,
+ pub name: String,
+ pub contact: Contact,
+ pub gstin: String,
+ pub billing_address: Address,
+ pub shipping_addresses: Vec<Address>,
+}
+
+impl Client {
+ pub fn new() -> Client {
+ Client {
+ id: 0,
+ name: String::new(),
+ contact: Contact::new(),
+ gstin: String::new(),
+ billing_address: Address::new(),
+ shipping_addresses: Vec::new(),
+ }
+ }
+
+ pub fn add_shipping_address(&mut self, address: Address) {
+ self.shipping_addresses.push(address);
+ }
+}