Files
ISA-Frontend/apps/isa-app/src/page/customer/customer-search/kundenkarte-main-view/kundenkarte-main-view.component.html
Nino Righi a855e79196 Merged PR 2030: feat(crm-customer-booking): add loyalty card booking component
feat(crm-customer-booking): add loyalty card booking component

Implement new component for customer loyalty card credit/debit bookings with booking type selection and real-time transaction updates. Includes automatic reload of transaction history after successful bookings.

Key changes:
- Add CrmFeatureCustomerBookingComponent with booking form UI
- Create CustomerCardBookingFacade for booking API calls
- Add CustomerBookingReasonsResource for loading booking types
- Extend CrmSearchService with booking methods (addBooking, fetchBookingReasons, fetchCurrentBookingPartnerStore)
- Add AddBookingSchema with Zod validation
- Integrate component into KundenkarteMainViewComponent
- Update CustomerCardTransactionsResource to providedIn: 'root' for shared access
- Improve transaction list UX (hide header/center empty state when no data)

Technical details:
- New library: @isa/crm/feature/customer-booking (Vitest-based)
- Signals-based state management with computed properties
- Automatic points calculation based on booking type multiplier
- Error handling with feedback dialogs
- 500ms delay before transaction reload to ensure API consistency
- Data attributes for E2E testing (data-what, data-which)

Ref: #5315
2025-11-18 10:05:17 +00:00

22 lines
624 B
HTML

<div class="flex flex-row justify-end -mt-2">
<page-customer-menu
[customerId]="customerId$ | async"
[processId]="processId$ | async"
[showCustomerCard]="false"
/>
</div>
<crm-customer-loyalty-cards
[customerId]="customerId$ | async"
[tabId]="processId$ | async"
class="mt-4"
/>
<crm-customer-booking [cardCode]="firstActiveCardCode()" class="mt-4" />
<crm-customer-card-transactions
[cardCode]="firstActiveCardCode()"
class="mt-8"
/>
<utils-scroll-top-button
[target]="hostElement"
class="flex flex-col justify-self-end fixed bottom-6 right-6"
></utils-scroll-top-button>