cloud-ide-fees 0.0.44 → 0.0.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
8
8
  import { ConfirmationService, NotificationService, CideIconComponent, CideEleButtonComponent, CideEleDataGridComponent, CideEleDropdownComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent } from 'cloud-ide-element';
9
9
  import { MFeeDiscountRule, MFeeDiscountRuleInsertUpdatePayload, MFeeDiscountRuleToggleStatusPayload, MFeeDiscountRuleDeletePayload } from 'cloud-ide-lms-model';
10
10
  import { AppStateHelperService, RightsService, CideLytSharedWrapperComponent } from 'cloud-ide-layout';
11
- import { C as CideFeeDiscountRuleService } from './cloud-ide-fees-cloud-ide-fees-DwymPnFD.mjs';
11
+ import { C as CideFeeDiscountRuleService } from './cloud-ide-fees-cloud-ide-fees-DTu2UFxM.mjs';
12
12
 
13
13
  class DiscountRuleManagerComponent {
14
14
  fb = inject(FormBuilder);
@@ -272,4 +272,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
272
272
  }], propDecorators: { statusRendererTemplate: [{ type: i0.ViewChild, args: ['statusRendererTemplate', { isSignal: true }] }], actionsDropdownRendererTemplate: [{ type: i0.ViewChild, args: ['actionsDropdownRendererTemplate', { isSignal: true }] }], discountValueRendererTemplate: [{ type: i0.ViewChild, args: ['discountValueRendererTemplate', { isSignal: true }] }], modeRendererTemplate: [{ type: i0.ViewChild, args: ['modeRendererTemplate', { isSignal: true }] }] } });
273
273
 
274
274
  export { DiscountRuleManagerComponent };
275
- //# sourceMappingURL=cloud-ide-fees-discount-rule-manager.component-B2322yJN.mjs.map
275
+ //# sourceMappingURL=cloud-ide-fees-discount-rule-manager.component-io1mU-5z.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-ide-fees-discount-rule-manager.component-B2322yJN.mjs","sources":["../../../projects/cloud-ide-fees/src/lib/collection/discount-management/components/discount-rule-manager/discount-rule-manager.component.ts","../../../projects/cloud-ide-fees/src/lib/collection/discount-management/components/discount-rule-manager/discount-rule-manager.component.html"],"sourcesContent":["import {\r\n Component,\r\n signal,\r\n computed,\r\n viewChild,\r\n TemplateRef,\r\n DestroyRef,\r\n inject,\r\n OnInit,\r\n type OnDestroy\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule, FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n CideEleDataGridComponent,\r\n CideIconComponent,\r\n CideEleButtonComponent,\r\n type GridConfiguration,\r\n type GridEvent,\r\n CideEleDropdownComponent,\r\n type DropdownItem,\r\n type TemplateContext,\r\n ConfirmationService,\r\n NotificationService,\r\n CideInputComponent,\r\n CideSelectComponent,\r\n CideTextareaComponent\r\n} from 'cloud-ide-element';\r\nimport {\r\n FeeDiscountRule,\r\n MFeeDiscountRule,\r\n MFeeDiscountRuleGetByIdPayload,\r\n MFeeDiscountRuleInsertUpdatePayload,\r\n MFeeDiscountRuleDeletePayload,\r\n MFeeDiscountRuleToggleStatusPayload\r\n} from 'cloud-ide-lms-model';\r\nimport { AppStateHelperService, CideLytSharedWrapperComponent, RightsService } from 'cloud-ide-layout';\r\nimport { CideFeeDiscountRuleService } from '../../services/discount-rule.service';\r\n\r\n@Component({\r\n selector: 'cide-discount-rule-manager',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CideIconComponent,\r\n CideEleButtonComponent,\r\n CideEleDataGridComponent,\r\n CideEleDropdownComponent,\r\n CideLytSharedWrapperComponent,\r\n CideInputComponent,\r\n CideSelectComponent,\r\n CideTextareaComponent\r\n ],\r\n templateUrl: './discount-rule-manager.component.html',\r\n styles: [`\r\n :host {\r\n @apply tw-w-full tw-h-full tw-flex tw-flex-col;\r\n }\r\n .rule-form-container {\r\n @apply tw-max-h-[80vh] tw-overflow-y-auto tw-p-2;\r\n }\r\n `]\r\n})\r\nexport class DiscountRuleManagerComponent implements OnInit, OnDestroy {\r\n private readonly fb = inject(FormBuilder);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly discountRuleService = inject(CideFeeDiscountRuleService);\r\n private readonly appState = inject(AppStateHelperService);\r\n private readonly confirmationService = inject(ConfirmationService);\r\n private readonly notificationService = inject(NotificationService);\r\n private readonly rightsService = inject(RightsService);\r\n\r\n // ViewChild templates for grid\r\n readonly statusRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('statusRendererTemplate');\r\n readonly actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('actionsDropdownRendererTemplate');\r\n readonly discountValueRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('discountValueRendererTemplate');\r\n readonly modeRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('modeRendererTemplate');\r\n\r\n // State signals\r\n readonly discountRules = signal<FeeDiscountRule[]>([]);\r\n readonly loading = signal<boolean>(false);\r\n readonly showModal = signal<boolean>(false);\r\n readonly isEditing = signal<boolean>(false);\r\n readonly submitting = signal<boolean>(false);\r\n\r\n // Pagination and search\r\n readonly currentPage = signal<number>(1);\r\n readonly pageSize = signal<number>(10);\r\n readonly totalItems = signal<number>(0);\r\n readonly searchQuery = signal<string>('');\r\n\r\n readonly breadcrumbData = signal([\r\n { id: 'list', label: 'Discount Rules', icon: 'percent' }\r\n ]);\r\n\r\n // Rule Form\r\n ruleForm: FormGroup = this.fb.group({\r\n _id: [null],\r\n feedr_name: ['', Validators.required],\r\n feedr_code: ['', Validators.required],\r\n feedr_description: [''],\r\n feedr_discount_type: ['PERCENTAGE', Validators.required],\r\n feedr_discount_value: [0, [Validators.required, Validators.min(0)]],\r\n feedr_mode: ['MANUAL', Validators.required],\r\n feedr_status: ['ACTIVE'],\r\n feedr_priority: [1],\r\n feedr_approval_req: [false],\r\n feedr_stacking: ['STACKABLE'],\r\n feedr_criteria_json: ['']\r\n });\r\n\r\n // Configuration options\r\n readonly discountTypeOptions = signal([\r\n { value: 'PERCENTAGE', label: 'Percentage (%)' },\r\n { value: 'FIXED_AMOUNT', label: 'Fixed Amount (₹)' }\r\n ]);\r\n\r\n readonly modeOptions = signal([\r\n { value: 'MANUAL', label: 'Manual Selection' },\r\n { value: 'AUTOMATIC', label: 'Automatic Application' }\r\n ]);\r\n\r\n readonly stackingOptions = signal([\r\n { value: 'STACKABLE', label: 'Stackable' },\r\n { value: 'EXCLUSIVE', label: 'Exclusive (Only this)' },\r\n { value: 'MAX_OF', label: 'Max Of (Best for student)' }\r\n ]);\r\n\r\n readonly gridConfig = computed<GridConfiguration<FeeDiscountRule>>(() => ({\r\n id: 'discount-rule-grid',\r\n columns: [\r\n { key: 'feedr_code', header: 'Code', type: 'text', width: '120px', sortable: true },\r\n { key: 'feedr_name', header: 'Rule Name', type: 'text', width: 'auto', sortable: true },\r\n { key: 'discount_value', header: 'Value', type: 'custom', width: '120px', renderer: 'discountValueRenderer' },\r\n { key: 'feedr_mode', header: 'Mode', type: 'custom', width: '120px', renderer: 'modeRenderer' },\r\n { key: 'feedr_status', header: 'Status', type: 'custom', width: '120px', renderer: 'statusRenderer' },\r\n { key: 'actions', header: 'Actions', type: 'custom', width: '80px', renderer: 'actionsDropdownRenderer' }\r\n ],\r\n data: this.discountRules(),\r\n pagination: {\r\n enabled: true,\r\n pageSize: this.pageSize(),\r\n pageSizeOptions: [10, 25, 50, 100],\r\n showQuickJump: true,\r\n showPageInfo: true,\r\n showRefresh: true\r\n },\r\n search: {\r\n enabled: true,\r\n placeholder: 'Search rules...',\r\n searchableColumns: ['feedr_name', 'feedr_code', 'feedr_description']\r\n },\r\n loading: {\r\n showOverlay: this.loading(),\r\n useDefer: true,\r\n skeletonRows: 5\r\n },\r\n responsive: true\r\n }));\r\n\r\n ngOnInit(): void {\r\n this.rightsService.initializeRights('fee_discount_rule');\r\n this.loadDiscountRules();\r\n }\r\n\r\n ngOnDestroy(): void { }\r\n\r\n loadDiscountRules(): void {\r\n this.loading.set(true);\r\n const payload = new MFeeDiscountRule({\r\n pageIndex: this.currentPage(),\r\n pageSize: this.pageSize(),\r\n query: this.searchQuery(),\r\n feedr_entity_id_syen: this.appState.activeEntity()?._id\r\n });\r\n\r\n this.discountRuleService.getDiscountRuleList(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res.success) {\r\n this.discountRules.set(res.data || []);\r\n this.totalItems.set(res.total || 0);\r\n }\r\n this.loading.set(false);\r\n },\r\n error: () => this.loading.set(false)\r\n });\r\n }\r\n\r\n onGridEvent(event: GridEvent<any>): void {\r\n if (event.type === 'pageChange') {\r\n const pageData = event.data as { pageIndex: number, pageSize: number };\r\n this.currentPage.set(pageData.pageIndex);\r\n this.pageSize.set(pageData.pageSize);\r\n this.loadDiscountRules();\r\n } else if (event.type === 'search') {\r\n this.searchQuery.set(event.data as string);\r\n this.currentPage.set(1);\r\n this.loadDiscountRules();\r\n }\r\n }\r\n\r\n openCreateModal(): void {\r\n this.isEditing.set(false);\r\n this.ruleForm.reset({\r\n feedr_discount_type: 'PERCENTAGE',\r\n feedr_mode: 'MANUAL',\r\n feedr_status: 'ACTIVE',\r\n feedr_priority: 1,\r\n feedr_stacking: 'STACKABLE',\r\n feedr_approval_req: false\r\n });\r\n this.showModal.set(true);\r\n }\r\n\r\n editRule(rule: FeeDiscountRule): void {\r\n this.isEditing.set(true);\r\n this.ruleForm.patchValue(rule);\r\n this.showModal.set(true);\r\n }\r\n\r\n closeModal(): void {\r\n this.showModal.set(false);\r\n }\r\n\r\n onSubmit(): void {\r\n if (this.ruleForm.invalid) return;\r\n\r\n this.submitting.set(true);\r\n const payload = new MFeeDiscountRuleInsertUpdatePayload(this.ruleForm.value);\r\n payload.feedr_entity_id_syen = this.appState.activeEntity()?._id;\r\n\r\n this.discountRuleService.saveDiscountRule(payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res.success) {\r\n this.notificationService.success('Discount rule saved successfully');\r\n this.showModal.set(false);\r\n this.loadDiscountRules();\r\n }\r\n this.submitting.set(false);\r\n },\r\n error: () => this.submitting.set(false)\r\n });\r\n }\r\n\r\n toggleStatus(rule: FeeDiscountRule): void {\r\n const payload = new MFeeDiscountRuleToggleStatusPayload({ feedr_id: rule._id });\r\n this.discountRuleService.toggleDiscountRuleStatus(payload).subscribe((res: any) => {\r\n if (res.success) {\r\n this.notificationService.success('Status updated');\r\n this.loadDiscountRules();\r\n }\r\n });\r\n }\r\n\r\n deleteRule(rule: FeeDiscountRule): void {\r\n this.confirmationService.ask({\r\n title: 'Delete Rule',\r\n message: `Are you sure you want to delete \"${rule.feedr_name}\"?`,\r\n type: 'warning'\r\n }).then(confirmed => {\r\n if (confirmed) {\r\n const payload = new MFeeDiscountRuleDeletePayload({ feedr_id: rule._id });\r\n this.discountRuleService.deleteDiscountRule(payload).subscribe((res: any) => {\r\n if (res.success) {\r\n this.notificationService.success('Rule deleted');\r\n this.loadDiscountRules();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n getActionDropdownItems(rule: FeeDiscountRule): DropdownItem[] {\r\n const items: DropdownItem[] = [\r\n { id: 'edit', label: 'Edit', icon: 'edit' },\r\n { id: 'toggle', label: rule.feedr_status === 'ACTIVE' ? 'Deactivate' : 'Activate', icon: 'sync_alt' }\r\n ];\r\n\r\n // Only show sync for active automatic rules\r\n if (rule.feedr_status === 'ACTIVE' && rule.feedr_mode === 'AUTOMATIC') {\r\n items.push({ id: 'sync', label: 'Sync Rule', icon: 'sync' });\r\n }\r\n\r\n items.push({ id: 'delete', label: 'Delete', icon: 'delete', textColor: 'tw-text-red-600' });\r\n return items;\r\n }\r\n\r\n onDropdownItemClick(item: DropdownItem, rule: FeeDiscountRule): void {\r\n if (item.id === 'edit') this.editRule(rule);\r\n else if (item.id === 'toggle') this.toggleStatus(rule);\r\n else if (item.id === 'delete') this.deleteRule(rule);\r\n else if (item.id === 'sync') this.onSyncRule(rule);\r\n }\r\n\r\n onSyncRule(rule: FeeDiscountRule): void {\r\n if (!rule._id) return;\r\n\r\n this.confirmationService.ask({\r\n title: 'Sync Rule',\r\n message: `Do you want to sync \"${rule.feedr_name}\" with all existing UNPAID assignments? This will re-evaluate criteria and update amounts.`,\r\n type: 'info'\r\n }).then(confirmed => {\r\n if (confirmed) {\r\n this.notificationService.info('Syncing in progress...');\r\n this.discountRuleService.syncDiscountRule({ feedr_id: rule._id! })\r\n .subscribe((res: any) => {\r\n if (res.success) {\r\n this.notificationService.success(res.message || 'Sync completed successfully');\r\n } else {\r\n this.notificationService.error(res.message || 'Sync failed');\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n templateRenderers = computed(() => ({\r\n statusRenderer: this.statusRendererTemplate(),\r\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate(),\r\n discountValueRenderer: this.discountValueRendererTemplate(),\r\n modeRenderer: this.modeRendererTemplate()\r\n }));\r\n}\r\n","<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'fee_discount_rule' }\"\r\n [breadcrumb_data]=\"breadcrumbData()\">\r\n\r\n <div class=\"tw-p-4 tw-flex tw-flex-col tw-gap-4 tw-h-[calc(100vh-140px)]\">\r\n <!-- Header Actions -->\r\n <div class=\"tw-flex tw-justify-between tw-items-center\">\r\n <h2 class=\"tw-text-lg tw-font-bold tw-text-gray-800\">Discount Rules</h2>\r\n <button cideEleButton variant=\"primary\" (click)=\"openCreateModal()\">\r\n <cide-ele-icon size=\"sm\">add</cide-ele-icon> Create New Rule\r\n </button>\r\n </div>\r\n\r\n <!-- Data Grid -->\r\n <div class=\"tw-bg-white tw-rounded-xl tw-border tw-border-gray-200 tw-overflow-hidden tw-flex-1\">\r\n <cide-ele-data-grid [config]=\"gridConfig()\" [templateRenderers]=\"templateRenderers()\"\r\n [serverSidePagination]=\"true\" [totalServerItems]=\"totalItems()\" [currentServerPage]=\"currentPage()\"\r\n [currentServerPageSize]=\"pageSize()\" (gridEvent)=\"onGridEvent($event)\">\r\n </cide-ele-data-grid>\r\n </div>\r\n </div>\r\n</cide-lyt-shared-wrapper>\r\n\r\n<!-- Status Renderer -->\r\n<ng-template #statusRendererTemplate let-row=\"row\">\r\n <span class=\"tw-px-2 tw-py-1 tw-rounded-full tw-text-[10px] tw-font-bold\"\r\n [ngClass]=\"row.feedr_status === 'ACTIVE' ? 'tw-bg-green-100 tw-text-green-700' : 'tw-bg-gray-100 tw-text-gray-600'\">\r\n {{ row.feedr_status }}\r\n </span>\r\n</ng-template>\r\n\r\n<!-- Discount Value Renderer -->\r\n<ng-template #discountValueRendererTemplate let-row=\"row\">\r\n <div class=\"tw-font-bold\"\r\n [ngClass]=\"row.feedr_discount_type === 'PERCENTAGE' ? 'tw-text-blue-600' : 'tw-text-green-600'\">\r\n {{ row.feedr_discount_type === 'PERCENTAGE' ? row.feedr_discount_value + '%' : '₹' + row.feedr_discount_value }}\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Mode Renderer -->\r\n<ng-template #modeRendererTemplate let-row=\"row\">\r\n <div class=\"tw-text-xs tw-font-medium\">\r\n {{ row.feedr_mode === 'AUTOMATIC' ? '🚀 Automatic' : '⚙️ Manual' }}\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Actions Dropdown -->\r\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\">\r\n <cide-ele-dropdown [items]=\"getActionDropdownItems(row)\" (itemClick)=\"onDropdownItemClick($event, row)\">\r\n </cide-ele-dropdown>\r\n</ng-template>\r\n\r\n<!-- Create/Edit Modal -->\r\n@if (showModal()) {\r\n<div class=\"tw-fixed tw-inset-0 tw-bg-black/50 tw-flex tw-items-center tw-justify-center tw-z-[1000] tw-p-4\">\r\n <div class=\"tw-bg-white tw-rounded-2xl tw-shadow-2xl tw-w-full tw-max-w-2xl tw-overflow-hidden\">\r\n <!-- Modal Header -->\r\n <div class=\"tw-p-4 tw-border-b tw-border-gray-100 tw-flex tw-justify-between tw-items-center tw-bg-gray-50/50\">\r\n <h3 class=\"tw-text-base tw-font-bold tw-text-gray-800\">\r\n {{ isEditing() ? 'Edit' : 'Create' }} Discount Rule\r\n </h3>\r\n <button (click)=\"closeModal()\" class=\"tw-text-gray-400 hover:tw-text-gray-600\">\r\n <cide-ele-icon>close</cide-ele-icon>\r\n </button>\r\n </div>\r\n\r\n <!-- Modal Body -->\r\n <div class=\"rule-form-container\">\r\n <form [formGroup]=\"ruleForm\" class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-4 tw-p-2\">\r\n <cide-ele-input formControlName=\"feedr_name\" label=\"Rule Name\" placeholder=\"e.g., Sibling Discount\"\r\n size=\"sm\" class=\"tw-col-span-2\"></cide-ele-input>\r\n <cide-ele-input formControlName=\"feedr_code\" label=\"Rule Code\" placeholder=\"e.g., SIB-10\"\r\n size=\"sm\"></cide-ele-input>\r\n <cide-ele-select formControlName=\"feedr_mode\" label=\"Application Mode\" [options]=\"modeOptions()\"\r\n size=\"sm\"></cide-ele-select>\r\n\r\n <cide-ele-select formControlName=\"feedr_discount_type\" label=\"Discount Type\"\r\n [options]=\"discountTypeOptions()\" size=\"sm\"></cide-ele-select>\r\n <cide-ele-input formControlName=\"feedr_discount_value\" label=\"Value\" type=\"number\"\r\n size=\"sm\"></cide-ele-input>\r\n\r\n <cide-ele-select formControlName=\"feedr_stacking\" label=\"Stacking Logic\" [options]=\"stackingOptions()\"\r\n size=\"sm\"></cide-ele-select>\r\n <cide-ele-input formControlName=\"feedr_priority\" label=\"Priority\" type=\"number\"\r\n size=\"sm\"></cide-ele-input>\r\n\r\n <div\r\n class=\"tw-col-span-2 tw-p-3 tw-bg-blue-50 tw-rounded-lg tw-border tw-border-blue-100 tw-flex tw-items-center tw-gap-3\">\r\n <input type=\"checkbox\" formControlName=\"feedr_approval_req\" class=\"tw-w-4 tw-h-4\">\r\n <div class=\"tw-text-xs tw-text-blue-800\">\r\n <strong>Require Approval?</strong>\r\n <p>If checked, manual application by staff will need manager approval.</p>\r\n </div>\r\n </div>\r\n\r\n <cide-ele-textarea formControlName=\"feedr_description\" label=\"Description\"\r\n placeholder=\"Notes about this discount...\" [rows]=\"2\" size=\"sm\"\r\n class=\"tw-col-span-2\"></cide-ele-textarea>\r\n\r\n <div class=\"tw-col-span-2 tw-mt-2\">\r\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-1\">\r\n <label class=\"tw-text-xs tw-font-bold tw-text-gray-600\">Criteria JSON (Advanced Logic)</label>\r\n <span class=\"tw-text-[10px] tw-text-blue-500 tw-italic\">JSON Array or Object</span>\r\n </div>\r\n <cide-ele-textarea formControlName=\"feedr_criteria_json\"\r\n placeholder='Example: {\"field\": \"admap_is_rte_scheme\", \"operator\": \"==\", \"value\": true}'\r\n [rows]=\"3\" size=\"sm\"></cide-ele-textarea>\r\n <p class=\"tw-text-[10px] tw-text-gray-400 tw-mt-1\">\r\n Use field names from student admission data. Operators: ==, !=, >, <, in, contains. </p>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <!-- Modal Footer -->\r\n <div class=\"tw-p-4 tw-bg-gray-50 tw-border-t tw-border-gray-100 tw-flex tw-justify-end tw-gap-3\">\r\n <button cideEleButton variant=\"ghost\" (click)=\"closeModal()\" [disabled]=\"submitting()\">Cancel</button>\r\n <button cideEleButton variant=\"primary\" (click)=\"onSubmit()\" [loading]=\"submitting()\"\r\n [disabled]=\"ruleForm.invalid\">\r\n {{ isEditing() ? 'Update' : 'Create' }} Rule\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n}"],"names":["i2"],"mappings":"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"}
1
+ {"version":3,"file":"cloud-ide-fees-discount-rule-manager.component-io1mU-5z.mjs","sources":["../../../projects/cloud-ide-fees/src/lib/collection/discount-management/components/discount-rule-manager/discount-rule-manager.component.ts","../../../projects/cloud-ide-fees/src/lib/collection/discount-management/components/discount-rule-manager/discount-rule-manager.component.html"],"sourcesContent":["import {\r\n Component,\r\n signal,\r\n computed,\r\n viewChild,\r\n TemplateRef,\r\n DestroyRef,\r\n inject,\r\n OnInit,\r\n type OnDestroy\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule, FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n CideEleDataGridComponent,\r\n CideIconComponent,\r\n CideEleButtonComponent,\r\n type GridConfiguration,\r\n type GridEvent,\r\n CideEleDropdownComponent,\r\n type DropdownItem,\r\n type TemplateContext,\r\n ConfirmationService,\r\n NotificationService,\r\n CideInputComponent,\r\n CideSelectComponent,\r\n CideTextareaComponent\r\n} from 'cloud-ide-element';\r\nimport {\r\n FeeDiscountRule,\r\n MFeeDiscountRule,\r\n MFeeDiscountRuleGetByIdPayload,\r\n MFeeDiscountRuleInsertUpdatePayload,\r\n MFeeDiscountRuleDeletePayload,\r\n MFeeDiscountRuleToggleStatusPayload\r\n} from 'cloud-ide-lms-model';\r\nimport { AppStateHelperService, CideLytSharedWrapperComponent, RightsService } from 'cloud-ide-layout';\r\nimport { CideFeeDiscountRuleService } from '../../services/discount-rule.service';\r\n\r\n@Component({\r\n selector: 'cide-discount-rule-manager',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CideIconComponent,\r\n CideEleButtonComponent,\r\n CideEleDataGridComponent,\r\n CideEleDropdownComponent,\r\n CideLytSharedWrapperComponent,\r\n CideInputComponent,\r\n CideSelectComponent,\r\n CideTextareaComponent\r\n ],\r\n templateUrl: './discount-rule-manager.component.html',\r\n styles: [`\r\n :host {\r\n @apply tw-w-full tw-h-full tw-flex tw-flex-col;\r\n }\r\n .rule-form-container {\r\n @apply tw-max-h-[80vh] tw-overflow-y-auto tw-p-2;\r\n }\r\n `]\r\n})\r\nexport class DiscountRuleManagerComponent implements OnInit, OnDestroy {\r\n private readonly fb = inject(FormBuilder);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly discountRuleService = inject(CideFeeDiscountRuleService);\r\n private readonly appState = inject(AppStateHelperService);\r\n private readonly confirmationService = inject(ConfirmationService);\r\n private readonly notificationService = inject(NotificationService);\r\n private readonly rightsService = inject(RightsService);\r\n\r\n // ViewChild templates for grid\r\n readonly statusRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('statusRendererTemplate');\r\n readonly actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('actionsDropdownRendererTemplate');\r\n readonly discountValueRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('discountValueRendererTemplate');\r\n readonly modeRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('modeRendererTemplate');\r\n\r\n // State signals\r\n readonly discountRules = signal<FeeDiscountRule[]>([]);\r\n readonly loading = signal<boolean>(false);\r\n readonly showModal = signal<boolean>(false);\r\n readonly isEditing = signal<boolean>(false);\r\n readonly submitting = signal<boolean>(false);\r\n\r\n // Pagination and search\r\n readonly currentPage = signal<number>(1);\r\n readonly pageSize = signal<number>(10);\r\n readonly totalItems = signal<number>(0);\r\n readonly searchQuery = signal<string>('');\r\n\r\n readonly breadcrumbData = signal([\r\n { id: 'list', label: 'Discount Rules', icon: 'percent' }\r\n ]);\r\n\r\n // Rule Form\r\n ruleForm: FormGroup = this.fb.group({\r\n _id: [null],\r\n feedr_name: ['', Validators.required],\r\n feedr_code: ['', Validators.required],\r\n feedr_description: [''],\r\n feedr_discount_type: ['PERCENTAGE', Validators.required],\r\n feedr_discount_value: [0, [Validators.required, Validators.min(0)]],\r\n feedr_mode: ['MANUAL', Validators.required],\r\n feedr_status: ['ACTIVE'],\r\n feedr_priority: [1],\r\n feedr_approval_req: [false],\r\n feedr_stacking: ['STACKABLE'],\r\n feedr_criteria_json: ['']\r\n });\r\n\r\n // Configuration options\r\n readonly discountTypeOptions = signal([\r\n { value: 'PERCENTAGE', label: 'Percentage (%)' },\r\n { value: 'FIXED_AMOUNT', label: 'Fixed Amount (₹)' }\r\n ]);\r\n\r\n readonly modeOptions = signal([\r\n { value: 'MANUAL', label: 'Manual Selection' },\r\n { value: 'AUTOMATIC', label: 'Automatic Application' }\r\n ]);\r\n\r\n readonly stackingOptions = signal([\r\n { value: 'STACKABLE', label: 'Stackable' },\r\n { value: 'EXCLUSIVE', label: 'Exclusive (Only this)' },\r\n { value: 'MAX_OF', label: 'Max Of (Best for student)' }\r\n ]);\r\n\r\n readonly gridConfig = computed<GridConfiguration<FeeDiscountRule>>(() => ({\r\n id: 'discount-rule-grid',\r\n columns: [\r\n { key: 'feedr_code', header: 'Code', type: 'text', width: '120px', sortable: true },\r\n { key: 'feedr_name', header: 'Rule Name', type: 'text', width: 'auto', sortable: true },\r\n { key: 'discount_value', header: 'Value', type: 'custom', width: '120px', renderer: 'discountValueRenderer' },\r\n { key: 'feedr_mode', header: 'Mode', type: 'custom', width: '120px', renderer: 'modeRenderer' },\r\n { key: 'feedr_status', header: 'Status', type: 'custom', width: '120px', renderer: 'statusRenderer' },\r\n { key: 'actions', header: 'Actions', type: 'custom', width: '80px', renderer: 'actionsDropdownRenderer' }\r\n ],\r\n data: this.discountRules(),\r\n pagination: {\r\n enabled: true,\r\n pageSize: this.pageSize(),\r\n pageSizeOptions: [10, 25, 50, 100],\r\n showQuickJump: true,\r\n showPageInfo: true,\r\n showRefresh: true\r\n },\r\n search: {\r\n enabled: true,\r\n placeholder: 'Search rules...',\r\n searchableColumns: ['feedr_name', 'feedr_code', 'feedr_description']\r\n },\r\n loading: {\r\n showOverlay: this.loading(),\r\n useDefer: true,\r\n skeletonRows: 5\r\n },\r\n responsive: true\r\n }));\r\n\r\n ngOnInit(): void {\r\n this.rightsService.initializeRights('fee_discount_rule');\r\n this.loadDiscountRules();\r\n }\r\n\r\n ngOnDestroy(): void { }\r\n\r\n loadDiscountRules(): void {\r\n this.loading.set(true);\r\n const payload = new MFeeDiscountRule({\r\n pageIndex: this.currentPage(),\r\n pageSize: this.pageSize(),\r\n query: this.searchQuery(),\r\n feedr_entity_id_syen: this.appState.activeEntity()?._id\r\n });\r\n\r\n this.discountRuleService.getDiscountRuleList(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res.success) {\r\n this.discountRules.set(res.data || []);\r\n this.totalItems.set(res.total || 0);\r\n }\r\n this.loading.set(false);\r\n },\r\n error: () => this.loading.set(false)\r\n });\r\n }\r\n\r\n onGridEvent(event: GridEvent<any>): void {\r\n if (event.type === 'pageChange') {\r\n const pageData = event.data as { pageIndex: number, pageSize: number };\r\n this.currentPage.set(pageData.pageIndex);\r\n this.pageSize.set(pageData.pageSize);\r\n this.loadDiscountRules();\r\n } else if (event.type === 'search') {\r\n this.searchQuery.set(event.data as string);\r\n this.currentPage.set(1);\r\n this.loadDiscountRules();\r\n }\r\n }\r\n\r\n openCreateModal(): void {\r\n this.isEditing.set(false);\r\n this.ruleForm.reset({\r\n feedr_discount_type: 'PERCENTAGE',\r\n feedr_mode: 'MANUAL',\r\n feedr_status: 'ACTIVE',\r\n feedr_priority: 1,\r\n feedr_stacking: 'STACKABLE',\r\n feedr_approval_req: false\r\n });\r\n this.showModal.set(true);\r\n }\r\n\r\n editRule(rule: FeeDiscountRule): void {\r\n this.isEditing.set(true);\r\n this.ruleForm.patchValue(rule);\r\n this.showModal.set(true);\r\n }\r\n\r\n closeModal(): void {\r\n this.showModal.set(false);\r\n }\r\n\r\n onSubmit(): void {\r\n if (this.ruleForm.invalid) return;\r\n\r\n this.submitting.set(true);\r\n const payload = new MFeeDiscountRuleInsertUpdatePayload(this.ruleForm.value);\r\n payload.feedr_entity_id_syen = this.appState.activeEntity()?._id;\r\n\r\n this.discountRuleService.saveDiscountRule(payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res.success) {\r\n this.notificationService.success('Discount rule saved successfully');\r\n this.showModal.set(false);\r\n this.loadDiscountRules();\r\n }\r\n this.submitting.set(false);\r\n },\r\n error: () => this.submitting.set(false)\r\n });\r\n }\r\n\r\n toggleStatus(rule: FeeDiscountRule): void {\r\n const payload = new MFeeDiscountRuleToggleStatusPayload({ feedr_id: rule._id });\r\n this.discountRuleService.toggleDiscountRuleStatus(payload).subscribe((res: any) => {\r\n if (res.success) {\r\n this.notificationService.success('Status updated');\r\n this.loadDiscountRules();\r\n }\r\n });\r\n }\r\n\r\n deleteRule(rule: FeeDiscountRule): void {\r\n this.confirmationService.ask({\r\n title: 'Delete Rule',\r\n message: `Are you sure you want to delete \"${rule.feedr_name}\"?`,\r\n type: 'warning'\r\n }).then(confirmed => {\r\n if (confirmed) {\r\n const payload = new MFeeDiscountRuleDeletePayload({ feedr_id: rule._id });\r\n this.discountRuleService.deleteDiscountRule(payload).subscribe((res: any) => {\r\n if (res.success) {\r\n this.notificationService.success('Rule deleted');\r\n this.loadDiscountRules();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n getActionDropdownItems(rule: FeeDiscountRule): DropdownItem[] {\r\n const items: DropdownItem[] = [\r\n { id: 'edit', label: 'Edit', icon: 'edit' },\r\n { id: 'toggle', label: rule.feedr_status === 'ACTIVE' ? 'Deactivate' : 'Activate', icon: 'sync_alt' }\r\n ];\r\n\r\n // Only show sync for active automatic rules\r\n if (rule.feedr_status === 'ACTIVE' && rule.feedr_mode === 'AUTOMATIC') {\r\n items.push({ id: 'sync', label: 'Sync Rule', icon: 'sync' });\r\n }\r\n\r\n items.push({ id: 'delete', label: 'Delete', icon: 'delete', textColor: 'tw-text-red-600' });\r\n return items;\r\n }\r\n\r\n onDropdownItemClick(item: DropdownItem, rule: FeeDiscountRule): void {\r\n if (item.id === 'edit') this.editRule(rule);\r\n else if (item.id === 'toggle') this.toggleStatus(rule);\r\n else if (item.id === 'delete') this.deleteRule(rule);\r\n else if (item.id === 'sync') this.onSyncRule(rule);\r\n }\r\n\r\n onSyncRule(rule: FeeDiscountRule): void {\r\n if (!rule._id) return;\r\n\r\n this.confirmationService.ask({\r\n title: 'Sync Rule',\r\n message: `Do you want to sync \"${rule.feedr_name}\" with all existing UNPAID assignments? This will re-evaluate criteria and update amounts.`,\r\n type: 'info'\r\n }).then(confirmed => {\r\n if (confirmed) {\r\n this.notificationService.info('Syncing in progress...');\r\n this.discountRuleService.syncDiscountRule({ feedr_id: rule._id! })\r\n .subscribe((res: any) => {\r\n if (res.success) {\r\n this.notificationService.success(res.message || 'Sync completed successfully');\r\n } else {\r\n this.notificationService.error(res.message || 'Sync failed');\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n templateRenderers = computed(() => ({\r\n statusRenderer: this.statusRendererTemplate(),\r\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate(),\r\n discountValueRenderer: this.discountValueRendererTemplate(),\r\n modeRenderer: this.modeRendererTemplate()\r\n }));\r\n}\r\n","<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'fee_discount_rule' }\"\r\n [breadcrumb_data]=\"breadcrumbData()\">\r\n\r\n <div class=\"tw-p-4 tw-flex tw-flex-col tw-gap-4 tw-h-[calc(100vh-140px)]\">\r\n <!-- Header Actions -->\r\n <div class=\"tw-flex tw-justify-between tw-items-center\">\r\n <h2 class=\"tw-text-lg tw-font-bold tw-text-gray-800\">Discount Rules</h2>\r\n <button cideEleButton variant=\"primary\" (click)=\"openCreateModal()\">\r\n <cide-ele-icon size=\"sm\">add</cide-ele-icon> Create New Rule\r\n </button>\r\n </div>\r\n\r\n <!-- Data Grid -->\r\n <div class=\"tw-bg-white tw-rounded-xl tw-border tw-border-gray-200 tw-overflow-hidden tw-flex-1\">\r\n <cide-ele-data-grid [config]=\"gridConfig()\" [templateRenderers]=\"templateRenderers()\"\r\n [serverSidePagination]=\"true\" [totalServerItems]=\"totalItems()\" [currentServerPage]=\"currentPage()\"\r\n [currentServerPageSize]=\"pageSize()\" (gridEvent)=\"onGridEvent($event)\">\r\n </cide-ele-data-grid>\r\n </div>\r\n </div>\r\n</cide-lyt-shared-wrapper>\r\n\r\n<!-- Status Renderer -->\r\n<ng-template #statusRendererTemplate let-row=\"row\">\r\n <span class=\"tw-px-2 tw-py-1 tw-rounded-full tw-text-[10px] tw-font-bold\"\r\n [ngClass]=\"row.feedr_status === 'ACTIVE' ? 'tw-bg-green-100 tw-text-green-700' : 'tw-bg-gray-100 tw-text-gray-600'\">\r\n {{ row.feedr_status }}\r\n </span>\r\n</ng-template>\r\n\r\n<!-- Discount Value Renderer -->\r\n<ng-template #discountValueRendererTemplate let-row=\"row\">\r\n <div class=\"tw-font-bold\"\r\n [ngClass]=\"row.feedr_discount_type === 'PERCENTAGE' ? 'tw-text-blue-600' : 'tw-text-green-600'\">\r\n {{ row.feedr_discount_type === 'PERCENTAGE' ? row.feedr_discount_value + '%' : '₹' + row.feedr_discount_value }}\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Mode Renderer -->\r\n<ng-template #modeRendererTemplate let-row=\"row\">\r\n <div class=\"tw-text-xs tw-font-medium\">\r\n {{ row.feedr_mode === 'AUTOMATIC' ? '🚀 Automatic' : '⚙️ Manual' }}\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Actions Dropdown -->\r\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\">\r\n <cide-ele-dropdown [items]=\"getActionDropdownItems(row)\" (itemClick)=\"onDropdownItemClick($event, row)\">\r\n </cide-ele-dropdown>\r\n</ng-template>\r\n\r\n<!-- Create/Edit Modal -->\r\n@if (showModal()) {\r\n<div class=\"tw-fixed tw-inset-0 tw-bg-black/50 tw-flex tw-items-center tw-justify-center tw-z-[1000] tw-p-4\">\r\n <div class=\"tw-bg-white tw-rounded-2xl tw-shadow-2xl tw-w-full tw-max-w-2xl tw-overflow-hidden\">\r\n <!-- Modal Header -->\r\n <div class=\"tw-p-4 tw-border-b tw-border-gray-100 tw-flex tw-justify-between tw-items-center tw-bg-gray-50/50\">\r\n <h3 class=\"tw-text-base tw-font-bold tw-text-gray-800\">\r\n {{ isEditing() ? 'Edit' : 'Create' }} Discount Rule\r\n </h3>\r\n <button (click)=\"closeModal()\" class=\"tw-text-gray-400 hover:tw-text-gray-600\">\r\n <cide-ele-icon>close</cide-ele-icon>\r\n </button>\r\n </div>\r\n\r\n <!-- Modal Body -->\r\n <div class=\"rule-form-container\">\r\n <form [formGroup]=\"ruleForm\" class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-4 tw-p-2\">\r\n <cide-ele-input formControlName=\"feedr_name\" label=\"Rule Name\" placeholder=\"e.g., Sibling Discount\"\r\n size=\"sm\" class=\"tw-col-span-2\"></cide-ele-input>\r\n <cide-ele-input formControlName=\"feedr_code\" label=\"Rule Code\" placeholder=\"e.g., SIB-10\"\r\n size=\"sm\"></cide-ele-input>\r\n <cide-ele-select formControlName=\"feedr_mode\" label=\"Application Mode\" [options]=\"modeOptions()\"\r\n size=\"sm\"></cide-ele-select>\r\n\r\n <cide-ele-select formControlName=\"feedr_discount_type\" label=\"Discount Type\"\r\n [options]=\"discountTypeOptions()\" size=\"sm\"></cide-ele-select>\r\n <cide-ele-input formControlName=\"feedr_discount_value\" label=\"Value\" type=\"number\"\r\n size=\"sm\"></cide-ele-input>\r\n\r\n <cide-ele-select formControlName=\"feedr_stacking\" label=\"Stacking Logic\" [options]=\"stackingOptions()\"\r\n size=\"sm\"></cide-ele-select>\r\n <cide-ele-input formControlName=\"feedr_priority\" label=\"Priority\" type=\"number\"\r\n size=\"sm\"></cide-ele-input>\r\n\r\n <div\r\n class=\"tw-col-span-2 tw-p-3 tw-bg-blue-50 tw-rounded-lg tw-border tw-border-blue-100 tw-flex tw-items-center tw-gap-3\">\r\n <input type=\"checkbox\" formControlName=\"feedr_approval_req\" class=\"tw-w-4 tw-h-4\">\r\n <div class=\"tw-text-xs tw-text-blue-800\">\r\n <strong>Require Approval?</strong>\r\n <p>If checked, manual application by staff will need manager approval.</p>\r\n </div>\r\n </div>\r\n\r\n <cide-ele-textarea formControlName=\"feedr_description\" label=\"Description\"\r\n placeholder=\"Notes about this discount...\" [rows]=\"2\" size=\"sm\"\r\n class=\"tw-col-span-2\"></cide-ele-textarea>\r\n\r\n <div class=\"tw-col-span-2 tw-mt-2\">\r\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-1\">\r\n <label class=\"tw-text-xs tw-font-bold tw-text-gray-600\">Criteria JSON (Advanced Logic)</label>\r\n <span class=\"tw-text-[10px] tw-text-blue-500 tw-italic\">JSON Array or Object</span>\r\n </div>\r\n <cide-ele-textarea formControlName=\"feedr_criteria_json\"\r\n placeholder='Example: {\"field\": \"admap_is_rte_scheme\", \"operator\": \"==\", \"value\": true}'\r\n [rows]=\"3\" size=\"sm\"></cide-ele-textarea>\r\n <p class=\"tw-text-[10px] tw-text-gray-400 tw-mt-1\">\r\n Use field names from student admission data. Operators: ==, !=, >, <, in, contains. </p>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <!-- Modal Footer -->\r\n <div class=\"tw-p-4 tw-bg-gray-50 tw-border-t tw-border-gray-100 tw-flex tw-justify-end tw-gap-3\">\r\n <button cideEleButton variant=\"ghost\" (click)=\"closeModal()\" [disabled]=\"submitting()\">Cancel</button>\r\n <button cideEleButton variant=\"primary\" (click)=\"onSubmit()\" [loading]=\"submitting()\"\r\n [disabled]=\"ruleForm.invalid\">\r\n {{ isEditing() ? 'Update' : 'Create' }} Rule\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n}"],"names":["i2"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { d as CideFeeFeeAssignmentService, h as CideFeeFeePaymentService, b as CideFeeFeeStructureService, a as CloudIdeFees, l as CollectionReportComponent, D as DiscountRulesComponent, o as FeeApplicableFeesComponent, g as FeeAssignmentCreateComponent, e as FeeAssignmentListComponent, n as FeeDetailsViewerComponent, i as FeePaymentListComponent, j as FeePaymentProcessComponent, k as FeePaymentViewComponent, c as FeeStructureCreateComponent, F as FeeStructureListComponent, M as MyFeeStatementComponent, m as MyOnlinePaymentComponent, R as ReceiptTemplateService, S as StudentSelectionWrapperComponent, T as TemplateDesignerComponent, f as feesRoutes } from './cloud-ide-fees-cloud-ide-fees-DwymPnFD.mjs';
1
+ export { d as CideFeeFeeAssignmentService, h as CideFeeFeePaymentService, b as CideFeeFeeStructureService, a as CloudIdeFees, l as CollectionReportComponent, D as DiscountRulesComponent, o as FeeApplicableFeesComponent, g as FeeAssignmentCreateComponent, e as FeeAssignmentListComponent, n as FeeDetailsViewerComponent, i as FeePaymentListComponent, j as FeePaymentProcessComponent, k as FeePaymentViewComponent, c as FeeStructureCreateComponent, F as FeeStructureListComponent, M as MyFeeStatementComponent, m as MyOnlinePaymentComponent, R as ReceiptTemplateService, S as StudentSelectionWrapperComponent, T as TemplateDesignerComponent, f as feesRoutes } from './cloud-ide-fees-cloud-ide-fees-DTu2UFxM.mjs';
2
2
  //# sourceMappingURL=cloud-ide-fees.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cloud-ide-fees",
3
- "version": "0.0.44",
3
+ "version": "0.0.47",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.1.0",
6
6
  "@angular/core": "^20.1.0"