aboutsummaryrefslogtreecommitdiff
path: root/src/models
diff options
context:
space:
mode:
Diffstat (limited to 'src/models')
-rw-r--r--src/models/client.rs83
-rw-r--r--src/models/mod.rs18
2 files changed, 101 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);
+ }
+}
diff --git a/src/models/mod.rs b/src/models/mod.rs
new file mode 100644
index 0000000..514c03d
--- /dev/null
+++ b/src/models/mod.rs
@@ -0,0 +1,18 @@
+/* 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/>.
+ */
+
+pub mod client;