diff options
Diffstat (limited to 'src/models')
-rw-r--r-- | src/models/client.rs | 83 | ||||
-rw-r--r-- | src/models/mod.rs | 18 |
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; |