- Add rentAmount field to BillingLocation interface (stored in cents) - Implement Zod validation with conditional requirement when rent notification is enabled - Add rent amount input field to LocationEditForm with decimal display - Update all database operations to persist rentAmount - Add localization strings for both English and Croatian - Fix missing notes field in insertOne/insertMany operations 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
95 lines
2.7 KiB
TypeScript
95 lines
2.7 KiB
TypeScript
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;
|
|
/** first name */
|
|
firstName?: string | null;
|
|
/** last name */
|
|
lastName?: string | null;
|
|
/** address */
|
|
address?: string | null;
|
|
/** IBAN */
|
|
iban?: string | null;
|
|
/** whether to show 2D code in monthly statement */
|
|
show2dCodeInMonthlyStatement?: boolean | 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 first name */
|
|
tenantFirstName?: string | null;
|
|
/** (optional) tenant last name */
|
|
tenantLastName?: 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;
|
|
};
|
|
|
|
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 */
|
|
barcodeImage?:string;
|
|
}; |