/* openbills-web - Web client for Libre Billing Software * Copyright (C) 2023 Vidhu Kant Sharma * * 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 . */ #[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 Customer { pub id: u64, pub name: String, pub contact: Contact, pub gstin: String, pub billing_address: Address, pub shipping_addresses: Vec
, } impl Customer { pub fn new() -> Customer { Customer { 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); } }