Files
evidencija-rezija/app/lib/db-types.ts
Knee Cola 1c7edabcbe Refactor types to support per-bill proof of payment
- Renamed BillAttachment to FileAttachment for better generalization
- Added uploadedAt field to FileAttachment (consolidates timestamp)
- Renamed utilBillsProofOfPaymentAttachment to utilBillsProofOfPayment
- Removed separate utilBillsProofOfPaymentUploadedAt field (now in FileAttachment)
- Added rentProofOfPayment field to BillingLocation for rent-specific proof
- Added proofOfPayment field to Bill interface for per-bill attachments
- Removed unused imports (ObjectId, inter)

This refactoring enables both "combined" (location-level) and "per-bill"
proof of payment attachment strategies.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-07 11:30:23 +01:00

120 lines
3.7 KiB
TypeScript

export interface FileAttachment {
fileName: string;
fileSize: number;
fileType: string;
fileLastModified: number;
fileContentsBase64: string;
uploadedAt: Date;
};
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 */
utilBillsProofOfPayment?: FileAttachment|null;
/** (optional) rent proof of payment attachment */
rentProofOfPayment?: FileAttachment|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?: FileAttachment|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;
/** (optional) proof of payment attachment */
proofOfPayment?: FileAttachment|null;
};