Files
evidencija-rezija/app/lib/db-types.ts
Knee Cola 0ae5140487 Add billedToTenant property to Bill interface with UI support
Added new boolean property to track whether a bill should be paid by the tenant.

Changes:
- Added billedToTenant property to Bill interface in db-types.ts
- Added checkbox UI control in BillEditForm for billedToTenant
- Added state management and change handler for the checkbox
- Added i18n translations (EN: "Billed to tenant", HR: "Plaća podstanar")
- Set default value to true for new bills

Note: Server action implementation pending - property not yet persisted to database.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 13:18:15 +01:00

56 lines
1.4 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;
};
/** 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;
};
/** Bill basic data */
export interface Bill {
_id: string;
/** bill name */
name: string;
/** is the bill paid */
paid: boolean;
/** true if tenant to cover the bill */
billedToTenant: boolean;
/** 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;
};