import { ObjectId } from "mongodb"; import { inter } from "../ui/fonts"; export interface BillAttachment { fileName: string; fileSize: number; fileType: string; fileLastModified: number; fileContentsBase64: string; }; export interface YearMonth { year: number; month: number; }; /** User settings data */ export interface UserSettings { /** user's ID */ userId: string; /** whether enableshow IBAN payment instructions in monthly statement */ enableIbanPayment?: boolean | null; /** owner name */ ownerName?: string | null; /** owner street */ ownerStreet?: string | null; /** owner town */ ownerTown?: string | null; /** owner IBAN */ ownerIBAN?: string | null; /** currency (ISO 4217) */ currency?: string | null; /** whether to enable Revolut payment instructions in monthly statement */ enableRevolutPayment?: boolean | null; /** owner Revolut payment link */ ownerRevolutProfileName?: string | null; }; /** bill object in the form returned by MongoDB */ export interface BillingLocation { _id: string; /** user's ID */ userId: string; /** user's email */ userEmail?: string | null; /** name of the location */ name: string; /** billing period year and month */ yearMonth: YearMonth; /** array of bills */ bills: Bill[]; /** (optional) notes */ notes: string|null; /** (optional) whether to generate 2D code for tenant */ generateTenantCode?: boolean | null; /** (optional) tenant name */ tenantName?: string | null; /** (optional) tenant street */ tenantStreet?: string | null; /** (optional) tenant town */ tenantTown?: string | null; /** (optional) whether to automatically notify tenant */ autoBillFwd?: boolean | null; /** (optional) tenant email */ tenantEmail?: string | null; /** (optional) bill forwarding strategy */ billFwdStrategy?: "when-payed" | "when-attached" | null; /** (optional) whether to automatically send rent notification */ rentDueNotification?: boolean | null; /** (optional) day of month when rent is due (1-31) */ rentDueDay?: number | null; /** (optional) monthly rent amount in cents */ rentAmount?: number | null; /** (optional) whether the location has been seen by tenant */ seenByTenant?: boolean | null; /** (optional) utility bills proof of payment attachment */ utilBillsProofOfPaymentAttachment?: BillAttachment|null; /** (optional) date when utility bills proof of payment was uploaded */ utilBillsProofOfPaymentUploadedAt?: Date|null; }; export enum BilledTo { Tenant = "tenant", Landlord = "landlord" } /** Bill basic data */ export interface Bill { _id: string; /** bill name */ name: string; /** is the bill paid */ paid: boolean; /** who is billed for the bill */ billedTo?: BilledTo; /** payed amount amount in cents */ payedAmount?: number | null; /** attached document (optional) */ attachment?: BillAttachment|null; /** * true if there an attachment * @description this field enables us to send this info to the client without sending large attachment - it's an optimization */ hasAttachment?: boolean; /** (optional) notes */ notes?: string|null; /** * (optional) image data containing PDF471 bar code * @deprecated LEGACY FIELD - use hub3aText instead * */ barcodeImage?:string; /** (optional) HUB-3A text for generating PDF417 bar code */ hub3aText?:string; };