Enhanced the proof of payment attachment feature with the following improvements: - Renamed field from `proofOfPaymentAttachmentType` to `proofOfPaymentType` for consistency - Added "none" option allowing users to disable proof of payment attachments - Changed default value from "combined" to "none" for better UX - Repositioned section in form after payment instructions (more logical flow) - Added conditional warning when "combined" is selected without payment method - Updated translations with emojis and improved tooltips for all options - Backend validation and database operations updated to support new field structure 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
119 lines
3.7 KiB
TypeScript
119 lines
3.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;
|
|
/** 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) method for showing payment instructions to tenant */
|
|
tenantPaymentMethod?: "none" | "iban" | "revolut" | null;
|
|
|
|
/** (optional) type of proof of payment attachment */
|
|
proofOfPaymentType: "none" | "combined" | "per-bill";
|
|
|
|
/** (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 */
|
|
seenByTenantAt?: Date | 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;
|
|
}; |