Commit Graph

46 Commits

Author SHA1 Message Date
Knee Cola
c3b555189b Complete billedToTenant server action implementation
Implemented full server-side persistence for the billedToTenant property:

- Extract billedToTenant from formData in updateOrAddBill action
- Add to MongoDB $set operations for updating existing bills
- Include in new bill creation with value from form
- Set default value (true) for bills added to subsequent months
- Handle undefined values from existing database records using destructuring defaults

This completes the feature - bills can now track whether they should be
paid by the tenant, with backward compatibility for existing data.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 13:30:47 +01:00
b5028ada52 fix: update QR code print layout to show payedAmount instead of yearMonth
Remove billYear and billMonth from second column, add payedAmount as last value.
- Update PrintBarcodeData interface to replace yearMonth with payedAmount
- Modify fetchBarcodeDataForPrint to include bill.payedAmount
- Update PrintPreview display to show payedAmount (formatted from cents)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 13:36:41 +02:00
fdfa23e67d fix: resolve MongoDB ObjectId serialization error in client components
Fix React serialization warning when passing ObjectIds to client components:

**Problem:**
- MongoDB ObjectIds have toJSON() methods which React rejects in client components
- Error: "Only plain objects can be passed to Client Components from Server Components. Objects with toJSON methods are not supported"
- Occurred when rendering main page with year parameter (?year=2023)

**Solution:**
- Add $addFields stage in fetchAllLocations aggregation pipeline
- Convert location _id and bill _id fields to strings using $toString
- Simplify $project stage to use single "bills": 1 instead of individual field projections
- Ensures only plain objects (strings) are passed to client components

**Technical Details:**
- Modified app/lib/actions/locationActions.ts:268-287
- Added $addFields stage before existing $project stage
- Converted ObjectIds to strings while preserving all other data structures
- Build passes without serialization warnings

ObjectId serialization now handled properly across all client component boundaries.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-14 22:45:14 +02:00
493c2f62fa feat: implement US-2 - create print route with barcode data fetching
- Add Next.js print route at /[locale]/print/[year]/[month]
- Implement fetchBarcodeDataForPrint function with user authentication
- Create PrintPreview component with basic table layout
- Add proper 404 handling with not-found.tsx
- Fix barcode image display with flexible data URL handling
- Filter and sort bills with barcode data for consistent display

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-14 19:57:13 +02:00
6c7a315966 fix: prevent empty file from overwriting existing bill attachments
Improve file attachment handling by:
- Adding fileSize === 0 check to prevent empty files from being processed
- Simplifying attachment logic by moving size validation to serializeAttachment function
- Ensuring null is returned for empty/invalid files to preserve existing attachments

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 22:32:07 +02:00
8b845261d2 fix: prevent empty file from overwriting existing bill attachments
Fix updateOrAddBill to check file size before processing attachment,
preventing empty blob files from overwriting existing attachments
when updating bill properties.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 22:12:23 +02:00
daa9b2a134 locationAction: query optimization 2025-08-11 13:58:57 +02:00
fade52a49f billActions: projection optimization 2025-08-11 13:57:36 +02:00
aab0afd045 locationAction: fixed optional form fields 2025-08-11 13:57:07 +02:00
21da2f0d49 optimization: projecting only what's needed 2025-08-11 13:38:59 +02:00
d42a7da75b fixed typescript error 2025-08-11 12:49:10 +02:00
44cdcf8cec optimized queries 2025-08-11 12:19:29 +02:00
3ce158825e add bulk bill deletion across subsequent months
Implement ability to delete bills from all subsequent months
with toggle option and warning message similar to location deletion.
Includes centered warning box and efficient bulk operations.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-11 12:11:10 +02:00
71895229ec add bulk bill creation across subsequent months
Implement ability to add newly created bills to all subsequent months
with toggle option (disabled by default). Includes duplicate checking
and efficient bulk operations.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-11 12:01:18 +02:00
6d6a8782ab optimize database queries by excluding bills field
- Added projections to exclude bills field from location lookup queries
- Optimized updateOrAddLocation currentLocation query (line 79)
- Optimized duplicate check query for subsequent months (line 201)
- Optimized deleteLocationById location lookup query (line 372)
- Reduces network traffic and memory usage by avoiding unnecessary bills data
- Improves query performance especially for locations with many bills or large attachments

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-11 11:50:47 +02:00
a6d0cc77ac add update scope options for location editing
- Added radio button group to LocationEditForm with three update modes:
  1. Current month only (default) - updates specific location
  2. Current and all future months - updates current and subsequent months
  3. All months - updates all locations with same name across all time periods
- Enhanced updateOrAddLocation action with smart update logic based on scope
- Uses name-based matching to find related locations across months
- Added compact radio button styling with reduced spacing and indentation
- Added translations for update scope options in Croatian and English
- Maintains backward compatibility with existing single-location updates

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-11 11:42:48 +02:00
1eac116a55 add option to delete location in all subsequent months
- Added toggle in LocationDeleteForm for deleting locations from future months (disabled by default)
- Modified deleteLocationById action to support batch deletion across subsequent months
- When enabled, deletes all locations with same name in current and future months/years
- Only deletes user's own locations with proper data isolation
- Added translations for toggle text in Croatian and English
- Removed unused imports and variables to fix TypeScript warnings
- Uses efficient MongoDB deleteMany operation for bulk deletions

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-11 11:01:16 +02:00
78a6c18ba5 add option to create location in all subsequent months
- Added toggle in LocationEditForm for adding locations to future months (disabled by default)
- Modified updateOrAddLocation action to support batch creation across subsequent months
- Only creates locations in months where no location with same name exists
- Added translations for toggle text in Croatian and English
- Fixed unused variable warning in deleteLocationById
- Improved auth.ts development comments for clarity

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-11 10:27:31 +02:00
87d6928a97 BugFix: fixing types 2025-01-13 16:32:38 +01:00
103e371d5f mongo projekcija proširena property-em "hasAttachment" 2025-01-13 16:05:15 +01:00
86b6c777c4 opzimizacija: stranica za prikaz godine je dohvaćala i QR kodove = slow 2024-12-14 09:56:50 +01:00
4ab61f9917 implementiran share by link 2024-12-13 17:50:12 +01:00
78f8d1e1c3 BugFix: barcodes were not reset while copying to another month 2024-02-29 08:55:38 +01:00
f7b92931a9 i18n: fixing form validaton messages 2024-02-17 10:17:17 +01:00
fcd94408fe BugFix: fixed translation formating 2024-02-17 09:41:35 +01:00
30b3da9c31 i18n support added to all form validations 2024-02-17 07:28:47 +01:00
1da6479c80 i18n enabled for bill form validation 2024-02-16 22:25:09 +01:00
dc8f7e335a bar code imaghe is saved to DB 2024-02-12 15:29:16 +01:00
cb633ccc4d BugFix: when fetching locations binary data was included in the result 2024-02-08 15:31:35 +01:00
db3b4abed5 optimization: not fetching binary data if not needed 2024-02-08 15:15:10 +01:00
8703decb91 HomePage: switched to client-side rendering 2024-02-08 13:23:23 +01:00
93dd9bf3f4 uklonjen umjetan delay 2024-02-06 14:19:23 +01:00
f0581eb533 za actions dodan "noStore" 2024-02-06 14:17:12 +01:00
7f08349688 uveden umjetni delay 2024-02-06 09:56:43 +01:00
82d895cd6a Hotfix: fn was passed wrong params 2024-02-01 15:17:05 +01:00
2261e83715 refactoring: changing param list of a fn 2024-02-01 15:07:30 +01:00
48990701c9 locationAction didn't allways return form state 2024-01-17 16:17:43 +01:00
0eb11e7d02 form action redirects user to tjhe appropriate year 2024-01-17 15:47:55 +01:00
64b192c4c2 removed debug logging 2024-01-10 21:38:21 +01:00
ccb628aadb implemented pagination 2024-01-10 15:53:46 +01:00
102edff52f refactoring: fixing typescript 2024-01-09 16:41:59 +01:00
53a266df44 fixed fetching of available years 2024-01-09 16:28:12 +01:00
8cbf254f38 fixed result sorting 2024-01-09 16:25:23 +01:00
d627ad757d year & month replaced by yearMonth object 2024-01-09 16:20:49 +01:00
46b65711a8 yearMonth split into year + month 2024-01-09 15:43:01 +01:00
8112c9765d refactoring: actions moved to seprate dir 2024-01-09 15:00:26 +01:00