{"version":3,"file":"ngx-techlify-accounting.mjs","sources":["../../../projects/ngx-techlify-accounting/src/lib/@shared/material.module.ts","../../../projects/ngx-techlify-accounting/src/lib/@shared/techlify-filter/techlify-filter.component.ts","../../../projects/ngx-techlify-accounting/src/lib/@shared/techlify-filter/techlify-filter.component.html","../../../projects/ngx-techlify-accounting/src/lib/@shared/techlify-filter/techlify-filter.module.ts","../../../projects/ngx-techlify-accounting/src/lib/@shared/shared.module.ts","../../../projects/ngx-techlify-accounting/src/lib/@shared/print-button/print.service.ts","../../../projects/ngx-techlify-accounting/src/lib/@shared/print-button/print-button/print-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/@shared/print-button/print-button/print-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/@shared/print-button/print-button.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-status-enum.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/sales-summary.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/sale-reports/sales-summary-chart/sales-summary-chart.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/sale-reports/sales-summary-chart/sales-summary-chart.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-summary.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/sale-reports/top-customers-report/top-customers-report.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/sale-reports/top-customers-report/top-customers-report.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/sale-reports/product-sales-pie-chart/product-sales-pie-chart.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/sale-reports/product-sales-pie-chart/product-sales-pie-chart.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/overdue-invoices-report/overdue-invoices-report.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/overdue-invoices-report/overdue-invoices-report.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/sale-dashboard/sale-dashboard.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/sale-dashboard/sale-dashboard.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/sale-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/sale.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/receivables.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/sale-reports/account-receivables-summary-chart/account-receivables-summary-chart.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/sale-reports/account-receivables-summary-chart/account-receivables-summary-chart.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-phones/customer-phones.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-phones/customer-phones.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-type.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-phone-type.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/widgets/techlify-telephone-input/country-code.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/widgets/techlify-telephone-input/phone-number-input.validator.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/widgets/techlify-telephone-input/search-country.pipe.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/widgets/techlify-telephone-input/phone-number-input.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/widgets/techlify-telephone-input/phone-number-input.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-form/customer-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-form/customer-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-form/customer-form.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-form-button/customer-form-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-form-button/customer-form-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-address-type.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/widgets/customers-list-widget/customers-list-widget.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/widgets/customers-list-widget/customers-list-widget.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-identity-number/customer-identity-number.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-identity-number/customer-identity-number.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-delete-button/customer-delete-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-delete-button/customer-delete-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-information-card/customer-information-card.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-information-card/customer-information-card.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customers-list/customers-list.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customers-list/customers-list.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-void/payment-void-button/payment-void-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-void/payment-void-button/payment-void-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-method-type-badge/payment-method-type-badge.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-method-type-badge/payment-method-type-badge.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-delete-button/payment-delete-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-delete-button/payment-delete-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-list/payment-list.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-list/payment-list.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/sale-document-type-enum.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-status-selector/invoice-status.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-status-selector/invoice-status-selector/invoice-status-selector.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-status-selector/invoice-status-selector/invoice-status-selector.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-status-selector/invoice-status-selector.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-widgets/invoice-void-button/invoice-void-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-widgets/invoice-void-button/invoice-void-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-widgets/invoice-widgets.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-multi-update-form/invoice-multi-update-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-multi-update-form/invoice-multi-update-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-list-page/invoice-list-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-list-page/invoice-list-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-view/customer-view.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-view/customer-view.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/techlify-customer-type-multi-select/techlify-customer-type-multi-select.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/techlify-customer-type-multi-select/techlify-customer-type-multi-select.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/techlify-customer-type-multi-select/techlify-customer-type-multi-select.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice/invoice.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice/invoice.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-helper.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-form/invoice-form/invoice-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-form/invoice-form/invoice-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-form-page/invoice-form-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-form-page/invoice-form-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-display-configuration.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-line-items-table/invoice-line-items-table.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-line-items-table/invoice-line-items-table.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-receipt-email-button/invoice-receipt-email-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-receipt-email-button/invoice-receipt-email-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-receipt-page/invoice-receipt-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-receipt-page/invoice-receipt-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-information-card/invoice-information-card.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-information-card/invoice-information-card.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/quotation/create-invoice-from-quotation-button/create-invoice-from-quotation-button/create-invoice-from-quotation-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/quotation/create-invoice-from-quotation-button/create-invoice-from-quotation-button/create-invoice-from-quotation-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/quotation.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-delete-button/invoice-delete-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-delete-button/invoice-delete-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-view-page/invoice-view-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-view-page/invoice-view-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-display-configuration/invoice-display-configuration.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-display-configuration/invoice-display-configuration.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-type.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-line-item-tax/invoice-line-item-tax.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-line-item-tax/invoice-line-item-tax.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice-form/invoice-form.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-receipt-email-button/payment-receipt-email-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-receipt-email-button/payment-receipt-email-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/company-information/company-info-display/company-info-display.component.ts","../../../projects/ngx-techlify-accounting/src/lib/company-information/company-info-display/company-info-display.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-receipt/payment-receipt.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-receipt/payment-receipt.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment/payment.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment/payment.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-method-type.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-form/payment-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-form/payment-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-form-page/payment-form-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-form-page/payment-form-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-void/payment-void.module.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-information-card/payment-information-card.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-information-card/payment-information-card.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-view/payment-view.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-view/payment-view.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/payment.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/quotation/create-invoice-from-quotation-button/create-invoice-from-quotation-button.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/invoice/invoice.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/customer/customer.module.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/accounting-plus-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/accounting-plus.module.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset.service.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/location.service.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/location-form/location-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/location-form/location-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/asset-location-selector/asset-location-selector.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/asset-location-selector/asset-location-selector.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/asset-location-history.service.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/asset-location-history-batch.service.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/asset-location-form/asset-location-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/asset-location-form/asset-location-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-batch-update-form/fixed-asset-batch-update-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-batch-update-form/fixed-asset-batch-update-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-assets-table/fixed-assets-table.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-assets-table/fixed-assets-table.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-assets-list-page/fixed-assets-list-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-assets-list-page/fixed-assets-list-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/depreciation-methods/depreciation-method.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-type.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-form/fixed-asset-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-form/fixed-asset-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-form-page/fixed-asset-form-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-form-page/fixed-asset-form-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-assets-dashboard-page/fixed-assets-dashboard-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-assets-dashboard-page/fixed-assets-dashboard-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-view-page/fixed-asset-view-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-view-page/fixed-asset-view-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-delete-button/fixed-asset-delete-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-delete-button/fixed-asset-delete-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-information/fixed-asset-information-teaser-card/fixed-asset-information-teaser-card.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-information/fixed-asset-information-teaser-card/fixed-asset-information-teaser-card.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-information-page/fixed-asset-information-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-information-page/fixed-asset-information-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-document.service.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-document-type.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-document-form/fixed-asset-document-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-document-form/fixed-asset-document-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-document-form-button/fixed-asset-document-form-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-document-form-button/fixed-asset-document-form-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-documents/fixed-asset-documents.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-documents/fixed-asset-documents.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenance.service.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenance-status.service.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenance-widgets/fixed-asset-maintenance-status-button/fixed-asset-maintenance-status-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenance-widgets/fixed-asset-maintenance-status-button/fixed-asset-maintenance-status-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/asset-maintenance-type.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenance-form/fixed-asset-maintenance-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenance-form/fixed-asset-maintenance-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenance-form-button/fixed-asset-maintenance-form-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenance-form-button/fixed-asset-maintenance-form-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenance-photos/fixed-asset-maintenance-photos.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenance-photos/fixed-asset-maintenance-photos.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenances/fixed-asset-maintenances.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenances/fixed-asset-maintenances.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenance-view-page/fixed-asset-maintenance-view-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenance-view-page/fixed-asset-maintenance-view-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/asset-location-form-button/asset-location-form-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/asset-location-form-button/asset-location-form-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/asset-location-history-delete-button/asset-location-history-delete-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/asset-location-history-delete-button/asset-location-history-delete-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/asset-location-history-page/asset-location-history-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/locations/asset-location-history-page/asset-location-history-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/asset-usage/asset-usage.service.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/asset-usage/asset-usage-form/asset-usage-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/asset-usage/asset-usage-form/asset-usage-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/asset-usage/asset-usage-form-button/asset-usage-form-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/asset-usage/asset-usage-form-button/asset-usage-form-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/asset-usage/asset-usage-specification.service.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/asset-usage/asset-usage-specification-form/asset-usage-specification-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/asset-usage/asset-usage-specification-form/asset-usage-specification-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/asset-usage/asset-usage-specification/asset-usage-specification.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/asset-usage/asset-usage-specification/asset-usage-specification.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/asset-usage/asset-usage-list/asset-usage-list.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/asset-usage/asset-usage-list/asset-usage-list.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-assets-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-delete-button/fixed-asset-delete-button.module.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-information/fixed-asset-information.module.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-asset-maintenance-widgets/fixed-asset-maintenance-widgets.module.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/fixed-assets/fixed-assets.module.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/service-center/service-center.service.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/service-center/service-center-form/service-center-form/service-center-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/service-center/service-center-form/service-center-form/service-center-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/service-center/service-center-form/service-center-form-button/service-center-form-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/service-center/service-center-form/service-center-form-button/service-center-form-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/service-center/service-center-tags/service-center-tags.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/service-center/service-center-tags/service-center-tags.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/service-center/service-center-list/service-center-list.component.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/service-center/service-center-list/service-center-list.component.html","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/service-center/service-center-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/service-center/service-center-form/service-center-form.module.ts","../../../projects/ngx-techlify-accounting/src/lib/accounting-plus/service-center/service-center.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/transaction/transaction.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/transaction-form/transaction-form/transaction-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/transaction-form/transaction-form/transaction-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/transaction-form/transaction-form-button/transaction-form-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/transaction-form/transaction-form-button/transaction-form-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/transaction-form/transaction-form.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/transaction-list/transaction-list/transaction-list.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/transaction-list/transaction-list/transaction-list.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/payment/transaction-list/transaction-list.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/transaction/transactable-view/transactable-view.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/transaction/transactable-view/transactable-view.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/transaction/transaction-view/transaction-view.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/transaction/transaction-view/transaction-view.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/transaction/transaction-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/transaction/transaction.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/transaction/transaction.model.ts","../../../projects/ngx-techlify-accounting/src/lib/@shared/techlify-form-service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-form.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-form/account-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-form/account-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-form-button/account-form-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-form-button/account-form-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-balance-calculate-button/account-balance-calculate-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-balance-calculate-button/account-balance-calculate-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-list/account-list.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-list/account-list.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-nav-bar/account-nav-bar.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-nav-bar/account-nav-bar.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-delete-button/account-delete-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-delete-button/account-delete-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-view-page/account-view-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-view-page/account-view-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-selector/account-selector/account-selector.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-selector/account-selector/account-selector.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-selector/account-selector.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/account-type.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/accounts-list-compact/accounts-list-compact.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/account/accounts-list-compact/accounts-list-compact.component.html","../../../projects/ngx-techlify-accounting/src/lib/@shared/file-upload-button/file-upload-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/@shared/file-upload-button/file-upload-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/@shared/image-preview/image-preview.component.ts","../../../projects/ngx-techlify-accounting/src/lib/@shared/image-preview/image-preview.component.html","../../../projects/ngx-techlify-accounting/src/lib/company-information/client.service.ts","../../../projects/ngx-techlify-accounting/src/lib/company-information/company-information/company-information.component.ts","../../../projects/ngx-techlify-accounting/src/lib/company-information/company-information/company-information.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/balance-sheet.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/payables.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/reports-layout/reports-layout.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/reports-layout/reports-layout.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/receivables-report/receivables-report.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/receivables-report/receivables-report.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/supplier-balance-report.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/supplier-balance-report-page/supplier-balance-report-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/supplier-balance-report-page/supplier-balance-report-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/expense-type.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/expense-summary.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/expense-summary-report/expense-summary-report.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/expense-summary-report/expense-summary-report.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/income-by-customer-summary/income-by-customer-summary.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/income-by-customer-summary/income-by-customer-summary.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/balance-sheet/balance-sheet.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/balance-sheet/balance-sheet.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/reports-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/receivables-number-widget/receivables-number-widget.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/receivables-number-widget/receivables-number-widget.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/payable-number-widget/payable-number-widget.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/payable-number-widget/payable-number-widget.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/reports.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/sales-summary.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/expense-by-category-report/expense-by-category-report.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/expense-by-category-report/expense-by-category-report.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/outstanding-bills-report/outstanding-bills-report.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/outstanding-bills-report/outstanding-bills-report.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/product-sales-pie-chart/product-sales-pie-chart.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/product-sales-pie-chart/product-sales-pie-chart.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/profit-and-loss/profit-and-loss.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/profit-and-loss/profit-and-loss-report-expense-list/profit-and-loss-report-expense-list.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/profit-and-loss/profit-and-loss-report-expense-list/profit-and-loss-report-expense-list.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/profit-and-loss/profit-and-loss-report/profit-and-loss-report.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/profit-and-loss/profit-and-loss-report/profit-and-loss-report.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/profit-and-loss/profit-and-loss-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/profit-and-loss/profit-and-loss.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/top-customers-report/top-customers-report.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/top-customers-report/top-customers-report.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/trial-balance-report/trial-balance-report/trial-balance-report.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/trial-balance-report/trial-balance-report/trial-balance-report.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/trial-balance-report/trial-balance-report-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/trial-balance-report/trial-balance-report.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/top-suppliers-report/top-suppliers-report.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/top-suppliers-report/top-suppliers-report.component.html","../../../projects/ngx-techlify-accounting/src/lib/@shared/date.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/profit-and-loss-summary/profit-and-loss-summary.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/reports/profit-and-loss-summary/profit-and-loss-summary.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/cheque/cheque.service.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/cheque/cheque-status-selector/cheque-status-selector.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/cheque/cheque-status-selector/cheque-status-selector.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/cheque/cheque-list/cheque-list.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/cheque/cheque-list/cheque-list.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/cheque/cheque-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/cheque/cheque.module.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-summary.service.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-line-chart/expense-line-chart.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-line-chart/expense-line-chart.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase-dashboard/purchase-dashboard.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase-dashboard/purchase-dashboard.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase-payments-list-page/purchase-payments-list-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase-payments-list-page/purchase-payments-list-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense.service.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/bill-payment-form/bill-payment-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/bill-payment-form/bill-payment-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase-payments-form-page/purchase-payments-form-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase-payments-form-page/purchase-payments-form-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-status.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-widgets/expense-void-button/expense-void-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-widgets/expense-void-button/expense-void-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/bills/bill-processing-updates/expense-processing-status.service.ts","../../../projects/ngx-techlify-accounting/src/lib/bills/bill-processing-updates/expense-processing-status-update.service.ts","../../../projects/ngx-techlify-accounting/src/lib/bills/bill-processing-updates/bill-processing-status-updater/bill-processing-status-updater.component.ts","../../../projects/ngx-techlify-accounting/src/lib/bills/bill-processing-updates/bill-processing-status-updater/bill-processing-status-updater.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-multi-select-form/expense-multi-select-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-multi-select-form/expense-multi-select-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-list-table/expense-list-table.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-list-table/expense-list-table.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-type.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/bills/bills-list-page/bills-list-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/bills/bills-list-page/bills-list-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase-payment-view/purchase-payment-view.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase-payment-view/purchase-payment-view.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-line-item.service.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-line-item-listing/expense-line-item-listing.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-line-item-listing/expense-line-item-listing.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-form-dialog/expense-form-dialog.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-form-dialog/expense-form-dialog.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-listing/expense-listing.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-listing/expense-listing.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-line-items/expense-line-items.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-line-items/expense-line-items.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-delete-button/expense-delete-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-delete-button/expense-delete-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-information/expense-information.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-information/expense-information.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-view/expense-view.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-view/expense-view.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-layout/expense-layout.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-layout/expense-layout.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax.service.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-files/expense-file-delete-button/expense-file-delete-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-files/expense-file-delete-button/expense-file-delete-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-files/expense-file-item/expense-file-item.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-files/expense-file-item/expense-file-item.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-files/expense-files/expense-files.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-files/expense-files/expense-files.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-selector/tax-selector.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-selector/tax-selector.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-amount/tax-amount.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-amount/tax-amount.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-form/expense-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-form/expense-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-form-page/expense-form-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-form-page/expense-form-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-import-page/expense-import-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-import-page/expense-import-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-category-selector/expense-category-selector/expense-category-selector.component.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-category-selector/expense-category-selector/expense-category-selector.component.html","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-category-selector/expense-category-selector.module.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense-widgets/expense-widgets.module.ts","../../../projects/ngx-techlify-accounting/src/lib/expense/expense.module.ts","../../../projects/ngx-techlify-accounting/src/lib/bills/bills-layout/bills-layout.component.ts","../../../projects/ngx-techlify-accounting/src/lib/bills/bills-layout/bills-layout.component.html","../../../projects/ngx-techlify-accounting/src/lib/bills/bills-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/bills/bills.module.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase.module.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase-reports/expense-summary-chart/expense-summary-chart.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase-reports/expense-summary-chart/expense-summary-chart.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase-reports/accounts-payable-summary-chart/accounts-payable-summary-chart.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/purchase-reports/accounts-payable-summary-chart/accounts-payable-summary-chart.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/recent-purchase-payments-widget/recent-purchase-payments-widget/recent-purchase-payments-widget.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/recent-purchase-payments-widget/recent-purchase-payments-widget/recent-purchase-payments-widget.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/recent-purchase-payments-widget/recent-purchase-payments-widget.module.ts","../../../projects/ngx-techlify-accounting/src/lib/journal/journal-entry.service.ts","../../../projects/ngx-techlify-accounting/src/lib/journal/journal-entry-delete-button/journal-entry-delete-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/journal/journal-entry-delete-button/journal-entry-delete-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/journal/journal-list/journal-list.component.ts","../../../projects/ngx-techlify-accounting/src/lib/journal/journal-list/journal-list.component.html","../../../projects/ngx-techlify-accounting/src/lib/journal/journal-form/journal-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/journal/journal-form/journal-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/journal/journal-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/journal/journal.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-form/tax-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-form/tax-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-form-button/tax-form-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-form-button/tax-form-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-delete-button/tax-delete-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-delete-button/tax-delete-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-list/tax-list.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-list/tax-list.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/tax/tax.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/quotation/quotation-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/quotation/quotation.module.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-status.enum.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher.service.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-status-update-button/payment-voucher-status-update-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-status-update-button/payment-voucher-status-update-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-list/payment-voucher-list.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-list/payment-voucher-list.component.html","../../../projects/ngx-techlify-accounting/src/lib/@shared/pipes/number-to-words.pipe.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-line-items/payment-voucher-line-items.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-line-items/payment-voucher-line-items.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-print/payment-voucher-print.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-print/payment-voucher-print.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-delete-button/payment-voucher-delete-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-delete-button/payment-voucher-delete-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-information-card/payment-voucher-information-card.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-information-card/payment-voucher-information-card.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-view/payment-voucher-view.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-view/payment-voucher-view.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-form/payment-voucher-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-form/payment-voucher-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-form-page/payment-voucher-form-page.component.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-form-page/payment-voucher-form-page.component.html","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher-routing.module.ts","../../../projects/ngx-techlify-accounting/src/lib/purchase/payment-voucher/payment-voucher.module.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/product/product-form/product-form.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/product/product-form/product-form.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/product/product-form-button/product-form-button.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/product/product-form-button/product-form-button.component.html","../../../projects/ngx-techlify-accounting/src/lib/sale/product/product-list/product-list.component.ts","../../../projects/ngx-techlify-accounting/src/lib/sale/product/product-list/product-list.component.html","../../../projects/ngx-techlify-accounting/src/public-api.ts","../../../projects/ngx-techlify-accounting/src/ngx-techlify-accounting.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport {\n  MatCommonModule,\n  MatLineModule,\n  MatNativeDateModule,\n  MatOptionModule,\n  MatPseudoCheckboxModule,\n  MatRippleModule\n} from '@angular/material/core';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\n\n@NgModule({\n  exports: [\n    MatAutocompleteModule,\n    MatBadgeModule,\n    MatButtonModule,\n    MatButtonToggleModule,\n    MatCardModule,\n    MatCheckboxModule,\n    MatChipsModule,\n    MatCommonModule,\n    MatDatepickerModule,\n    MatDialogModule,\n    MatDividerModule,\n    MatExpansionModule,\n    MatFormFieldModule,\n    MatGridListModule,\n    MatIconModule,\n    MatInputModule,\n    MatLineModule,\n    MatListModule,\n    MatMenuModule,\n    MatNativeDateModule,\n    MatOptionModule,\n    MatPaginatorModule,\n    MatProgressBarModule,\n    MatProgressSpinnerModule,\n    MatPseudoCheckboxModule,\n    MatRadioModule,\n    MatRippleModule,\n    MatSelectModule,\n    MatSidenavModule,\n    MatSlideToggleModule,\n    MatSliderModule,\n    MatSnackBarModule,\n    MatSortModule,\n    MatStepperModule,\n    MatTableModule,\n    MatTabsModule,\n    MatToolbarModule,\n    MatTooltipModule,\n    MatTreeModule\n  ]\n})\nexport class MaterialModule { }\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { RequestHelperService } from 'ngx-techlify-core';\nimport { ActivatedRoute } from '@angular/router';\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\n\n@Component({\n  selector: 'app-techlify-filter',\n  templateUrl: './techlify-filter.component.html',\n  styleUrls: ['./techlify-filter.component.scss']\n})\nexport class TechlifyFilterComponent implements OnInit {\n  @Input() filterForm!: FormGroup;\n  @Input() filterConfig: any;\n  @Output() filterUpdated: EventEmitter<any> = new EventEmitter();\n\n  constructor(\n    private requestHelperService: RequestHelperService,\n    private activatedRoute: ActivatedRoute\n  ) {}\n\n  ngOnInit(): void {\n    // listen for filter changes\n    this.filterForm.valueChanges.subscribe({\n      next: (value: any) => {\n        const params: any = this.requestHelperService.convertToFormData(value);\n        this.requestHelperService.updateQueryParams(params);\n      }\n    });\n\n    // update form with query params\n    this.requestHelperService.updateFormWithQueryParams(this.filterForm, {\n      duration: { number: true },\n      expiry_duration: { number: true },\n      payment_method_ids: { multiple: true },\n      payment_account_ids: { multiple: true },\n      project_ids: { multiple: true },\n      invoice_status_ids: { multiple: true },\n      customer_ids: { multiple: true },\n      cost_category_ids: { multiple: true },\n      team_member_ids: { multiple: true },\n      task_status_ids: { multiple: true },\n      asset_account_ids: { multiple: true },\n      depreciation_method_ids: { multiple: true },\n      depreciation_expense_account_ids: { multiple: true },\n      fixed_asset_type_ids: { multiple: true },\n      fixed_asset_document_type_ids: { multiple: true },\n      service_center_ids: { multiple: true },\n      fixed_asset_maintenance_status_ids: { multiple: true },\n      milestone_ids: { multiple: true },\n      product_ids: { multiple: true },\n      supplier_ids: { multiple: true },\n      measure_ids: { multiple: true },\n      type_ids: { multiple: true },\n      fixed_asset_ids: { multiple: true },\n      location_ids: { multiple: true },\n    });\n\n    // listen for route change\n    this.activatedRoute.queryParams\n      .pipe(debounceTime(800), distinctUntilChanged())\n      .subscribe((val: any) => {\n        this.filterUpdated.emit(this.filterForm.value);\n      });\n  }\n\n  resetField(field: string) {\n    this.filterForm.get(field)?.setValue('');\n  }\n\n  /**\n   * Get the attribute value for the field.\n   *\n   * @param attribute\n   * @param field\n   */\n  getFilterConfig(attribute: string, field: string) {\n    if (!this.filterConfig) return '';\n    // Check if the field and attribute exist in the filter config, return the value or an empty string\n    return this.filterConfig[field] &&\n      this.filterConfig[field][attribute] !== undefined\n      ? this.filterConfig[field][attribute]\n      : '';\n  }\n}\n","<form\n  [formGroup]=\"filterForm\"\n  fxLayout\n  fxLayoutAlign=\"start center\"\n  fxLayoutGap=\"10px\"\n>\n  <mat-form-field\n    *ngIf=\"filterForm.get('search')\"\n    [appearance]=\"getFilterConfig('appearance', 'search')\"\n  >\n    <mat-label>Search</mat-label>\n    <input\n      formControlName=\"search\"\n      matInput\n      [placeholder]=\"getFilterConfig('placeholder', 'search')\"\n    />\n    <button\n      *ngIf=\"filterForm.value?.search\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('search')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <app-timeline-filter\n    *ngIf=\"filterForm?.get('duration')\"\n    appearance=\"fill\"\n    [labelText]=\"getFilterConfig('label', 'duration')\"\n    [appearance]=\"getFilterConfig('appearance', 'duration')\"\n    formControlName=\"duration\"\n    [form]=\"filterForm\"\n    [showClearButton]=\"true\"\n  ></app-timeline-filter>\n\n  <mat-form-field *ngIf=\"filterForm.get('payment_method_ids')\">\n    <mat-label>Payment Method</mat-label>\n    <app-searchable-selector\n      formControlName=\"payment_method_ids\"\n      apiUrl=\"api/payment-methods\"\n      [multiple]=\"true\"\n      [enableSearch]=\"false\"\n    ></app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.payment_method_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('payment_method_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <ng-container *ngIf=\"filterForm.get('payment_account_ids')\">\n    <mat-form-field *ngxPermissionsOnly=\"['accountingcommon_account.read']\">\n      <mat-label>{{\n        getFilterConfig('label', 'payment_account_ids') || 'Payment Account'\n      }}</mat-label>\n      <app-searchable-selector\n        formControlName=\"payment_account_ids\"\n        [apiUrl]=\"\n          getFilterConfig('apiUrl', 'payment_account_ids') || 'api/accounts'\n        \"\n        [multiple]=\"true\"\n      ></app-searchable-selector>\n      <button\n        *ngIf=\"filterForm.value?.payment_account_ids\"\n        mat-icon-button\n        matSuffix\n        (click)=\"resetField('payment_account_ids')\"\n      >\n        <mat-icon>close</mat-icon>\n      </button>\n    </mat-form-field>\n  </ng-container>\n\n  <mat-form-field *ngIf=\"filterForm.get('invoice_status_ids')\">\n    <mat-label>Invoice Status</mat-label>\n    <app-searchable-selector\n      formControlName=\"invoice_status_ids\"\n      apiUrl=\"api/invoice-statuses\"\n      [multiple]=\"true\"\n    ></app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.invoice_status_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('invoice_status_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <ng-container *ngIf=\"filterForm.get('customer_ids')\">\n    <mat-form-field *ngxPermissionsOnly=\"['customer_read']\">\n      <mat-label>Customer</mat-label>\n      <app-searchable-selector\n        formControlName=\"customer_ids\"\n        titleField=\"name\"\n        apiUrl=\"api/customers\"\n        [multiple]=\"true\"\n      ></app-searchable-selector>\n      <button\n        *ngIf=\"filterForm.value?.customer_ids\"\n        mat-icon-button\n        matSuffix\n        (click)=\"resetField('customer_ids')\"\n      >\n        <mat-icon>close</mat-icon>\n      </button>\n    </mat-form-field>\n  </ng-container>\n\n  <ng-container *ngIf=\"\n        filterForm.get('project_ids') &&\n        getFilterConfig('disabled', 'project_ids') === false\n      \">\n    <mat-form-field\n      *ngxPermissionsOnly=\"['project.read']\"\n    >\n      <mat-label>Project</mat-label>\n      <app-searchable-selector\n        formControlName=\"project_ids\"\n        apiUrl=\"api/projects\"\n        titleField=\"project_name\"\n        [multiple]=\"true\"\n      ></app-searchable-selector>\n      <button\n        *ngIf=\"filterForm.value?.project_ids\"\n        mat-icon-button\n        matSuffix\n        (click)=\"resetField('project_ids')\"\n      >\n        <mat-icon>close</mat-icon>\n      </button>\n    </mat-form-field>\n  </ng-container>\n\n  <mat-form-field *ngIf=\"filterForm.get('product_ids')\">\n    <mat-label>Product</mat-label>\n    <app-searchable-selector\n      formControlName=\"product_ids\"\n      apiUrl=\"api/products\"\n      titleField=\"name\"\n      [multiple]=\"true\"\n    ></app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.product_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('product_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <mat-form-field *ngIf=\"filterForm.get('measure_ids')\">\n    <mat-label>Measure</mat-label>\n    <app-searchable-selector\n      formControlName=\"measure_ids\"\n      apiUrl=\"api/product-measures\"\n      [multiple]=\"true\"\n    ></app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.measure_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('measure_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <ng-container\n    *ngxPermissionsOnly=\"['supplier.read']\"\n  >\n    <mat-form-field\n      *ngIf=\"filterForm.get('supplier_ids')\"\n      [appearance]=\"getFilterConfig('appearance', 'supplier_ids')\"\n    >\n      <mat-label>Supplier</mat-label>\n      <app-searchable-selector\n        formControlName=\"supplier_ids\"\n        titleField=\"company_name\"\n        apiUrl=\"api/suppliers\"\n        [multiple]=\"true\"\n      ></app-searchable-selector>\n      <button\n        *ngIf=\"filterForm.value?.supplier_ids\"\n        mat-icon-button\n        matSuffix\n        (click)=\"resetField('supplier_ids')\"\n      >\n        <mat-icon>close</mat-icon>\n      </button>\n    </mat-form-field>\n  </ng-container>\n\n  <app-timeline-filter\n    appearance=\"fill\"\n    [labelText]=\"getFilterConfig('label', 'expiry_duration')\"\n    *ngIf=\"filterForm?.get('expiry_duration')\"\n    formControlName=\"expiry_duration\"\n    [form]=\"filterForm\"\n    [showClearButton]=\"true\"\n    dateFrom=\"expiry_date_from\"\n    dateTo=\"expiry_date_to\"\n  ></app-timeline-filter>\n\n  <mat-form-field *ngIf=\"filterForm.get('cost_category_ids')\" style=\"width: 150px\">\n    <mat-label>Cost Category</mat-label>\n    <app-searchable-selector\n      formControlName=\"cost_category_ids\"\n      apiUrl=\"api/cost-code-categories\"\n      [multiple]=\"true\"\n    ></app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.cost_category_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('cost_category_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <mat-form-field *ngIf=\"filterForm.get('milestone_ids')\" style=\"width: 150px\">\n    <mat-label>Milestone</mat-label>\n    <app-searchable-selector\n      formControlName=\"milestone_ids\"\n      apiUrl=\"api/milestones\"\n      [multiple]=\"true\"\n    ></app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.milestone_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('milestone_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <mat-form-field *ngIf=\"filterForm.get('team_member_ids')\">\n    <mat-label>Assignee</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/persons\"\n      formControlName=\"team_member_ids\"\n      titleField=\"name\"\n      [multiple]=\"true\"\n    >\n    </app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.team_member_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('team_member_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <mat-form-field *ngIf=\"filterForm.get('fixed_asset_type_ids')\">\n    <mat-label>Type</mat-label>\n    <app-searchable-selector\n      formControlName=\"fixed_asset_type_ids\"\n      apiUrl=\"api/accounting-plus/fixed-asset-types\"\n      [multiple]=\"true\"\n    ></app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.fixed_asset_type_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('fixed_asset_type_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <mat-form-field *ngIf=\"filterForm.get('fixed_asset_document_type_ids')\">\n    <mat-label>Type</mat-label>\n    <app-searchable-selector\n      formControlName=\"fixed_asset_document_type_ids\"\n      apiUrl=\"api/accounting-plus/fixed-asset-document-types\"\n      [multiple]=\"true\"\n      [enableSearch]=\"\n        getFilterConfig('enableSearch', 'fixed_asset_document_type_ids')\n      \"\n    ></app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.fixed_asset_document_type_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('fixed_asset_document_type_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <div *ngIf=\"filterForm.get('fixed_asset_document_status')\">\n    <small\n      class=\"mr-2 text-secondary\"\n      *ngIf=\"getFilterConfig('showLabel', 'fixed_asset_document_status')\"\n    >\n      Status\n    </small>\n    <mat-button-toggle-group\n      formControlName=\"fixed_asset_document_status\"\n      [multiple]=\"false\"\n    >\n      <mat-button-toggle value=\"all\">All</mat-button-toggle>\n      <mat-button-toggle value=\"active\">Active</mat-button-toggle>\n      <mat-button-toggle value=\"expired\">Expired</mat-button-toggle>\n    </mat-button-toggle-group>\n  </div>\n\n  <mat-form-field *ngIf=\"filterForm.get('asset_account_ids')\">\n    <mat-label>Asset Account</mat-label>\n    <app-searchable-selector\n      formControlName=\"asset_account_ids\"\n      apiUrl=\"api/accounts\"\n      [multiple]=\"true\"\n    ></app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.asset_account_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('asset_account_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <mat-form-field *ngIf=\"filterForm.get('depreciation_expense_account_ids')\">\n    <mat-label>Depreciation Expense Account</mat-label>\n    <app-searchable-selector\n      [multiple]=\"true\"\n      apiUrl=\"api/accounts\"\n      formControlName=\"depreciation_expense_account_ids\"\n    ></app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.depreciation_expense_account_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('depreciation_expense_account_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <mat-form-field *ngIf=\"filterForm.get('depreciation_method_ids')\">\n    <mat-label>Depreciation Method</mat-label>\n    <app-searchable-selector\n      formControlName=\"depreciation_method_ids\"\n      apiUrl=\"api/accounting-plus/depreciation-methods\"\n      [multiple]=\"true\"\n    ></app-searchable-selector>\n    <button\n      (click)=\"resetField('depreciation_method_ids')\"\n      *ngIf=\"filterForm.value?.depreciation_method_ids\"\n      mat-icon-button\n      matSuffix\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <mat-form-field *ngIf=\"filterForm.get('task_status_ids')\" style=\"width: 150px\">\n    <mat-label>Status</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/task-statuses\"\n      formControlName=\"task_status_ids\"\n      titleField=\"title\"\n      [multiple]=\"true\"\n      [enableSearch]=\"false\"\n    >\n    </app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.task_status_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('task_status_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <mat-form-field *ngIf=\"filterForm.get('service_center_ids')\">\n    <mat-label>Service Center</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/accounting-plus/service-centers\"\n      formControlName=\"service_center_ids\"\n      titleField=\"name\"\n      [enableSearch]=\"false\"\n      [multiple]=\"true\"\n    >\n    </app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.service_center_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('service_center_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <mat-form-field *ngIf=\"filterForm.get('fixed_asset_maintenance_status_ids')\">\n    <mat-label>Status</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/accounting-plus/fixed-asset-maintenance-statuses\"\n      formControlName=\"fixed_asset_maintenance_status_ids\"\n      [multiple]=\"true\"\n      [enableSearch]=\"false\"\n    >\n    </app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.fixed_asset_maintenance_status_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('fixed_asset_maintenance_status_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <mat-form-field *ngIf=\"filterForm.get('location_ids')\">\n    <mat-label>Location</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/inventory-locations\"\n      formControlName=\"location_ids\"\n      [multiple]=\"true\"\n    >\n    </app-searchable-selector>\n    <button\n      *ngIf=\"filterForm.value?.location_ids\"\n      mat-icon-button\n      matSuffix\n      (click)=\"resetField('location_ids')\"\n    >\n      <mat-icon>close</mat-icon>\n    </button>\n  </mat-form-field>\n\n  <mat-form-field *ngIf=\"filterForm.get('group_by')\">\n    <mat-label>Group By</mat-label>\n    <mat-select formControlName=\"group_by\">\n      <mat-option value=\"week\">Week</mat-option>\n      <mat-option value=\"month\">Month</mat-option>\n      <mat-option value=\"year\">Year</mat-option>\n    </mat-select>\n  </mat-form-field>\n</form>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TechlifyFilterComponent } from './techlify-filter.component';\nimport {ReactiveFormsModule} from \"@angular/forms\";\nimport {FlexLayoutModule} from \"@angular/flex-layout\";\nimport {SearchableSelectorModule, TimelineFilterModule} from \"ngx-techlify-core\";\nimport {NgxPermissionsModule} from 'ngx-permissions';\nimport {MaterialModule} from '../material.module';\n\n@NgModule({\n  declarations: [TechlifyFilterComponent],\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    FlexLayoutModule,\n    MaterialModule,\n    NgxPermissionsModule,\n    SearchableSelectorModule,\n    TimelineFilterModule\n  ],\n  exports: [TechlifyFilterComponent]\n})\nexport class TechlifyFilterModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MaterialModule } from './material.module';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport {\n  EntityFileListModule,\n  FileDropperModule,\n  LoaderModule,\n  SearchableSelectorModule,\n  TechlifyIconModule,\n  TimelineFilterModule\n} from 'ngx-techlify-core';\nimport { NgxPermissionsModule } from 'ngx-permissions';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { TechlifyFilterModule } from './techlify-filter/techlify-filter.module';\n\n@NgModule({\n  imports: [\n    FlexLayoutModule,\n    MaterialModule,\n    CommonModule,\n    InfiniteScrollDirective,\n    TimelineFilterModule,\n    ReactiveFormsModule\n  ],\n  exports: [\n    CommonModule,\n    FlexLayoutModule,\n    MaterialModule,\n    NgxPermissionsModule,\n    FormsModule,\n    ReactiveFormsModule,\n    InfiniteScrollDirective,\n    RouterModule,\n    LoaderModule,\n    TimelineFilterModule,\n    TechlifyIconModule,\n    SearchableSelectorModule,\n    FileDropperModule,\n    EntityFileListModule,\n    TechlifyFilterModule\n  ]\n})\nexport class SharedModule {\n}\n","import { Injectable } from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PrintService {\n\n  isPrinting: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  constructor() { }\n\n  /**\n   * Get the isPrint variable value.\n   */\n  getIsPrinting(): Observable<boolean> {\n    return this.isPrinting.asObservable();\n  }\n\n  /**\n   * Update the isPrinting variable value.\n   *\n   * @param val\n   */\n  updateIsPrinting(val: boolean) {\n    this.isPrinting.next(val);\n  }\n\n  /**\n   * Call the system print function.\n   */\n  print(): void {\n    this.updateIsPrinting(true);\n    setTimeout(() => {\n      window.print();\n      this.updateIsPrinting(false);\n    }, 500);\n  }\n}\n","import { Component } from '@angular/core';\nimport {PrintService} from \"../print.service\";\n\n@Component({\n  selector: 'app-print-button',\n  templateUrl: './print-button.component.html',\n  styleUrls: ['./print-button.component.scss']\n})\nexport class PrintButtonComponent {\n\n  constructor(\n    public printService: PrintService\n  ) { }\n}\n","<mat-icon\n  (click)=\"printService.print()\"\n  class=\"d-print-none cursor-pointer\"\n>\n  print\n</mat-icon>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PrintButtonComponent } from './print-button/print-button.component';\nimport {MaterialModule} from 'ngx-techlify-core';\n\n\n\n@NgModule({\n  declarations: [PrintButtonComponent],\n  imports: [\n    CommonModule,\n    MaterialModule\n  ],\n  exports: [\n    PrintButtonComponent\n  ]\n})\nexport class PrintButtonModule { }\n","export enum InvoiceStatusEnum {\n  PENDING = 1,\n  PARTIALLY_PAID = 2,\n  PAID = 3,\n  VOID = 4\n}\n","import {Injectable} from '@angular/core';\nimport {HttpService, TechlifyService} from 'ngx-techlify-core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SalesSummaryService extends TechlifyService {\n\n  constructor(\n    httpService: HttpService\n  ) {\n    super(httpService, 'sales-summary');\n  }\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {ChartType, GoogleChartsModule} from 'angular-google-charts';\nimport {MatCard, MatCardContent} from '@angular/material/card';\nimport {MatProgressBar} from '@angular/material/progress-bar';\nimport {CurrencyPipe, NgIf} from '@angular/common';\nimport {FormBuilder, FormGroup, ReactiveFormsModule} from '@angular/forms';\nimport {AlertService, RequestHelperService, Timeline, TimelineFilterModule} from 'ngx-techlify-core';\nimport {debounceTime} from 'rxjs';\nimport {SharedModule} from '../../../@shared';\nimport {InvoiceStatusEnum} from '../../invoice/invoice-status-enum';\nimport {SalesSummaryService} from '../../sales-summary.service';\n\n@Component({\n  selector: 'app-sales-summary-chart',\n  standalone: true,\n  imports: [\n    GoogleChartsModule,\n    MatCard,\n    MatCardContent,\n    MatProgressBar,\n    NgIf,\n    ReactiveFormsModule,\n    SharedModule,\n    TimelineFilterModule,\n    CurrencyPipe\n  ],\n  templateUrl: './sales-summary-chart.component.html',\n  styleUrls: ['./sales-summary-chart.component.scss']\n})\nexport class SalesSummaryChartComponent implements OnInit {\n  @Input() height: number = 400;\n  filterForm!: FormGroup;\n  chart: any = {\n    title: 'Sales',\n    type: ChartType.Line,\n    columns: [\n      'Period',\n      'Amount'\n    ],\n    data: [],\n    options: {\n      legend: {\n        position: 'none'\n      }\n    }\n  };\n  isLoading: boolean = false;\n  totalSalesAmount!: number;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private salesSummaryService: SalesSummaryService,\n    private requestHelperService: RequestHelperService,\n    private alertService: AlertService,\n  ) {\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.THIS_YEAR],\n      date_from: [''],\n      date_to: [''],\n      group_by: 'period',\n      status_ids: [[InvoiceStatusEnum.PAID, InvoiceStatusEnum.PARTIALLY_PAID, InvoiceStatusEnum.PENDING]]\n    });\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n    this.filterForm.valueChanges.pipe(\n      debounceTime(500)\n    ).subscribe({\n      next: () => this.loadData()\n    });\n  }\n\n  loadData() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value)\n    };\n\n    if (!params.date_from || !params.date_to) {\n      return;\n    }\n    this.isLoading = true;\n    this.salesSummaryService.index(params).subscribe({\n      next: (response: any) => {\n        let data: any[] = [];\n        response?.data?.forEach((item: any) => {\n          data.push([item?.period, item.total_sales_amount]);\n        });\n        this.chart.data = data;\n        this.totalSalesAmount = response?.total_sales_amount;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    })\n  }\n}\n","<mat-card>\n  <mat-card-content>\n    <form [formGroup]=\"filterForm\" class=\"mb-3 d-flex justify-content-between align-items-start gap-3\">\n      <div class=\"d-flex flex-column gap-1\">\n        <div class=\"d-flex justify-content-start align-items-center gap-2\">\n\n          <h3 class=\"mb-0\">Sales</h3>\n          <span\n            class=\"material-symbols-outlined cursor-pointer\"\n            (click)=\"loadData()\"\n          >cached</span>\n          <a\n            class=\"text-decoration-none text-dark mt-2\"\n            [routerLink]=\"['/finance/reports/income-by-customer-summary']\"\n            *ngxPermissionsOnly=\"['income_by_customer_summary_report.read']\"\n          >\n            <span class=\"material-symbols-outlined\">\n              visibility\n            </span>\n          </a>\n        </div>\n\n        <div *ngIf=\"totalSalesAmount\">\n          <small class=\"text-secondary\">Amount</small>\n          <h3 class=\"mb-0 fw-bold\">{{ totalSalesAmount | currency }}</h3>\n        </div>\n      </div>\n      <app-timeline-filter\n        labelText=\"\"\n        formControlName=\"duration\"\n        [form]=\"filterForm\"\n        appearance=\"fill\"\n        [showClearButton]=\"true\"\n      ></app-timeline-filter>\n    </form>\n  </mat-card-content>\n  <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n  <mat-card-content *ngIf=\"chart.data?.length > 0\">\n    <google-chart\n      class=\"w-100\"\n      [height]=\"height\"\n      [title]=\"chart.title\"\n      [type]=\"chart.type\"\n      [data]=\"chart.data\"\n      [columns]=\"chart.columns\"\n      [options]=\"chart.options\"\n    >\n    </google-chart>\n  </mat-card-content>\n</mat-card>\n\n","import { Injectable } from '@angular/core';\nimport { HttpService } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class InvoiceSummaryService {\n  constructor(private httpService: HttpService) {}\n\n  /**\n   * Get the aggregated data for invoices.\n   *\n   * @param params\n   */\n  aggregated(params?: any): Observable<any> {\n    return this.httpService.get('api/invoice-aggregated', { params });\n  }\n\n  /**\n   * Export the aggregated report to Excel format.\n   *\n   * @param params\n   */\n  export(params?: any): Observable<any> {\n    return this.httpService.get('api/invoice-aggregated/export', { params });\n  }\n}\n","import { Component, OnInit } from '@angular/core';\nimport {\n  MatCell, MatCellDef,\n  MatColumnDef,\n  MatHeaderCell,\n  MatHeaderCellDef,\n  MatHeaderRow, MatHeaderRowDef,\n  MatRow, MatRowDef,\n  MatTable\n} from \"@angular/material/table\";\nimport { TechlifyListComponent } from \"ngx-techlify-core\";\nimport { InvoiceSummaryService } from \"../../invoice/invoice-summary.service\";\nimport { CurrencyPipe, NgIf } from \"@angular/common\";\nimport { MatProgressBar } from \"@angular/material/progress-bar\";\nimport { MatCard, MatCardContent } from \"@angular/material/card\";\nimport { RouterLink } from \"@angular/router\";\nimport { MatSort, MatSortHeader, Sort } from \"@angular/material/sort\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n  selector: 'app-top-customers-report',\n  standalone: true,\n  imports: [\n    MatTable,\n    MatColumnDef,\n    MatHeaderCell,\n    MatCell,\n    MatHeaderRow,\n    MatRow,\n    MatHeaderCellDef,\n    MatCellDef,\n    MatHeaderRowDef,\n    MatRowDef,\n    CurrencyPipe,\n    MatProgressBar,\n    NgIf,\n    MatCard,\n    MatCardContent,\n    RouterLink,\n    MatSort,\n    MatSortHeader,\n    MatIcon\n  ],\n  templateUrl: './top-customers-report.component.html',\n  styleUrl: './top-customers-report.component.scss'\n})\nexport class TopCustomersReportComponent extends TechlifyListComponent implements OnInit {\n  displayedColumns: string[] = [\n    'No',\n    'Name',\n    'Sales Sum',\n    'Payments',\n    'Balance'\n  ];\n  sortBy = 'customers.name|asc'\n\n  constructor(\n    private invoiceSummaryService: InvoiceSummaryService\n  ) {\n    super();\n    this.lastPage = 0;\n    this.perPage = 50000;\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n  }\n\n  override loadData() {\n    const params: any = {\n      groupBy: 'customer_id',\n      with: 'customer',\n      aggregate: 'total,paid,balance',\n      sort_by: this.sortBy,\n      page: this.page,\n      perPage: this.perPage,\n    }\n    this.isWorking = true;\n    this.invoiceSummaryService.aggregated(params).subscribe({\n      next: (response: any[]) => {\n        this.models = this.models?.concat(response);\n        this.isWorking = false;\n      },\n      error: () => (this.isWorking = false)\n    })\n  }\n\n  onSortChange(sort: Sort) {\n    let { active, direction } = sort;\n    if (!direction) {\n      active = 'customers.name';\n      direction = 'asc';\n    }\n    this.sortBy = active + '|' + direction;\n\n    this.reload();\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n    <h3 class=\"mb-0\">Top Customers</h3>\n    <mat-icon routerLink=\"/sales/customers\" class=\"cursor-pointer\">visibility</mat-icon>\n  </mat-card-content>\n  <mat-card-content class=\"p-0\">\n    <table mat-table [dataSource]=\"models\" class=\"w-100\" matSort (matSortChange)=\"onSortChange($event)\">\n      <!-- No Column -->\n      <ng-container matColumnDef=\"No\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i + 1 }} </td>\n      </ng-container>\n\n      <!-- Name Column -->\n      <ng-container matColumnDef=\"Name\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"customers.name\"> Name </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <a class=\"text-dark\" [routerLink]=\"['/sales/customers', element?.customer?.id, 'view']\">\n            {{ element?.customer?.name }}\n          </a>\n        </td>\n      </ng-container>\n\n      <!-- Sales Sum Column -->\n      <ng-container matColumnDef=\"Sales Sum\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"total\"> Sales Sum </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.total | currency }}\n        </td>\n      </ng-container>\n\n      <!-- Payments Column -->\n      <ng-container matColumnDef=\"Payments\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"paid\"> Payments </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.paid | currency }}\n        </td>\n      </ng-container>\n\n      <!-- Balance Column -->\n      <ng-container matColumnDef=\"Balance\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"balance\"> Balance </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.balance | currency }}\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n\n","import {Component, Input, OnInit} from '@angular/core';\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {ChartType, GoogleChartsModule} from \"angular-google-charts\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {NgIf} from \"@angular/common\";\nimport {SalesSummaryService} from '../../sales-summary.service';\n\n@Component({\n  selector: 'app-product-sales-pie-chart',\n  standalone: true,\n  imports: [\n    MatCard,\n    MatCardContent,\n    GoogleChartsModule,\n    MatProgressBar,\n    NgIf\n  ],\n  templateUrl: './product-sales-pie-chart.component.html',\n  styleUrl: './product-sales-pie-chart.component.scss'\n})\nexport class ProductSalesPieChartComponent implements  OnInit {\n  @Input() height: number = 400;\n  chart: any = {\n    title: 'Pie Chart',\n    type: ChartType.PieChart,\n    columns: ['Product', 'Sales Amount'],\n    data: [],\n    options: {}\n  };\n  isLoading: boolean = false;\n\n  constructor(\n    private salesSummaryService: SalesSummaryService\n  ) {\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n  }\n\n  private loadData() {\n    this.isLoading = true;\n    const params: any = {\n      group_by: 'product_id'\n    }\n    this.salesSummaryService.index(params).subscribe({\n      next: (response: any[]) => {\n        let data: any[] = [];\n        response?.forEach((item: any) => {\n          data.push([item?.product_name, item?.total_sales_amount]);\n        })\n        this.chart.data = data;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n}\n","<mat-card>\n  <mat-card-content>\n    <h3 class=\"mb-0\">Product</h3>\n  </mat-card-content>\n\n  <mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\" class=\"mt-2\"></mat-progress-bar>\n\n  <mat-card-content *ngIf=\"chart?.data?.length > 0\">\n    <google-chart\n      class=\"w-100\"\n      [height]=\"height\"\n      [type]=\"chart.type\"\n      [data]=\"chart.data\"\n      [columns]=\"chart.columns\"\n      [options]=\"chart.options\"\n    >\n    </google-chart>\n  </mat-card-content>\n</mat-card>\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class InvoiceService extends TechlifyService {\n  constructor(private httpService: HttpService) {\n    super(httpService, 'invoices');\n  }\n\n  /**\n   * Get the summary of the invoice.\n   *\n   * @param params\n   */\n  summary(params?: any): Observable<any> {\n    return this.httpService.get('api/invoice-summary', { params });\n  }\n\n  /**\n   * Export the invoice summary to Excel.\n   *\n   * @param params\n   */\n  exportSummary(params?: any) {\n    return this.httpService.get('api/invoice-summary/export', { params });\n  }\n\n  /**\n   * Export the invoices in Excel format.\n   *\n   * @param params\n   */\n  export(params: any): Observable<any> {\n    return this.httpService.get('api/invoices/export', { params });\n  }\n\n  /**\n   * Create a new invoice from quotation.\n   *\n   * @param model\n   * @param params\n   */\n  copy(model: any, params?: any) {\n    return this.httpService.put(`api/invoices/${model?.id}/copy`, model, {\n      params\n    });\n  }\n\n  void(invoice: any, params?: any): Observable<any> {\n    return this.httpService.put(`api/invoices/${invoice?.id}/void`, { params });\n  }\n\n  email(invoice: any): Observable<any> {\n    return this.httpService.put(`api/invoices/${invoice?.id}/email`, invoice);\n  }\n\n  multiUpdate(data?: any): Observable<any> {\n    return this.httpService.put('api/invoices/multi-update', data);\n  }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { CurrencyPipe, DatePipe, NgIf } from \"@angular/common\";\nimport { MatCard, MatCardContent } from \"@angular/material/card\";\nimport {\n  MatCell,\n  MatCellDef,\n  MatColumnDef,\n  MatHeaderCell, MatHeaderCellDef,\n  MatHeaderRow,\n  MatHeaderRowDef,\n  MatRow, MatRowDef, MatTable\n} from \"@angular/material/table\";\nimport { MatProgressBar } from \"@angular/material/progress-bar\";\nimport { TechlifyListComponent } from \"ngx-techlify-core\";\nimport { InfiniteScrollDirective } from \"ngx-infinite-scroll\";\nimport { RouterLink } from \"@angular/router\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { MatSort, MatSortHeader, Sort } from \"@angular/material/sort\";\nimport { InvoiceService } from '../../invoice/invoice.service';\nimport { InvoiceStatusEnum } from '../../invoice/invoice-status-enum';\n\n@Component({\n  selector: 'app-overdue-invoices-report',\n  standalone: true,\n  imports: [\n    CurrencyPipe,\n    MatCard,\n    MatCardContent,\n    MatCell,\n    MatCellDef,\n    MatColumnDef,\n    MatHeaderCell,\n    MatHeaderRow,\n    MatHeaderRowDef,\n    MatProgressBar,\n    MatRow,\n    MatRowDef,\n    MatTable,\n    NgIf,\n    MatHeaderCellDef,\n    InfiniteScrollDirective,\n    RouterLink,\n    DatePipe,\n    MatIcon,\n    MatSort,\n    MatSortHeader\n  ],\n  templateUrl: './overdue-invoices-report.component.html',\n  styleUrl: './overdue-invoices-report.component.scss'\n})\nexport class OverdueInvoicesReportComponent extends TechlifyListComponent implements OnInit {\n  displayedColumns: string[] = [\n    'No',\n    'Customer',\n    'Invoice #',\n    'Amount',\n    'Balance',\n    'Overdue'\n  ];\n  sortBy: string = 'date|desc';\n\n  constructor(\n    private invoiceService: InvoiceService\n  ) {\n    super();\n    this.lastPage = 0;\n    this.perPage = 25;\n  }\n\n  override loadData(): void {\n    const params: any = {\n      perPage: this.perPage,\n      page: this.page,\n      with: 'customer',\n      overdue: true,\n      status_ids: [InvoiceStatusEnum.PENDING, InvoiceStatusEnum.PARTIALLY_PAID].toString(),\n      sort_by: this.sortBy\n    }\n    this.isWorking = true;\n    this.invoiceService.index(params).subscribe({\n      next: (response: any) => {\n        this.models = this.models.concat(response?.data);\n        this.lastPage = response?.last_page;\n        this.isWorking = false;\n      }, error: () => (this.isWorking = false)\n    });\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n  }\n\n  onSortChange(sort: Sort) {\n    let { active, direction } = sort;\n    if (!direction) {\n      active = 'date';\n      direction = 'desc';\n    }\n    this.sortBy = active + '|' + direction;\n\n    this.reload();\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n    <h3 class=\"mb-0\">Overdue Invoices</h3>\n    <mat-icon routerLink=\"/sales/invoices\" class=\"cursor-pointer\">visibility</mat-icon>\n  </mat-card-content>\n  <mat-card-content class=\"p-0\">\n    <table\n      mat-table [dataSource]=\"models\" class=\"w-100\"\n      infiniteScroll\n      [infiniteScrollDistance]=\"2\"\n      [infiniteScrollThrottle]=\"50\"\n      (scrolled)=\"onScroll()\"\n      matSort\n      (matSortChange)=\"onSortChange($event)\"\n    >\n      <!-- No Column -->\n      <ng-container matColumnDef=\"No\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i + 1 }} </td>\n      </ng-container>\n\n      <!-- Customer Column -->\n      <ng-container matColumnDef=\"Customer\">\n        <th mat-header-cell *matHeaderCellDef> Customer </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <a class=\"text-dark\" [routerLink]=\"['/sales/customers', element?.customer?.id, 'view']\">\n            {{ element?.customer?.name }}\n          </a>\n        </td>\n      </ng-container>\n\n      <!-- Invoice # Column -->\n      <ng-container matColumnDef=\"Invoice #\">\n        <th mat-header-cell *matHeaderCellDef> Invoice # </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <div>\n            <a [routerLink]=\"['/sales/invoices', element?.id, 'view']\" class=\"text-dark\">\n              #{{ element?.number }}\n            </a>\n            - {{ element?.date | date }}\n          </div>\n          <small class=\"text-secondary\">due on {{ element?.due | date }}</small>\n        </td>\n      </ng-container>\n\n      <!-- Amount Column -->\n      <ng-container matColumnDef=\"Amount\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"total\"> Amount </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.total | currency }}\n        </td>\n      </ng-container>\n\n      <!-- Balance Column -->\n      <ng-container matColumnDef=\"Balance\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"balance\"> Balance </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.balance | currency }}\n        </td>\n      </ng-container>\n\n      <!-- Overdue Column -->\n      <ng-container matColumnDef=\"Overdue\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"overdue_days\"> Overdue </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.overdue_days }} days\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n\n","import { Component } from '@angular/core';\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {NgxPermissionsModule} from \"ngx-permissions\";\nimport {SalesSummaryChartComponent} from '../sale-reports/sales-summary-chart/sales-summary-chart.component';\nimport {TopCustomersReportComponent} from '../sale-reports/top-customers-report/top-customers-report.component';\nimport {ProductSalesPieChartComponent} from '../sale-reports/product-sales-pie-chart/product-sales-pie-chart.component';\nimport {OverdueInvoicesReportComponent} from '../reports/overdue-invoices-report/overdue-invoices-report.component';\n\n@Component({\n  selector: 'app-sale-dashboard',\n  standalone: true,\n  imports: [\n    MatCard,\n    MatCardContent,\n    NgxPermissionsModule,\n    SalesSummaryChartComponent,\n    TopCustomersReportComponent,\n    OverdueInvoicesReportComponent,\n    ProductSalesPieChartComponent\n  ],\n  templateUrl: './sale-dashboard.component.html',\n  styleUrl: './sale-dashboard.component.scss'\n})\nexport class SaleDashboardComponent {\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-start align-items-center gap-2\">\n    <span class=\"material-symbols-outlined\">mintmark</span>\n    <h2>Sales</h2>\n  </mat-card-content>\n</mat-card>\n\n<div class=\"d-flex justify-content-start align-items-start gap-3 flex-wrap mt-3\">\n  <div style=\"width: calc(50% - 1rem)\" class=\"d-flex flex-column justify-content-start gap-3\">\n    <app-sales-summary-chart\n      *ngxPermissionsOnly=\"['invoice.read']\"\n    ></app-sales-summary-chart>\n    <app-top-customers-report\n      *ngxPermissionsOnly=\"['customer_read']\"\n    ></app-top-customers-report>\n  </div>\n  <div style=\"width: calc(50%)\" class=\"d-flex flex-column justify-content-start gap-3\">\n    <app-product-sales-pie-chart\n      *ngxPermissionsOnly=\"['invoice.read']\"\n    ></app-product-sales-pie-chart>\n    <app-overdue-invoices-report\n      *ngxPermissionsOnly=\"['invoice.read']\"\n    ></app-overdue-invoices-report>\n  </div>\n</div>\n","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {SaleDashboardComponent} from './sale-dashboard/sale-dashboard.component';\nimport {ProductListComponent} from './product/product-list/product-list.component';\n\nconst routes: Routes = [\n  {\n    path: 'dashboard',\n    component: SaleDashboardComponent\n  },\n  {\n    path: 'invoices',\n    loadChildren: () => import('./invoice/invoice.module').then(mod => mod.InvoiceModule)\n  },\n  {\n    path: 'quotations',\n    loadChildren: () => import('./quotation/quotation.module').then(mod => mod.QuotationModule)\n  },\n  {\n    path: 'payments',\n    loadChildren: () => import('./payment/payment.module').then(mod => mod.PaymentModule)\n  },\n  {\n    path: 'customers',\n    loadChildren: () => import('./customer/customer.module').then(mod => mod.CustomerModule)\n  },\n  {\n    path: 'accounts',\n    loadChildren: () => import('./account/account.module').then(mod => mod.AccountModule)\n  },\n  {\n    path: 'cheques',\n    loadChildren: () => import('./cheque/cheque.module').then(mod => mod.ChequeModule)\n  },\n  {\n    path: 'products',\n    loadChildren: () => import('./product/product.module').then(mod => mod.ProductModule)\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class SaleRoutingModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {SaleRoutingModule} from './sale-routing.module';\n\n\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule,\n    SaleRoutingModule\n  ]\n})\nexport class SaleModule {\n}\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ReceivablesService extends TechlifyService {\n  constructor(public httpService: HttpService) {\n    super(httpService, 'receivables');\n  }\n\n  /**\n   * Export the invoice summary to Excel.\n   *\n   * @param params\n   */\n  export(params?: any): Observable<any> {\n    return this.httpService.get('api/receivables/export', { params });\n  }\n\n  /**\n   * Get the summary of the receivables.\n   *\n   * @param params\n   */\n  summary(params?: any) {\n    return this.httpService.get('api/receivables-summary', { params });\n  }\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {CurrencyPipe, NgIf} from \"@angular/common\";\nimport {FormBuilder, FormGroup, FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {ChartType, GoogleChartsModule} from \"angular-google-charts\";\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {RequestHelperService, Timeline, TimelineFilterModule, TimelineValue} from \"ngx-techlify-core\";\nimport {debounceTime} from \"rxjs\";\nimport moment from \"moment\";\nimport {RouterLink} from \"@angular/router\";\nimport {ReceivablesService} from '../../reports/receivables.service';\n\n@Component({\n  selector: 'app-account-receivables-summary-chart',\n  standalone: true,\n  imports: [\n    CurrencyPipe,\n    FormsModule,\n    GoogleChartsModule,\n    MatCard,\n    MatCardContent,\n    MatProgressBar,\n    NgIf,\n    ReactiveFormsModule,\n    TimelineFilterModule,\n    RouterLink\n  ],\n  templateUrl: './account-receivables-summary-chart.component.html',\n  styleUrl: './account-receivables-summary-chart.component.scss',\n  providers: [\n    CurrencyPipe\n  ]\n})\nexport class AccountReceivablesSummaryChartComponent implements OnInit {\n  @Input() height: number = 400;\n  filterForm!: FormGroup\n  chart: any = {\n    title: 'Account Receivables',\n    type: ChartType.PieChart,\n    columns: [\n      'Period',\n      'Amount'\n    ],\n    data: [],\n    options: {\n      pieHole: 0.4\n    }\n  };\n  isLoading: boolean = false;\n  totalReceivables: number = 0;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private receivablesService: ReceivablesService,\n    private requestHelperService: RequestHelperService,\n    private currencyPipe: CurrencyPipe\n  ) {\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.THIS_YEAR],\n      date_from: [''],\n      date_to: [''],\n      invoice_status_ids: [[1, 2]],\n      group_by: 'period'\n    })\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n    this.filterForm.valueChanges.pipe(\n      debounceTime(500)\n    ).subscribe({\n      next: () => this.loadData()\n    })\n  }\n\n  loadData() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value),\n    }\n\n    this.isLoading = true;\n    this.receivablesService.index(params).subscribe({\n      next: (response: any[]) => {\n        let data: any[] = [];\n        response?.forEach((item: any) => {\n          if (item?.period === 'Total Receivables') {\n            this.totalReceivables = item.amount;\n          } else {\n            data.push([item?.period + ' : ' + this.currencyPipe.transform(item?.amount), item.amount]);\n          }\n        });\n        this.chart.data = data;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    })\n  }\n}\n\n","<mat-card>\n  <mat-card-content>\n    <form [formGroup]=\"filterForm\" class=\"mb-3 d-flex justify-content-between align-items-start gap-3\">\n      <div class=\"d-flex flex-column gap-1\">\n        <div class=\"d-flex justify-content-start align-items-center gap-2\">\n\n          <h3 class=\"mb-0\">Account Receivables</h3>\n          <span\n            class=\"material-symbols-outlined cursor-pointer\"\n            (click)=\"loadData()\"\n          >cached</span>\n          <a class=\"text-decoration-none text-dark mt-2\" [routerLink]=\"['/finance/reports/receivables']\">\n            <span class=\"material-symbols-outlined\">\n              visibility\n            </span>\n          </a>\n        </div>\n\n        <div *ngIf=\"totalReceivables\">\n          <small class=\"text-secondary\">Amount</small>\n          <h3 class=\"mb-0 fw-bold\">{{ totalReceivables | currency }}</h3>\n        </div>\n      </div>\n      <app-timeline-filter\n        labelText=\"\"\n        formControlName=\"duration\"\n        [form]=\"filterForm\"\n        appearance=\"fill\"\n        [showClearButton]=\"true\"\n      ></app-timeline-filter>\n    </form>\n  </mat-card-content>\n  <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n  <mat-card-content *ngIf=\"chart.data?.length > 0\">\n    <google-chart\n      class=\"w-100\"\n      [height]=\"height\"\n      [title]=\"chart.title\"\n      [type]=\"chart.type\"\n      [data]=\"chart.data\"\n      [columns]=\"chart.columns\"\n      [options]=\"chart.options\"\n    >\n    </google-chart>\n  </mat-card-content>\n</mat-card>\n","import {Component, Input} from '@angular/core';\nimport {NgForOf} from \"@angular/common\";\n\n@Component({\n  selector: 'app-customer-phones',\n  standalone: true,\n  imports: [\n    NgForOf\n  ],\n  templateUrl: './customer-phones.component.html',\n  styleUrl: './customer-phones.component.scss'\n})\nexport class CustomerPhonesComponent {\n  @Input() customer: any;\n}\n","<div class=\"d-flex justify-content-start align-items-center gap-2 text-secondary\">\n  <div\n    *ngFor=\"let phone of customer?.phones\"\n    class=\"d-flex justify-content-start align-items-center gap-1\"\n  >\n    <span class=\"material-symbols-outlined\">phone_iphone</span>\n    <span>{{ phone?.phone }}</span>\n  </div>\n</div>\n","export enum CustomerTypeEnum {\n  STANDARD = 1,\n  WHOLESALE = 2,\n  INDIVIDUAL = 3,\n  COMPANY = 4,\n}\n","export enum CustomerPhoneTypeEnum {\n  Home = 1,\n  Work = 2,\n  Mobile = 3,\n  Whatsapp = 4\n}\n","import { Injectable } from '@angular/core';\nimport { DataManager, HttpService, TechlifyService } from 'ngx-techlify-core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CustomerService extends TechlifyService {\n  constructor(\n    private dataManager: DataManager,\n    protected httpService: HttpService\n  ) {\n    super(httpService, 'customers');\n  }\n\n  export(params?: any) {\n    return this.http.get('api/customers/export', { params });\n  }\n\n  getCustomerTypes(filters?: any) {\n    return this.dataManager.GET(`api/customer-types`, filters);\n  }\n}\n","/* eslint-disable */\n\nimport { Injectable } from '@angular/core';\n@Injectable()\nexport class CountryCode {\n  public allCountries = [\n    ['Afghanistan (‫افغانستان‬‎)', 'af', '93'],\n    ['Albania (Shqipëri)', 'al', '355'],\n    ['Algeria (‫الجزائر‬‎)', 'dz', '213'],\n    ['American Samoa', 'as', '1684'],\n    ['Andorra', 'ad', '376'],\n    ['Angola', 'ao', '244'],\n    ['Anguilla', 'ai', '1264'],\n    ['Antigua and Barbuda', 'ag', '1268'],\n    ['Argentina', 'ar', '54'],\n    ['Armenia (Հայաստան)', 'am', '374'],\n    ['Aruba', 'aw', '297'],\n    ['Australia', 'au', '61', 0],\n    ['Austria (Österreich)', 'at', '43'],\n    ['Azerbaijan (Azərbaycan)', 'az', '994'],\n    ['Bahamas', 'bs', '1242'],\n    ['Bahrain (‫البحرين‬‎)', 'bh', '973'],\n    ['Bangladesh (বাংলাদেশ)', 'bd', '880'],\n    ['Barbados', 'bb', '1246'],\n    ['Belarus (Беларусь)', 'by', '375'],\n    ['Belgium (België)', 'be', '32'],\n    ['Belize', 'bz', '501'],\n    ['Benin (Bénin)', 'bj', '229'],\n    ['Bermuda', 'bm', '1441'],\n    ['Bhutan (འབྲུག)', 'bt', '975'],\n    ['Bolivia', 'bo', '591'],\n    ['Bosnia and Herzegovina (Босна и Херцеговина)', 'ba', '387'],\n    ['Botswana', 'bw', '267'],\n    ['Brazil (Brasil)', 'br', '55'],\n    ['British Indian Ocean Territory', 'io', '246'],\n    ['British Virgin Islands', 'vg', '1284'],\n    ['Brunei', 'bn', '673'],\n    ['Bulgaria (България)', 'bg', '359'],\n    ['Burkina Faso', 'bf', '226'],\n    ['Burundi (Uburundi)', 'bi', '257'],\n    ['Cambodia (កម្ពុជា)', 'kh', '855'],\n    ['Cameroon (Cameroun)', 'cm', '237'],\n    [\n      'Canada',\n      'ca',\n      '1',\n      1,\n      [\n        '204',\n        '226',\n        '236',\n        '249',\n        '250',\n        '289',\n        '306',\n        '343',\n        '365',\n        '387',\n        '403',\n        '416',\n        '418',\n        '431',\n        '437',\n        '438',\n        '450',\n        '506',\n        '514',\n        '519',\n        '548',\n        '579',\n        '581',\n        '587',\n        '604',\n        '613',\n        '639',\n        '647',\n        '672',\n        '705',\n        '709',\n        '742',\n        '778',\n        '780',\n        '782',\n        '807',\n        '819',\n        '825',\n        '867',\n        '873',\n        '902',\n        '905',\n      ],\n    ],\n    ['Cape Verde (Kabu Verdi)', 'cv', '238'],\n    ['Caribbean Netherlands', 'bq', '599', 1],\n    ['Cayman Islands', 'ky', '1345'],\n    ['Central African Republic (République centrafricaine)', 'cf', '236'],\n    ['Chad (Tchad)', 'td', '235'],\n    ['Chile', 'cl', '56'],\n    ['China (中国)', 'cn', '86'],\n    ['Christmas Island', 'cx', '61', 2],\n    ['Cocos (Keeling) Islands', 'cc', '61', 1],\n    ['Colombia', 'co', '57'],\n    ['Comoros (‫جزر القمر‬‎)', 'km', '269'],\n    ['Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)', 'cd', '243'],\n    ['Congo (Republic) (Congo-Brazzaville)', 'cg', '242'],\n    ['Cook Islands', 'ck', '682'],\n    ['Costa Rica', 'cr', '506'],\n    ['Côte d’Ivoire', 'ci', '225'],\n    ['Croatia (Hrvatska)', 'hr', '385'],\n    ['Cuba', 'cu', '53'],\n    ['Curaçao', 'cw', '599', 0],\n    ['Cyprus (Κύπρος)', 'cy', '357'],\n    ['Czech Republic (Česká republika)', 'cz', '420'],\n    ['Denmark (Danmark)', 'dk', '45'],\n    ['Djibouti', 'dj', '253'],\n    ['Dominica', 'dm', '1767'],\n    [\n      'Dominican Republic (República Dominicana)',\n      'do',\n      '1',\n      2,\n      ['809', '829', '849'],\n    ],\n    ['Ecuador', 'ec', '593'],\n    ['Egypt (‫مصر‬‎)', 'eg', '20'],\n    ['El Salvador', 'sv', '503'],\n    ['Equatorial Guinea (Guinea Ecuatorial)', 'gq', '240'],\n    ['Eritrea', 'er', '291'],\n    ['Estonia (Eesti)', 'ee', '372'],\n    ['Ethiopia', 'et', '251'],\n    ['Falkland Islands (Islas Malvinas)', 'fk', '500'],\n    ['Faroe Islands (Føroyar)', 'fo', '298'],\n    ['Fiji', 'fj', '679'],\n    ['Finland (Suomi)', 'fi', '358', 0],\n    ['France', 'fr', '33'],\n    ['French Guiana (Guyane française)', 'gf', '594'],\n    ['French Polynesia (Polynésie française)', 'pf', '689'],\n    ['Gabon', 'ga', '241'],\n    ['Gambia', 'gm', '220'],\n    ['Georgia (საქართველო)', 'ge', '995'],\n    ['Germany (Deutschland)', 'de', '49'],\n    ['Ghana (Gaana)', 'gh', '233'],\n    ['Gibraltar', 'gi', '350'],\n    ['Greece (Ελλάδα)', 'gr', '30'],\n    ['Greenland (Kalaallit Nunaat)', 'gl', '299'],\n    ['Grenada', 'gd', '1473'],\n    ['Guadeloupe', 'gp', '590', 0],\n    ['Guam', 'gu', '1671'],\n    ['Guatemala', 'gt', '502'],\n    ['Guernsey', 'gg', '44', 1],\n    ['Guinea (Guinée)', 'gn', '224'],\n    ['Guinea-Bissau (Guiné Bissau)', 'gw', '245'],\n    ['Guyana', 'gy', '592'],\n    ['Haiti', 'ht', '509'],\n    ['Honduras', 'hn', '504'],\n    ['Hong Kong (香港)', 'hk', '852'],\n    ['Hungary (Magyarország)', 'hu', '36'],\n    ['Iceland (Ísland)', 'is', '354'],\n    ['India (भारत)', 'in', '91'],\n    ['Indonesia', 'id', '62'],\n    ['Iran (‫ایران‬‎)', 'ir', '98'],\n    ['Iraq (‫العراق‬‎)', 'iq', '964'],\n    ['Ireland', 'ie', '353'],\n    ['Isle of Man', 'im', '44', 2],\n    ['Israel (‫ישראל‬‎)', 'il', '972'],\n    ['Italy (Italia)', 'it', '39', 0],\n    ['Jamaica', 'jm', '1', 4, ['876', '658']],\n    ['Japan (日本)', 'jp', '81'],\n    ['Jersey', 'je', '44', 3],\n    ['Jordan (‫الأردن‬‎)', 'jo', '962'],\n    ['Kazakhstan (Казахстан)', 'kz', '7', 1],\n    ['Kenya', 'ke', '254'],\n    ['Kiribati', 'ki', '686'],\n    ['Kosovo', 'xk', '383'],\n    ['Kuwait (‫الكويت‬‎)', 'kw', '965'],\n    ['Kyrgyzstan (Кыргызстан)', 'kg', '996'],\n    ['Laos (ລາວ)', 'la', '856'],\n    ['Latvia (Latvija)', 'lv', '371'],\n    ['Lebanon (‫لبنان‬‎)', 'lb', '961'],\n    ['Lesotho', 'ls', '266'],\n    ['Liberia', 'lr', '231'],\n    ['Libya (‫ليبيا‬‎)', 'ly', '218'],\n    ['Liechtenstein', 'li', '423'],\n    ['Lithuania (Lietuva)', 'lt', '370'],\n    ['Luxembourg', 'lu', '352'],\n    ['Macau (澳門)', 'mo', '853'],\n    ['Macedonia (FYROM) (Македонија)', 'mk', '389'],\n    ['Madagascar (Madagasikara)', 'mg', '261'],\n    ['Malawi', 'mw', '265'],\n    ['Malaysia', 'my', '60'],\n    ['Maldives', 'mv', '960'],\n    ['Mali', 'ml', '223'],\n    ['Malta', 'mt', '356'],\n    ['Marshall Islands', 'mh', '692'],\n    ['Martinique', 'mq', '596'],\n    ['Mauritania (‫موريتانيا‬‎)', 'mr', '222'],\n    ['Mauritius (Moris)', 'mu', '230'],\n    ['Mayotte', 'yt', '262', 1],\n    ['Mexico (México)', 'mx', '52'],\n    ['Micronesia', 'fm', '691'],\n    ['Moldova (Republica Moldova)', 'md', '373'],\n    ['Monaco', 'mc', '377'],\n    ['Mongolia (Монгол)', 'mn', '976'],\n    ['Montenegro (Crna Gora)', 'me', '382'],\n    ['Montserrat', 'ms', '1664'],\n    ['Morocco (‫المغرب‬‎)', 'ma', '212', 0],\n    ['Mozambique (Moçambique)', 'mz', '258'],\n    ['Myanmar (Burma) (မြန်မာ)', 'mm', '95'],\n    ['Namibia (Namibië)', 'na', '264'],\n    ['Nauru', 'nr', '674'],\n    ['Nepal (नेपाल)', 'np', '977'],\n    ['Netherlands (Nederland)', 'nl', '31'],\n    ['New Caledonia (Nouvelle-Calédonie)', 'nc', '687'],\n    ['New Zealand', 'nz', '64'],\n    ['Nicaragua', 'ni', '505'],\n    ['Niger (Nijar)', 'ne', '227'],\n    ['Nigeria', 'ng', '234'],\n    ['Niue', 'nu', '683'],\n    ['Norfolk Island', 'nf', '672'],\n    ['North Korea (조선 민주주의 인민 공화국)', 'kp', '850'],\n    ['Northern Mariana Islands', 'mp', '1670'],\n    ['Norway (Norge)', 'no', '47', 0],\n    ['Oman (‫عُمان‬‎)', 'om', '968'],\n    ['Pakistan (‫پاکستان‬‎)', 'pk', '92'],\n    ['Palau', 'pw', '680'],\n    ['Palestine (‫فلسطين‬‎)', 'ps', '970'],\n    ['Panama (Panamá)', 'pa', '507'],\n    ['Papua New Guinea', 'pg', '675'],\n    ['Paraguay', 'py', '595'],\n    ['Peru (Perú)', 'pe', '51'],\n    ['Philippines', 'ph', '63'],\n    ['Poland (Polska)', 'pl', '48'],\n    ['Portugal', 'pt', '351'],\n    ['Puerto Rico', 'pr', '1', 3, ['787', '939']],\n    ['Qatar (‫قطر‬‎)', 'qa', '974'],\n    ['Réunion (La Réunion)', 're', '262', 0],\n    ['Romania (România)', 'ro', '40'],\n    ['Russia (Россия)', 'ru', '7', 0],\n    ['Rwanda', 'rw', '250'],\n    ['Saint Barthélemy', 'bl', '590', 1],\n    ['Saint Helena', 'sh', '290'],\n    ['Saint Kitts and Nevis', 'kn', '1869'],\n    ['Saint Lucia', 'lc', '1758'],\n    ['Saint Martin (Saint-Martin (partie française))', 'mf', '590', 2],\n    ['Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)', 'pm', '508'],\n    ['Saint Vincent and the Grenadines', 'vc', '1784'],\n    ['Samoa', 'ws', '685'],\n    ['San Marino', 'sm', '378'],\n    ['São Tomé and Príncipe (São Tomé e Príncipe)', 'st', '239'],\n    ['Saudi Arabia (‫المملكة العربية السعودية‬‎)', 'sa', '966'],\n    ['Senegal (Sénégal)', 'sn', '221'],\n    ['Serbia (Србија)', 'rs', '381'],\n    ['Seychelles', 'sc', '248'],\n    ['Sierra Leone', 'sl', '232'],\n    ['Singapore', 'sg', '65'],\n    ['Sint Maarten', 'sx', '1721'],\n    ['Slovakia (Slovensko)', 'sk', '421'],\n    ['Slovenia (Slovenija)', 'si', '386'],\n    ['Solomon Islands', 'sb', '677'],\n    ['Somalia (Soomaaliya)', 'so', '252'],\n    ['South Africa', 'za', '27'],\n    ['South Korea (대한민국)', 'kr', '82'],\n    ['South Sudan (‫جنوب السودان‬‎)', 'ss', '211'],\n    ['Spain (España)', 'es', '34'],\n    ['Sri Lanka (ශ්‍රී ලංකාව)', 'lk', '94'],\n    ['Sudan (‫السودان‬‎)', 'sd', '249'],\n    ['Suriname', 'sr', '597'],\n    ['Svalbard and Jan Mayen', 'sj', '47', 1],\n    ['Swaziland', 'sz', '268'],\n    ['Sweden (Sverige)', 'se', '46'],\n    ['Switzerland (Schweiz)', 'ch', '41'],\n    ['Syria (‫سوريا‬‎)', 'sy', '963'],\n    ['Taiwan (台灣)', 'tw', '886'],\n    ['Tajikistan', 'tj', '992'],\n    ['Tanzania', 'tz', '255'],\n    ['Thailand (ไทย)', 'th', '66'],\n    ['Timor-Leste', 'tl', '670'],\n    ['Togo', 'tg', '228'],\n    ['Tokelau', 'tk', '690'],\n    ['Tonga', 'to', '676'],\n    ['Trinidad and Tobago', 'tt', '1868'],\n    ['Tunisia (‫تونس‬‎)', 'tn', '216'],\n    ['Turkey (Türkiye)', 'tr', '90'],\n    ['Turkmenistan', 'tm', '993'],\n    ['Turks and Caicos Islands', 'tc', '1649'],\n    ['Tuvalu', 'tv', '688'],\n    ['U.S. Virgin Islands', 'vi', '1340'],\n    ['Uganda', 'ug', '256'],\n    ['Ukraine (Україна)', 'ua', '380'],\n    ['United Arab Emirates (‫الإمارات العربية المتحدة‬‎)', 'ae', '971'],\n    ['United Kingdom', 'gb', '44', 0],\n    ['United States', 'us', '1', 0],\n    ['Uruguay', 'uy', '598'],\n    ['Uzbekistan (Oʻzbekiston)', 'uz', '998'],\n    ['Vanuatu', 'vu', '678'],\n    ['Vatican City (Città del Vaticano)', 'va', '39', 1],\n    ['Venezuela', 've', '58'],\n    ['Vietnam (Việt Nam)', 'vn', '84'],\n    ['Wallis and Futuna (Wallis-et-Futuna)', 'wf', '681'],\n    ['Western Sahara (‫الصحراء الغربية‬‎)', 'eh', '212', 1],\n    ['Yemen (‫اليمن‬‎)', 'ye', '967'],\n    ['Zambia', 'zm', '260'],\n    ['Zimbabwe', 'zw', '263'],\n    ['Åland Islands', 'ax', '358', 1],\n  ];\n}\n\nexport const Examples: any = {\n  '001': '001',\n  AC: '40123',\n  AD: '312345',\n  AE: '501234567',\n  AF: '701234567',\n  AG: '2684641234',\n  AI: '2642351234',\n  AL: '662123456',\n  AM: '77123456',\n  AO: '923123456',\n  AR: '91123456789',\n  AS: '6847331234',\n  AT: '664123456',\n  AU: '412345678',\n  AW: '5601234',\n  AX: '412345678',\n  AZ: '401234567',\n  BA: '61123456',\n  BB: '2462501234',\n  BD: '1812345678',\n  BE: '470123456',\n  BF: '70123456',\n  BG: '48123456',\n  BH: '36001234',\n  BI: '79561234',\n  BJ: '90011234',\n  BL: '690001234',\n  BM: '4413701234',\n  BN: '7123456',\n  BO: '71234567',\n  BQ: '3181234',\n  BR: '11961234567',\n  BS: '2423591234',\n  BT: '17123456',\n  BW: '71123456',\n  BY: '294911911',\n  BZ: '6221234',\n  CA: '5062345678',\n  CC: '412345678',\n  CD: '991234567',\n  CF: '70012345',\n  CG: '061234567',\n  CH: '781234567',\n  CI: '01234567',\n  CK: '71234',\n  CL: '221234567',\n  CM: '671234567',\n  CN: '13123456789',\n  CO: '3211234567',\n  CR: '83123456',\n  CU: '51234567',\n  CV: '9911234',\n  CW: '95181234',\n  CX: '412345678',\n  CY: '96123456',\n  CZ: '601123456',\n  DE: '15123456789',\n  DJ: '77831001',\n  DK: '32123456',\n  DM: '7672251234',\n  DO: '8092345678',\n  DZ: '551234567',\n  EC: '991234567',\n  EE: '51234567',\n  EG: '1001234567',\n  EH: '650123456',\n  ER: '7123456',\n  ES: '612345678',\n  ET: '911234567',\n  FI: '412345678',\n  FJ: '7012345',\n  FK: '51234',\n  FM: '3501234',\n  FO: '211234',\n  FR: '612345678',\n  GA: '06031234',\n  GB: '7400123456',\n  GD: '4734031234',\n  GE: '555123456',\n  GF: '694201234',\n  GG: '7781123456',\n  GH: '231234567',\n  GI: '57123456',\n  GL: '221234',\n  GM: '3012345',\n  GN: '601123456',\n  GP: '690001234',\n  GQ: '222123456',\n  GR: '6912345678',\n  GT: '51234567',\n  GU: '6713001234',\n  GW: '955012345',\n  GY: '6091234',\n  HK: '51234567',\n  HN: '91234567',\n  HR: '921234567',\n  HT: '34101234',\n  HU: '201234567',\n  ID: '812345678',\n  IE: '850123456',\n  IL: '502345678',\n  IM: '7924123456',\n  IN: '8123456789',\n  IO: '3801234',\n  IQ: '7912345678',\n  IR: '9123456789',\n  IS: '6111234',\n  IT: '3123456789',\n  JE: '7797712345',\n  JM: '8762101234',\n  JO: '790123456',\n  JP: '9012345678',\n  KE: '712123456',\n  KG: '700123456',\n  KH: '91234567',\n  KI: '72001234',\n  KM: '3212345',\n  KN: '8697652917',\n  KP: '1921234567',\n  KR: '1000000000',\n  KW: '50012345',\n  KY: '3453231234',\n  KZ: '7710009998',\n  LA: '2023123456',\n  LB: '71123456',\n  LC: '7582845678',\n  LI: '660234567',\n  LK: '712345678',\n  LR: '770123456',\n  LS: '50123456',\n  LT: '61234567',\n  LU: '628123456',\n  LV: '21234567',\n  LY: '912345678',\n  MA: '650123456',\n  MC: '612345678',\n  MD: '62112345',\n  ME: '67622901',\n  MF: '690001234',\n  MG: '321234567',\n  MH: '2351234',\n  MK: '72345678',\n  ML: '65012345',\n  MM: '92123456',\n  MN: '88123456',\n  MO: '66123456',\n  MP: '6702345678',\n  MQ: '696201234',\n  MR: '22123456',\n  MS: '6644923456',\n  MT: '96961234',\n  MU: '52512345',\n  MV: '7712345',\n  MW: '991234567',\n  MX: '12221234567',\n  MY: '123456789',\n  MZ: '821234567',\n  NA: '811234567',\n  NC: '751234',\n  NE: '93123456',\n  NF: '381234',\n  NG: '8021234567',\n  NI: '81234567',\n  NL: '612345678',\n  NO: '40612345',\n  NP: '9841234567',\n  NR: '5551234',\n  NU: '8884012',\n  NZ: '211234567',\n  OM: '92123456',\n  PA: '61234567',\n  PE: '912345678',\n  PF: '87123456',\n  PG: '70123456',\n  PH: '9051234567',\n  PK: '3012345678',\n  PL: '512345678',\n  PM: '551234',\n  PR: '7872345678',\n  PS: '599123456',\n  PT: '912345678',\n  PW: '6201234',\n  PY: '961456789',\n  QA: '33123456',\n  RE: '692123456',\n  RO: '712034567',\n  RS: '601234567',\n  RU: '9123456789',\n  RW: '720123456',\n  SA: '512345678',\n  SB: '7421234',\n  SC: '2510123',\n  SD: '911231234',\n  SE: '701234567',\n  SG: '81234567',\n  SH: '51234',\n  SI: '31234567',\n  SJ: '41234567',\n  SK: '912123456',\n  SL: '25123456',\n  SM: '66661212',\n  SN: '701234567',\n  SO: '71123456',\n  SR: '7412345',\n  SS: '977123456',\n  ST: '9812345',\n  SV: '70123456',\n  SX: '7215205678',\n  SY: '944567890',\n  SZ: '76123456',\n  TA: '8999',\n  TC: '6492311234',\n  TD: '63012345',\n  TG: '90112345',\n  TH: '812345678',\n  TJ: '917123456',\n  TK: '7290',\n  TL: '77212345',\n  TM: '66123456',\n  TN: '20123456',\n  TO: '7715123',\n  TR: '5012345678',\n  TT: '8682911234',\n  TV: '901234',\n  TW: '912345678',\n  TZ: '621234567',\n  UA: '501234567',\n  UG: '712345678',\n  US: '2015550123',\n  UY: '94231234',\n  UZ: '912345678',\n  VA: '3123456789',\n  VC: '7844301234',\n  VE: '4121234567',\n  VG: '2843001234',\n  VI: '3406421234',\n  VN: '912345678',\n  VU: '5912345',\n  WF: '501234',\n  WS: '7212345',\n  XK: '43201234',\n  YE: '712345678',\n  YT: '639012345',\n  ZA: '711234567',\n  ZM: '955123456',\n  ZW: '712345678',\n};\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { parsePhoneNumber, PhoneNumber } from 'libphonenumber-js';\n\nexport const matTelInputValidator = (\n  control: AbstractControl,\n): ValidationErrors | null => {\n  const error = { validatePhoneNumber: true };\n  let numberInstance: PhoneNumber;\n\n  if (control.value) {\n    try {\n      numberInstance = parsePhoneNumber(control.value);\n    } catch (e) {\n      return error;\n    }\n\n    if (numberInstance && !numberInstance.isValid()) {\n      if (!control.touched) {\n        control.markAsTouched();\n      }\n      return error;\n    }\n  }\n  return null;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Country } from './country.model';\n\n@Pipe({\n  name: 'search',\n  standalone: true,\n})\nexport class SearchCountryPipe implements PipeTransform {\n  transform(countries: Country[], searchCriteria?: string): Country[] {\n    if (!searchCriteria || searchCriteria === '') {\n      return countries;\n    }\n\n    return countries.filter((country) => {\n      return `${country.name}+${country.dialCode}${\n        country.areaCodes ? country.areaCodes.join(',') : ''\n      }`\n        .toLowerCase()\n        .includes(searchCriteria.toLowerCase());\n    });\n  }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgClass } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  Self,\n  ViewChild,\n  booleanAttribute,\n} from '@angular/core';\nimport {\n  FormControl,\n  FormGroupDirective,\n  NG_VALIDATORS,\n  NgControl,\n  NgForm,\n  ControlContainer,\n} from '@angular/forms';\nimport { ErrorStateMatcher, MatRippleModule } from '@angular/material/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\nimport {\n  AsYouType,\n  CountryCode as CC,\n  E164Number,\n  NationalNumber,\n  PhoneNumber,\n  getExampleNumber,\n  parsePhoneNumberFromString,\n} from 'libphonenumber-js';\nimport { Subject } from 'rxjs';\n\nimport { CountryCode, Examples } from './country-code';\nimport { Country } from './country.model';\nimport { PhoneNumberFormat } from './phone-number-format.model';\nimport { matTelInputValidator } from './phone-number-input.validator';\nimport { SearchCountryPipe } from './search-country.pipe';\n\nclass matTelInputBase {\n  constructor(\n    public _defaultErrorStateMatcher: ErrorStateMatcher,\n    public _parentForm: NgForm,\n    public _parentFormGroup: FormGroupDirective,\n    public ngControl: NgControl,\n  ) { }\n}\n\n@Component({\n  selector: 'app-phone-number-input',\n  templateUrl: './phone-number-input.component.html',\n  styleUrls: ['./phone-number-input.component.scss'],\n  providers: [\n    CountryCode,\n    { provide: MatFormFieldControl, useExisting: MatTelInput },\n    {\n      provide: NG_VALIDATORS,\n      useValue: matTelInputValidator,\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  viewProviders: [{ provide: ControlContainer, useValue: null }],\n  imports: [\n    NgClass,\n    MatInputModule,\n    MatMenuModule,\n    MatRippleModule,\n    MatDividerModule,\n    SearchCountryPipe,\n  ],\n})\nexport class MatTelInput\n  extends matTelInputBase\n  implements OnInit, DoCheck, OnDestroy {\n  static nextId = 0;\n  @ViewChild(MatMenu) matMenu!: MatMenu;\n  @ViewChild('menuSearchInput', { static: false })\n  menuSearchInput?: ElementRef<HTMLInputElement>;\n  @ViewChild('focusable', { static: false }) focusable!: ElementRef;\n\n  @HostBinding()\n  id = `mat-tel-input-${MatTelInput.nextId++}`;\n  @HostBinding('class.floating')\n  get shouldLabelFloat(): boolean {\n    return this.focused || !this.empty;\n  }\n\n  @Input() autocomplete: 'off' | 'tel' = 'off';\n  @Input() cssClass?: string;\n  @Input() errorStateMatcher: ErrorStateMatcher =\n    this._defaultErrorStateMatcher;\n  @Input() placeholder: string = '';\n  @Input() maxLength: string | number = 15;\n  @Input() name?: string;\n  @Input() onlyCountries: string[] = [];\n  @Input() preferredCountries: string[] = [];\n  @Input() searchPlaceholder = 'Search country or code';\n  @Input({ transform: booleanAttribute }) enablePlaceholder = false;\n  @Input({ transform: booleanAttribute }) enableSearch = false;\n  @Input({ transform: booleanAttribute }) resetOnChange = false;\n  @Input()\n  set format(value: PhoneNumberFormat) {\n    this._format = value;\n    this.phoneNumber = this.formattedPhoneNumber();\n    this.stateChanges.next();\n  }\n  get format(): PhoneNumberFormat {\n    return this._format;\n  }\n\n  private _required = false;\n  @Input({ transform: booleanAttribute })\n  set required(value: boolean) {\n    this._required = coerceBooleanProperty(value);\n    this.stateChanges.next(undefined);\n  }\n  get required(): boolean {\n    return this._required;\n  }\n\n  private _disabled = false;\n  @Input({ alias: 'disabled', transform: booleanAttribute })\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n    this.stateChanges.next(undefined);\n  }\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  get empty(): boolean {\n    return !this.phoneNumber;\n  }\n\n  @Output()\n  countryChanged: EventEmitter<Country> = new EventEmitter<Country>();\n\n  stateChanges = new Subject<void>();\n  focused = false;\n  describedBy = '';\n  phoneNumber?: E164Number | NationalNumber = '' as E164Number | NationalNumber;\n  allCountries: Country[] = [];\n  preferredCountriesInDropDown: Country[] = [];\n  selectedCountry!: Country;\n  numberInstance?: PhoneNumber;\n  value?: any;\n  searchCriteria?: string;\n\n  private _previousFormattedNumber?: string;\n  private _format: PhoneNumberFormat = 'default';\n\n  onTouched = () => { };\n  propagateChange = (_: any) => { };\n\n  private errorState?: boolean;\n\n  constructor(\n    private _changeDetectorRef: ChangeDetectorRef,\n    private countryCodeData: CountryCode,\n    private _focusMonitor: FocusMonitor,\n    private _elementRef: ElementRef<HTMLElement>,\n    @Optional() @Self() _ngControl: NgControl,\n    @Optional() _parentForm: NgForm,\n    @Optional() _parentFormGroup: FormGroupDirective,\n    _defaultErrorStateMatcher: ErrorStateMatcher,\n  ) {\n    super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, _ngControl);\n\n    _focusMonitor.monitor(_elementRef, true).subscribe((origin: any) => {\n      if (this.focused && !origin) {\n        this.onTouched();\n      }\n      this.focused = !!origin;\n      this.stateChanges.next();\n    });\n\n    if (this.ngControl != null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  ngOnInit() {\n    this.fetchCountryData();\n\n    if (this.preferredCountries.length) {\n      this.preferredCountries.forEach((iso2) => {\n        const preferredCountry = this.allCountries\n          .filter((c) => {\n            return c.iso2 === iso2;\n          })\n          .shift();\n\n        if (preferredCountry)\n          this.preferredCountriesInDropDown.push(preferredCountry);\n      });\n    }\n\n    if (this.onlyCountries.length) {\n      this.allCountries = this.allCountries.filter((c) =>\n        this.onlyCountries.includes(c.iso2),\n      );\n    }\n\n    this._setDefaultCountry();\n\n    this._changeDetectorRef.markForCheck();\n    this.stateChanges.next();\n  }\n\n  updateErrorState() {\n    if (\n      this.ngControl &&\n      this.ngControl.invalid &&\n      (this.ngControl.touched ||\n        (this._parentForm && this._parentForm.submitted))\n    ) {\n      const currentState = this.errorStateMatcher.isErrorState(\n        this.ngControl.control as FormControl,\n        this.ngControl?.value,\n      );\n      if (currentState !== this.errorState) {\n        this.errorState = currentState;\n        this._changeDetectorRef.markForCheck();\n      }\n    }\n  }\n\n  private _setDefaultCountry() {\n    if (this.numberInstance?.country) {\n      // If an existing number is present, we use it to determine selectedCountry\n      this.selectedCountry = this.getCountry(this.numberInstance.country);\n    } else if (this.preferredCountriesInDropDown.length) {\n      this.selectedCountry = this.preferredCountriesInDropDown[0];\n    } else {\n      this.selectedCountry = this.allCountries[0];\n    }\n\n    this.countryChanged.emit(this.selectedCountry);\n  }\n\n  ngDoCheck(): void {\n    if (this.ngControl) {\n      const oldState = this.errorState;\n      const newState = this.errorStateMatcher.isErrorState(\n        this.ngControl.control,\n        this._parentForm,\n      );\n\n      this.errorState =\n        (newState &&\n          (!this.ngControl.control?.value ||\n            this.ngControl.control?.touched)) ||\n        (!this.focused ? newState : false);\n\n      if (oldState !== newState) {\n        this.errorState = newState;\n        this.stateChanges.next();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.stateChanges.complete();\n    this._focusMonitor.stopMonitoring(this._elementRef);\n  }\n\n  public onPhoneNumberChange(): void {\n    try {\n      this._setCountry();\n    } catch (e) {\n      // Pass a value to trigger the validator error\n      this.value = this.formattedPhoneNumber().toString();\n    }\n\n    this.propagateChange(this.value);\n    this._changeDetectorRef.markForCheck();\n  }\n\n  private _setCountry() {\n    if (!this.phoneNumber) {\n      this.value = null;\n      return;\n    }\n\n    this.numberInstance = parsePhoneNumberFromString(\n      this.phoneNumber.toString(),\n      this.selectedCountry.iso2.toUpperCase() as CC,\n    );\n\n    this.formatAsYouTypeIfEnabled();\n    this.value = this.numberInstance?.number;\n\n    if (!this.value) throw new Error('Incorrect phone number');\n\n    if (this.numberInstance && this.numberInstance.isValid()) {\n      if (this.phoneNumber !== this.formattedPhoneNumber()) {\n        this.phoneNumber = this.formattedPhoneNumber();\n      }\n      if (\n        this.selectedCountry.iso2 !== this.numberInstance.country &&\n        this.numberInstance.country\n      ) {\n        this.selectedCountry = this.getCountry(this.numberInstance.country);\n        this.countryChanged.emit(this.selectedCountry);\n      }\n    }\n  }\n\n  public onCountrySelect(country: Country, el: HTMLInputElement): void {\n    if (this.phoneNumber) {\n      this.phoneNumber = this.numberInstance?.nationalNumber;\n    }\n    if (this.resetOnChange && this.selectedCountry !== country) {\n      this.reset();\n    }\n\n    this.selectedCountry = country;\n    this.countryChanged.emit(this.selectedCountry);\n\n    this.onPhoneNumberChange();\n    el.focus();\n  }\n\n  public getCountry(code: CC): Country {\n    return (this.allCountries.find((c) => c.iso2 === code.toLowerCase()) || {\n      name: 'UN',\n      iso2: 'UN',\n      dialCode: undefined,\n      priority: 0,\n      areaCodes: undefined,\n      flagClass: 'UN',\n      placeHolder: '',\n    }) as Country;\n  }\n\n  public onInputKeyPress(event: any): void {\n    const pattern = /[0-9+\\- ]/;\n    if (!pattern.test(event.key)) {\n      event.preventDefault();\n    }\n  }\n\n  protected fetchCountryData(): void {\n    this.countryCodeData.allCountries.forEach((c) => {\n      const country: Country = {\n        name: c[0].toString(),\n        iso2: c[1].toString(),\n        dialCode: c[2].toString(),\n        priority: +c[3] || 0,\n        areaCodes: (c[4] as string[]) || undefined,\n        flagClass: c[1].toString().toUpperCase(),\n        placeHolder: '',\n      };\n\n      if (this.enablePlaceholder) {\n        country.placeHolder = this._getPhoneNumberPlaceHolder(\n          country.iso2.toUpperCase(),\n        );\n      }\n\n      this.allCountries.push(country);\n    });\n  }\n\n  private _getPhoneNumberPlaceHolder(countryISOCode: any): string | undefined {\n    try {\n      return getExampleNumber(countryISOCode, Examples)?.number;\n    } catch (e) {\n      return e as any;\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this._changeDetectorRef.markForCheck();\n    this.stateChanges.next(undefined);\n  }\n\n  writeValue(value: any): void {\n    if (value) {\n      this.numberInstance = parsePhoneNumberFromString(value);\n      if (this.numberInstance) {\n        const countryCode = this.numberInstance.country;\n        this.phoneNumber = this.formattedPhoneNumber();\n\n        if (!countryCode) return;\n\n        this.selectedCountry = this.getCountry(countryCode);\n        if (\n          this.selectedCountry.dialCode &&\n          !this.preferredCountries.includes(this.selectedCountry.iso2)\n        ) {\n          this.preferredCountriesInDropDown.push(this.selectedCountry);\n        }\n        this.countryChanged.emit(this.selectedCountry);\n\n        // Initial value is set\n        this.stateChanges.next();\n      } else {\n        this.phoneNumber = value;\n        this.stateChanges.next(undefined);\n      }\n    }\n    // Angular bug\n    // else if (this.phoneNumber !== '') {\n    //   this.reset()\n    // }\n\n    // Value is set from outside using setValue()\n    this.onPhoneNumberChange();\n    this._changeDetectorRef.markForCheck();\n  }\n\n  setDescribedByIds(ids: string[]) {\n    this.describedBy = ids.join(' ');\n  }\n\n  onContainerClick(event: MouseEvent): void {\n    if ((event.target as Element).tagName.toLowerCase() !== 'input') {\n      this._elementRef.nativeElement.querySelector('input')!.focus();\n    }\n  }\n\n  reset() {\n    this.phoneNumber = '' as E164Number | NationalNumber;\n    this.propagateChange(null);\n\n    this._changeDetectorRef.markForCheck();\n    this.stateChanges.next(undefined);\n  }\n\n  private formattedPhoneNumber(): E164Number | NationalNumber {\n    if (!this.numberInstance) {\n      return (this.phoneNumber?.toString() || '') as\n        | E164Number\n        | NationalNumber;\n    }\n    switch (this.format) {\n      case 'national':\n        return this.numberInstance.formatNational() as\n          | E164Number\n          | NationalNumber;\n      case 'international':\n        return this.numberInstance.formatInternational() as\n          | E164Number\n          | NationalNumber;\n      default:\n        return this.numberInstance.nationalNumber.toString() as\n          | E164Number\n          | NationalNumber;\n    }\n  }\n\n  private formatAsYouTypeIfEnabled(): void {\n    if (this.format === 'default') {\n      return;\n    }\n    const asYouType: AsYouType = new AsYouType(\n      this.selectedCountry.iso2.toUpperCase() as CC,\n    );\n    // To avoid caret positioning we apply formatting only if the caret is at the end:\n    if (!this.phoneNumber) return;\n\n    if (\n      this.phoneNumber\n        ?.toString()\n        .startsWith(this._previousFormattedNumber || '')\n    ) {\n      this.phoneNumber = asYouType.input(this.phoneNumber.toString()) as\n        | E164Number\n        | NationalNumber;\n    }\n    this._previousFormattedNumber = this.phoneNumber.toString();\n  }\n}\n","<div class=\"mat-tel-input-container\">\n  <button type=\"button\" matRipple matIconPrefix [matMenuTriggerFor]=\"menu\" class=\"country-selector\"\n    [disabled]=\"disabled\" (menuOpened)=\"menuSearchInput?.nativeElement?.focus()\">\n    <span class=\"country-selector-flag flag\" [ngClass]=\"selectedCountry.flagClass\"></span>\n\n    @if (selectedCountry.dialCode) {\n    <span class=\"country-selector-code\">+{{ selectedCountry.dialCode }}</span>\n    }\n  </button>\n\n  <mat-menu #menu=\"matMenu\" class=\"mat-tel-input-overlay-panel\" [backdropClass]=\"'mat-tel-input-overlay-backdrop'\">\n    @if (enableSearch) {\n    <input #menuSearchInput class=\"country-search\" [value]=\"searchCriteria || ''\" type=\"text\"\n      [placeholder]=\"searchPlaceholder\" (click)=\"$event.stopPropagation()\"\n      (input)=\"searchCriteria = $any($event.target).value\" />\n    }\n    @for (country of preferredCountriesInDropDown; track $index) {\n    <button type=\"button\" mat-menu-item class=\"country-list-button\" (click)=\"onCountrySelect(country, focusable)\">\n      <div class=\"icon-wrapper\">\n        <div class=\"flag\" [ngClass]=\"country.flagClass\"></div>\n      </div>\n      <div class=\"label-wrapper\">\n        {{ country.name }}\n\n        @if (country?.dialCode) {\n        <span [style]=\"!searchCriteria ? 'white-space: nowrap' : ''\">\n          +{{ country.dialCode }}\n\n          @if (country.areaCodes) {\n          {{ country.areaCodes.join(', ') }}\n          }\n        </span>\n        }\n      </div>\n    </button>\n    }\n    @if (preferredCountriesInDropDown.length) {\n    <mat-divider></mat-divider>\n    }\n    @for (country of allCountries | search: searchCriteria; track $index) {\n    <button type=\"button\" mat-menu-item class=\"country-list-button\" (click)=\"onCountrySelect(country, focusable)\">\n      <div class=\"icon-wrapper\">\n        <div class=\"flag\" [ngClass]=\"country.flagClass\"></div>\n      </div>\n      <div class=\"label-wrapper\">\n        {{ country.name }}\n\n        @if (country?.dialCode) {\n        <span [style]=\"!searchCriteria ? 'white-space: nowrap' : ''\">\n          +{{ country.dialCode }}\n\n          @if (country.areaCodes) {\n          {{ country.areaCodes.join(', ') }}\n          }\n        </span>\n        }\n      </div>\n    </button>\n    }\n  </mat-menu>\n\n  <input class=\"mat-tel-input-input\" matInput type=\"tel\" inputmode=\"tel\" [autocomplete]=\"autocomplete\"\n    [ngClass]=\"cssClass\" (blur)=\"onTouched()\" (keypress)=\"onInputKeyPress($event)\" [value]=\"phoneNumber || ''\"\n    (input)=\"phoneNumber = $any($event.target).value; onPhoneNumberChange()\" [errorStateMatcher]=\"errorStateMatcher\"\n    [placeholder]=\"placeholder || $any(selectedCountry.placeHolder)\" [disabled]=\"disabled\" #focusable\n    [attr.maxlength]=\"maxLength\" />\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport {\n  FormValidatorService, TechlifyFormComponent\n} from 'ngx-techlify-core';\nimport { CustomerService } from '../customer.service';\nimport { CustomerTypeEnum } from '../customer-type.enum';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { CustomerPhoneTypeEnum } from '../customer-phone-type.enum';\n\n@Component({\n  selector: 'app-customer-form',\n  templateUrl: './customer-form.component.html'\n})\nexport class CustomerFormComponent extends TechlifyFormComponent implements OnInit {\n  @Input() customer!: any;\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n  @Output() cancelled: EventEmitter<any> = new EventEmitter<any>();\n\n  constructor(\n    formValidatorService: FormValidatorService,\n    private customerService: CustomerService,\n    private fb: FormBuilder,\n    public matDialogRef: MatDialogRef<CustomerFormComponent>\n  ) {\n    super(formValidatorService);\n\n    this.errorMessages = {\n      name: {\n        required: 'Please Enter Customer Name'\n      },\n      mobile_phone: {\n        required: 'Please Enter Mobile Phone Number'\n      },\n      type_id: {\n        required: 'Please select the customer type.'\n      }\n    }\n\n    this.form = this.fb.group({\n      id: [''],\n      name: ['', Validators.compose([Validators.required])],\n      type_id: [CustomerTypeEnum.INDIVIDUAL, Validators.compose([Validators.required])],\n      identity_number: [''],\n      email: [''],\n      home_phone: [''],\n      mobile_phone: [''],\n      work_phone: [''],\n      whatsapp_number: [''],\n      details: [''],\n      home_address: [''],\n      work_address: [''],\n      emergency_contact_name: [''],\n      emergency_contact_phone: [''],\n      emergency_contact_address: ['']\n    });\n  }\n\n  ngOnInit() {\n    if (this.customer) {\n      const data: any = {\n        ...this.customer\n      }\n\n      this.form.patchValue(data);\n\n      if (this.customer?.phones) {\n        this.customer?.phones.forEach((element: any) => {\n          if (element.type_id == CustomerPhoneTypeEnum.Home) {\n            this.form.get('home_phone')?.patchValue(element.phone);\n          }\n\n          if (element.type_id == CustomerPhoneTypeEnum.Work) {\n            this.form.get('work_phone')?.patchValue(element.phone);\n          }\n\n          if (element.type_id == CustomerPhoneTypeEnum.Mobile) {\n            this.form.get('mobile_phone')?.patchValue(element.phone);\n          }\n          if (element.type_id == CustomerPhoneTypeEnum.Whatsapp) {\n            this.form.get('whatsapp_number')?.patchValue(element.phone);\n          }\n        });\n      }\n\n      if (this.customer?.addresses) {\n        this.customer?.addresses.forEach((element: any) => {\n          if (element.type_id == 1) {\n            this.form.get('home_address')?.setValue(element.address);\n          }\n          if (element.type_id == 2) {\n            this.form.get('work_address')?.setValue(element.address);\n          }\n        });\n      }\n    }\n  }\n\n  save() {\n    if (!this.form.valid) {\n      this.alertService.addAlert('Please Fill All Required Fields', 'warn');\n      this.form.markAllAsTouched();\n      return;\n    }\n\n    const data: any = { ...this.form.value }\n    const params: any = {\n      with: 'phones.type,addresses.type,type'\n    }\n\n    this.isWorking = true;\n    let result = data?.id\n      ? this.customerService.update(data, params)\n      : this.customerService.store(data, params);\n\n    result.subscribe({\n      next: (response: any) => {\n        this.matDialogRef.close(response);\n        this.saved.emit(response?.item);\n        this.isWorking = false;\n        this.alertService.addAlert('The customer saved successfully!', 'success');\n      },\n      error: () => (this.isWorking = false)\n    })\n  }\n}\n","<div class=\"p-3\">\n  <h3>\n    {{ customer ? 'Edit' : 'Create' }} Customer\n  </h3>\n  <form [formGroup]=\"form\" (ngSubmit)=\"save()\" class=\"d-flex flex-wrap gap-2\">\n    <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n      <mat-label>Type</mat-label>\n      <app-searchable-selector formControlName=\"type_id\" apiUrl=\"api/customer-types\"></app-searchable-selector>\n      <mat-error *ngIf=\"isFieldValid('type_id')\">{{getErrorMessage('type_id')}}</mat-error>\n    </mat-form-field>\n\n    <mat-form-field style=\"width: calc(50%)\">\n      <mat-label>Name</mat-label>\n      <input matInput placeholder=\"Name\" formControlName=\"name\" required>\n      <mat-error *ngIf=\"isFieldValid('name')\">{{getErrorMessage('name')}}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n      <mat-label>Email</mat-label>\n      <input matInput placeholder=\"Email\" formControlName=\"email\">\n    </mat-form-field>\n\n    <mat-form-field style=\"width: calc(50%)\">\n      <mat-label>Identity Number</mat-label>\n      <input matInput placeholder=\"Identity Number\" formControlName=\"identity_number\">\n    </mat-form-field>\n\n    <mat-form-field style=\"width: calc(50%  - 0.5rem)\">\n      <mat-label>Mobile Phone</mat-label>\n      <input matInput placeholder=\"Mobile Phone\" formControlName=\"mobile_phone\" required>\n      <mat-error *ngIf=\"isFieldValid('mobile_phone')\">{{getErrorMessage('mobile_phone')}}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field style=\"width: calc(50%)\">\n      <mat-label>Home Phone</mat-label>\n      <input matInput placeholder=\"Home Phone\" formControlName=\"home_phone\">\n      <mat-error *ngIf=\"isFieldValid('home_phone')\">{{getErrorMessage('home_phone')}}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n      <mat-label>Work Phone</mat-label>\n      <input matInput placeholder=\"Work Phone\" formControlName=\"work_phone\">\n      <mat-error *ngIf=\"isFieldValid('work_phone')\">{{getErrorMessage('work_phone')}}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field style=\"width: calc(50% - 0.5rem)\" [floatLabel]=\"'always'\">\n      <mat-label>Whatsapp Number</mat-label>\n      <app-phone-number-input formControlName=\"whatsapp_number\" [preferredCountries]=\"['gy']\">\n      </app-phone-number-input>\n    </mat-form-field>\n\n    <mat-form-field style=\"width: calc(50%)\">\n      <mat-label>Home Address</mat-label>\n      <textarea matInput placeholder=\"Home Address\" formControlName=\"home_address\"></textarea>\n      <mat-error *ngIf=\"isFieldValid('home_address')\">{{getErrorMessage('home_address')}}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n      <mat-label>Work Address</mat-label>\n      <textarea matInput placeholder=\"Work Address\" formControlName=\"work_address\"></textarea>\n    </mat-form-field>\n\n    <mat-form-field style=\"width: calc(50%)\">\n      <mat-label>Other Details</mat-label>\n      <textarea matInput placeholder=\"Other Details\" formControlName=\"details\"></textarea>\n    </mat-form-field>\n\n    <h3 style=\"width: calc(100%)\">Emergency Contact</h3>\n\n    <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n      <mat-label>Name</mat-label>\n      <input matInput placeholder=\"Name\" formControlName=\"emergency_contact_name\">\n      <mat-error *ngIf=\"isFieldValid('emergency_contact_name')\">{{getErrorMessage('emergency_contact_name')}}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field style=\"width: calc(50%)\">\n      <mat-label>Phone</mat-label>\n      <input matInput placeholder=\"Phone\" formControlName=\"emergency_contact_phone\">\n      <mat-error *ngIf=\"isFieldValid('emergency_contact_phone')\">{{getErrorMessage('emergency_contact_phone')}}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field style=\"width: calc(100%)\">\n      <mat-label>Address</mat-label>\n      <textarea matInput placeholder=\"Address\" formControlName=\"emergency_contact_address\"></textarea>\n    </mat-form-field>\n\n    <div style=\"width: calc(100%)\" class=\"d-flex justify-content-end align-items-center gap-2\">\n      <button [disabled]=\"isWorking\" mat-button type=\"button\" (click)=\"cancelled.emit(); matDialogRef.close()\">\n        Cancel\n      </button>\n      <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">\n        Save\n      </button>\n    </div>\n  </form>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CustomerFormComponent } from './customer-form.component';\nimport { SharedModule } from '../../../@shared';\nimport { SearchableSelectorModule } from \"ngx-techlify-core\";\nimport { MatTelInput } from '../widgets/techlify-telephone-input/phone-number-input.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    SharedModule,\n    SearchableSelectorModule,\n    MatTelInput\n  ],\n  declarations: [CustomerFormComponent],\n  exports: [CustomerFormComponent]\n})\nexport class CustomerFormModule { }\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {MatDialog, MatDialogContent, MatDialogTitle} from \"@angular/material/dialog\";\nimport {MatIcon} from \"@angular/material/icon\";\nimport {NgIf} from \"@angular/common\";\nimport {CustomerFormModule} from \"../customer-form/customer-form.module\";\n\n@Component({\n  selector: 'app-customer-form-button',\n  standalone: true,\n  imports: [\n    MatDialogContent,\n    MatDialogTitle,\n    MatIcon,\n    NgIf,\n    CustomerFormModule,\n  ],\n  templateUrl: './customer-form-button.component.html',\n  styleUrl: './customer-form-button.component.scss'\n})\nexport class CustomerFormButtonComponent {\n  @Input() customer: any;\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n\n  constructor(public matDialog: MatDialog) {}\n\n  showForm(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, { width: '600px' });\n  }\n\n  onSaved(model: any) {\n    this.matDialog.closeAll();\n    this.saved.emit(model);\n  }\n}\n","<mat-icon\n  *ngIf=\"!customer\"\n  color=\"primary\"\n  class=\"cursor-pointer d-print-none\"\n  (click)=\"showForm(formTemplate)\"\n>\n  add\n</mat-icon>\n\n<mat-icon\n  *ngIf=\"customer\"\n  class=\"cursor-pointer d-print-none\"\n  (click)=\"showForm(formTemplate)\"\n>\n  edit\n</mat-icon>\n\n<ng-template #formTemplate>\n  <app-customer-form\n    [customer]=\"customer\"\n    (saved)=\"onSaved($event)\"\n    (cancelled)=\"matDialog.closeAll()\"\n  ></app-customer-form>\n</ng-template>\n","export enum CustomerAddressTypeEnum {\n  Home = 1,\n  Work = 2\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NgForOf, NgIf } from \"@angular/common\";\nimport { InfiniteScrollDirective } from \"ngx-infinite-scroll\";\nimport { SharedModule } from \"../../../../@shared\";\nimport { TechlifyListComponent } from 'ngx-techlify-core';\nimport { FormControl } from '@angular/forms';\nimport { debounceTime } from 'rxjs';\nimport { CustomerService } from '../../customer.service';\n\n@Component({\n  selector: 'app-customers-list-widget',\n  standalone: true,\n  imports: [\n    InfiniteScrollDirective,\n    SharedModule,\n    NgForOf,\n    NgIf,\n    SharedModule\n  ],\n  templateUrl: './customers-list-widget.component.html',\n  styleUrl: './customers-list-widget.component.scss'\n})\nexport class CustomersListWidgetComponent extends TechlifyListComponent implements OnInit {\n  @Input() label = 'Customers';\n  @Input() basePath: string = '/sales/customers';\n\n  displayedColumns: string[] = [\n    '#',\n    'Customer',\n    'Contact',\n    'Policies'\n  ];\n  searchControl: FormControl = new FormControl('');\n\n  constructor(\n    protected override service: CustomerService\n  ) {\n    super();\n    this.lastPage = 0;\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n\n    this.searchControl.valueChanges.pipe(\n      debounceTime(800)\n    ).subscribe(() => this.reload());\n  }\n\n  override loadData() {\n    const params: any = {\n      page: this.page,\n      perPage: this.perPage,\n      search: this.searchControl.value,\n      with: 'account,phones.type,type',\n      withCount: 'policies'\n    };\n\n    this.isWorking = true;\n    this.service.index(params).subscribe({\n      next: (response: any) => {\n        this.models = this.models?.concat(response?.data);\n        this.lastPage = response?.last_page;\n        this.isWorking = false;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"mb-1\">\n    <div class=\"d-flex justify-content-between align-items-center gap-2 mb-3\">\n      <div class=\"d-flex justify-content-start align-items-center gap-1\">\n        <h3 class=\"mb-1\">{{ label }}</h3>\n        <a [routerLink]=\"['/sales/customers']\" class=\"text-decoration-none text-dark mt-2\">\n          <mat-icon>visibility</mat-icon>\n        </a>\n      </div>\n    </div>\n    <mat-form-field appearance=\"outline\" class=\"w-100\">\n      <mat-label>Search</mat-label>\n      <input [formControl]=\"searchControl\" type=\"text\" matInput placeholder=\"Search customer\">\n      <mat-icon matSuffix>search</mat-icon>\n    </mat-form-field>\n  </mat-card-content>\n\n  <mat-card-content class=\"p-0 list-container\" #scrollContainer>\n    <table mat-table [dataSource]=\"models\" class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"1\"\n      [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [infiniteScrollContainer]=\"scrollContainer\">\n      <!-- # Column -->\n      <ng-container matColumnDef=\"#\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i + 1 }} </td>\n      </ng-container>\n\n      <!-- Customer Column -->\n      <ng-container matColumnDef=\"Customer\">\n        <th mat-header-cell *matHeaderCellDef> Customer </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <a class=\"text-dark text-decoration-none d-flex justify-content-start align-items-center gap-1\"\n            [routerLink]=\"[basePath, element?.id, 'view']\">\n            {{ element?.name }}\n            <span class=\"material-symbols-outlined\">arrow_outward</span>\n          </a>\n          <span class=\"badge bg-secondary\" *ngIf=\"element?.type\">{{ element?.type?.title }}</span>\n        </td>\n      </ng-container>\n\n      <!-- Contact Column -->\n      <ng-container matColumnDef=\"Contact\">\n        <th mat-header-cell *matHeaderCellDef> Contact </th>\n        <td mat-cell *matCellDef=\"let element;\">\n          <p class=\"mb-0\" *ngFor=\"let phone of element?.phones\">{{ phone?.type?.title }} # : {{ phone?.phone }}</p>\n          <small class=\"text-secondary\" *ngIf=\"element?.email\">{{ element?.email }}</small>\n        </td>\n      </ng-container>\n\n      <!-- Policies Column -->\n      <ng-container matColumnDef=\"Policies\">\n        <th mat-header-cell *matHeaderCellDef> Policies </th>\n        <td mat-cell *matCellDef=\"let element;\">\n          <span class=\"badge bg-dark text-uppercase\">{{ element?.policies_count }} Policies</span>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n\n    <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>","import {Component, Input} from '@angular/core';\nimport {NgForOf, NgIf} from \"@angular/common\";\n\n@Component({\n  selector: 'app-customer-identity-number',\n  standalone: true,\n  imports: [\n    NgForOf,\n    NgIf\n  ],\n  templateUrl: './customer-identity-number.component.html',\n  styleUrl: './customer-identity-number.component.scss'\n})\nexport class CustomerIdentityNumberComponent {\n  @Input() customer: any;\n}\n","<span\n  *ngIf=\"customer?.identity_number\"\n  class=\"status-pill status-pill-sm status-pending d-flex justify-content-start align-items-center gap-1\"\n>\n  <span class=\"material-symbols-outlined\">badge</span>\n  <span>ID</span>\n  <span>{{ customer?.identity_number }}</span>\n</span>\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {MatDialog, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle} from \"@angular/material/dialog\";\nimport {AlertService} from \"ngx-techlify-core\";\nimport {MatButton} from \"@angular/material/button\";\nimport {MatIcon} from \"@angular/material/icon\";\nimport {CustomerService} from \"../customer.service\";\n\n@Component({\n  selector: 'app-customer-delete-button',\n  standalone: true,\n  imports: [\n    MatButton,\n    MatDialogActions,\n    MatDialogClose,\n    MatDialogContent,\n    MatDialogTitle,\n    MatIcon\n  ],\n  templateUrl: './customer-delete-button.component.html',\n  styleUrl: './customer-delete-button.component.scss'\n})\nexport class CustomerDeleteButtonComponent {\n  @Input() customer: any;\n  @Output() deleted: EventEmitter<any> = new EventEmitter();\n  isDeleting: boolean = false;\n\n  constructor(\n    private matDialog: MatDialog,\n    private customerService: CustomerService,\n    private alertService: AlertService\n  ) {}\n\n  /**\n   * Show delete dialog.\n   *\n   * @param templateRef\n   */\n  showDeleteDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, { width: '400px' });\n  }\n\n  /**\n   * Delete the account.\n   */\n  deleteModel() {\n    this.isDeleting = true;\n    this.customerService.delete(this.customer).subscribe({\n      next: () => {\n        this.isDeleting = false;\n        this.matDialog.closeAll();\n        this.alertService.addAlert('Customer deleted successfully!', 'success');\n        this.deleted.emit();\n      },\n      error: () => {\n        this.isDeleting = false;\n      }\n    });\n  }\n}\n","<mat-icon\n  class=\"cursor-pointer d-print-none\"\n  (click)=\"showDeleteDialog(deleteTemplate)\"\n>\n  delete\n</mat-icon>\n\n<ng-template #deleteTemplate>\n  <h3 mat-dialog-title>Delete Customer</h3>\n  <div mat-dialog-content>\n    <p>Are you sure you want to delete the customer?</p>\n  </div>\n  <div\n    mat-dialog-actions\n    class=\"d-flex gap-2 justify-content-end align-items-center\"\n  >\n    <button\n      [disabled]=\"isDeleting\"\n      mat-raised-button\n      color=\"warn\"\n      (click)=\"deleteModel()\"\n    >\n      Delete\n    </button>\n    <button [disabled]=\"isDeleting\" mat-flat-button mat-dialog-close>\n      Cancel\n    </button>\n  </div>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Location } from \"@angular/common\";\nimport { CustomerIdentityNumberComponent } from \"../customer-identity-number/customer-identity-number.component\";\nimport { CustomerPhoneTypeEnum } from \"../customer-phone-type.enum\";\nimport { CustomerAddressTypeEnum } from \"../customer-address-type.enum\";\nimport { CustomerFormButtonComponent } from \"../customer-form-button/customer-form-button.component\";\nimport { CustomerDeleteButtonComponent } from \"../customer-delete-button/customer-delete-button.component\";\nimport {\n  NgxPermissionsAllowStubDirective, NgxPermissionsRestrictStubDirective\n} from \"ngx-permissions\";\nimport { SharedModule } from '../../../@shared';\n\n@Component({\n  selector: 'app-customer-information-card',\n  standalone: true,\n  imports: [\n    CustomerDeleteButtonComponent,\n    CustomerFormButtonComponent,\n    CustomerIdentityNumberComponent,\n    NgxPermissionsAllowStubDirective,\n    NgxPermissionsRestrictStubDirective,\n    SharedModule,\n  ],\n  templateUrl: './customer-information-card.component.html',\n  styleUrl: './customer-information-card.component.scss'\n})\nexport class CustomerInformationCardComponent implements OnInit {\n  @Input() customer: any;\n  mobilePhone!: any;\n  workPhone!: any;\n  homePhone!: any;\n  homeAddress!: any;\n  workAddress!: any;\n\n  constructor(\n    private location: Location\n  ) { }\n\n  ngOnInit(): void {\n    this.updatePhoneAndAddress();\n  }\n\n  onSaved(customer: any) {\n    this.customer = customer;\n    this.updatePhoneAndAddress();\n  }\n\n  private updatePhoneAndAddress() {\n    // Set phones\n    (this.customer?.phones as [])?.forEach((phone: any) => {\n      if (phone.type_id === CustomerPhoneTypeEnum.Home) {\n        this.homePhone = phone;\n      } else if (phone.type_id === CustomerPhoneTypeEnum.Mobile) {\n        this.mobilePhone = phone\n      } else if (phone.type_id === CustomerPhoneTypeEnum.Work) {\n        this.workPhone = phone;\n      }\n    });\n    // Set Addresses\n    (this.customer?.addresses as [])?.forEach((address: any) => {\n      if (address.type_id === CustomerAddressTypeEnum.Home) {\n        this.homeAddress = address;\n      } else if (address.type_id === CustomerAddressTypeEnum.Work) {\n        this.workAddress = address\n      }\n    });\n  }\n\n  onDeleted() {\n    this.location.back();\n  }\n}\n","<mat-card *ngIf=\"customer\">\n  <mat-card-content class=\"d-flex justify-content-between align-items-center pb-2\">\n    <h3 class=\"fw-bold mb-0\">Information</h3>\n    <div class=\"d-flex justify-content-end align-items-center gap-1\">\n      <app-customer-form-button [customer]=\"customer\" (saved)=\"onSaved($event)\"\n        *ngxPermissionsOnly=\"['customer_update']\"></app-customer-form-button>\n      <app-customer-delete-button [customer]=\"customer\" (deleted)=\"onDeleted()\"\n        *ngxPermissionsOnly=\"['customer_delete']\"></app-customer-delete-button>\n      <ng-content select=\"[cardActions]\"></ng-content>\n    </div>\n  </mat-card-content>\n  <mat-divider></mat-divider>\n  <mat-card-content class=\"mt-2 d-flex flex-column gap-2\">\n    <div class=\"d-flex flex-column justify-content-center align-items-center gap-2\">\n      <h3 class=\"text-secondary mb-0 \">{{ customer?.name }}</h3>\n      <app-customer-identity-number [customer]=\"customer\"></app-customer-identity-number>\n      <div *ngIf=\"mobilePhone\" class=\"d-flex justify-content-center align-items-center gap-1\">\n        <span class=\"material-symbols-outlined\">phone_iphone</span>\n        {{ mobilePhone?.phone }}\n      </div>\n\n      <div *ngIf=\"customer?.email\" class=\"d-flex justify-content-center align-items-center gap-1\">\n        <span class=\"material-symbols-outlined\">mail</span>\n        {{ customer?.email }}\n      </div>\n    </div>\n\n    <div class=\"d-flex justify-content-between align-items-center gap-2 mt-2 mb-2\">\n      <div *ngIf=\"homePhone\" class=\"d-flex flex-column gap-1 justify-content-start\">\n        <small class=\"text-secondary\">Home</small>\n        <p class=\"mb-0\">{{ homePhone?.phone }}</p>\n      </div>\n      <div *ngIf=\"workPhone\" class=\"d-flex flex-column gap-1 justify-content-start\">\n        <small class=\"text-secondary\">Work</small>\n        <p class=\"mb-0\">{{ workPhone?.phone }}</p>\n      </div>\n    </div>\n\n    <div class=\"text-secondary d-flex justify-content-start align-items-center gap-2\" *ngIf=\"homeAddress\">\n      <div class=\"d-flex flex-column align-items-center\">\n        <span class=\"material-symbols-outlined\">\n          home\n        </span>\n        <small class=\"mb-0\">Home</small>\n      </div>\n      <span>{{ homeAddress?.address }}</span>\n    </div>\n\n    <div class=\"text-secondary d-flex justify-content-start align-items-center gap-2\" *ngIf=\"workAddress\">\n      <div class=\"d-flex flex-column align-items-center\">\n        <span class=\"material-symbols-outlined\">\n          work\n        </span>\n        <small class=\"mb-0\">Work</small>\n      </div>\n      <span>{{ workAddress?.address }}</span>\n    </div>\n\n    <div *ngIf=\"customer?.details\" class=\"d-flex flex-column gap-1 justify-content-start mt-2\">\n      <small class=\"text-secondary\">Other Details</small>\n      <p class=\"mb-0\">{{ customer?.details }}</p>\n    </div>\n\n  </mat-card-content>\n</mat-card>","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\nimport {\n  TechlifyListComponent\n} from 'ngx-techlify-core';\nimport { CustomerService } from '../customer.service';\nimport { CustomerAddressTypeEnum } from '../customer-address-type.enum';\nimport { MatTable } from '@angular/material/table';\n\n@Component({\n  selector: 'app-customers-list',\n  templateUrl: './customers-list.component.html'\n})\nexport class CustomersListComponent extends TechlifyListComponent implements OnInit {\n  @Input() title: string = 'Customers';\n  @ViewChild('table') table!: MatTable<any>;\n\n  columnConfig = [\n    { label: '#', def: '#', isSelected: true, isEditable: true },\n    { label: 'Name', def: 'Name', isSelected: true, isEditable: true },\n    { label: 'Contact', def: 'Contact', isSelected: true, isEditable: true },\n    { label: 'Address', def: 'Address', isSelected: true, isEditable: true },\n    { label: 'Invoices', def: 'Invoices', isSelected: true, isEditable: true },\n    { label: 'Payments', def: 'Payments', isSelected: true, isEditable: true },\n    { label: 'Balance', def: 'Balance', isSelected: true, isEditable: true },\n    { label: 'Details', def: 'Details', isSelected: true, isEditable: true },\n    { label: 'Actions', def: 'Actions', isSelected: true, isEditable: true }\n  ];\n  selectedColumns = this.columnConfig.filter(col => col.isSelected);\n  get displayedColumns(): string[] {\n    return this.selectedColumns.map(col => col.def);\n  }\n\n  isExporting = false;\n\n  constructor(\n    private fb: FormBuilder,\n    private activatedRoute: ActivatedRoute,\n    private customerService: CustomerService,\n  ) {\n    super();\n    this.lastPage = 0;\n    this.filterForm = this.fb.group({\n      search: [''],\n      sort_by: ['created_at|desc']\n    });\n  }\n\n  ngOnInit() {\n    this.requestHelperService.updateFormWithQueryParams(this.filterForm, {});\n\n    (this.filterForm as FormGroup).valueChanges.pipe(\n      debounceTime(800)\n    ).subscribe(() => {\n      this.requestHelperService.updateQueryParams(\n        this.requestHelperService.convertToFormData(this.filterForm.value)\n      );\n    });\n\n    this.activatedRoute.queryParams\n      .pipe(debounceTime(500), distinctUntilChanged())\n      .subscribe(() => this.reload());\n  }\n\n  override loadData() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value),\n      page: this.page,\n      perPage: this.perPage,\n      with: 'phones.type,addresses.type,type',\n    };\n\n    this.isWorking = true;\n    this.customerService.index(params).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        this.models = this.models.concat(response?.data);\n        this.lastPage = response?.last_page;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  assignFilter(column: any, direction: string) {\n    if (column) {\n      this.filterForm.get('sort_by')?.setValue(`${column}|${direction}`);\n    }\n  }\n\n  onColumnsUpdated(columns: any[]) {\n    this.selectedColumns = columns.filter(col => col.isSelected);\n  }\n\n  getWorkAddress(customer: any) {\n    const addresses: any[] = customer?.addresses ?? [];\n    const index = addresses.findIndex((address: any) => address.type_id === CustomerAddressTypeEnum.Work);\n    return addresses[index]?.address;\n  }\n\n  onCustomerSaved(customer: any, index: number) {\n    this.models[index] = customer;\n    this.table.renderRows();\n  }\n\n  export() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value)\n    };\n    params.perPage = 50000;\n    params.with = 'phones.type,addresses.type';\n\n    this.isExporting = true;\n    this.customerService.export(params).subscribe({\n      next: (response: any) => {\n        this.isExporting = false;\n        window.open(response?.item?.file_link, '_blank');\n      },\n      error: () => (this.isExporting = false)\n    });\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n    <div class=\"d-flex justify-content-start align-items-center gap-2\">\n      <h2 class=\"mb-0\">Customers</h2>\n      <app-customer-form-button\n        *ngxPermissionsOnly=\"['customer_create']\"\n        class=\"mt-1\"\n        (saved)=\"reload()\"\n      ></app-customer-form-button>\n      <i (click)=\"export()\" class=\"fa-solid fa-file-excel cursor-pointer fs-6\"></i>\n      <app-column-selector\n        class=\"mt-1\"\n        mode=\"icon\"\n        matTooltip=\"Column Selector\"\n        [columnConfigs]=\"columnConfig\"\n        [(selectedColumns)]=\"selectedColumns\"\n      ></app-column-selector>\n    </div>\n    <div>\n      <form\n        [formGroup]=\"filterForm\"\n        class=\"d-flex justify-content-end align-items-center gap-2\"\n      >\n        <mat-form-field>\n          <mat-label>Search</mat-label>\n          <input\n            matInput\n            placeholder=\"Search Customers\"\n            formControlName=\"search\"\n          />\n        </mat-form-field>\n      </form>\n    </div>\n\n  </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-3\">\n  <mat-card-content class=\"p-0\">\n    <table\n      #table\n      mat-table\n      [dataSource]=\"models\"\n      class=\"w-100\"\n      matSort\n      (matSortChange)=\"sortColumn($event)\"\n      matSortDisableClear=\"true\"\n      infiniteScroll\n      [infiniteScrollDistance]=\"2\"\n      [infiniteScrollThrottle]=\"50\"\n      (scrolled)=\"onScroll()\"\n    >\n      <!-- # Column -->\n      <ng-container matColumnDef=\"#\">\n        <th mat-header-cell *matHeaderCellDef>#</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n      </ng-container>\n\n      <!-- Name Column -->\n      <ng-container matColumnDef=\"Name\">\n        <th mat-header-cell mat-sort-header=\"name\" *matHeaderCellDef>Name</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-0\">\n            {{ element?.name }}\n          </p>\n          <small class=\"text-secondary\">{{ element?.identity_number }}</small>\n        </td>\n      </ng-container>\n\n      <!-- Contact Column -->\n      <ng-container matColumnDef=\"Contact\">\n        <th mat-header-cell *matHeaderCellDef>Contact</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <app-customer-phones [customer]=\"element\"></app-customer-phones>\n          <p class=\"text-secondary mb-0 mt-1 ml-3\">{{ element?.email }}</p>\n        </td>\n      </ng-container>\n\n      <!-- Address Column -->\n      <ng-container matColumnDef=\"Address\">\n        <th mat-header-cell *matHeaderCellDef>Address</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-0\">{{ getWorkAddress(element) }}</p>\n        </td>\n      </ng-container>\n\n      <!-- Invoices Column -->\n      <ng-container matColumnDef=\"Invoices\">\n        <th mat-header-cell *matHeaderCellDef>Invoices</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-0\">{{ element?.invoices_sum_total ?? 0 | currency }}</p>\n          <small class=\"text-secondary\">{{ element?.invoices_count }} invoices</small>\n        </td>\n      </ng-container>\n\n      <!-- Payments Column -->\n      <ng-container matColumnDef=\"Payments\">\n        <th mat-header-cell *matHeaderCellDef>Payments</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-0\">{{ element?.invoices_sum_paid ?? 0 | currency }}</p>\n          <small class=\"text-secondary\">{{ element?.payments_count }} payments</small>\n        </td>\n      </ng-container>\n\n      <!-- Balance Column -->\n      <ng-container matColumnDef=\"Balance\">\n        <th mat-header-cell *matHeaderCellDef>Balance</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-0\">{{ element?.invoices_sum_balance ?? 0 | currency }}</p>\n        </td>\n      </ng-container>\n\n      <!-- Details Column -->\n      <ng-container matColumnDef=\"Details\">\n        <th mat-header-cell *matHeaderCellDef>Details</th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.details }}</td>\n      </ng-container>\n\n      <!-- Actions Column -->\n      <ng-container matColumnDef=\"Actions\">\n        <th mat-header-cell *matHeaderCellDef>Actions</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">\n          <div class=\"d-flex justify-content-start align-items-center gap-3\">\n            <a\n              [routerLink]=\"[element.id, 'view']\" class=\"text-decoration-none text-dark\"\n              *ngxPermissionsOnly=\"['customer_read']\"\n            >\n              <mat-icon>\n                visibility\n              </mat-icon>\n            </a>\n            <app-customer-form-button\n              *ngxPermissionsOnly=\"['customer_update']\"\n              [customer]=\"element\"\n              (saved)=\"onCustomerSaved($event, i)\"\n            ></app-customer-form-button>\n          </div>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n    </table>\n\n    <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n","import { Injectable } from '@angular/core';\nimport {\n  HttpService,\n  TechlifyService\n} from 'ngx-techlify-core';\nimport {Observable} from \"rxjs\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PaymentService extends TechlifyService {\n  constructor(httpService: HttpService) {\n    super(httpService, 'payments');\n  }\n\n  /**\n   * Void the payment.\n   *\n   * @param payment\n   */\n  void(payment: any): Observable<any> {\n    return this.http.put(`api/payments/${payment?.id}/void`, payment);\n  }\n\n  email(payment: any): Observable<any> {\n    return this.http.put(`api/payments/${payment?.id}/email`, payment);\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { PaymentService } from '../../payment.service';\nimport { AlertService } from 'ngx-techlify-core';\n\n@Component({\n  selector: 'app-payment-void-button',\n  templateUrl: './payment-void-button.component.html',\n  styleUrls: ['./payment-void-button.component.scss']\n})\nexport class PaymentVoidButtonComponent {\n  @Input() payment: any;\n  @Output() voided = new EventEmitter();\n  isWorking: boolean = false;\n\n  constructor(\n    public matDialog: MatDialog,\n    private paymentService: PaymentService,\n    private alertService: AlertService\n  ) {}\n\n  showConfirmDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef);\n  }\n\n  /**\n   * Void the payment.\n   */\n  voidPayment() {\n    this.isWorking = true;\n    this.paymentService.void(this.payment).subscribe({\n      next: () => {\n        this.alertService.addAlert('Payment voided successfully!', 'success');\n        this.isWorking = false;\n        this.matDialog.closeAll();\n        this.voided.emit();\n      },\n      error: () => {\n        this.isWorking = false;\n      }\n    });\n  }\n}\n","<span\n  (click)=\"showConfirmDialog(paymentVoidDialog)\"\n  class=\"material-symbols-outlined cursor-pointer\"\n  matTooltip=\"Void Payment\"\n  *ngIf=\"!payment?.voided_at\"\n>\n  block\n</span>\n\n<ng-template #paymentVoidDialog>\n  <h3 mat-dialog-title>Void Payment</h3>\n  <div mat-dialog-content>\n    <p>Are you sure you want to void the payment?</p>\n  </div>\n  <div\n    mat-dialog-actions\n    class=\"d-flex flex-row justify-content-end align-items-center gap-2\"\n  >\n    <button [disabled]=\"isWorking\" mat-flat-button mat-dialog-close>\n      Cancel\n    </button>\n    <button\n      [disabled]=\"isWorking\"\n      mat-raised-button\n      color=\"warn\"\n      (click)=\"voidPayment()\"\n    >\n      Void Payment\n    </button>\n  </div>\n</ng-template>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'app-payment-method-type-badge',\n  templateUrl: './payment-method-type-badge.component.html',\n  styleUrls: ['./payment-method-type-badge.component.scss']\n})\nexport class PaymentMethodTypeBadgeComponent {\n  @Input() payment: any;\n\n  /**\n   * Get the css class for the payment method type.\n   */\n  getClassName(): string {\n    switch (this.payment?.payment_method_id) {\n      case 1:\n        return 'status-light-cyan';\n      case 3:\n        return 'status-light-purple';\n      case 4:\n        return 'status-light-orange';\n      case 2:\n      default:\n        return 'status-light-warn';\n    }\n  }\n}\n","<span *ngIf=\"payment?.payment_method\"\n      class=\"status-pill status-pill-sm\" [ngClass]=\"getClassName()\">\n  {{ payment?.payment_method?.title }}\n</span>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { PaymentService } from '../payment.service';\nimport { AlertService } from 'ngx-techlify-core';\n\n@Component({\n  selector: 'app-payment-delete-button',\n  templateUrl: './payment-delete-button.component.html',\n  styleUrls: ['./payment-delete-button.component.scss']\n})\nexport class PaymentDeleteButtonComponent {\n  @Input() payment: any;\n  @Output() deleted = new EventEmitter();\n  isDeleting: boolean = false;\n\n  constructor(\n    public matDialog: MatDialog,\n    private paymentService: PaymentService,\n    private alertService: AlertService\n  ) {}\n\n  showConfirmDialog(paymentDeleteDialog: TemplateRef<any>) {\n    this.matDialog.open(paymentDeleteDialog);\n  }\n\n  /**\n   * Delete the payment.\n   */\n  deletePayment() {\n    this.isDeleting = true;\n    this.paymentService.delete(this.payment).subscribe({\n      next: (response: any) => {\n        this.alertService.addAlert('Payment deleted successfully!', 'success');\n        this.isDeleting = false;\n        this.matDialog.closeAll();\n        this.deleted.emit();\n      },\n      error: () => {\n        this.isDeleting = false;\n      }\n    });\n  }\n}\n","<mat-icon\n  class=\"material-symbol-outlined cursor-pointer\"\n  (click)=\"showConfirmDialog(paymentDeleteDialog)\"\n>\n  delete\n</mat-icon>\n\n<ng-template #paymentDeleteDialog>\n  <h3 mat-dialog-title>Delete Payment</h3>\n  <div mat-dialog-content>\n    <p>Are you sure you want to delete the payment?</p>\n  </div>\n  <div\n    mat-dialog-actions\n    class=\"d-flex flex-row justify-content-end align-items-center gap-2\"\n  >\n    <button [disabled]=\"isDeleting\" mat-flat-button mat-dialog-close>\n      Cancel\n    </button>\n    <button\n      [disabled]=\"isDeleting\"\n      mat-raised-button\n      color=\"warn\"\n      (click)=\"deletePayment()\"\n    >\n      Delete\n    </button>\n  </div>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { FormBuilder } from '@angular/forms';\nimport moment from 'moment';\nimport { debounceTime } from 'rxjs/operators';\nimport {\n  TechlifyListComponent,\n  Timeline\n} from 'ngx-techlify-core';\nimport { PaymentService } from '../payment.service';\n\n@Component({\n  selector: 'app-payment-list',\n  templateUrl: './payment-list.component.html'\n})\nexport class PaymentListComponent extends TechlifyListComponent implements OnInit {\n  @Input() customerId!: number;\n  @Input() invoiceId!: number;\n  @Input() showHeader: boolean = true;\n  @Input() showFilter: boolean = true;\n  @Input() showActions: boolean = true;\n  @Input() basePath: string = 'create';\n\n  columnConfig = [\n    { label: '#', def: '#', isSelected: true, isEditable: true },\n    { label: 'Account', def: 'Account', isSelected: true, isEditable: true },\n    { label: 'Paid On', def: 'Paid On', isSelected: true, isEditable: true },\n    { label: 'Customer', def: 'Customer', isSelected: true, isEditable: true },\n    { label: 'Amount', def: 'Amount', isSelected: true, isEditable: true },\n    { label: 'Payment Method', def: 'Payment Method', isSelected: true, isEditable: true },\n    { label: 'Invoice #', def: 'Invoice #', isSelected: true, isEditable: true },\n    { label: 'Memo', def: 'Memo', isSelected: true, isEditable: true },\n    { label: 'Actions', def: 'Actions', isSelected: true, isEditable: true }\n  ];\n  selectedColumns = this.columnConfig.filter(col => col.isSelected);\n  get displayedColumns(): string[] {\n    return this.selectedColumns.map(col => col.def);\n  }\n\n  amountTotal = 0;\n\n  constructor(\n    private fb: FormBuilder,\n    private activatedRoute: ActivatedRoute,\n    private paymentService: PaymentService,\n  ) {\n    super();\n    this.lastPage = 0;\n    this.filterForm = this.fb.group({\n      account_ids: [''],\n      customer_ids: [''],\n      duration: [Timeline.THIS_MONTH],\n      date_from: moment().format('YYYY-MM-DD'),\n      date_to: moment().format('YYYY-MM-DD'),\n      invoice_ids: [''],\n      payment_method_ids: [''],\n      search: [''],\n      sort_by: [''],\n      transaction_type: ['credit']\n    });\n  }\n\n  ngOnInit(): void {\n    this.sortColumn({ active: 'date', direction: 'desc' });\n\n    if (this.customerId) {\n      this.filterForm.get('customer_ids')?.setValue(this.customerId, { emitEvent: false });\n      this.removeColumn('Customer');\n    }\n\n    if (!this.showActions) {\n      this.removeColumn('Actions');\n    }\n\n    if (this.invoiceId) {\n      this.filterForm.get('invoice_ids')?.setValue(this.invoiceId, { emitEvent: false });\n    }\n\n    if (!this.showFilter) {\n      this.filterForm.patchValue({\n        duration: Timeline.ALL,\n        date_from: '',\n        date_to: '',\n      }, { emitEvent: false });\n    }\n\n    this.listenForFilterChanges();\n    this.updateFormWithQueryParams();\n\n    this.activatedRoute.queryParams\n      .pipe(debounceTime(800))\n      .subscribe(() => {\n        this.reload();\n      });\n  }\n\n  override loadData() {\n    if (this.isWorking) return;\n\n    const data: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value),\n      page: this.page,\n      perPage: this.perPage,\n      with: 'account,paymentMethod,paymentInvoices.invoice.customer'\n    };\n\n    if (data.date_to) data.date_to = moment(data.date_to).format('YYYY-MM-DD');\n    if (data.date_from) data.date_from = moment(data.date_from).format('YYYY-MM-DD');\n\n    this.isWorking = true;\n    this.paymentService.index(data).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        this.amountTotal = 0;\n        this.models = this.models.concat(response?.data);\n        this.models.forEach(model => this.amountTotal += parseFloat(model?.amount));\n        this.lastPage = response?.last_page;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  listenForFilterChanges() {\n    this.filterForm.valueChanges.subscribe(() => {\n      this.requestHelperService.updateQueryParams(\n        this.requestHelperService.convertToFormData({ ...this.filterForm.value })\n      );\n    });\n  }\n\n  updateFormWithQueryParams() {\n    this.requestHelperService.updateFormWithQueryParams(this.filterForm, {\n      duration: { number: true },\n      payment_method_ids: { multiple: true },\n      customer_ids: { multiple: true },\n      account_ids: { multiple: true },\n    });\n  }\n\n  assignFilter(column: any, direction: string) {\n    if (column) {\n      this.filterForm.get('sort_by')?.setValue(`${column}|${direction}`);\n    }\n  }\n\n  onPaymentDeleted(index: number) {\n    const data = [...this.models];\n    data.splice(index, 1);\n    this.models = data;\n  }\n\n  onColumnsUpdated(columns: any[]) {\n    this.selectedColumns = columns.filter(col => col.isSelected);\n  }\n\n  removeColumn(def: string) {\n    this.columnConfig = this.columnConfig.filter(col => col.def !== def);\n    this.selectedColumns = this.columnConfig.filter(col => col.isSelected);\n  }\n\n  getCustomerNames(payment: any) {\n    const customerSet = new Set();\n    return (payment?.payment_invoices || []).map((pi: any) => pi?.invoice?.customer)\n      .filter((c: any) => c && !customerSet.has(c.id) && customerSet.add(c.id));\n  }\n\n  getInvoices(payment: any) {\n    const invoiceSet = new Set();\n    return (payment?.payment_invoices || []).map((pi: any) => pi?.invoice)\n      .filter((inv: any) => inv && !invoiceSet.has(inv.id) && invoiceSet.add(inv.id));\n  }\n}\n","<mat-card class=\"mb-3\">\n  <mat-card-content *ngIf=\"showHeader\" class=\"d-flex justify-content-start align-items-center gap-3 mb-3\">\n    <h2 class=\"mb-0\">Payments Received</h2>\n    <mat-icon color=\"primary\" class=\"cursor-pointer\" [routerLink]=\"basePath\"\n      *ngxPermissionsOnly=\"['sale_payment.create']\">\n      add\n    </mat-icon>\n    <app-column-selector class=\"mt-1\" mode=\"icon\" matTooltip=\"Column Selector\" [columnConfigs]=\"columnConfig\"\n      [(selectedColumns)]=\"selectedColumns\"></app-column-selector>\n  </mat-card-content>\n  <mat-card-content *ngIf=\"showFilter\">\n    <form [formGroup]=\"filterForm\" class=\"d-flex flex-row justify-content-start align-items-center gap-3\">\n      <mat-form-field>\n        <mat-label>Search</mat-label>\n        <input matInput placeholder=\"Search customer name, reference #, etc.\" formControlName=\"search\" />\n      </mat-form-field>\n      <app-timeline-filter labelText=\"Date\" formControlName=\"duration\" [form]=\"filterForm\" [showClearButton]=\"true\"\n        appearance=\"fill\"></app-timeline-filter>\n\n      <mat-form-field *ngxPermissionsOnly=\"['customer_read']\">\n        <mat-label>Customer</mat-label>\n        <app-searchable-selector titleField=\"name\" apiUrl=\"api/customers\" formControlName=\"customer_ids\"\n          [multiple]=\"true\">\n        </app-searchable-selector>\n      </mat-form-field>\n\n      <mat-form-field *ngxPermissionsOnly=\"['accountingcommon_account.read']\">\n        <mat-label>Account</mat-label>\n        <app-searchable-selector apiUrl=\"api/accounts\" formControlName=\"account_ids\" [multiple]=\"true\">\n        </app-searchable-selector>\n      </mat-form-field>\n\n      <mat-form-field>\n        <mat-label>Payment Method</mat-label>\n        <app-searchable-selector [enableSearch]=\"false\" apiUrl=\"api/payment-methods\"\n          formControlName=\"payment_method_ids\" titleField=\"title\" [multiple]=\"true\">\n        </app-searchable-selector>\n      </mat-form-field>\n    </form>\n  </mat-card-content>\n</mat-card>\n<mat-card>\n  <mat-card-content class=\"p-0\">\n    <table mat-table [dataSource]=\"models\" class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n      [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort matSortDirection=\"desc\"\n      matSortActive=\"date\" (matSortChange)=\"sortColumn($event)\" matSortDisableClear=\"true\"\n      aria-describedby=\"Payments List\">\n      <!-- # Column -->\n      <ng-container matColumnDef=\"#\">\n        <th mat-header-cell *matHeaderCellDef>#</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">\n          {{ i + 1 }}\n        </td>\n        <td mat-footer-cell *matFooterCellDef></td>\n      </ng-container>\n\n      <!-- Account Column -->\n      <ng-container matColumnDef=\"Account\">\n        <th mat-header-cell mat-sort-header=\"account\" *matHeaderCellDef>Account</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <a class=\"text-dark\" [routerLink]=\"['/sales/accounts', element?.account_id, 'view']\">\n            {{ element?.account?.title }}\n          </a>\n        </td>\n        <td mat-footer-cell *matFooterCellDef></td>\n      </ng-container>\n\n      <!-- Amount Column -->\n      <ng-container matColumnDef=\"Amount\">\n        <th mat-header-cell mat-sort-header=\"amount\" *matHeaderCellDef>Amount</th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element.amount | currency }}\n        </td>\n        <td mat-footer-cell *matFooterCellDef>\n          <strong>{{ amountTotal | currency }}</strong>\n        </td>\n      </ng-container>\n\n      <!-- Customer Column -->\n      <ng-container matColumnDef=\"Customer\">\n        <th mat-header-cell mat-sort-header=\"customer\" *matHeaderCellDef>Customer</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <ng-container *ngIf=\"getCustomerNames(element).length > 0\">\n            <ng-container *ngFor=\"let customer of getCustomerNames(element); let last = last\">\n              <a class=\"text-dark\" [routerLink]=\"['/sales/customers', customer?.id, 'view']\">\n                {{ customer?.name }}\n              </a>\n              <span *ngIf=\"!last\">, </span>\n            </ng-container>\n          </ng-container>\n        </td>\n        <td mat-footer-cell *matFooterCellDef>\n          <strong>Total</strong>\n        </td>\n      </ng-container>\n\n      <!-- Invoice # Column -->\n      <ng-container matColumnDef=\"Invoice #\">\n        <th mat-header-cell *matHeaderCellDef>Invoice #</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <ng-container *ngIf=\"getInvoices(element).length > 0\">\n            <ng-container *ngFor=\"let invoice of getInvoices(element); let last = last\">\n              <a class=\"text-dark\" [routerLink]=\"['/sales/invoices', invoice?.id, 'view']\">\n                # {{ invoice?.number }}\n              </a>\n              <span *ngIf=\"!last\">, </span>\n            </ng-container>\n          </ng-container>\n        </td>\n        <td mat-footer-cell *matFooterCellDef></td>\n      </ng-container>\n\n      <!-- Paid On Column -->\n      <ng-container matColumnDef=\"Paid On\">\n        <th mat-header-cell mat-sort-header=\"date\" *matHeaderCellDef>Paid On</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <div class=\"d-flex flex-column gap-1 justify-content-start\">\n            <p class=\"mb-0\">\n              {{ element?.date | date }}\n            </p>\n            <small class=\"text-secondary\" *ngIf=\"element?.reference_no\">Reference #: {{ element?.reference_no }}</small>\n          </div>\n        </td>\n        <td mat-footer-cell *matFooterCellDef></td>\n      </ng-container>\n\n      <!-- Payment Method Column -->\n      <ng-container matColumnDef=\"Payment Method\">\n        <th mat-header-cell mat-sort-header=\"payment_method\" *matHeaderCellDef>\n          Payment Method\n        </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <div class=\"d-flex flex-column gap-1 justify-content-start\">\n            <app-payment-method-type-badge [payment]=\"element\"></app-payment-method-type-badge>\n            <small class=\"text-secondary\" *ngIf=\"element?.cheque_number\">Cheque #: {{ element?.cheque_number }}</small>\n          </div>\n        </td>\n        <td mat-footer-cell *matFooterCellDef></td>\n      </ng-container>\n\n      <!-- Memo Column -->\n      <ng-container matColumnDef=\"Memo\">\n        <th mat-header-cell *matHeaderCellDef>Memo</th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.memo }}\n        </td>\n        <td mat-footer-cell *matFooterCellDef></td>\n      </ng-container>\n\n      <!-- Actions Column -->\n      <ng-container matColumnDef=\"Actions\">\n        <th mat-header-cell *matHeaderCellDef>Actions</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">\n          <div class=\"d-flex flex-row justify-content-start align-items-center gap-2 text-secondary\">\n            <mat-icon class=\"material-symbol-outlined cursor-pointer\"\n              [routerLink]=\"['/sales/payments', element?.id, 'view']\" *ngxPermissionsOnly=\"['sale_payment.read']\">\n              visibility\n            </mat-icon>\n            <mat-icon class=\"material-symbol-outlined cursor-pointer\"\n              [routerLink]=\"['/sales/payments', element?.id, 'edit']\" *ngxPermissionsOnly=\"['sale_payment.update']\">\n              edit\n            </mat-icon>\n            <app-payment-delete-button [payment]=\"element\" (deleted)=\"onPaymentDeleted(i)\"\n              *ngxPermissionsOnly=\"['sale_payment.delete']\"></app-payment-delete-button>\n            <app-payment-void-button [payment]=\"element\" (voided)=\"reload()\"></app-payment-void-button>\n            <mat-icon class=\"material-symbol-outlined cursor-pointer\"\n              [routerLink]=\"['/sales/payments', element?.id, 'receipt']\" *ngxPermissionsOnly=\"['sale_payment.read']\">\n              print\n            </mat-icon>\n          </div>\n        </td>\n        <td mat-footer-cell *matFooterCellDef></td>\n      </ng-container>\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n      <tr mat-footer-row *matFooterRowDef=\"displayedColumns\"></tr>\n    </table>\n\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>","export enum SaleDocumentTypeEnum {\n  TYPE_QUOTATION = 1,\n  TYPE_INVOICE = 2\n}\n","import { Injectable } from '@angular/core';\nimport {HttpService, TechlifyService} from \"ngx-techlify-core\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class InvoiceStatusService extends TechlifyService {\n\n  constructor(http: HttpService) {\n    super(http, 'invoice-statuses');\n  }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormControl,\n  NG_VALUE_ACCESSOR\n} from '@angular/forms';\nimport { InvoiceStatusService } from '../invoice-status.service';\n\n@Component({\n  selector: 'app-invoice-status-selector',\n  templateUrl: './invoice-status-selector.component.html',\n  styleUrls: ['./invoice-status-selector.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: InvoiceStatusSelectorComponent\n    }\n  ]\n})\nexport class InvoiceStatusSelectorComponent\n  implements OnInit, ControlValueAccessor\n{\n  @Input() label: string = 'Status';\n  @Input() multiple: boolean = false;\n  @Input() showLabel: boolean = true;\n\n  statuses: any[] = [];\n  selectedStatus = new FormControl();\n  touched = false;\n  disabled = false;\n\n  onChange = (value: any) => {};\n  onTouched = () => {};\n\n  constructor(private invoiceStatusService: InvoiceStatusService) {}\n\n  ngOnInit(): void {\n    this.invoiceStatusService.index().subscribe((response: any) => {\n      this.statuses = response?.data;\n    });\n\n    this.selectedStatus.valueChanges.subscribe((value: any) => {\n      this.onChange(value);\n      this.onTouched();\n    });\n  }\n\n  writeValue(obj: any[]): void {\n    this.selectedStatus.setValue(obj);\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n}\n","<span *ngIf=\"showLabel\" class=\"mx-2\">{{ label }}</span>\n<mat-button-toggle-group [formControl]=\"selectedStatus\" [multiple]=\"multiple\">\n  <mat-button-toggle *ngFor=\"let ts of statuses\" [value]=\"ts?.id\">\n    {{ ts?.title }}\n  </mat-button-toggle>\n</mat-button-toggle-group>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InvoiceStatusSelectorComponent } from './invoice-status-selector/invoice-status-selector.component';\nimport {SharedModule} from '../../../@shared';\n\n\n\n@NgModule({\n    declarations: [\n        InvoiceStatusSelectorComponent\n    ],\n    exports: [\n        InvoiceStatusSelectorComponent\n    ],\n    imports: [\n        CommonModule,\n        SharedModule\n    ]\n})\nexport class InvoiceStatusSelectorModule { }\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AlertService } from 'ngx-techlify-core';\nimport { InvoiceService } from '../../invoice.service';\nimport {SaleDocumentTypeEnum} from \"../../sale-document-type-enum\";\nimport {InvoiceStatusEnum} from \"../../invoice-status-enum\";\n\n@Component({\n  selector: 'app-invoice-void-button',\n  templateUrl: './invoice-void-button.component.html',\n  styleUrls: ['./invoice-void-button.component.scss']\n})\nexport class InvoiceVoidButtonComponent {\n  @Input() invoice: any;\n  @Output() voided = new EventEmitter();\n  isWorking: boolean = false;\n\n  constructor(\n    public matDialog: MatDialog,\n    private invoiceService: InvoiceService,\n    private alertService: AlertService\n  ) {}\n\n  showConfirmDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef);\n  }\n\n  /**\n   * Void the payment.\n   */\n  void() {\n    this.isWorking = true;\n    this.invoiceService.void(this.invoice).subscribe({\n      next: () => {\n        this.alertService.addAlert(`Invoice voided successfully!`, 'success');\n        this.isWorking = false;\n        this.matDialog.closeAll();\n        this.voided.emit();\n      },\n      error: () => {\n        this.isWorking = false;\n      }\n    });\n  }\n\n  protected readonly SaleDocumentTypeEnum = SaleDocumentTypeEnum;\n  protected readonly InvoiceStatusEnum = InvoiceStatusEnum;\n}\n","<span\n  (click)=\"showConfirmDialog(invoiceVoidDialog)\"\n  class=\"material-symbols-outlined cursor-pointer text-secondary\"\n  [matTooltip]=\"'Void Invoice'\"\n  *ngIf=\"\n    invoice?.document_type_id === SaleDocumentTypeEnum.TYPE_INVOICE &&\n    invoice.status_id !== InvoiceStatusEnum.VOID\n  \"\n>\n  block\n</span>\n\n<ng-template #invoiceVoidDialog>\n  <h3 mat-dialog-title>Void Invoice</h3>\n  <div mat-dialog-content>\n    <p>Are you sure you want to void the Invoice?</p>\n  </div>\n  <div\n    mat-dialog-actions\n    class=\"d-flex flex-row justify-content-end align-items-center gap-2\"\n  >\n    <button [disabled]=\"isWorking\" mat-flat-button mat-dialog-close>\n      Cancel\n    </button>\n    <button\n      [disabled]=\"isWorking\"\n      mat-raised-button\n      color=\"warn\"\n      (click)=\"void()\"\n    >\n      Void Invoice\n    </button>\n  </div>\n</ng-template>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {InvoiceVoidButtonComponent} from './invoice-void-button/invoice-void-button.component';\nimport {MaterialModule} from 'ngx-techlify-core';\n\n\n@NgModule({\n  declarations: [\n    InvoiceVoidButtonComponent\n  ],\n  exports: [\n    InvoiceVoidButtonComponent\n  ],\n  imports: [\n    CommonModule,\n    MaterialModule\n  ]\n})\nexport class InvoiceWidgetsModule {\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n  FormValidatorService,\n  SearchableSelectorModule,\n  TechlifyFormComponent\n} from \"ngx-techlify-core\";\nimport { FormBuilder, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatDatepicker, MatDatepickerInput } from \"@angular/material/datepicker\";\nimport { MatError, MatFormField, MatHint, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { NgIf } from \"@angular/common\";\nimport { NgxPermissionsModule } from \"ngx-permissions\";\nimport { InvoiceService } from \"../invoice.service\";\nimport { MatButton } from \"@angular/material/button\";\nimport moment from \"moment/moment\";\n\n@Component({\n  selector: 'app-invoice-multi-update-form',\n  standalone: true,\n  imports: [\n    ReactiveFormsModule,\n    MatDatepicker,\n    MatDatepickerInput,\n    MatError,\n    MatFormField,\n    MatHint,\n    MatInput,\n    MatLabel,\n    NgIf,\n    NgxPermissionsModule,\n    SearchableSelectorModule,\n    MatButton\n  ],\n  templateUrl: './invoice-multi-update-form.component.html',\n  styleUrl: './invoice-multi-update-form.component.scss'\n})\nexport class InvoiceMultiUpdateFormComponent extends TechlifyFormComponent {\n  @Input() selectedModelIds: any[] = [];\n  @Output() updated: EventEmitter<any> = new EventEmitter<any>();\n  @Output() cancelled: EventEmitter<any> = new EventEmitter<any>();\n  isSaving!: boolean;\n\n  constructor(\n    formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder,\n    private invoiceService: InvoiceService,\n  ) {\n    super(formValidatorService);\n\n    this.form = this.formBuilder.group({\n      invoiceable_id: [''],\n      customer_id: [''],\n      date: [''],\n      due: [''],\n      details: ['']\n    });\n  }\n\n  save() {\n    const data: any = { ...this.form.value };\n    data.ids = this.selectedModelIds;\n    if (data?.date) {\n      data.date = moment(data.date).format('YYYY-MM-DD');\n    }\n    if (data?.due) {\n      data.due = moment(data.due).format('YYYY-MM-DD');\n    }\n    this.isSaving = true;\n    this.invoiceService.multiUpdate(data).subscribe({\n      next: () => {\n        this.isSaving = false;\n        this.alertService.addAlert('The invoices updated successfully!', 'success');\n        this.updated.emit();\n      },\n      error: () => {\n        this.isSaving = false;\n      }\n    });\n  }\n\n}\n","<p class=\"text-primary fw-bold\">{{ selectedModelIds.length }} Invoice(s) Selected</p>\n<form [formGroup]=\"form\" class=\"d-flex flex-column justify-content-start\" (submit)=\"save()\">\n  <mat-form-field>\n    <mat-label>Date</mat-label>\n    <input\n      matInput\n      formControlName=\"date\"\n      [matDatepicker]=\"datePicker\"\n      (focus)=\"datePicker.open()\"\n    />\n    <mat-datepicker #datePicker></mat-datepicker>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Due</mat-label>\n    <input\n      matInput\n      formControlName=\"due\"\n      [matDatepicker]=\"dueDatePicker\"\n      (focus)=\"dueDatePicker.open()\"\n    />\n    <mat-datepicker #dueDatePicker></mat-datepicker>\n  </mat-form-field>\n\n  <mat-form-field *ngxPermissionsOnly=\"['customer_read']\">\n    <mat-label>Customer</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/customers\"\n      titleField=\"name\"\n      formControlName=\"customer_id\"\n    ></app-searchable-selector>\n  </mat-form-field>\n\n  <mat-form-field *ngxPermissionsOnly=\"['project.read']\">\n    <mat-label>Project</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/projects\"\n      titleField=\"project_name\"\n      formControlName=\"invoiceable_id\"\n    ></app-searchable-selector>\n  </mat-form-field>\n\n  <div class=\"d-flex justify-content-end align-items-center gap-2 mt-3\">\n    <button [disabled]=\"isSaving\" type=\"submit\" mat-raised-button color=\"primary\">Update</button>\n    <button [disabled]=\"isSaving\" mat-flat-button type=\"button\" (click)=\"cancelled.emit()\">Cancel</button>\n  </div>\n</form>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport {\n  ColumnSelectorModule,\n  TechlifyListComponent,\n  Timeline\n} from 'ngx-techlify-core';\nimport { ActivatedRoute } from '@angular/router';\nimport { InvoiceService } from '../invoice.service';\nimport { SaleDocumentTypeEnum } from '../sale-document-type-enum';\nimport { InvoiceStatusSelectorModule } from '../invoice-status-selector/invoice-status-selector.module';\nimport { InvoiceWidgetsModule } from '../invoice-widgets/invoice-widgets.module';\nimport { InvoiceMultiUpdateFormComponent } from '../invoice-multi-update-form/invoice-multi-update-form.component';\nimport { InvoiceStatusEnum } from '../invoice-status-enum';\nimport { SharedModule } from '../../../@shared';\n\n@Component({\n  selector: 'app-invoice-list-page',\n  templateUrl: './invoice-list-page.component.html',\n  styleUrls: ['./invoice-list-page.component.scss'],\n  standalone: true,\n  imports: [\n    SharedModule,\n    ColumnSelectorModule,\n    InvoiceStatusSelectorModule,\n    InvoiceWidgetsModule,\n    InvoiceMultiUpdateFormComponent\n  ]\n})\nexport class InvoiceListPageComponent extends TechlifyListComponent implements OnInit {\n  @Input() customerId!: number;\n  @Input() showFilter = true;\n  @Input() showHeader = true;\n  @Input() showActions: boolean = true;\n  @Input() projectId!: number;\n  @Input() invoiceableType!: string;\n  @Input() invoiceableId!: number;\n  @Input() paymentId!: number;\n\n  override columnConfigs = [\n    { label: '#', def: 'Index', isSelected: true, isEditable: true },\n    { label: 'Invoice No.', def: 'Invoice No.', isSelected: true, isEditable: true },\n    { label: 'Date', def: 'Date', isSelected: true, isEditable: true },\n    { label: 'Customer', def: 'Customer', isSelected: true, isEditable: true },\n    { label: 'Project', def: 'Project', isSelected: true, isEditable: true },\n    { label: 'Details', def: 'Details', isSelected: true, isEditable: true },\n    { label: 'Total', def: 'Total', isSelected: true, isEditable: true },\n    { label: 'Paid', def: 'Paid', isSelected: true, isEditable: true },\n    { label: 'Balance', def: 'Balance', isSelected: true, isEditable: true },\n    { label: 'Due', def: 'Due', isSelected: true, isEditable: true },\n    { label: 'Status', def: 'Status', isSelected: true, isEditable: true },\n    { label: 'Creator', def: 'Creator', isSelected: false, isEditable: true },\n    { label: 'Actions', def: 'Actions', isSelected: true, isEditable: true },\n    { label: 'Select', def: 'Select', isSelected: true, isEditable: false }\n  ];\n  selectedColumns = this.columnConfigs.filter(col => col.isSelected);\n  get displayedColumns(): string[] {\n    return this.selectedColumns.map(col => col.def);\n  }\n\n  isExporting = false;\n  documentType!: SaleDocumentTypeEnum;\n  protected readonly SaleDocumentTypeEnum = SaleDocumentTypeEnum;\n\n  get amountTotal(): number {\n    return this.models.reduce((total: number, model: any) => total + (model?.total || 0), 0);\n  }\n\n  get paidTotal(): number {\n    return this.models.reduce((total: number, model: any) => total + (model?.paid || 0), 0);\n  }\n\n  get balanceTotal(): number {\n    return this.models.reduce((total: number, model: any) => total + (model?.balance || 0), 0);\n  }\n\n  constructor(\n    protected override service: InvoiceService,\n    private formBuilder: FormBuilder,\n    private activatedRoute: ActivatedRoute\n  ) {\n    super();\n    this.documentType =\n      this.activatedRoute.snapshot.data['documentType'] || SaleDocumentTypeEnum.TYPE_INVOICE;\n\n    this.filterFormConfiguration = {\n      customer_ids: { multiple: true },\n      status_ids: { multiple: true },\n      date_from: { date: true },\n      date_to: { date: true }\n    };\n\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.THIS_MONTH],\n      date_from: [''],\n      date_to: [''],\n      customer_ids: [''],\n      status_ids: [[InvoiceStatusEnum.PENDING, InvoiceStatusEnum.PARTIALLY_PAID]],\n      invoiceable_type: [''],\n      invoiceable_ids: [''],\n      payment_ids: [''],\n      sort_by: ['date|desc']\n    });\n  }\n\n  ngOnInit(): void {\n    if (this.paymentId) {\n      this.filterForm.get('payment_ids').setValue(this.paymentId, { emitEvent: false });\n    }\n\n    if (this.customerId) {\n      this.removeColumn('Customer');\n      this.filterForm.get('customer_ids')?.setValue(this.customerId);\n    }\n\n    if (!this.showActions) {\n      this.removeColumn('Actions');\n    }\n\n    if (this.projectId) {\n      this.invoiceableId = this.projectId;\n      this.invoiceableType = 'project';\n      this.removeColumn('Project');\n      this.filterForm.patchValue({\n        invoiceable_ids: this.invoiceableId,\n        invoiceable_type: this.invoiceableType\n      }, { emitEvent: false });\n    }\n\n    if (this.invoiceableId && this.invoiceableType) {\n      this.filterForm.patchValue({\n        invoiceable_type: this.invoiceableType,\n        invoiceable_ids: this.invoiceableId\n      }, { emitEvent: false });\n    }\n\n    if (!this.showFilter) {\n      this.filterForm.patchValue({\n        duration: Timeline.ALL,\n        date_from: '',\n        date_to: ''\n      }, { emitEvent: false });\n    }\n\n    this.patchFiltersFromRoute();\n    this.listenFilterChanges();\n  }\n\n  removeColumn(def: string) {\n    this.columnConfigs = this.columnConfigs.filter(col => col.def !== def);\n    this.selectedColumns = this.columnConfigs.filter(col => col.isSelected);\n  }\n\n  override loadData(): void {\n    const filters: any = this.requestHelperService?.convertToFormData(this.filterForm.value);\n    filters.page = this.page;\n    filters.perPage = this.perPage;\n    filters.with = 'customer,creator,status,payments,invoiceable';\n    filters.withCount = 'items';\n    filters.document_type_ids = this.documentType;\n\n    super.loadData(filters);\n  }\n\n  export() {\n    const filters: any = this.requestHelperService?.convertToFormData(this.filterForm.value);\n    filters.perPage = 50000;\n    filters.with = 'customer';\n    filters.document_type_ids = this.documentType;\n    filters.displayed_columns = this.displayedColumns.join(',');\n\n    this.isExporting = true;\n    this.service.export(filters).subscribe({\n      next: (response: any) => {\n        this.isExporting = false;\n        window.open(response?.item?.file_link, '_blank');\n      },\n      error: () => (this.isExporting = false)\n    });\n  }\n}\n","<div class=\"d-flex flex-column gap-3\">\n  <mat-card *ngIf=\"showHeader || showFilter\">\n    <mat-card-content class=\"d-flex flex-row justify-content-between align-items-center gap-3\">\n      <div *ngIf=\"showHeader\" class=\"d-flex flex-row justify-content-start align-items-center gap-3\">\n        <h5 class=\"mb-0\">\n          {{\n          documentType === SaleDocumentTypeEnum.TYPE_INVOICE\n          ? 'Invoices'\n          : 'Quotations'\n          }}\n        </h5>\n        <a class=\"text-decoration-none text-dark cursor-pointer\"\n          [routerLink]=\"documentType === SaleDocumentTypeEnum.TYPE_INVOICE ? '/sales/invoices/create' : '/sales/quotations/create'\"\n          [queryParams]=\"invoiceableId ? { invoiceable_type: invoiceableType, invoiceable_id: invoiceableId } : {}\"\n          matTooltip=\"Create\" *ngxPermissionsOnly=\"['accounting_common.quotation.create', 'invoice.create']\">\n          <app-techlify-icon name=\"add\"></app-techlify-icon>\n        </a>\n        <span class=\"text-dark cursor-pointer\" matTooltip=\"Export\" (click)=\"export()\"\n          *ngxPermissionsOnly=\"['quotation.export', 'invoice.export']\">\n          <app-techlify-icon name=\"export\"></app-techlify-icon>\n        </span>\n        <app-column-selector mode=\"icon\" matTooltip=\"Column Selector\" [columnConfigs]=\"columnConfigs\"\n          [(selectedColumns)]=\"selectedColumns\"></app-column-selector>\n      </div>\n      <form class=\"d-flex flex-row justify-content-end align-items-center gap-3\" [formGroup]=\"filterForm\"\n        *ngIf=\"showFilter\">\n        <app-timeline-filter appearance=\"fill\" labelText=\"Date\" formControlName=\"duration\" [form]=\"filterForm\"\n          class=\"fl-sm\"></app-timeline-filter>\n\n        <mat-form-field *ngxPermissionsOnly=\"['customer_read']\" class=\"fl-sm\">\n          <mat-label>Customer</mat-label>\n          <app-searchable-selector formControlName=\"customer_ids\" apiUrl=\"api/customers\" titleField=\"name\"\n            [multiple]=\"true\"></app-searchable-selector>\n        </mat-form-field>\n\n        <mat-form-field class=\"fl-sm\">\n          <mat-label>Status</mat-label>\n          <app-searchable-selector formControlName=\"status_ids\" apiUrl=\"api/invoice-statuses\"\n            [multiple]=\"true\"></app-searchable-selector>\n        </mat-form-field>\n      </form>\n    </mat-card-content>\n  </mat-card>\n\n  <div class=\"d-flex flex-row justify-content-start gap-3\">\n    <mat-card [style.width]=\"selectedModelIds.length ? '80%' : '100%'\">\n      <mat-card-content class=\"p-0 overflow-x-auto\">\n        <table mat-table [dataSource]=\"models\" aria-describedby=\"Invoice List\" matSort\n          (matSortChange)=\"sortColumn($event)\" infiniteScroll [infiniteScrollDistance]=\"2\"\n          [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\">\n          <!-- # Column -->\n          <ng-container matColumnDef=\"Index\">\n            <th mat-header-cell *matHeaderCellDef mat-sort-header=\"id\">#</th>\n            <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n            <td mat-footer-cell *matFooterCellDef></td>\n          </ng-container>\n\n          <!-- Invoice No. Column -->\n          <ng-container matColumnDef=\"Invoice No.\">\n            <th mat-header-cell *matHeaderCellDef mat-sort-header=\"number\">No.</th>\n            <td mat-cell *matCellDef=\"let element\">{{ element?.number }}</td>\n            <td mat-footer-cell *matFooterCellDef></td>\n          </ng-container>\n\n          <!-- Date Column -->\n          <ng-container matColumnDef=\"Date\">\n            <th mat-header-cell *matHeaderCellDef mat-sort-header=\"date\">Date</th>\n            <td mat-cell *matCellDef=\"let element\">{{ element?.date | date }}</td>\n            <td mat-footer-cell *matFooterCellDef></td>\n          </ng-container>\n\n          <!-- Customer Column -->\n          <ng-container matColumnDef=\"Customer\">\n            <th mat-header-cell *matHeaderCellDef mat-sort-header=\"customer.name\">\n              Customer\n            </th>\n            <td mat-cell *matCellDef=\"let element\">\n              <a class=\"text-dark\" [routerLink]=\"['/sales/customers', element?.customer_id, 'view']\">\n                {{ element?.customer?.name }}\n              </a>\n            </td>\n            <td mat-footer-cell *matFooterCellDef></td>\n          </ng-container>\n\n          <!-- Details Column -->\n          <ng-container matColumnDef=\"Details\">\n            <th mat-header-cell *matHeaderCellDef>Details</th>\n            <td mat-cell *matCellDef=\"let element\" style=\"max-width: 200px\">\n              {{ element?.details }}\n            </td>\n            <td mat-footer-cell *matFooterCellDef>\n              <strong>Total</strong>\n            </td>\n          </ng-container>\n\n          <!-- Project Column -->\n          <ng-container matColumnDef=\"Project\">\n            <th mat-header-cell *matHeaderCellDef>Project</th>\n            <td mat-cell *matCellDef=\"let element\" style=\"max-width: 200px\">\n              <a *ngIf=\"element?.invoiceable_id\" class=\"text-dark\"\n                [routerLink]=\"['/projects',element?.invoiceable_id,'view']\">\n                {{ element?.invoiceable?.project_name }}\n              </a>\n            </td>\n            <td mat-footer-cell *matFooterCellDef></td>\n          </ng-container>\n\n          <!-- Total Column -->\n          <ng-container matColumnDef=\"Total\">\n            <th mat-header-cell *matHeaderCellDef mat-sort-header=\"total\">Total</th>\n            <td mat-cell *matCellDef=\"let element\">\n              <div class=\"d-flex flex-column justify-content-start gap-1\">\n                <strong class=\"text-dark\">\n                  {{ element?.total | currency : 'USD' : 'symbol' : '0.2-2' }}\n                </strong>\n                <small class=\"text-secondary\">{{ element?.items_count }} Items</small>\n              </div>\n            </td>\n            <td mat-footer-cell *matFooterCellDef>\n              <strong>\n                {{ amountTotal | currency : 'USD' : 'symbol' : '0.2-2' }}\n              </strong>\n            </td>\n          </ng-container>\n\n          <!-- Paid Column -->\n          <ng-container matColumnDef=\"Paid\">\n            <th mat-header-cell *matHeaderCellDef mat-sort-header=\"paid\">Paid</th>\n            <td mat-cell *matCellDef=\"let element\">\n              <a class=\"text-dark\" [routerLink]=\"['/sales/payments']\" [queryParams]=\"{ invoice_ids: element?.id }\">\n                {{ element?.paid | currency : 'USD' : 'symbol' : '0.2-2' }}\n              </a>\n            </td>\n            <td mat-footer-cell *matFooterCellDef>\n              <strong>{{ paidTotal | currency : 'USD' : 'symbol' : '0.2-2' }}</strong>\n            </td>\n          </ng-container>\n\n          <!-- Balance Column -->\n          <ng-container matColumnDef=\"Balance\">\n            <th mat-header-cell *matHeaderCellDef mat-sort-header=\"balance\">\n              Balance\n            </th>\n            <td mat-cell *matCellDef=\"let element\">\n              {{ element?.balance | currency : 'USD' : 'symbol' : '0.2-2' }}\n            </td>\n            <td mat-footer-cell *matFooterCellDef>\n              <strong>{{ balanceTotal | currency: 'USD' : 'symbol' : '0.2-2' }}</strong>\n            </td>\n          </ng-container>\n\n          <!-- Due Column -->\n          <ng-container matColumnDef=\"Due\">\n            <th mat-header-cell *matHeaderCellDef mat-sort-header=\"due\">Due</th>\n            <td mat-cell *matCellDef=\"let element\">\n              {{ element?.due | date }}\n            </td>\n            <td mat-footer-cell *matFooterCellDef></td>\n          </ng-container>\n\n          <!-- Creator Column -->\n          <ng-container matColumnDef=\"Creator\">\n            <th mat-header-cell *matHeaderCellDef>Creator</th>\n            <td mat-cell *matCellDef=\"let element\">\n              <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n              <small class=\"text-secondary\">{{ element?.created_at | date }}</small>\n            </td>\n            <td mat-footer-cell *matFooterCellDef></td>\n          </ng-container>\n\n          <!-- Status Column -->\n          <ng-container matColumnDef=\"Status\">\n            <th mat-header-cell *matHeaderCellDef>Status</th>\n            <td mat-cell *matCellDef=\"let element\">\n              {{ element?.status?.title }}\n            </td>\n            <td mat-footer-cell *matFooterCellDef></td>\n          </ng-container>\n\n          <!-- Actions -->\n          <ng-container matColumnDef=\"Actions\">\n            <th mat-header-cell *matHeaderCellDef>Actions</th>\n            <td mat-cell *matCellDef=\"let element; let i = index\">\n              <div class=\"d-flex flex-row gap-1 align-items-center text-secondary\">\n                <a class=\"text-decoration-none text-secondary cursor-pointer\" [routerLink]=\"[\n                    '/sales',\n                    element?.document_type_id === SaleDocumentTypeEnum.TYPE_INVOICE ? 'invoices' : 'quotations',\n                    element?.id,\n                    'edit'\n                  ]\" matTooltip=\"Edit\" *ngxPermissionsOnly=\"['accounting_common.quotation.update', 'invoice.update']\">\n                  <app-techlify-icon name=\"edit\"></app-techlify-icon>\n                </a>\n\n                <a class=\"text-decoration-none text-secondary cursor-pointer\"\n                  [routerLink]=\"['/sales/invoices', element?.id, 'view']\" matTooltip=\"Invoice View\"\n                  *ngxPermissionsOnly=\"['accounting_common.quotation.read', 'invoice.read']\">\n                  <app-techlify-icon name=\"view\"></app-techlify-icon>\n                </a>\n\n                <a class=\"text-decoration-none text-secondary cursor-pointer\"\n                  [routerLink]=\"['/sales/invoices', element?.id, 'receipt']\" matTooltip=\"Invoice\"\n                  *ngxPermissionsOnly=\"['accounting_common.quotation.read', 'invoice.read']\">\n                  <app-techlify-icon name=\"print\"></app-techlify-icon>\n                </a>\n\n                <app-invoice-void-button *ngxPermissionsOnly=\"['accounting_common.quotation.update', 'invoice.update']\"\n                  [invoice]=\"element\" (voided)=\"reload()\"></app-invoice-void-button>\n              </div>\n            </td>\n            <td mat-footer-cell *matFooterCellDef></td>\n          </ng-container>\n\n          <ng-container matColumnDef=\"Select\">\n            <th mat-header-cell *matHeaderCellDef>\n              <mat-checkbox [(ngModel)]=\"isAllSelected\" (change)=\"selectAll()\" aria-label=\"Select all rows\">\n              </mat-checkbox>\n            </th>\n            <td mat-cell *matCellDef=\"let element\">\n              <mat-checkbox (click)=\"$event.stopPropagation()\" [(ngModel)]=\"element.is_selected\"\n                (change)=\"isSelectionModified($event, element)\" aria-label=\"Select row\">\n              </mat-checkbox>\n            </td>\n            <td mat-footer-cell *matFooterCellDef></td>\n          </ng-container>\n\n          <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n          <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n          <tr mat-footer-row *matFooterRowDef=\"displayedColumns\"></tr>\n        </table>\n\n        <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n      </mat-card-content>\n    </mat-card>\n\n    <mat-card *ngIf=\"selectedModelIds.length\" style=\"width: calc(20% - 1rem)\">\n      <mat-card-content>\n        <app-invoice-multi-update-form [selectedModelIds]=\"selectedModelIds\"\n          (updated)=\"isAllSelected = false; reload()\"\n          (cancelled)=\"isAllSelected = false; selectAll()\"></app-invoice-multi-update-form>\n      </mat-card-content>\n    </mat-card>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport { CustomerService } from '../customer.service';\nimport {PrintService} from '../../../@shared/print-button/print.service';\n\n@Component({\n  selector: 'app-customer-view',\n  templateUrl: './customer-view.component.html'\n})\nexport class CustomerViewComponent implements OnInit {\n  customer: any;\n  id!: number;\n  selectedTabIndex: number = 0;\n  public isWorking!: boolean;\n  isPrint: boolean = false;\n\n  constructor(\n    private customerService: CustomerService,\n    private route: ActivatedRoute,\n    private printService: PrintService\n  ) {}\n\n  ngOnInit(): void {\n    this.id = this.route.snapshot.params['id'];\n    if (this.id) {\n      this.loadData();\n    }\n    // Listen for print\n    this.printService.getIsPrinting().subscribe((isPrinting: boolean) => {this.isPrint = isPrinting;})\n  }\n\n  loadData() {\n    this.isWorking = true;\n    const params: any = {\n      with: 'phones.type,addresses.type,type'\n    }\n    this.customerService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        this.customer = response?.item;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n}\n","<mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n\n<div *ngIf=\"customer\">\n  <div *ngIf=\"customer\" [ngClass]=\"{'p-2': isPrint}\">\n  <mat-card *ngIf=\"customer\">\n    <mat-card-content>\n      <h2>{{ customer?.name }}</h2>\n    </mat-card-content>\n  </mat-card>\n\n  <div class=\"d-flex justify-content-start align-items-start gap-3 mt-3\">\n    <app-customer-information-card\n      [customer]=\"customer\"\n      style=\"width: calc(250px)\"\n    ></app-customer-information-card>\n\n    <mat-card style=\"width: calc(100% - 250px - 1rem)\">\n      <mat-card-content class=\"p-0\">\n        <mat-tab-group\n          mat-stretch-tabs=\"false\" mat-align-tabs=\"start\" [selectedIndex]=\"selectedTabIndex\"\n        >\n          <mat-tab>\n            <ng-template mat-tab-label>\n              <div class=\"d-flex justify-content-start align-items-center gap-1\">\n                <span class=\"material-symbols-outlined\">unknown_document</span>\n                <span class=\"pl-2\">Invoices</span>\n              </div>\n            </ng-template>\n            <ng-template matTabContent>\n              <app-invoice-list-page\n                [customerId]=\"customer?.id\"\n                [showFilter]=\"false\"\n                [showHeader]=\"false\"\n              ></app-invoice-list-page>\n            </ng-template>\n          </mat-tab>\n\n          <mat-tab>\n            <ng-template mat-tab-label>\n              <div class=\"d-flex justify-content-start align-items-center gap-1\">\n                <span class=\"material-symbols-outlined\">credit_card_clock</span>\n                <span class=\"pl-2\">Payments</span>\n              </div>\n            </ng-template>\n            <ng-template matTabContent>\n              <app-payment-list\n                [customerId]=\"customer?.id\"\n                [showHeader]=\"false\"\n                [showFilter]=\"false\"\n              ></app-payment-list>\n            </ng-template>\n          </mat-tab>\n        </mat-tab-group>\n\n      </mat-card-content>\n    </mat-card>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { CustomersListComponent } from './customers-list/customers-list.component';\nimport {CustomerViewComponent} from \"./customer-view/customer-view.component\";\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: CustomersListComponent,\n  },\n  {\n    path: ':id/view',\n    component: CustomerViewComponent,\n  },\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class CustomerRoutingModule {}\n","import { CustomerService } from './../customer.service';\nimport {\n  Component,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnInit,\n  Output\n} from '@angular/core';\nimport { FormBuilder, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n  selector: 'app-techlify-customer-type-multi-select',\n  templateUrl: './techlify-customer-type-multi-select.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TechlifyCustomerTypeMultiSelectComponent),\n      multi: true\n    }\n  ]\n})\nexport class TechlifyCustomerTypeMultiSelectComponent implements OnInit {\n  public type_ids: FormGroup;\n  public types: any[] = [];\n  @Input() patchValues: any;\n  @Output() values: EventEmitter<any>;\n\n  constructor(\n    private customerService: CustomerService,\n    private fb: FormBuilder\n  ) {\n    this.type_ids = this.fb.group({\n      ids: ['']\n    });\n    this.values = new EventEmitter<any>();\n  }\n\n  ngOnInit() {\n    if (this.patchValues) {\n      this.type_ids\n        .get('ids')\n        ?.setValue(this.patchValues.split(',').map(Number));\n    }\n\n    this.getCustomerTypes();\n  }\n\n  async getCustomerTypes() {\n    var res = await this.customerService.getCustomerTypes();\n    this.types = res.data;\n  }\n\n  selectedTypes(event: any) {\n    this.values.emit(event.value);\n  }\n}\n","<form [formGroup]=\"type_ids\">\n  <mat-form-field>\n    <mat-label>Customer Type</mat-label>\n    <mat-select formControlName=\"ids\" multiple (selectionChange)=\"selectedTypes($event)\">\n      <mat-option *ngFor=\"let type of types\" [value]=\"type.id\">{{type.title}}</mat-option>\n    </mat-select>\n  </mat-form-field>\n</form>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TechlifyCustomerTypeMultiSelectComponent } from './techlify-customer-type-multi-select.component';\nimport { SharedModule } from '../../../@shared';\n\n@NgModule({\n  imports: [CommonModule, SharedModule],\n  declarations: [TechlifyCustomerTypeMultiSelectComponent],\n  exports: [TechlifyCustomerTypeMultiSelectComponent]\n})\nexport class TechlifyCustomerTypeMultiSelectModule {}\n","import {Component} from '@angular/core';\nimport {PrintService} from '../../../@shared';\n\n@Component({\n  selector: 'app-invoice',\n  templateUrl: './invoice.component.html',\n  styleUrls: ['./invoice.component.scss']\n})\nexport class InvoiceComponent {\n  isPrinting = false;\n\n  constructor(public printService: PrintService) {\n    this.printService\n      .getIsPrinting()\n      .subscribe((val: boolean) => (this.isPrinting = val));\n  }\n}\n","<div>\n  <router-outlet></router-outlet>\n</div>\n","import { Injectable } from '@angular/core';\nimport {TaxTypeEnum} from '../tax/tax-type.enum';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class InvoiceHelperService {\n\n  constructor() { }\n\n  getInvoiceTotal(lineItems: any[], discount: number = 0) {\n    let total = 0;\n    lineItems?.forEach((lineItem: any, index: number) => {\n      total += this.getLineItemTotal(lineItem);\n    });\n    return total - discount;\n  }\n\n  getInvoiceSubTotal(lineItems: any[]) {\n    let subTotal = 0;\n    lineItems?.forEach((lineItem: any, index: number) => {\n      subTotal += this.getLineItemSubTotal(lineItem);\n    });\n\n    return subTotal;\n  }\n\n  getLineItemTotal(value: any) {\n    return this.getLineItemSubTotal(value) + this.getLineItemTaxAmount(value);\n  }\n\n  getLineItemSubTotal(value: any) {\n    return (value?.quantity * value?.price) - value?.discount;\n  }\n\n  getLineItemTaxAmount(value: any) {\n    const subTotal: number = this.getLineItemSubTotal(value);\n    let taxAmount = 0;\n    const tax: any = value?.product?.sales_tax;\n    if (tax) {\n      taxAmount += (subTotal * tax?.sale_rate / 100);\n    }\n    return taxAmount;\n  }\n\n  findCustomerFromInvoice(payment: any) {\n    // Loop through the invoices\n    let customer;\n    for (const paymentInvoice of payment?.payment_invoices) {\n      if (paymentInvoice?.invoice?.customer) {\n        customer = paymentInvoice.invoice.customer;\n        break;\n      }\n    }\n    return customer;\n  }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormArray, FormBuilder, Validators } from '@angular/forms';\nimport moment from 'moment';\nimport { InvoiceService } from '../../invoice.service';\nimport { AlertService, FormValidatorService, TechlifyFormComponent } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\nimport { SaleDocumentTypeEnum } from '../../sale-document-type-enum';\nimport { InvoiceHelperService } from '../../invoice-helper.service';\nimport { CustomerFormComponent } from '../../../customer/customer-form/customer-form.component';\n\n@Component({\n  selector: 'app-invoice-form',\n  templateUrl: './invoice-form.component.html',\n  styleUrls: ['./invoice-form.component.scss']\n})\nexport class InvoiceFormComponent\n  extends TechlifyFormComponent\n  implements OnInit {\n  @Input() documentType: SaleDocumentTypeEnum =\n    SaleDocumentTypeEnum.TYPE_INVOICE;\n  @Input() invoice: any;\n  @Input() invoiceableType = 'project';\n  @Input() invoiceableId!: number;\n  @Output() saved = new EventEmitter();\n  @Output() cancelled = new EventEmitter();\n\n  total = 0;\n  subTotal = 0;\n  taxesTotals: Array<{\n    id: string | number | null;\n    name: string;\n    sale_rate: number;\n    tax_agency: string;\n    total: number;\n  }> = [];\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private invoiceService: InvoiceService,\n    formValidatorService: FormValidatorService,\n    protected invoiceHelperService: InvoiceHelperService\n  ) {\n    super(formValidatorService);\n    this.errorMessages = {\n      date: {\n        required: 'The date field is required.'\n      },\n      due: {\n        required: 'The  due date field is required.'\n      },\n      customer_id: {\n        required: 'The customer field is required.'\n      },\n      invoiceable_id: {\n        required: 'The project field is required.'\n      }\n    };\n    this.form = this.formBuilder.group({\n      id: [''],\n      date: [moment().format(), Validators.required],\n      due: ['', Validators.required],\n      customer_id: ['', Validators.required],\n      discount: [0],\n      details: [''],\n      line_items: new FormArray([]),\n      document_type_id: [this.documentType],\n      invoiceable_type: ['project'],\n      invoiceable_id: [''],\n      memo: ['']\n    });\n  }\n\n  ngOnInit(): void {\n    if (this.invoice) {\n      this.form.patchValue({\n        id: this.invoice?.id,\n        date: this.invoice?.date ? new Date(this.invoice?.date) : '',\n        due: this.invoice?.due ? new Date(this.invoice?.due) : '',\n        customer_id: this.invoice?.customer_id,\n        discount: this.invoice?.discount,\n        details: this.invoice?.details,\n        invoiceable_type: this.invoice?.invoiceable_type ?? this.invoiceableType,\n        invoiceable_id: this.invoice?.invoiceable_id,\n        memo: this.invoice?.memo,\n      });\n      // add line items\n      (this.invoice.items as []).forEach((item: any) => {\n        this.addLineItem(item);\n      });\n      this.calculateSubTotal();\n    }\n\n    if (this.documentType) {\n      this.form.get('document_type_id')?.setValue(this.documentType);\n    }\n\n    if (this.invoiceableType && this.invoiceableId) {\n      this.form.patchValue({\n        invoiceable_id: this.invoiceableId,\n        invoiceable_type: this.invoiceableType\n      });\n    }\n\n    // listen for form changes and calculate the totals.\n    this.form.valueChanges.subscribe(() => {\n      this.calculateSubTotal();\n    });\n  }\n\n  /**\n   * Add or update line item to list.\n   *\n   * @param data\n   */\n  addLineItem(data?: any) {\n    if (data?.index >= 0) {\n      this.lineItems.at(data.index).patchValue(data);\n    } else {\n      const lineItemForm = this.formBuilder.group({\n        id: [data?.id ?? ''],\n        product_id: [data?.product_id],\n        description: [data?.description ?? ''],\n        price: [data?.price],\n        quantity: [data?.quantity ?? 1],\n        discount: [data?.discount ?? 0],\n        sub_total: [data?.sub_total ?? ''],\n        tax_amount: [data?.tax_amount ?? 0],\n        amount: [data?.amount ?? ''],\n        product: [data?.product]\n      });\n      this.lineItems.push(lineItemForm);\n    }\n  }\n\n  /**\n   * Remove line item from list.\n   *\n   * @param index\n   */\n  deleteLineItem(index: number) {\n    this.lineItems.removeAt(index);\n  }\n\n  get lineItems() {\n    return this.form.controls['line_items'] as FormArray;\n  }\n\n  /**\n   * Save invoice.\n   */\n  save() {\n    this.form.markAllAsTouched();\n    if (this.form.invalid) {\n      this.alertService.addAlert(\n        'Please check the form for the errors.',\n        'error'\n      );\n      return;\n    }\n    this.isWorking = true;\n    const data: any = { ...this.form.value };\n    if (data?.date) {\n      data.date = moment(data.date).format('YYYY-MM-DD');\n    }\n    if (data?.due) {\n      data.due = moment(data.due).format('YYYY-MM-DD');\n    }\n    data.sub_total = this.invoiceHelperService.getInvoiceSubTotal(this.lineItems.value);\n    data.total = this.invoiceHelperService.getInvoiceTotal(this.lineItems.value, data.discount);\n\n    let request: Observable<any> = this.invoiceService.store(data);\n    if (this.invoice?.id) {\n      request = this.invoiceService.update(data);\n    }\n    request.subscribe({\n      next: (response?: any) => {\n        this.isWorking = false;\n        const type: string =\n          this.documentType === SaleDocumentTypeEnum.TYPE_INVOICE\n            ? 'Invoice'\n            : 'Quotation';\n        this.alertService.addAlert(`${type} saved successfully!`, 'success');\n        this.saved.emit(response);\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  /**\n   * Add a product to invoice.\n   *\n   * @param product\n   */\n  addProductToLineItem(product: any) {\n    let data: any = {\n      product_id: product?.id,\n      description: '',\n      price: product?.sale_price,\n      quantity: 1,\n      discount: 0,\n      sub_total: product?.sale_price,\n      amount: product?.sale_price,\n      tax_amount: 0,\n      index: -1,\n      product\n    };\n    const index = (this.lineItems.value as []).findIndex(\n      (item: any) => item?.product_id == product?.id\n    );\n    // product already exist in invoice, lets increase the quantity\n    if (index != -1) {\n      data = this.lineItems.value[index];\n      data.quantity += 1;\n      data.sub_total = data.quantity * (data.price || product?.sale_price);\n      data.amount = data.quantity * (data.price || product?.sale_price);\n      data.price = data.price || product?.sale_price;\n      data.index = index;\n    }\n    this.addLineItem(data);\n  }\n\n  /**\n   * Calculate the line item amount, total and subtotal.\n   *\n   * @private\n   */\n  private calculateSubTotal() {\n    const data: any = { ...this.form.value };\n    const lineItems: any[] = data?.line_items as [];\n    const discount = data.discount || 0;\n\n    this.total = 0;\n    this.subTotal = 0;\n    for (let i = 0; i < lineItems.length; i++) {\n      this.subTotal += lineItems[i].amount;\n    }\n    this.total = this.subTotal - discount;\n\n    // update taxesTotals\n    this.taxesTotals = this.getTaxesTotal();\n  }\n\n  /**\n   * Update the line item amount.\n   *\n   * @param lineItem\n   * @private\n   */\n  private updateLineItemWithCalculation(lineItem: any): any {\n    let subTotal: number = lineItem.price * lineItem.quantity - lineItem?.discount;\n    // Check if the number has decimal places\n    if (subTotal % 1 !== 0) {\n      // Round to 2 decimal places if it's a decimal number\n      subTotal = Number(subTotal.toFixed(2));\n    }\n    lineItem.sub_total = subTotal;\n    lineItem.amount = subTotal + (lineItem?.tax_amount ?? 0);\n    return lineItem;\n  }\n\n  /**\n   * Update product price on product selection change.\n   *\n   * @param product\n   * @param index\n   */\n  onProductSelectionChange(product: any, index: number) {\n    const data: any = this.lineItems.value[index];\n    data.price = product?.sale_price;\n    data.product = product;\n    this.lineItems.controls[index].patchValue(data);\n  }\n\n  /**\n   * Clear all the line items from invoice.\n   */\n  clearAllLineItems() {\n    this.lineItems.clear();\n  }\n\n  getSubtotal(index: number) {\n    const value: any = this.lineItems.at(index).value;\n    const subTotal = this.invoiceHelperService.getLineItemSubTotal(value);\n    this.lineItems.at(index).get('sub_total')?.setValue(subTotal, { emitEvent: false });\n    return subTotal;\n  }\n\n  getTotalAmount(index: number) {\n    const value: any = this.lineItems.at(index).value;\n    const amount = this.invoiceHelperService.getLineItemTotal(value);\n    this.lineItems.at(index).get('amount')?.setValue(amount, { emitEvent: false });\n    return amount;\n  }\n\n  getTaxAmount(index: number) {\n    const value: any = this.lineItems.at(index).value;\n    const taxAmount = this.invoiceHelperService.getLineItemTaxAmount(value);\n    this.lineItems.at(index).get('tax_amount')?.setValue(taxAmount, { emitEvent: false });\n    return taxAmount;\n  }\n\n  protected readonly CustomerFormComponent = CustomerFormComponent;\n\n  getSalesTaxToWords(tax: any) {\n    return `${tax?.sale_rate}% ${tax?.name} by ${tax?.tax_agency}`;\n  }\n\n  /**\n   * Calculate total tax amount grouped by tax (id/name/rate/agency).\n   * Returns an array of objects:\n   *  { id: string|number|null, name: string, sale_rate: number|null, tax_agency?: string, total: number }\n   */\n  /**\n   * Calculate total tax amount grouped by the single tax on each product.\n   * Assumes each product has a single tax object with mandatory sale_rate, name and tax_agency.\n   */\n  getTaxesTotal(): Array<{\n    id: string | number | null;\n    name: string;\n    sale_rate: number;\n    tax_agency: string;\n    total: number;\n  }> {\n    const lineItems: any[] = (this.form.value.line_items || []) as any[];\n    const map = new Map<string, {\n      id: string | number | null;\n      name: string;\n      sale_rate: number;\n      tax_agency: string;\n      total: number;\n    }>();\n\n    for (let i = 0; i < lineItems.length; i++) {\n      const item = lineItems[i];\n\n      // Prefer invoiceHelperService to compute tax amount; fallback to lineItem.tax_amount\n      let taxAmount = 0;\n      try {\n        taxAmount = Number(this.invoiceHelperService.getLineItemTaxAmount(item) ?? 0);\n      } catch (e) {\n        taxAmount = Number(item?.tax_amount ?? 0);\n      }\n\n      // Identify the tax object. Product-level single tax expected.\n      const product = item?.product ?? {};\n      const taxObj = product.sales_tax ?? null;\n\n      // If no tax object and no tax amount, skip\n      if (!taxObj && (!taxAmount || taxAmount === 0)) {\n        continue;\n      }\n\n      // If no tax object but taxAmount present, put into an 'unknown' bucket\n      let key: string;\n      let id: string | number | null;\n      let name: string;\n      let sale_rate: number;\n      let tax_agency: string;\n\n      if (taxObj) {\n        id = taxObj.id ?? null;\n        // sale_rate, name and tax_agency are guaranteed by your message\n        sale_rate = Number(taxObj.sale_rate);\n        name = String(taxObj.name);\n        tax_agency = String(taxObj.tax_agency);\n        key = id !== null ? `id:${id}` : `rate:${sale_rate}|name:${name}|agency:${tax_agency}`;\n      } else {\n        id = null;\n        sale_rate = NaN;\n        name = 'Tax';\n        tax_agency = 'N/A';\n        key = 'unknown';\n      }\n\n      const existing = map.get(key);\n      if (existing) {\n        existing.total += taxAmount;\n      } else {\n        map.set(key, {\n          id,\n          name,\n          sale_rate,\n          tax_agency,\n          total: taxAmount\n        });\n      }\n    }\n\n    // Convert to array and round totals to 2 decimals\n    const result = Array.from(map.values()).map(t => ({\n      ...t,\n      total: Math.round((t.total + Number.EPSILON) * 100) / 100\n    }));\n\n    return result;\n  }\n\n}\n","<div class=\"d-flex flex-row gap-3 vh-100\">\n  <div class=\"flex-fill\">\n    <form class=\"d-flex flex-column gap-3 justify-content-between\" style=\"height: 87%\" [formGroup]=\"form\"\n      (submit)=\"save()\">\n      <mat-card class=\"overflow-auto\" style=\"max-width: max-content\">\n        <mat-card-content class=\"d-flex flex-row flex-wrap gap-3\">\n          <mat-form-field appearance=\"fill\" style=\"width: calc(20% - 1rem)\">\n            <mat-label>Date</mat-label>\n            <input matInput formControlName=\"date\" [matDatepicker]=\"datePicker\" (focus)=\"datePicker?.open()\" required />\n            <mat-datepicker #datePicker></mat-datepicker>\n            <mat-error *ngIf=\"isFieldValid('date')\">\n              {{ getErrorMessage('date') }}\n            </mat-error>\n          </mat-form-field>\n\n          <mat-form-field appearance=\"fill\" style=\"width: calc(20% - 1rem)\">\n            <mat-label>Due</mat-label>\n            <input matInput formControlName=\"due\" [matDatepicker]=\"dueDatePicker\" (focus)=\"dueDatePicker.open()\"\n              required />\n            <mat-datepicker #dueDatePicker></mat-datepicker>\n            <mat-error *ngIf=\"isFieldValid('due')\">\n              {{ getErrorMessage('due') }}\n            </mat-error>\n          </mat-form-field>\n\n          <mat-form-field appearance=\"fill\" style=\"width: calc(20% - 1rem)\" *ngxPermissionsOnly=\"['customer_read']\">\n            <mat-label>Customer</mat-label>\n            <app-searchable-selector required apiUrl=\"api/customers\" titleField=\"name\" formControlName=\"customer_id\"\n              [add]=\"true\" [itemComponent]=\"CustomerFormComponent\"\n              [addConfig]=\"{ width: '600px' }\"></app-searchable-selector>\n            <mat-hint>Which customer is this order for</mat-hint>\n            <mat-error *ngIf=\"isFieldValid('customer_id')\">\n              {{ getErrorMessage('customer_id') }}\n            </mat-error>\n          </mat-form-field>\n\n          <mat-form-field appearance=\"fill\" style=\"width: calc(20% - 1rem)\" *ngxPermissionsOnly=\"['project.read']\">\n            <mat-label>Project</mat-label>\n            <app-searchable-selector apiUrl=\"api/projects\" titleField=\"project_name\"\n              formControlName=\"invoiceable_id\"></app-searchable-selector>\n            <mat-error *ngIf=\"isFieldValid('invoiceable_id')\">\n              {{ getErrorMessage('invoiceable_id') }}\n            </mat-error>\n          </mat-form-field>\n\n          <mat-form-field appearance=\"fill\" style=\"width: calc(20%)\">\n            <mat-label>Discount</mat-label>\n            <input type=\"text\" matInput formControlName=\"discount\" required />\n            <mat-hint>Give a discount on the entire order</mat-hint>\n          </mat-form-field>\n\n          <div class=\"d-flex flex-row justify-content-between align-items-center\" style=\"width: calc(100% - 1rem)\">\n            <div class=\"d-flex flex-row justify-content-start align-items-center gap-3\">\n              <strong class=\"text-dark\">Line Items</strong>\n              <mat-icon (click)=\"addLineItem()\" color=\"primary\" class=\"cursor-pointer\">add</mat-icon>\n            </div>\n            <strong class=\"text-dark\">\n              Total: {{ invoiceHelperService.getInvoiceTotal(lineItems.value, form.value?.discount) | currency : 'USD' :\n              'symbol' : '0.2-2' }}\n            </strong>\n          </div>\n\n          <table class=\"table flex-grow-1 w-100\" aria-describedby=\"Line Items\">\n            <thead>\n              <tr>\n                <th scope=\"col\">#</th>\n                <th scope=\"col\">Product</th>\n                <th scope=\"col\">Description</th>\n                <th scope=\"col\">Price</th>\n                <th scope=\"col\">Quantity</th>\n                <th scope=\"col\">Discount</th>\n                <th scope=\"col\">Subtotal</th>\n                <th scope=\"col\">Tax</th>\n                <th scope=\"col\">Amount</th>\n              </tr>\n            </thead>\n            <tbody formArrayName=\"line_items\">\n              <ng-container *ngFor=\"let lineItemForm of lineItems.controls; let i = index\">\n                <tr [formGroupName]=\"i\">\n                  <th scope=\"row\" style=\"padding-top: 15px !important\">\n                    <span style=\"max-width: 50px\">\n                      {{ i + 1 }}\n                    </span>\n                  </th>\n                  <td>\n                    <mat-form-field style=\"max-width: 150px\" class=\"mat-form-field-sm\" appearance=\"fill\">\n                      <mat-label>Product</mat-label>\n                      <app-searchable-selector required formControlName=\"product_id\" apiUrl=\"api/products?with=salesTax\"\n                        titleField=\"name\" [selectedValue]=\"lineItemForm.value.product\" (selectedValueChange)=\"\n                          onProductSelectionChange($event, i)\n                        \"></app-searchable-selector>\n                    </mat-form-field>\n                  </td>\n                  <td>\n                    <mat-form-field class=\"mat-form-field-sm\" appearance=\"fill\" style=\"max-width: 150px\">\n                      <mat-label>Description</mat-label>\n                      <input matInput type=\"text\" formControlName=\"description\" />\n                    </mat-form-field>\n                  </td>\n                  <td>\n                    <mat-form-field class=\"mat-form-field-sm\" appearance=\"fill\" style=\"max-width: 100px\">\n                      <mat-label>Price</mat-label>\n                      <input required type=\"number\" matInput formControlName=\"price\" />\n                    </mat-form-field>\n                  </td>\n                  <td>\n                    <mat-form-field class=\"mat-form-field-sm\" appearance=\"fill\" style=\"max-width: 100px\">\n                      <mat-label>Quantity</mat-label>\n                      <input required type=\"number\" matInput formControlName=\"quantity\" />\n                    </mat-form-field>\n                  </td>\n                  <td>\n                    <mat-form-field class=\"mat-form-field-sm\" appearance=\"fill\" style=\"max-width: 100px\">\n                      <mat-label>Discount</mat-label>\n                      <input type=\"number\" required matInput formControlName=\"discount\" />\n                    </mat-form-field>\n                  </td>\n                  <td>\n                    <div class=\"d-flex justify-content-start align-items-center gap-2 mt-2\">\n                      <p class=\"mb-0\">{{ this.getSubtotal(i) | currency }}</p>\n                    </div>\n                  </td>\n                  <td>\n                    <div class=\"d-flex flex-column justify-content-start gap-0 mt-2\">\n                      <p class=\"mb-0\">{{ getTaxAmount(i) | currency }}</p>\n                      <small class=\"text-secondary\" *ngIf=\"lineItemForm.value?.product?.sales_tax\">\n                        {{ getSalesTaxToWords(lineItemForm.value?.product?.sales_tax) }}\n                      </small>\n                    </div>\n                  </td>\n                  <td>\n                    <div class=\"d-flex justify-content-between align-items-center gap-2 mt-2\">\n                      <p class=\"mb-0\">{{ getTotalAmount(i) | currency }}</p>\n                      <mat-icon (click)=\"deleteLineItem(i)\" class=\"material-symbols-outlined cursor-pointer\">\n                        cancel\n                      </mat-icon>\n                    </div>\n                  </td>\n                </tr>\n              </ng-container>\n            </tbody>\n          </table>\n\n          <div class=\"w-100 d-flex flex-row justify-content-between align-items-start\">\n            <div class=\"d-flex flex-column justify-content-start w-75 gap-2\">\n              <div class=\"d-flex flex-row justify-content-start align-items-center gap-2\">\n                <button class=\"text-uppercase btn-xs\" mat-flat-button type=\"button\" (click)=\"clearAllLineItems()\">\n                  <mat-icon class=\"material-symbol-outlined\">block</mat-icon>\n                  Clear All\n                </button>\n\n                <button (click)=\"addLineItem()\" mat-flat-button color=\"primary\" type=\"button\"\n                  class=\"text-uppercase btn-xs\">\n                  <mat-icon class=\"material-symbol-outlined\">add</mat-icon>\n                  Add\n                </button>\n              </div>\n\n              <div class=\"d-flex justify-content-start align-items-start gap-2\">\n                <mat-form-field appearance=\"fill\" class=\"w-50\">\n                  <mat-label>Details</mat-label>\n                  <textarea rows=\"3\" matInput formControlName=\"details\"></textarea>\n                </mat-form-field>\n\n                <mat-form-field appearance=\"fill\" class=\"w-50\">\n                  <mat-label>Memo</mat-label>\n                  <textarea rows=\"3\" matInput formControlName=\"memo\"></textarea>\n                </mat-form-field>\n              </div>\n            </div>\n            <div class=\"d-flex flex-column align-items-end w-25\">\n              <h3 class=\"text-dark\">\n                Sub Total: {{ invoiceHelperService.getInvoiceSubTotal(lineItems.value) | currency : 'USD' : 'symbol' :\n                '0.2-2' }}\n              </h3>\n              <ng-container *ngFor=\"let tax of taxesTotals\">\n                <h4>\n                  {{ getSalesTaxToWords({ sale_rate: tax.sale_rate, name: tax.name, tax_agency: tax.tax_agency }) }} :\n                  <strong>{{ tax.total | currency }}</strong>\n                </h4>\n              </ng-container>\n\n              <h3 class=\"text-dark\">\n                Discount:\n                {{ form.value?.discount || 0 | currency : 'USD' : 'symbol' : '0.2-2' }}\n              </h3>\n              <h3 class=\"text-dark\">\n                Total: {{ invoiceHelperService.getInvoiceTotal(lineItems.value, form.value?.discount) | currency : 'USD'\n                : 'symbol' : '0.2-2' }}\n              </h3>\n            </div>\n          </div>\n        </mat-card-content>\n      </mat-card>\n      <mat-card>\n        <mat-card-content class=\"d-flex fle-row justify-content-end gap-3\">\n          <button [disabled]=\"isWorking\" mat-flat-button type=\"button\" (click)=\"cancelled.emit()\">\n            Cancel\n          </button>\n          <button [disabled]=\"isWorking\" mat-raised-button type=\"submit\" color=\"primary\">\n            Save\n          </button>\n        </mat-card-content>\n      </mat-card>\n    </form>\n  </div>\n  <div class=\"d-flex flex-column gap-2\" style=\"width: 300px; max-width: 300px; min-width: 300px\">\n    <app-product-search (selected)=\"addProductToLineItem($event)\" with=\"salesTax\"></app-product-search>\n\n    <app-entity-files-view-all viewMode=\"timeline\" *ngIf=\"invoice?.id\" [entityId]=\"invoice?.id\" entityType=\"Invoice\"\n      fileDropperHeight=\"250px\" title=\"Document\">\n    </app-entity-files-view-all>\n  </div>\n</div>","import {Component, OnInit} from '@angular/core';\nimport {Location} from '@angular/common';\nimport {ActivatedRoute} from '@angular/router';\nimport {InvoiceService} from '../invoice.service';\nimport {SaleDocumentTypeEnum} from '../sale-document-type-enum';\n\n@Component({\n  selector: 'app-invoice-form-page',\n  templateUrl: './invoice-form-page.component.html',\n  styleUrls: ['./invoice-form-page.component.scss']\n})\nexport class InvoiceFormPageComponent implements OnInit {\n\n  id: number;\n  isLoading = false;\n  invoice: any;\n  documentType!: SaleDocumentTypeEnum;\n  invoiceableType!: string;\n  invoiceableId!: number;\n  protected readonly SaleDocumentTypeEnum = SaleDocumentTypeEnum;\n\n  constructor(\n    private location: Location,\n    private activatedRoute: ActivatedRoute,\n    private invoiceService: InvoiceService\n  ) {\n    this.id = this.activatedRoute.snapshot?.params['id'];\n    this.documentType =\n      this.activatedRoute.snapshot.data['documentType'] ||\n      SaleDocumentTypeEnum.TYPE_INVOICE;\n    this.invoiceableType = this.activatedRoute.snapshot.queryParams['invoiceable_type'];\n    // tslint:disable-next-line:radix\n    this.invoiceableId = parseInt(this.activatedRoute.snapshot.queryParams['invoiceable_id']);\n  }\n\n  /**\n   * Redirect back to lost url.\n   */\n  redirectBack() {\n    this.location.back();\n  }\n\n  ngOnInit(): void {\n    if (this.id) {\n      // load invoice data\n      this.loadData();\n    }\n  }\n\n  /**\n   * Load the invoice data.\n   *\n   * @private\n   */\n  private loadData(): void {\n    this.isLoading = true;\n    const params: any = {\n      with: 'items.product.salesTax'\n    };\n    this.invoiceService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.invoice = response?.item;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n}\n","<div class=\"d-flex justify-content-center align-items-center gap-3 mb-3\">\n  <h2 class=\"mb-0\">\n    {{ id ? 'Edit' : 'Create' }}\n    {{\n    documentType === SaleDocumentTypeEnum.TYPE_INVOICE\n    ? 'Invoice'\n    : 'Quotation'\n    }}\n  </h2>\n</div>\n<app-invoice-form *ngIf=\"!isLoading\" [documentType]=\"documentType\" [invoice]=\"invoice\"\n  [invoiceableType]=\"invoiceableType\" [invoiceableId]=\"invoiceableId\" (saved)=\"redirectBack()\"\n  (cancelled)=\"redirectBack()\"></app-invoice-form>\n\n<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>","import { Injectable } from '@angular/core';\nimport {HttpService, TechlifyService} from 'ngx-techlify-core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class InvoiceDisplayConfigurationService extends TechlifyService {\n\n  constructor(\n    protected httpService: HttpService\n  ) {\n    super(httpService, 'invoice-display-configurations');\n  }\n}\n","import {Component, Input} from '@angular/core';\nimport {CurrencyPipe, NgForOf} from \"@angular/common\";\n\n@Component({\n  selector: 'app-invoice-line-items-table',\n  standalone: true,\n  imports: [\n    CurrencyPipe,\n    NgForOf\n  ],\n  templateUrl: './invoice-line-items-table.component.html',\n  styleUrl: './invoice-line-items-table.component.scss'\n})\nexport class InvoiceLineItemsTableComponent {\n  @Input() invoice!: any;\n}\n","<table class=\"w-100 table table-striped\" aria-describedby=\"Invoices List\">\n  <thead>\n    <tr>\n      <th scope=\"col\">#</th>\n      <th scope=\"col\">Product</th>\n      <th scope=\"col\">Price</th>\n      <th scope=\"col\">Qty</th>\n      <th scope=\"col\">Discount</th>\n      <th scope=\"col\">Sub Total</th>\n      <th scope=\"col\">Tax</th>\n      <th scope=\"col\">Amount</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr *ngFor=\"let item of invoice?.items; let i = index\">\n      <th scope=\"row\">{{ i + 1 }}</th>\n      <td style=\"max-width: 150px; white-space: normal; word-wrap: break-word;\">\n        <div class=\"d-flex flex-column\">\n          <span>{{ item?.product?.name }}</span>\n          <small class=\"text-secondary\">{{ item?.product?.description }}</small>\n        </div>\n      </td>\n      <td>{{ item?.price | currency }}</td>\n      <td>{{ item?.quantity }} {{ item?.product?.measure?.title }}</td>\n      <td>{{ item?.discount | currency }}</td>\n      <td>{{ item?.sub_total | currency }}</td>\n      <td>{{ item?.tax_amount | currency }}</td>\n      <td>{{ item?.total | currency }}</td>\n    </tr>\n  </tbody>\n  <tfoot>\n    <tr>\n      <th scope=\"col\" colspan=\"6\"></th>\n      <th scope=\"col\">Sub Total</th>\n      <th scope=\"col\">{{ invoice?.sub_total | currency }}</th>\n    </tr>\n    <tr>\n      <th scope=\"col\" colspan=\"6\"></th>\n      <th scope=\"col\">Invoice Discount</th>\n      <th scope=\"col\">{{ invoice?.discount | currency }}</th>\n    </tr>\n    <tr>\n      <th scope=\"col\" colspan=\"6\"></th>\n      <th scope=\"col\">Total</th>\n      <th scope=\"col\">{{ invoice?.total | currency }}</th>\n    </tr>\n  </tfoot>\n</table>","import {Component, Input} from '@angular/core';\nimport {AlertService} from \"ngx-techlify-core\";\nimport {MatProgressSpinner} from \"@angular/material/progress-spinner\";\nimport {NgIf} from \"@angular/common\";\nimport {InvoiceService} from \"../invoice.service\";\n\n@Component({\n  selector: 'app-invoice-receipt-email-button',\n  standalone: true,\n  imports: [\n    MatProgressSpinner,\n    NgIf\n  ],\n  templateUrl: './invoice-receipt-email-button.component.html',\n  styleUrl: './invoice-receipt-email-button.component.scss'\n})\nexport class InvoiceReceiptEmailButtonComponent {\n  @Input() invoice!: any;\n  isWorking: boolean = false;\n\n  constructor(\n    private invoiceService: InvoiceService,\n    private alertService: AlertService\n  ) {\n  }\n\n  sendEmail() {\n    this.isWorking = true;\n    this.invoiceService.email(this.invoice).subscribe({\n      next: () => {\n        this.isWorking = false;\n        this.alertService.addAlert('Invoice receipt sent successfully!', 'success');\n      },\n      error: () => {\n        this.isWorking = false;\n      }\n    })\n  }\n}\n","<span class=\"material-symbols-outlined cursor-pointer d-print-none\" *ngIf=\"!isWorking && invoice\" (click)=\"sendEmail()\">\n  mail\n</span>\n\n<mat-spinner *ngIf=\"isWorking\" diameter=\"20\"></mat-spinner>","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { CredentialsService } from 'ngx-techlify-core';\nimport { forkJoin, Observable } from 'rxjs';\nimport { InvoiceService } from '../invoice.service';\nimport { SaleDocumentTypeEnum } from '../sale-document-type-enum';\nimport { Title } from '@angular/platform-browser';\nimport { CustomerPhoneTypeEnum } from '../../customer/customer-phone-type.enum';\nimport { CustomerAddressTypeEnum } from '../../customer/customer-address-type.enum';\nimport { InvoiceDisplayConfigurationService } from '../invoice-display-configuration.service';\n\n@Component({\n  selector: 'app-invoice-receipt-page',\n  templateUrl: './invoice-receipt-page.component.html',\n  styleUrls: ['./invoice-receipt-page.component.scss']\n})\nexport class InvoiceReceiptPageComponent implements OnInit {\n  id: number;\n  client: any;\n  isLoading: boolean = false;\n  invoice: any;\n\n  configuration: any;\n\n  constructor(\n    private route: ActivatedRoute,\n    private credentialsService: CredentialsService,\n    private invoiceService: InvoiceService,\n    private router: Router,\n    private titleService: Title,\n    protected invoiceDisplayConfigurationService: InvoiceDisplayConfigurationService,\n  ) {\n    this.id = this.route.snapshot.params['id'];\n    this.client = this.credentialsService.credentials?.user?.client;\n  }\n\n  ngOnInit(): void {\n    if (this.id) {\n      this.loadData();\n    }\n    this.loadConfigurationData();\n  }\n\n  /**\n   * Load invoice and client data.\n   */\n  loadData() {\n    const params: any = {\n      with: 'items.product.measure,customer,customer.phones,customer.addresses,invoice'\n    };\n    const paymentObservable: Observable<any> = this.invoiceService.show(\n      this.id,\n      params\n    );\n\n    this.isLoading = true;\n    forkJoin([paymentObservable]).subscribe({\n      next: (data: any) => {\n        this.invoice = data[0].item;\n        this.isLoading = false;\n      },\n      error: () => {\n        this.isLoading = false;\n      }, complete: () => {\n        this.titleService.setTitle(`Invoice #${this.invoice?.number} - ${this.invoice?.customer?.name}`);\n      }\n    });\n  }\n\n  loadConfigurationData() {\n    this.invoiceDisplayConfigurationService.index().subscribe({\n      next: (result: any) => {\n        this.configuration = result.data[0];\n      }\n    });\n  }\n\n  protected readonly SaleDocumentTypeEnum = SaleDocumentTypeEnum;\n\n  onInvoiceCreated(invoice: any) {\n    this.router.navigateByUrl(`/sales/invoices`);\n  }\n\n  getCustomerMobilePhone() {\n    return this.invoice.customer.phones.find((phone: any) => phone.type_id === CustomerPhoneTypeEnum.Mobile)?.phone;\n  }\n\n  getCustomerWorkAddress() {\n    return this.invoice.customer.addresses.find((address: any) => address.type_id === CustomerAddressTypeEnum.Work)?.address;\n  }\n}\n","<div class=\"d-flex justify-content-end mb-2 gap-2 container\">\n  <button *ngIf=\"\n      invoice?.document_type_id === SaleDocumentTypeEnum.TYPE_QUOTATION &&\n      invoice?.invoice\n    \" mat-raised-button color=\"accent\" type=\"button\" [routerLink]=\"['/sales/invoices', invoice?.invoice?.id, 'view']\">\n    View Invoice\n  </button>\n  <app-invoice-receipt-email-button [invoice]=\"invoice\"></app-invoice-receipt-email-button>\n  <app-print-button></app-print-button>\n</div>\n<mat-card *ngIf=\"client && invoice\" class=\"container\">\n  <mat-card-content>\n    <div class=\"d-flex flex-row justify-content-between align-items-start\">\n      <div class=\"d-flex flex-column mt-4\">\n        <h3 class=\"fw-bold\">\n          {{\n          invoice.document_type_id === SaleDocumentTypeEnum.TYPE_INVOICE\n          ? 'Invoice'\n          : 'Quotation'\n          }}\n          To:\n        </h3>\n        <div class=\"d-flex flex-column\">\n          <p class=\"mb-0\">{{ invoice?.customer?.name }}</p>\n          <p class=\"mb-0\"> {{ getCustomerMobilePhone() }} </p>\n          <p class=\"mb-0\">{{ invoice?.customer?.email }}</p>\n          <p style=\"max-width: 150px; word-wrap: break-word\" class=\"mb-0\">{{ getCustomerWorkAddress() }}</p>\n        </div>\n      </div>\n\n      <div *ngIf=\"client\" class=\"d-flex flex-column justify-content-start align-items-start gap-2\"\n        style=\"margin-top:-10px\">\n        <div class=\"d-flex flex-row gap-1 align-items-center\">\n          <img *ngIf=\"client?.logo\" [src]=\"client?.logo\" class=\"img\" style=\"max-height: 50px\" alt=\"\">\n          <h3 class=\"text-dark mb-1\">{{ client?.name }}</h3>\n        </div>\n        <div class=\"text-center w-100\">\n          <p class=\"mb-1 text-secondary\" *ngIf=\"client?.phone\">\n            {{ client?.phone }}\n          </p>\n          <p class=\"mb-1 text-secondary\" *ngIf=\"client?.email\">\n            {{ client?.email }}\n          </p>\n          <p class=\"mb-1 text-secondary\" *ngIf=\"client?.address\">\n            {{ client?.address }}\n          </p>\n        </div>\n      </div>\n\n      <div class=\"d-flex flex-column mt-4\">\n        <p class=\"mb-0\"><span class=\"fw-bold\">Invoice #:</span> {{ invoice?.number }}</p>\n        <p class=\"mb-0\"><span class=\"fw-bold\">Date:</span> {{ invoice?.date | date:'mediumDate' }}</p>\n        <p class=\"mb-0\"><span class=\"fw-bold\">Due:</span> {{ invoice?.due | date:'mediumDate' }}</p>\n        <p class=\"mb-0\"><span class=\"fw-bold\">TIN:</span> {{ client?.tin }} </p>\n      </div>\n    </div>\n  </mat-card-content>\n\n  <mat-card-content>\n    <app-invoice-line-items-table [invoice]=\"invoice\"></app-invoice-line-items-table>\n  </mat-card-content>\n\n  <mat-card-footer class=\"d-flex flex-column\">\n    <div class=\"text-start mt-3\" *ngIf=\"invoice?.details\">\n      <p><span class=\"fw-bold\">Details:</span> {{ invoice?.details }}</p>\n    </div>\n\n    <div class=\"text-start mt-2\" *ngIf=\"invoice?.memo\">\n      <p><span class=\"fw-bold\">Memo:</span> {{ invoice?.memo }}</p>\n    </div>\n\n    <div class=\"text-center mt-2\" *ngIf=\"invoice?.details\">\n      <p>{{ configuration?.footer_message }}</p>\n    </div>\n  </mat-card-footer>\n</mat-card>\n\n<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>","import {Component, Input} from '@angular/core';\nimport {CurrencyPipe, DatePipe, NgIf} from \"@angular/common\";\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {MatDivider} from \"@angular/material/divider\";\n\n@Component({\n  selector: 'app-invoice-information-card',\n  standalone: true,\n  imports: [\n    NgIf,\n    MatCard,\n    MatCardContent,\n    MatDivider,\n    DatePipe,\n    CurrencyPipe\n  ],\n  templateUrl: './invoice-information-card.component.html',\n  styleUrl: './invoice-information-card.component.scss'\n})\nexport class InvoiceInformationCardComponent {\n  @Input() invoice!: any;\n}\n","<mat-card *ngIf=\"invoice\">\n  <mat-card-content>\n    <h3 class=\"mb-2 fw-bold\">Information</h3>\n  </mat-card-content>\n  <mat-divider></mat-divider>\n  <mat-card-content class=\"mt-2 d-flex flex-column justify-content-start gap-2\">\n    <div class=\"d-flex flex-column align-items-center gap-2\">\n      <span class=\"status-pill status-secondary\">\n        Invoice # {{ invoice?.number }}\n      </span>\n      <span class=\"status-pill status-pending\">\n        Due {{ invoice?.due | date }}\n      </span>\n    </div>\n\n    <div class=\"d-flex justify-content-between align-items-center gap-2 mt-2 mb-2\">\n      <div class=\"d-flex flex-column gap-1 justify-content-start\">\n        <small class=\"text-secondary\">Discount</small>\n        <p class=\"mb-0\">{{ invoice?.discount | currency }}</p>\n      </div>\n      <div class=\"d-flex flex-column gap-1 justify-content-start\">\n        <small class=\"text-secondary\">Total</small>\n        <strong class=\"mb-0\">{{ invoice?.total | currency }}</strong>\n      </div>\n    </div>\n\n    <div class=\"d-flex justify-content-between align-items-center gap-2 mt-2 mb-2\">\n      <div class=\"d-flex flex-column gap-1 justify-content-start\">\n        <small class=\"text-secondary\">Balance</small>\n        <p class=\"mb-0\">{{ invoice?.balance | currency }}</p>\n      </div>\n      <div *ngIf=\"invoice?.invoiceable?.project_name\" class=\"d-flex flex-column gap-1 justify-content-start\">\n        <small class=\"text-secondary\">Project</small>\n        <p class=\"mb-0\">{{ invoice?.invoiceable?.project_name }}</p>\n      </div>\n    </div>\n\n    <div class=\"d-flex flex-column gap-1 justify-content-start\">\n      <small class=\"text-secondary\">Customer</small>\n      <p class=\"mb-0\">{{ invoice?.customer?.name }}</p>\n    </div>\n\n    <div *ngIf=\"invoice?.memo\" class=\"d-flex flex-column gap-1 justify-content-start\">\n      <small class=\"text-secondary\">Memo</small>\n      <p class=\"mb-0\">{{ invoice?.memo }}</p>\n    </div>\n\n    <div *ngIf=\"invoice?.details\" class=\"d-flex flex-column gap-1 justify-content-start\">\n      <small class=\"text-secondary\">Other Details</small>\n      <p class=\"mb-0\">{{ invoice?.details }}</p>\n    </div>\n\n  </mat-card-content>\n</mat-card>\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {MatDialog} from '@angular/material/dialog';\nimport {AlertService} from \"ngx-techlify-core\";\nimport {InvoiceService} from '../../../invoice/invoice.service';\n\n@Component({\n  selector: 'app-create-invoice-from-quotation-button',\n  templateUrl: './create-invoice-from-quotation-button.component.html',\n  styleUrls: ['./create-invoice-from-quotation-button.component.scss']\n})\nexport class CreateInvoiceFromQuotationButtonComponent {\n  @Input() quotation: any;\n  @Output() created: EventEmitter<any> = new EventEmitter<any>();\n\n  isWorking: boolean = false;\n  constructor(\n    private matDialog: MatDialog,\n    private invoiceService: InvoiceService,\n    private alertService: AlertService\n  ) {}\n\n  showConfirmationDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, { width: '400px' });\n  }\n\n  createInvoice() {\n    this.isWorking = true;\n    this.invoiceService.copy(this.quotation).subscribe({\n      next: (response: any) => {\n        this.isWorking = true;\n        this.alertService.addAlert('Invoice created successfully!', 'success');\n        this.matDialog.closeAll();\n        this.created.emit(response?.item);\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n}\n","<button class=\"d-print-none\" type=\"button\" mat-stroked-button (click)=\"showConfirmationDialog(createInvoiceTemplate)\">\n  Create Invoice\n</button>\n\n<ng-template #createInvoiceTemplate>\n  <h3 mat-dialog-title>Create Invoice</h3>\n  <div mat-dialog-content>\n    <p>Create a new Invoice for the Quotation # {{ quotation?.number }}.</p>\n  </div>\n  <div mat-dialog-content class=\"d-flex justify-content-end align-items-center gap-2\">\n    <button [disabled]=\"isWorking\" (click)=\"createInvoice()\" type=\"button\" mat-raised-button color=\"primary\">Create</button>\n    <button [disabled]=\"isWorking\" type=\"button\" mat-flat-button mat-dialog-close>Cancel</button>\n  </div>\n</ng-template>\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class QuotationService extends TechlifyService {\n  constructor(httpService: HttpService) {\n    super(httpService, 'quotations');\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { InvoiceService } from '../invoice.service';\nimport { AlertService } from 'ngx-techlify-core';\nimport { SaleDocumentTypeEnum } from '../sale-document-type-enum';\nimport {QuotationService} from \"../quotation.service\";\nimport {Observable} from \"rxjs\";\n\n@Component({\n  selector: 'app-invoice-delete-button',\n  templateUrl: './invoice-delete-button.component.html',\n  styleUrls: ['./invoice-delete-button.component.scss']\n})\nexport class InvoiceDeleteButtonComponent implements OnInit {\n  @Input() invoice: any;\n  @Output() deleted: EventEmitter<any> = new EventEmitter<any>();\n\n  isDeleting: boolean = false;\n  documentType!: string;\n\n  constructor(\n    private matDialog: MatDialog,\n    private invoiceService: InvoiceService,\n    private quotationService: QuotationService,\n    private alertService: AlertService\n  ) {}\n\n  ngOnInit() {\n    this.documentType =\n      this.invoice.document_type_id === SaleDocumentTypeEnum.TYPE_INVOICE\n        ? 'Invoice'\n        : 'Quotation';\n  }\n\n  showConfirmDeleteDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef);\n  }\n\n  delete() {\n    this.isDeleting = true;\n    let request: Observable<any> = this.invoiceService.delete(this.invoice);\n    if (this.invoice.document_type_id === SaleDocumentTypeEnum.TYPE_QUOTATION) {\n      request = this.quotationService.delete(this.invoice);\n    }\n    request.subscribe({\n      next: () => {\n        this.isDeleting = false;\n        this.alertService.addAlert(\n          `${this.documentType} deleted successfully!`,\n          'success'\n        );\n        this.deleted.emit();\n        this.matDialog.closeAll();\n      },\n      error: () => {\n        this.isDeleting = false;\n      }\n    });\n  }\n\n  protected readonly SaleDocumentTypeEnum = SaleDocumentTypeEnum;\n}\n","<mat-icon\n  class=\"cursor-pointer text-secondary\"\n  (click)=\"showConfirmDeleteDialog(invoiceDeleteTemplate)\"\n>\n  delete\n</mat-icon>\n\n<ng-template #invoiceDeleteTemplate>\n  <h3 mat-dialog-title>Delete Invoice</h3>\n  <div mat-dialog-content>\n    <p>\n      Are you sure you want to delete the\n      {{ documentType }}\n      # {{ invoice?.number }}?\n    </p>\n  </div>\n  <div mat-dialog-actions class=\"d-flex justify-content-end gap-3\">\n    <button [disabled]=\"isDeleting\" mat-dialog-close mat-flat-button>\n      Cancel\n    </button>\n    <button\n      [disabled]=\"isDeleting\"\n      mat-raised-button\n      color=\"warn\"\n      (click)=\"delete()\"\n    >\n      Delete\n    </button>\n  </div>\n</ng-template>\n","import {Component, OnInit} from '@angular/core';\nimport {ActivatedRoute} from \"@angular/router\";\nimport {InvoiceService} from \"../invoice.service\";\nimport {Location} from \"@angular/common\";\nimport {SaleDocumentTypeEnum} from '../sale-document-type-enum';\n\n@Component({\n  selector: 'app-invoice-view-page',\n  templateUrl: './invoice-view-page.component.html',\n  styleUrl: './invoice-view-page.component.scss'\n})\nexport class InvoiceViewPageComponent implements OnInit {\n  id!: number;\n  invoice!: any;\n  isWorking!: boolean;\n\n  constructor(\n    private route: ActivatedRoute,\n    private invoiceService: InvoiceService,\n    private location: Location\n  ) { }\n\n  ngOnInit(): void {\n    this.id = this.route.snapshot.params['id'];\n    if (this.id) {\n      this.loadData();\n    }\n  }\n\n  loadData() {\n    this.isWorking = true;\n    const params: any = {\n      with: 'customer,invoiceable,items.product.measure'\n    }\n    this.invoiceService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.invoice = response?.item;\n        this.isWorking = false;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  redirectBack() {\n    this.location.back();\n  }\n\n  protected readonly SaleDocumentTypeEnum = SaleDocumentTypeEnum;\n}\n","<mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n\n<div *ngIf=\"invoice\">\n  <mat-card>\n    <mat-card-content class=\"d-flex justify-content-start align-items-center gap-3\">\n      <h2 class=\"mb-0\">{{ invoice.document_type_id === SaleDocumentTypeEnum.TYPE_INVOICE ? 'Invoice' : 'Quotation' }}\n        # {{ invoice?.number }}\n      </h2>\n      <a mat-stroked-button [routerLink]=\"['/sales/customers', invoice?.customer_id, 'view']\">\n        {{ invoice?.customer?.name }}\n      </a>\n      <mat-icon\n        class=\"cursor-pointer text-secondary\"\n        [routerLink]=\"['/sales/invoices', invoice?.id, 'edit']\"\n      >\n        edit\n      </mat-icon>\n      <app-invoice-delete-button style=\"margin-top: 6px;\" [invoice]=\"invoice\" (deleted)=\"redirectBack()\">\n      </app-invoice-delete-button>\n      <app-create-invoice-from-quotation-button *ngIf=\"invoice.document_type_id === SaleDocumentTypeEnum.TYPE_QUOTATION\"\n                                                [quotation]=\"invoice\" (created)=\"redirectBack()\">\n      </app-create-invoice-from-quotation-button>\n    </mat-card-content>\n  </mat-card>\n\n  <div class=\"d-flex justify-content-start align-items-start gap-3 mt-3\">\n    <div style=\"width: calc(300px)\" class=\"d-flex flex-column gap-3\">\n      <app-invoice-information-card\n        [invoice]=\"invoice\"\n      ></app-invoice-information-card>\n      <app-entity-files-view-all viewMode=\"timeline\" *ngIf=\"invoice?.id\" [entityId]=\"invoice?.id\" entityType=\"Invoice\"\n                                 fileDropperHeight=\"250px\" title=\"Document\">\n      </app-entity-files-view-all>\n    </div>\n    <div style=\"width: calc(100% - 300px - 1rem)\" class=\"d-flex flex-column gap-2\">\n      <mat-card>\n        <mat-card-content class=\"mb-2\">\n          <mat-card-title>Line Items</mat-card-title>\n        </mat-card-content>\n        <mat-divider></mat-divider>\n        <mat-card-content>\n          <app-invoice-line-items-table [invoice]=\"invoice\"></app-invoice-line-items-table>\n        </mat-card-content>\n      </mat-card>\n\n      <mat-card>\n        <mat-card-content class=\"mb-2\">\n          <mat-card-title>Payments</mat-card-title>\n        </mat-card-content>\n        <mat-divider></mat-divider>\n        <mat-card-content class=\"p-0\">\n          <app-payment-list\n            [invoiceId]=\"invoice?.id\"\n            [showFilter]=\"false\"\n            [showHeader]=\"false\"\n          ></app-payment-list>\n        </mat-card-content>\n      </mat-card>\n    </div>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { InvoiceDisplayConfigurationService } from '../invoice-display-configuration.service';\nimport { AlertService, FormValidatorService, TechlifyFormComponent } from 'ngx-techlify-core';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { MatCard, MatCardContent, MatCardTitle } from '@angular/material/card';\nimport { MatDivider } from '@angular/material/divider';\nimport { Location, NgIf } from '@angular/common';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatButtonToggle, MatButtonToggleGroup } from '@angular/material/button-toggle';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n  selector: 'lib-invoice-display-configuration',\n  standalone: true,\n  imports: [\n    MatCard,\n    MatCardContent,\n    MatCardTitle,\n    MatDivider,\n    ReactiveFormsModule,\n    NgIf,\n    MatProgressBar,\n    MatButtonToggleGroup,\n    MatButtonToggle,\n    MatFormField,\n    MatInput,\n    MatButton,\n    MatLabel\n  ],\n  templateUrl: './invoice-display-configuration.component.html',\n  styleUrl: './invoice-display-configuration.component.css'\n})\nexport class InvoiceDisplayConfigurationComponent extends TechlifyFormComponent implements OnInit {\n  isSaving: boolean = false;\n\n  constructor(\n    protected override service: InvoiceDisplayConfigurationService,\n    protected override formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder,\n    private location: Location\n  ) {\n    super(formValidatorService);\n\n    this.form = this.formBuilder.group({\n      is_show_tax_column: [1],\n      is_show_discount_column: [1],\n      is_show_company_address: [1],\n      is_show_company_email: [1],\n      is_show_company_phone: [1],\n      footer_message: ['']\n    });\n  }\n\n  ngOnInit() {\n    this.loadData();\n  }\n\n  save() {\n    this.isSaving = true;\n    this.service.store(this.form.value).subscribe({\n      next: () => {\n        this.alertService.addAlert('The invoice display configuration has been saved successfully.', 'success');\n        this.isSaving = false;\n      },\n      error: err => { this.isSaving = false; }\n    });\n  }\n\n  private loadData() {\n    this.isWorking = true;\n    this.service.index().subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        if (response?.data?.length > 0) {\n          const configuration = response.data[0];\n          this.form.patchValue(configuration);\n        }\n      },\n      error: err => { this.isWorking = false; }\n    });\n  }\n\n  redirectBack() {\n    this.location.back();\n  }\n}\n","<div class=\"container\">\n  <mat-card>\n    <mat-card-content class=\"mb-3\">\n      <mat-card-title class=\"text-center\">Invoice Display Configuration</mat-card-title>\n    </mat-card-content>\n    <mat-divider></mat-divider>\n    <mat-card-content class=\"mt-3\">\n      <form [formGroup]=\"form\" (ngSubmit)=\"save()\" *ngIf=\"!isWorking\">\n        <div class=\"d-flex flex-column gap-3\">\n          <div class=\"d-flex justify-content-center align-items-center gap-3\">\n            <div class=\"w-50 d-flex flex-column gap-0\">\n              <p class=\"fw-bold mb-0\">Show Tax Column</p>\n            </div>\n            <div class=\"w-50\">\n              <mat-button-toggle-group formControlName=\"is_show_tax_column\">\n                <mat-button-toggle [value]=\"1\">Yes</mat-button-toggle>\n                <mat-button-toggle [value]=\"0\">No</mat-button-toggle>\n              </mat-button-toggle-group>\n            </div>\n          </div>\n\n          <div class=\"d-flex justify-content-center align-items-center gap-3\">\n            <div class=\"w-50 d-flex flex-column gap-0\">\n              <p class=\"fw-bold mb-0\">Show Discount Column</p>\n            </div>\n            <div class=\"w-50\">\n              <mat-button-toggle-group formControlName=\"is_show_discount_column\">\n                <mat-button-toggle [value]=\"1\">Yes</mat-button-toggle>\n                <mat-button-toggle [value]=\"0\">No</mat-button-toggle>\n              </mat-button-toggle-group>\n            </div>\n          </div>\n\n          <div class=\"d-flex justify-content-center align-items-center gap-3\">\n            <div class=\"w-50 d-flex flex-column gap-0\">\n              <p class=\"fw-bold mb-0\">Show Company Address</p>\n            </div>\n            <div class=\"w-50\">\n              <mat-button-toggle-group formControlName=\"is_show_company_address\">\n                <mat-button-toggle [value]=\"1\">Yes</mat-button-toggle>\n                <mat-button-toggle [value]=\"0\">No</mat-button-toggle>\n              </mat-button-toggle-group>\n            </div>\n          </div>\n\n          <div class=\"d-flex justify-content-center align-items-center gap-3\">\n            <div class=\"w-50 d-flex flex-column gap-0\">\n              <p class=\"fw-bold mb-0\">Show Company Email</p>\n            </div>\n            <div class=\"w-50\">\n              <mat-button-toggle-group formControlName=\"is_show_company_email\">\n                <mat-button-toggle [value]=\"1\">Yes</mat-button-toggle>\n                <mat-button-toggle [value]=\"0\">No</mat-button-toggle>\n              </mat-button-toggle-group>\n            </div>\n          </div>\n\n          <div class=\"d-flex justify-content-center align-items-center gap-3\">\n            <div class=\"w-50 d-flex flex-column gap-0\">\n              <p class=\"fw-bold mb-0\">Show Company Phone</p>\n            </div>\n            <div class=\"w-50\">\n              <mat-button-toggle-group formControlName=\"is_show_company_phone\">\n                <mat-button-toggle [value]=\"1\">Yes</mat-button-toggle>\n                <mat-button-toggle [value]=\"0\">No</mat-button-toggle>\n              </mat-button-toggle-group>\n            </div>\n          </div>\n\n          <div class=\"d-flex justify-content-center align-items-center gap-3\">\n            <div class=\"w-50 d-flex flex-column gap-0\">\n              <p class=\"fw-bold mb-0\">Footer Message</p>\n            </div>\n            <div class=\"w-50\">\n              <mat-form-field class=\"w-100\">\n                <mat-label>Footer message</mat-label>\n                <textarea matInput placeholder=\"Footer message\" formControlName=\"footer_message\"></textarea>\n              </mat-form-field>\n            </div>\n          </div>\n\n          <div class=\"d-flex justify-content-center align-items-center gap-3 mt-3 mb-3\">\n            <div class=\"w-50\">\n            </div>\n            <div class=\"w-50 d-flex justify-content-start align-items-center gap-2\">\n              <button mat-flat-button type=\"button\" (click)=\"redirectBack()\" [disabled]=\"isSaving\">\n                Cancel\n              </button>\n              <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isSaving\">\n                Save\n              </button>\n            </div>\n          </div>\n        </div>\n      </form>\n\n      <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n    </mat-card-content>\n  </mat-card>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { InvoiceComponent } from './invoice/invoice.component';\nimport { InvoiceListPageComponent } from './invoice-list-page/invoice-list-page.component';\nimport { InvoiceFormPageComponent } from './invoice-form-page/invoice-form-page.component';\nimport {InvoiceReceiptPageComponent} from \"./invoice-receipt-page/invoice-receipt-page.component\";\nimport {InvoiceViewPageComponent} from \"./invoice-view-page/invoice-view-page.component\";\nimport {\n  InvoiceDisplayConfigurationComponent\n} from './invoice-display-configuration/invoice-display-configuration.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: InvoiceComponent,\n    children: [\n      {\n        path: ':id/view',\n        component: InvoiceViewPageComponent\n      },\n      {\n        path: ':id/receipt',\n        component: InvoiceReceiptPageComponent\n      },\n      {\n        path: ':id/edit',\n        component: InvoiceFormPageComponent\n      },\n      {\n        path: 'create',\n        component: InvoiceFormPageComponent\n      },\n      {\n        path: 'invoice-display-configuration',\n        component: InvoiceDisplayConfigurationComponent\n      },\n      {\n        path: '',\n        component: InvoiceListPageComponent\n      },\n      {\n        path: '**',\n        redirectTo: '',\n        pathMatch: 'full'\n      }\n    ]\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class InvoiceRoutingModule {}\n","export enum TaxTypeEnum {\n  TYPE_AMOUNT = 1,\n  TYPE_PERCENTAGE = 2,\n}\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {AbstractControl, FormGroup} from \"@angular/forms\";\nimport {CurrencyPipe} from \"@angular/common\";\nimport {TaxTypeEnum} from '../../tax/tax-type.enum';\n\n@Component({\n  selector: 'app-invoice-line-item-tax',\n  standalone: true,\n  imports: [\n    CurrencyPipe\n  ],\n  templateUrl: './invoice-line-item-tax.component.html',\n  styleUrl: './invoice-line-item-tax.component.scss'\n})\nexport class InvoiceLineItemTaxComponent implements OnInit {\n  @Input() lineItem!: AbstractControl;\n  @Output() taxAmountUpdate: EventEmitter<number> = new EventEmitter<number>();\n  taxAmount = 0;\n\n  ngOnInit() {\n    this.updateAmount(this.lineItem.value);\n\n    this.lineItem?.get('sub_total')?.valueChanges.subscribe((val: any) => {\n      this.updateAmount(this.lineItem.value);\n    });\n  }\n\n  updateAmount(value: any): number {\n    const subTotal: number = (value?.quantity * value?.price) - value?.discount;\n    this.taxAmount = 0;\n    (value?.product?.taxes as [])?.forEach((productTax: any) => {\n      const tax: any = productTax?.tax;\n      if (tax.type_id === TaxTypeEnum.TYPE_AMOUNT) {\n        this.taxAmount += tax?.value;\n      } else {\n        this.taxAmount += (subTotal * tax?.value / 100);\n      }\n    });\n    this.taxAmountUpdate.emit(this.taxAmount);\n    return this.taxAmount;\n  }\n}\n","<p class=\"mb-0\">\n  {{ taxAmount | currency }}\n</p>\n","import { NgModule } from '@angular/core';\nimport { InvoiceFormComponent } from './invoice-form/invoice-form.component';\nimport { InvoiceLineItemTaxComponent } from '../invoice-line-item-tax/invoice-line-item-tax.component';\nimport { CustomerFormModule } from '../../customer/customer-form/customer-form.module';\nimport { SharedModule } from '../../../@shared';\nimport { ProductSearchModule } from \"techlify-inventory-common\";\n\n@NgModule({\n  declarations: [InvoiceFormComponent],\n  exports: [InvoiceFormComponent],\n  imports: [\n    SharedModule,\n    InvoiceLineItemTaxComponent,\n    CustomerFormModule,\n    ProductSearchModule\n  ]\n})\nexport class InvoiceFormModule {\n}\n","import {Component, Input} from '@angular/core';\nimport {PaymentService} from \"../payment.service\";\nimport {AlertService} from \"ngx-techlify-core\";\nimport {MatProgressSpinner} from \"@angular/material/progress-spinner\";\nimport {NgIf} from \"@angular/common\";\n\n@Component({\n  selector: 'app-payment-receipt-email-button',\n  standalone: true,\n  imports: [\n    MatProgressSpinner,\n    NgIf\n  ],\n  templateUrl: './payment-receipt-email-button.component.html',\n  styleUrl: './payment-receipt-email-button.component.scss'\n})\nexport class PaymentReceiptEmailButtonComponent {\n  @Input() payment!: any;\n  isWorking: boolean = false;\n\n  constructor(\n    private paymentService: PaymentService,\n    private alertService: AlertService\n  ) {\n  }\n\n  sendEmail() {\n    this.isWorking = true;\n    this.paymentService.email(this.payment).subscribe({\n      next: () => {\n        this.isWorking = false;\n        this.alertService.addAlert('Sale payment receipt sent successfully!', 'success');\n      },\n      error: () => {\n        this.isWorking = false;\n      }\n    })\n  }\n}\n","<span\n  class=\"material-symbols-outlined cursor-pointer\"\n  *ngIf=\"!isWorking && payment\"\n  (click)=\"sendEmail()\"\n>\n  mail\n</span>\n\n<mat-spinner *ngIf=\"isWorking\" diameter=\"20\"></mat-spinner>\n","import {Component, Input} from '@angular/core';\nimport {NgIf} from \"@angular/common\";\n\n@Component({\n  selector: 'app-company-info-display',\n  standalone: true,\n  imports: [\n    NgIf\n  ],\n  templateUrl: './company-info-display.component.html',\n  styleUrl: './company-info-display.component.scss'\n})\nexport class CompanyInfoDisplayComponent {\n  @Input() client!: any;\n}\n","<div *ngIf=\"client\" class=\"d-flex justify-content-start align-items-start gap-2\">\n  <img *ngIf=\"client?.logo\" [src]=\"client?.logo\" class=\"img img-thumbnail\" style=\"max-height: 75px\" alt=\"\">\n  <div>\n    <h3 class=\"text-dark mb-1\">{{ client?.name }}</h3>\n    <p class=\"mb-1 text-secondary\" *ngIf=\"client?.address\">\n      {{ client?.address }}\n    </p>\n    <p class=\"mb-1 text-secondary\" *ngIf=\"client?.phone\">\n      {{ client?.phone }}\n    </p>\n    <p class=\"mb-1 text-secondary\" *ngIf=\"client?.email\">\n      {{ client?.email }}\n    </p>\n  </div>\n</div>\n","import { PaymentService } from '../payment.service';\nimport { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { forkJoin, Observable } from 'rxjs';\nimport { CredentialsService } from 'ngx-techlify-core';\nimport { Title } from '@angular/platform-browser';\n@Component({\n  selector: 'app-payment-receipt',\n  templateUrl: './payment-receipt.component.html'\n})\nexport class PaymentReceiptComponent implements OnInit {\n  payment: any;\n  id: number;\n\n  columnDefinitions = [\n    { def: 'Item', isShow: true },\n    { def: 'Quantity', isShow: true },\n    { def: 'Price', isShow: true },\n    { def: 'Discount', isShow: true },\n    { def: 'Total', isShow: true }\n  ];\n\n  displayedColumns: string[] = [\n    'Item',\n    'Quantity',\n    'Price',\n    'Discount',\n    'Total'\n  ];\n  dataSource = new MatTableDataSource();\n  client: any;\n  isLoading: boolean = false;\n  customer!: any;\n\n  constructor(\n    private paymentService: PaymentService,\n    private route: ActivatedRoute,\n    private credentialsService: CredentialsService,\n    private title: Title\n  ) {\n    this.id = this.route.snapshot.params['id'];\n    this.client = this.credentialsService.credentials?.user?.client;\n  }\n\n  ngOnInit(): void {\n    if (this.id) {\n      this.loadData();\n    }\n  }\n\n  /**\n   * Load payment and client data.\n   */\n  loadData() {\n    const params: any = {\n      with: 'invoices,paymentInvoices.invoice.customer,account'\n    };\n    const paymentObservable: Observable<any> = this.paymentService.show(\n      this.id,\n      params\n    );\n    this.isLoading = true;\n    forkJoin([paymentObservable]).subscribe({\n      next: (data: any) => {\n        this.payment = data[0].item;\n        this.customer = this.findCustomerFromInvoice(this.payment)\n        this.isLoading = false;\n        this.title.setTitle(\n          this.payment?.reference_no ?? 'payment-receipt-' + this.payment?.id\n        );\n      },\n      error: () => {\n        this.isLoading = false;\n      }\n    });\n  }\n\n  private findCustomerFromInvoice(payment: any) {\n    // Loop through the invoices\n    let customer;\n    for (const invoice of payment?.invoices) {\n      if (invoice?.customer) {\n        customer = invoice.customer;\n        break;\n      }\n    }\n    return customer;\n  }\n}\n","<div class=\"d-flex justify-content-end align-items-center gap-2 d-print-none\">\n  <app-payment-receipt-email-button\n    [payment]=\"payment\"\n  ></app-payment-receipt-email-button>\n  <app-print-button></app-print-button>\n</div>\n<mat-card *ngIf=\"client && payment\" class=\"mt-2\">\n  <mat-card-content>\n    <app-company-info-display [client]=\"client\"></app-company-info-display>\n  </mat-card-content>\n\n  <mat-card-content class=\"mt-4\">\n    <h3 class=\"text-primary text-uppercase\">Payment Receipt</h3>\n    <div class=\"d-flex flex-row justify-content-start align-items-center\">\n      <div\n        class=\"d-flex flex-column justify-content-start gap-1\"\n        style=\"width: calc(50% - 1rem)\"\n      >\n        <p class=\"text-secondary text-capitalize mb-1\">Bill To</p>\n        <p class=\"text-dark mb-1\">{{ customer?.name }}</p>\n      </div>\n      <div\n        class=\"d-flex flex-column justify-content-start gap-1\"\n        style=\"width: calc(50% - 1rem)\"\n      >\n        <p class=\"text-secondary text-uppercase mb-1\">\n          Sales:\n          <a\n            class=\"text-dark text-capitalize\"\n            *ngFor=\"let invoice of payment?.invoices\"\n          >\n            Invoice #{{ invoice?.number }}\n          </a>\n        </p>\n        <p class=\"text-secondary text-uppercase mb-1\">\n          Date:\n          <span class=\"text-dark text-capitalize\">{{\n            payment?.date | date\n          }}</span>\n        </p>\n      </div>\n    </div>\n  </mat-card-content>\n\n  <mat-card-content>\n    <table class=\"w-100 table table-striped\" aria-describedby=\"Invoices List\">\n      <thead>\n        <tr>\n          <th scope=\"col\">#</th>\n          <th scope=\"col\">Description</th>\n          <th scope=\"col\">Due</th>\n          <th scope=\"col\">Amount</th>\n          <th scope=\"col\">Balance</th>\n          <th scope=\"col\">Paid</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr *ngFor=\"let invoice of payment?.invoices; let i = index\">\n          <th scope=\"row\">{{ i + 1 }}</th>\n          <td>{{ invoice?.deails }}</td>\n          <td>{{ invoice?.due | date }}</td>\n          <td>{{ invoice?.total | currency }}</td>\n          <td>{{ invoice?.balance | currency }}</td>\n          <td>{{ invoice?.pivot?.amount | currency }}</td>\n        </tr>\n      </tbody>\n      <tfoot>\n        <tr>\n          <th colspan=\"4\"></th>\n          <th>Total</th>\n          <th>{{ payment?.amount | currency }}</th>\n        </tr>\n      </tfoot>\n    </table>\n  </mat-card-content>\n</mat-card>\n<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n","import { Component } from '@angular/core';\nimport {PrintService} from '../../../@shared/print-button/print.service';\n\n@Component({\n  selector: 'app-payment',\n  templateUrl: './payment.component.html'\n})\nexport class PaymentComponent {\n  isPrinting: boolean = false;\n\n  constructor(public printService: PrintService) {\n    this.printService\n      .getIsPrinting()\n      .subscribe((val: boolean) => (this.isPrinting = val));\n  }\n}\n","<div>\n  <router-outlet></router-outlet>\n</div>\n","export enum PaymentMethodTypeEnum {\n  CASH = 1,\n  CHEQUE = 2,\n  BILL_EXPRESS = 3,\n  GTT_MMG = 4,\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport moment from 'moment';\nimport { AlertService, FormValidatorService } from 'ngx-techlify-core';\nimport { PaymentService } from '../payment.service';\nimport {debounceTime, Observable} from 'rxjs';\nimport { InvoiceService } from '../../invoice/invoice.service';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {SaleDocumentTypeEnum} from \"../../invoice/sale-document-type-enum\";\nimport {PaymentMethodTypeEnum} from \"../payment-method-type.enum\";\n\nconst errorMessages: any = {\n  account_id: {\n    required: 'Please Enter Account'\n  },\n  payment_method_id: {\n    required: 'Please Enter Payment Method'\n  },\n  date: {\n    required: 'Please Enter Payment Date'\n  },\n  amount: {\n    required: 'Please Enter Payment Amount',\n    max: 'Payment Cannot Exceed Pending Amount'\n  }\n};\n\n@Component({\n  selector: 'app-payment-form',\n  templateUrl: './payment-form.component.html'\n})\nexport class PaymentFormComponent implements OnInit {\n  @Input() payment: any;\n  @Output() saved = new EventEmitter();\n  @Output() cancelled = new EventEmitter();\n\n  form: FormGroup;\n  isLoadingInvoices: boolean = false;\n  totalPayment: number = 0;\n  selection = new SelectionModel<any>(true);\n  isSaving: boolean = false;\n\n  constructor(\n    private paymentService: PaymentService,\n    private fb: FormBuilder,\n    private formValidatorService: FormValidatorService,\n    private alertService: AlertService,\n    private invoiceService: InvoiceService\n  ) {\n    this.form = this.fb.group({\n      id: [''],\n      customer_id: [''],\n      transaction_type: ['credit'],\n      date: [moment().format(), Validators.compose([Validators.required])],\n      payment_method_id: [1, Validators.compose([Validators.required])],\n      reference_no: [''],\n      account_id: ['', Validators.compose([Validators.required])],\n      memo: [''],\n      cheque_number: [''],\n      invoices: new FormArray([])\n    });\n  }\n\n  /**\n   * Get the invoices\n   */\n  get invoices() {\n    return this.form.get('invoices') as FormArray;\n  }\n\n  ngOnInit(): void {\n    // load invoices on customer change\n    this.form\n      .get('customer_id')\n      ?.valueChanges.pipe(debounceTime(500))\n      .subscribe((val: number) => {\n        if (val) {\n          // if  selected customer is same with payment.customer then update the form with payment data.\n          // this will fill the invoices with payment's invoices.\n          if (this.payment?.customer_id === val) {\n            this.updateTheInvoicesWithPayment();\n            return;\n          }\n          // clear current invoice selection\n          this.clearInvoiceSelection();\n          // load invoices\n          this.loadInvoicesForCustomer(val);\n        } else {\n          // reset invoices\n          this.clearInvoiceSelection();\n        }\n      });\n    // update total amount on invoice payment amount change\n    this.form\n      .get('invoices')\n      ?.valueChanges?.pipe(debounceTime(500))\n      .subscribe(() => this.updateTotalPayment());\n    // update payment on invoice selection change.\n    this.selection.changed.subscribe(() => this.updateTotalPayment());\n\n    this.form\n      .get('amount')\n      ?.addValidators(Validators.max(this.form.value.amount));\n    // update and set the payment to form\n    if (this.payment) {\n      this.updateFormWithPayment();\n    }\n  }\n\n  /**\n   * Save the payment.\n   */\n  save() {\n    if (!this.form.valid) {\n      this.alertService.addAlert(\n        'Please check the form form required fields.',\n        'warn'\n      );\n      this.form.markAllAsTouched();\n      return;\n    }\n    let data: any = this.form.value;\n    if (data?.date) {\n      data.date = moment(data.date).format('YYYY-MM-DD');\n    }\n    if (data?.invoices) {\n      data.invoices = (this.invoices.value as []).filter((item: any) =>\n        this.selection.isSelected(item?.invoice_id)\n      );\n    }\n    data.amount = this.totalPayment;\n\n    this.isSaving = true;\n    let request: Observable<any> = this.paymentService.store(data);\n    if (this.payment?.id) {\n      request = this.paymentService.update(data);\n    }\n    request.subscribe({\n      next: (response: any) => {\n        this.isSaving = false;\n        this.alertService.addAlert('Payment saved successfully!', 'success');\n        this.saved.emit(response);\n      },\n      error: () => {\n        this.isSaving = false;\n      }\n    });\n  }\n\n  /**\n   * Method to evaluate form fields\n   */\n  isFieldValid(field: string) {\n    return this.formValidatorService.isFieldValid(field, this.form);\n  }\n\n  /**\n   *  Method to find error in form fields\n   */\n  getErrorMessage(field: string) {\n    return this.formValidatorService.getErrorMessage(\n      field,\n      this.form,\n      errorMessages\n    );\n  }\n\n  /**\n   * Load invoices for the customer.\n   *\n   * @param customerId\n   * @private\n   */\n  private loadInvoicesForCustomer(customerId: number) {\n    if (!customerId) {\n      return;\n    }\n    // load invoices for the selected customer and which are pending or partially paid.\n    const params: any = {\n      customer_ids: customerId,\n      status_ids: '1,2',\n      sort_by: 'date|desc',\n      document_type_ids: SaleDocumentTypeEnum.TYPE_INVOICE,\n    };\n    this.isLoadingInvoices = true;\n    this.invoiceService.index(params).subscribe({\n      next: (response: any) => {\n        this.isLoadingInvoices = false;\n        const invoices: any[] = response?.data;\n        invoices.forEach((invoice: any) => {\n          this.addInvoice({\n            ...invoice,\n            payment: invoice?.balance\n          });\n        });\n      },\n      error: () => (this.isLoadingInvoices = false)\n    });\n  }\n\n  /**\n   * Add invoice to payment form.\n   *\n   * @param invoice\n   * @private\n   */\n  private addInvoice(invoice: any) {\n    // Check if we have already added the invoice to the list.\n    const index: number = (this.invoices.value as []).findIndex(\n      (item: any) => item?.invoice_id === invoice?.id\n    );\n    if (index != -1) {\n      return;\n    }\n\n    const invoiceForm: FormGroup = this.fb.group({\n      invoice_id: [invoice?.id],\n      number: [invoice?.number],\n      date: [invoice?.date],\n      details: [invoice?.details],\n      due: [invoice?.due],\n      total: [invoice?.total],\n      balance: [invoice?.balance],\n      payment: [invoice?.payment]\n    });\n    this.invoices.push(invoiceForm);\n    // In edit mode dont select all the invoices\n    if (!this.payment?.id) {\n      this.selection.select(invoice?.id);\n    }\n  }\n\n  /**\n   * Update total payment.\n   *\n   * @private\n   */\n  private updateTotalPayment() {\n    this.totalPayment = 0;\n    (this.invoices.value as [])\n      .filter((invoice: any) => this.selection.isSelected(invoice?.invoice_id))\n      .forEach((invoice: any) => {\n        this.totalPayment += invoice?.payment;\n      });\n  }\n\n  /** Whether the number of selected elements matches the total number of rows. */\n  isAllSelected() {\n    const numSelected = this.selection.selected.length;\n    const numRows = this.invoices.value.length;\n    return numSelected === numRows;\n  }\n\n  /** Selects all rows if they are not all selected; otherwise clear selection. */\n  toggleAllRows() {\n    if (this.isAllSelected()) {\n      this.selection.clear();\n      return;\n    }\n    this.selection.select(\n      ...(this.invoices.value as []).map((invoice: any) => invoice?.invoice_id)\n    );\n  }\n\n  /**\n   * Reset the invoice selection.\n   *\n   * @private\n   */\n  private clearInvoiceSelection() {\n    this.selection.clear();\n    this.invoices.clear();\n  }\n\n  /**\n   * Update the form with payment data.\n   *\n   * @private\n   */\n  private updateFormWithPayment() {\n    this.form.patchValue(\n      {\n        id: this.payment?.id,\n        customer_id: this.payment?.customer_id,\n        date: moment(this.payment?.date).format('YYYY-MM-DD'),\n        payment_method_id: this.payment?.payment_method_id,\n        reference_no: this.payment?.reference_no,\n        account_id: this.payment?.account_id,\n        memo: this.payment?.memo,\n        cheque_number: this.payment?.cheque_number,\n      },\n      { emitEvent: false }\n    );\n    // update the invoices with payment invoices to set them selected\n    this.updateTheInvoicesWithPayment();\n  }\n\n  /**\n   * Update the invoices list from payment data.\n   *\n   * @private\n   */\n  private updateTheInvoicesWithPayment() {\n    // remove all selected invoices\n    this.clearInvoiceSelection();\n    // set the selected invoices.\n    (this.payment?.invoices as []).forEach((invoice: any) => {\n      this.selection.select(invoice?.id);\n      this.addInvoice({\n        ...invoice,\n        payment: invoice?.pivot?.amount,\n        balance: invoice.balance + invoice?.pivot.amount\n      });\n    });\n    // load pending or partial paid invoices for customer\n    this.loadInvoicesForCustomer(this.payment?.customer_id);\n  }\n\n  protected readonly PaymentMethodTypeEnum = PaymentMethodTypeEnum;\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"save()\">\n  <div class=\"d-flex flex-row align-items-center\">\n    <h3 class=\"mb-2 font-weight-bold text-dark\">Receive Payment</h3>\n  </div>\n  <div class=\"d-flex flex-row justify-content-start align-items-center gap-3\">\n    <mat-form-field appearance=\"fill\">\n      <mat-label>Customer</mat-label>\n      <app-searchable-selector\n        titleField=\"name\"\n        apiUrl=\"api/customers\"\n        formControlName=\"customer_id\"\n      >\n      </app-searchable-selector>\n      <mat-error *ngIf=\"isFieldValid('customer_id')\"\n        >{{ getErrorMessage('customer_id') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\">\n      <mat-label>Date</mat-label>\n      <input\n        matInput\n        [matDatepicker]=\"datePicker\"\n        placeholder=\"Date\"\n        formControlName=\"date\"\n        required\n        (focus)=\"datePicker.open()\"\n      />\n      <mat-datepicker-toggle\n        matSuffix\n        [for]=\"datePicker\"\n      ></mat-datepicker-toggle>\n      <mat-datepicker #datePicker></mat-datepicker>\n      <mat-error *ngIf=\"isFieldValid('date')\">\n        {{ getErrorMessage('date') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\">\n      <mat-label>Payment Method</mat-label>\n      <app-searchable-selector\n        apiUrl=\"api/payment-methods\"\n        formControlName=\"payment_method_id\"\n        required\n      >\n      </app-searchable-selector>\n      <mat-error *ngIf=\"isFieldValid('payment_method_id')\">\n        {{ getErrorMessage('payment_method_id') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\" *ngIf=\"form.value?.payment_method_id === PaymentMethodTypeEnum.CHEQUE\">\n      <mat-label>Cheque Number</mat-label>\n      <input\n        matInput\n        formControlName=\"cheque_number\"\n        placeholder=\"Cheque Number\"\n      />\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\">\n      <mat-label>Reference #</mat-label>\n      <input\n        matInput\n        type=\"text\"\n        placeholder=\"Reference Number\"\n        formControlName=\"reference_no\"\n      />\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\">\n      <mat-label>Deposited To</mat-label>\n      <app-searchable-selector\n        apiUrl=\"api/accounts\"\n        formControlName=\"account_id\"\n        required\n      >\n      </app-searchable-selector>\n      <mat-error *ngIf=\"isFieldValid('account_id')\"\n        >{{ getErrorMessage('account_id') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\">\n      <mat-label>Memo</mat-label>\n      <textarea matInput formControlName=\"memo\"></textarea>\n      <mat-error *ngIf=\"isFieldValid('memo')\">\n        {{ getErrorMessage('memo') }}\n      </mat-error>\n    </mat-form-field>\n  </div>\n\n  <div\n    class=\"d-flex flex-row justify-content-between align-items-center\"\n    style=\"width: calc(100% - 1rem)\"\n  >\n    <strong>Invoices</strong>\n    <strong>\n      Total Payment:\n      {{ totalPayment | currency : 'USD' : 'symbol' : '0.2-2' }}\n    </strong>\n  </div>\n\n  <table\n    style=\"calc(100% - 1rem)\"\n    class=\"table\"\n    aria-describedby=\"Invoices List\"\n  >\n    <thead>\n      <tr>\n        <th scope=\"col\">\n          <mat-checkbox\n            (change)=\"$event ? toggleAllRows() : null\"\n            [checked]=\"selection.hasValue() && isAllSelected()\"\n            [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n          >\n          </mat-checkbox>\n        </th>\n        <th scope=\"col\">Description</th>\n        <th scope=\"col\">Due Date</th>\n        <th scope=\"col\">Original Amount</th>\n        <th scope=\"col\">Balance</th>\n        <th scope=\"col\">Payment</th>\n      </tr>\n    </thead>\n    <tbody formArrayName=\"invoices\">\n      <ng-container *ngFor=\"let invoice of invoices.controls; let i = index\">\n        <tr [formGroupName]=\"i\">\n          <th scope=\"row\">\n            <mat-checkbox\n              (click)=\"$event.stopPropagation()\"\n              (change)=\"\n                $event ? selection.toggle(invoice.value.invoice_id) : null\n              \"\n              [checked]=\"selection.isSelected(invoice.value.invoice_id)\"\n            >\n            </mat-checkbox>\n          </th>\n          <td>\n            <a [routerLink]=\"['/invoices', invoice?.value?.invoice_id]\">\n              Invoice # {{ invoice?.value?.number }}\n            </a>\n            ({{ invoice?.value?.date | date }})\n          </td>\n          <td>\n            {{ invoice?.value?.due | date }}\n          </td>\n          <td>\n            {{\n              invoice?.value?.total | currency : 'USD' : 'symbol' : '0.2-2'\n            }}\n          </td>\n          <td>\n            {{\n              invoice?.value?.balance | currency : 'USD' : 'symbol' : '0.2-2'\n            }}\n          </td>\n          <td>\n            <mat-form-field class=\"font-xs\" appearance=\"fill\">\n              <mat-label>Payment</mat-label>\n              <input\n                matInput\n                type=\"number\"\n                min=\"0\"\n                formControlName=\"payment\"\n              />\n            </mat-form-field>\n          </td>\n        </tr>\n      </ng-container>\n    </tbody>\n    <tfoot>\n      <tr>\n        <th scope=\"col\" colspan=\"4\"></th>\n        <th scope=\"col\">Total Payment:</th>\n        <th scope=\"col\">\n          {{ totalPayment | currency : 'USD' : 'symbol' : '0.2-2' }}\n        </th>\n      </tr>\n    </tfoot>\n  </table>\n\n  <div\n    class=\"d-flex justify-content-end gap-3\"\n    style=\"width: calc(100% - 1rem)\"\n  >\n    <button\n      [disabled]=\"isSaving\"\n      (click)=\"cancelled.emit()\"\n      mat-button\n      type=\"button\"\n    >\n      Cancel\n    </button>\n    <button\n      [disabled]=\"isSaving\"\n      mat-raised-button\n      color=\"primary\"\n      type=\"submit\"\n    >\n      Save\n    </button>\n  </div>\n</form>\n","import { Component, OnInit } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { ActivatedRoute } from '@angular/router';\nimport { PaymentService } from '../payment.service';\n\n@Component({\n  selector: 'app-payment-form-page',\n  templateUrl: './payment-form-page.component.html',\n  styleUrls: ['./payment-form-page.component.scss']\n})\nexport class PaymentFormPageComponent implements OnInit {\n  id: number;\n  payment: any;\n  isLoading: boolean = false;\n\n  constructor(\n    private location: Location,\n    private activatedRoute: ActivatedRoute,\n    private paymentService: PaymentService\n  ) {\n    this.id = this.activatedRoute.snapshot.params?.['id'];\n  }\n\n  redirectBack() {\n    this.location.back();\n  }\n\n  ngOnInit(): void {\n    if (this.id) {\n      this.loadModel();\n    }\n  }\n\n  /**\n   * Load the model for edit.\n   *\n   * @private\n   */\n  private loadModel() {\n    const params: any = { with: 'invoices' };\n    this.isLoading = true;\n    this.paymentService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.payment = response?.item;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n}\n","<div class=\"d-flex justify-content-start gap-3\">\n  <mat-card style=\"width: calc(100% - 300px)\">\n    <mat-card-content>\n      <app-payment-form\n        *ngIf=\"!isLoading\"\n        [payment]=\"payment\"\n        (saved)=\"redirectBack()\"\n        (cancelled)=\"redirectBack()\"\n      ></app-payment-form>\n      <mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n    </mat-card-content>\n  </mat-card>\n  <div style=\"width: calc(300px - 1rem)\">\n    <app-entity-files-view-all viewMode=\"timeline\" *ngIf=\"payment?.id\" [entityId]=\"payment?.id\" entityType=\"Payment\"\n                               fileDropperHeight=\"250px\" title=\"Document\">\n    </app-entity-files-view-all>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PaymentVoidButtonComponent } from './payment-void-button/payment-void-button.component';\nimport {MatButtonModule} from \"@angular/material/button\";\nimport {MatDialogModule} from \"@angular/material/dialog\";\nimport {MatIconModule} from \"@angular/material/icon\";\nimport {MatTooltipModule} from \"@angular/material/tooltip\";\n\n\n\n@NgModule({\n  declarations: [\n    PaymentVoidButtonComponent\n  ],\n  imports: [\n    CommonModule,\n    MatButtonModule,\n    MatDialogModule,\n    MatIconModule,\n    MatTooltipModule\n  ],\n  exports: [\n    PaymentVoidButtonComponent\n  ]\n})\nexport class PaymentVoidModule { }\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {CurrencyPipe, DatePipe, NgIf} from '@angular/common';\nimport {MatCard, MatCardContent} from '@angular/material/card';\nimport {MatDivider} from '@angular/material/divider';\nimport {PaymentVoidModule} from '../../sale/payment/payment-void/payment-void.module';\nimport {MatIcon} from '@angular/material/icon';\nimport {NgxPermissionsModule} from 'ngx-permissions';\nimport {RouterLink} from '@angular/router';\n\n@Component({\n  selector: 'app-payment-information-card',\n  standalone: true,\n  imports: [\n    CurrencyPipe,\n    DatePipe,\n    MatCard,\n    MatCardContent,\n    MatDivider,\n    NgIf,\n    PaymentVoidModule,\n    MatIcon,\n    NgxPermissionsModule,\n    RouterLink\n  ],\n  templateUrl: './payment-information-card.component.html',\n  styleUrl: './payment-information-card.component.css'\n})\nexport class PaymentInformationCardComponent {\n  @Input() payment: any;\n  @Output() changed: EventEmitter<any> = new EventEmitter();\n\n  onChanged(payment: any) {\n    this.changed.emit(payment);\n  }\n}\n","<mat-card *ngIf=\"payment\">\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n    <h3 class=\"mb-2 fw-bold\">Information</h3>\n    <div *ngIf=\"payment.transaction_type === 'credit'\" class=\"d-flex justify-content-end align-items-center gap-2\">\n      <mat-icon\n        class=\"material-symbol-outlined cursor-pointer mb-1\"\n        [routerLink]=\"['/sales/payments', payment?.id, 'edit']\"\n        *ngxPermissionsOnly=\"['sale_payment.update']\"\n      >\n        edit\n      </mat-icon>\n      <app-payment-void-button\n        [payment]=\"payment\"\n        (voided)=\"onChanged($event)\"\n      ></app-payment-void-button>\n    </div>\n  </mat-card-content>\n  <mat-divider></mat-divider>\n  <mat-card-content class=\"mt-2 d-flex flex-column justify-content-start gap-2\">\n    <div class=\"d-flex justify-content-between gap-0 flex-wrap mt-2 mb-2\">\n      <div class=\"d-flex flex-column gap-1 justify-content-start w-50\">\n        <small class=\"text-secondary\">Payment Account</small>\n        <p class=\"mb-0\">{{ payment?.account?.title }}</p>\n      </div>\n      <div class=\"d-flex flex-column gap-1 justify-content-start w-50\">\n        <small class=\"text-secondary\">Payment Method</small>\n        <p class=\"mb-0\">{{ payment?.payment_method?.title }}</p>\n      </div>\n      <div *ngIf=\"payment?.customer\" class=\"d-flex flex-column gap-1 justify-content-start w-50 mt-2\">\n        <small class=\"text-secondary\">Customer</small>\n        <p class=\"mb-0\">{{ payment?.customer?.name }}</p>\n      </div>\n      <div class=\"d-flex flex-column gap-1 justify-content-start w-50 mt-2\">\n        <small class=\"text-secondary\">Date</small>\n        <p class=\"mb-0\">{{ payment?.date | date }}</p>\n      </div>\n      <div *ngIf=\"payment?.reference_no\" class=\"d-flex flex-column gap-1 justify-content-start w-50 mt-2\">\n        <small class=\"text-secondary\">Reference No.</small>\n        <p class=\"mb-0\">{{ payment?.reference_no }}</p>\n      </div>\n\n      <span class=\"status-pill status-secondary w-100 mt-2\">\n        Total : <strong>{{ payment?.amount | currency }}</strong>\n      </span>\n\n      <div *ngIf=\"payment?.memo\" class=\"d-flex flex-column gap-1 justify-content-start w-100 mt-2\">\n        <small class=\"text-secondary\">Memo</small>\n        <p class=\"mb-0\">{{ payment?.memo }}</p>\n      </div>\n\n      <div *ngIf=\"payment?.creator\" class=\"d-flex flex-column gap-1 justify-content-start w-100 mt-2\">\n        <small class=\"text-secondary\">\n          Created by {{ payment?.creator?.name }} On {{ payment?.created_at | date }}\n        </small>\n      </div>\n    </div>\n  </mat-card-content>\n</mat-card>\n","import {Component, OnInit} from '@angular/core';\nimport {FormBuilder, FormGroup} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {PaymentService} from '../payment.service';\nimport {Timeline} from 'ngx-techlify-core';\nimport {\n  PaymentInformationCardComponent\n} from '../../../purchase/payment-information-card/payment-information-card.component';\nimport {InvoiceHelperService} from '../../invoice/invoice-helper.service';\nimport {InvoiceListPageComponent} from '../../invoice';\nimport {SharedModule} from '../../../@shared';\n\n@Component({\n  selector: 'app-payment-view',\n  standalone: true,\n  imports: [\n    SharedModule,\n    PaymentInformationCardComponent,\n    InvoiceListPageComponent\n  ],\n  templateUrl: './payment-view.component.html',\n  styleUrl: './payment-view.component.css'\n})\nexport class PaymentViewComponent implements OnInit {\n  id!: number;\n  payment: any;\n  isLoading = false;\n  filterForm: FormGroup;\n  customer: any;\n\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private paymentService: PaymentService,\n    private formBuilder: FormBuilder,\n    private invoiceHelperService: InvoiceHelperService\n  ) {\n    this.id = parseInt(this.activatedRoute.snapshot.params['id']);\n\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.ALL],\n      date_from: [''],\n      date_to: [''],\n    });\n  }\n\n  ngOnInit() {\n    if (this.id) {\n      this.loadPayment();\n    }\n  }\n\n  private loadPayment() {\n    const params: any = {\n      with: 'invoices,paymentInvoices.invoice.customer,account'\n    };\n    this.isLoading = true;\n    this.paymentService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.isLoading = false;\n        this.payment = response?.item;\n        this.customer = this.invoiceHelperService.findCustomerFromInvoice(this.payment)\n        this.payment.customer = this.customer;\n      },\n      error: () => {\n        this.isLoading = false;\n      }\n    });\n  }\n\n}\n","<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n\n<div class=\"d-flex justify-content-start align-items-start gap-3\" *ngIf=\"payment\">\n  <div style=\"width: calc(300px)\" class=\"d-flex flex-column gap-3\">\n    <app-payment-information-card [payment]=\"payment\"></app-payment-information-card>\n    <app-entity-files-view-all viewMode=\"timeline\" *ngIf=\"payment?.id\" [entityId]=\"payment?.id\"\n                               entityType=\"Payment\" fileDropperHeight=\"250px\" title=\"Document\">\n    </app-entity-files-view-all>\n  </div>\n\n  <div style=\"width: calc(100% - 300px - 1rem)\" class=\"d-flex flex-column gap-2\">\n    <app-invoice-list-page [showActions]=\"false\" [showFilter]=\"false\" [paymentId]=\"payment?.id\"></app-invoice-list-page>\n  </div>\n</div>\n","import { PaymentReceiptComponent } from './payment-receipt/payment-receipt.component';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AuthenticationGuard } from 'ngx-techlify-core';\nimport { PaymentListComponent } from './payment-list/payment-list.component';\nimport { PaymentComponent } from './payment/payment.component';\nimport { PaymentFormPageComponent } from './payment-form-page/payment-form-page.component';\nimport {PaymentViewComponent} from './payment-view/payment-view.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: PaymentComponent,\n    children: [\n      {\n        path: ':id/view',\n        component: PaymentViewComponent,\n      },\n      {\n        path: ':id/receipt',\n        component: PaymentReceiptComponent,\n        canLoad: [AuthenticationGuard]\n      },\n      {\n        path: ':id/edit',\n        component: PaymentFormPageComponent,\n        canLoad: [AuthenticationGuard]\n      },\n      {\n        path: 'create',\n        component: PaymentFormPageComponent,\n        canLoad: [AuthenticationGuard]\n      },\n      {\n        path: '',\n        component: PaymentListComponent,\n        canLoad: [AuthenticationGuard]\n      },\n      {\n        path: '**',\n        redirectTo: '',\n        pathMatch: 'full',\n        canLoad: [AuthenticationGuard]\n      }\n    ]\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class PaymentRoutingModule {}\n","/* eslint-disable prettier/prettier */\nimport {NgModule} from '@angular/core';\nimport {PaymentRoutingModule} from './payment-routing.module';\nimport {PaymentFormComponent} from './payment-form/payment-form.component';\nimport {ColumnSelectorModule} from 'ngx-techlify-core';\nimport {PaymentListComponent} from './payment-list/payment-list.component';\nimport {PaymentComponent} from './payment/payment.component';\nimport {PaymentReceiptComponent} from './payment-receipt/payment-receipt.component';\nimport {PaymentFormPageComponent} from './payment-form-page/payment-form-page.component';\nimport {PaymentMethodTypeBadgeComponent} from './payment-method-type-badge/payment-method-type-badge.component';\nimport {PaymentDeleteButtonComponent} from './payment-delete-button/payment-delete-button.component';\nimport {PaymentVoidModule} from './payment-void/payment-void.module';\nimport {\n  PaymentReceiptEmailButtonComponent\n} from './payment-receipt-email-button/payment-receipt-email-button.component';\nimport {PrintButtonModule, SharedModule} from '../../@shared';\nimport {\n  CompanyInfoDisplayComponent\n} from '../../company-information/company-info-display/company-info-display.component';\n\n@NgModule({\n  declarations: [\n    PaymentFormComponent,\n    PaymentListComponent,\n    PaymentComponent,\n    PaymentReceiptComponent,\n    PaymentFormPageComponent,\n    PaymentMethodTypeBadgeComponent,\n    PaymentDeleteButtonComponent\n  ],\n    imports: [\n        SharedModule,\n        PaymentRoutingModule,\n        PrintButtonModule,\n        PaymentVoidModule,\n        ColumnSelectorModule,\n        PaymentReceiptEmailButtonComponent,\n        CompanyInfoDisplayComponent\n    ],\n  exports: [PaymentFormComponent, PaymentListComponent, PaymentReceiptEmailButtonComponent]\n})\nexport class PaymentModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n  CreateInvoiceFromQuotationButtonComponent\n} from './create-invoice-from-quotation-button/create-invoice-from-quotation-button.component';\nimport {MatButtonModule} from \"@angular/material/button\";\nimport {MaterialModule} from 'ngx-techlify-core';\n\n\n@NgModule({\n  declarations: [\n    CreateInvoiceFromQuotationButtonComponent\n  ],\n  exports: [\n    CreateInvoiceFromQuotationButtonComponent\n  ],\n  imports: [\n    CommonModule,\n    MatButtonModule,\n    MaterialModule\n  ]\n})\nexport class CreateInvoiceFromQuotationButtonModule { }\n","import {NgModule} from '@angular/core';\n\nimport {InvoiceRoutingModule} from './invoice-routing.module';\nimport {InvoiceComponent} from './invoice/invoice.component';\nimport {InvoiceFormPageComponent} from './invoice-form-page/invoice-form-page.component';\nimport {InvoiceFormModule} from './invoice-form/invoice-form.module';\nimport {ColumnSelectorModule, CompanyInfoDisplayComponent} from 'ngx-techlify-core';\nimport {InvoiceStatusSelectorModule} from './invoice-status-selector/invoice-status-selector.module';\nimport {InvoiceReceiptPageComponent} from './invoice-receipt-page/invoice-receipt-page.component';\nimport {InvoiceDeleteButtonComponent} from './invoice-delete-button/invoice-delete-button.component';\nimport {InvoiceWidgetsModule} from './invoice-widgets/invoice-widgets.module';\nimport {InvoiceViewPageComponent} from './invoice-view-page/invoice-view-page.component';\nimport {InvoiceInformationCardComponent} from './invoice-information-card/invoice-information-card.component';\nimport {InvoiceLineItemsTableComponent} from './invoice-line-items-table/invoice-line-items-table.component';\nimport {\n  InvoiceReceiptEmailButtonComponent\n} from './invoice-receipt-email-button/invoice-receipt-email-button.component';\nimport {InvoiceMultiUpdateFormComponent} from './invoice-multi-update-form/invoice-multi-update-form.component';\nimport {PrintButtonModule, SharedModule} from '../../@shared';\nimport {PaymentModule} from '../payment/payment.module';\nimport {NgxPermissionsModule} from 'ngx-permissions';\nimport {\n    CreateInvoiceFromQuotationButtonModule\n} from \"../quotation/create-invoice-from-quotation-button/create-invoice-from-quotation-button.module\";\n\n@NgModule({\n  declarations: [\n    InvoiceComponent,\n    InvoiceFormPageComponent,\n    InvoiceReceiptPageComponent,\n    InvoiceDeleteButtonComponent,\n    InvoiceViewPageComponent\n  ],\n  exports: [\n    InvoiceDeleteButtonComponent,\n    InvoiceInformationCardComponent,\n    InvoiceLineItemsTableComponent\n  ],\n  imports: [\n    SharedModule,\n    InvoiceRoutingModule,\n    InvoiceFormModule,\n    InvoiceStatusSelectorModule,\n    PrintButtonModule,\n    InvoiceWidgetsModule,\n    ColumnSelectorModule,\n    InvoiceInformationCardComponent,\n    InvoiceLineItemsTableComponent,\n    InvoiceReceiptEmailButtonComponent,\n    InvoiceMultiUpdateFormComponent,\n    PaymentModule,\n    CompanyInfoDisplayComponent,\n    CreateInvoiceFromQuotationButtonModule,\n  ]\n})\nexport class InvoiceModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SharedModule} from '../../@shared';\nimport {CustomerRoutingModule} from './customer-routing.module';\nimport {CustomersListComponent} from './customers-list/customers-list.component';\nimport {\n  TechlifyCustomerTypeMultiSelectModule\n} from './techlify-customer-type-multi-select/techlify-customer-type-multi-select.module';\nimport {CustomerFormModule} from './customer-form/customer-form.module';\nimport {ColumnSelectorModule, MaterialModule, SearchableSelectorModule, TimelineFilterModule} from 'ngx-techlify-core';\nimport {CustomerViewComponent} from './customer-view/customer-view.component';\nimport {CustomerInformationCardComponent} from './customer-information-card/customer-information-card.component';\nimport {CustomerPhonesComponent} from './customer-phones/customer-phones.component';\nimport {CustomerFormButtonComponent} from './customer-form-button/customer-form-button.component';\nimport {NgxPermissionsAllowStubDirective, NgxPermissionsRestrictStubDirective} from 'ngx-permissions';\nimport {InvoiceModule} from '../invoice/invoice.module';\nimport {PaymentModule} from '../payment/payment.module';\nimport {InvoiceListPageComponent} from \"../invoice\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        SharedModule,\n        CustomerRoutingModule,\n        TechlifyCustomerTypeMultiSelectModule,\n        CustomerFormModule,\n        TimelineFilterModule,\n        SearchableSelectorModule,\n        MaterialModule,\n        ColumnSelectorModule,\n        CustomerInformationCardComponent,\n        CustomerPhonesComponent,\n        InvoiceModule,\n        PaymentModule,\n        CustomerFormButtonComponent,\n        NgxPermissionsAllowStubDirective,\n        NgxPermissionsRestrictStubDirective,\n        InvoiceListPageComponent,\n    ],\n\n  exports: [\n    CustomersListComponent,\n  ],\n  declarations: [\n    CustomersListComponent,\n    CustomerViewComponent\n  ]\n})\nexport class CustomerModule {\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes = [\n  {\n    path: 'fixed-assets',\n    loadChildren: () =>\n      import('./fixed-assets/fixed-assets.module').then(\n        (mod) => mod.FixedAssetsModule\n      )\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class AccountingPlusRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AccountingPlusRoutingModule } from './accounting-plus-routing.module';\n\n\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule,\n    AccountingPlusRoutingModule\n  ]\n})\nexport class AccountingPlusModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FixedAssetService extends TechlifyService {\n  constructor(httpService: HttpService) {\n    super(httpService, 'accounting-plus/fixed-assets');\n  }\n\n  /**\n   * Get the fixed assets summary.\n   *\n   * @param params\n   */\n  summary(params?: any): Observable<any> {\n    return this.http.get('api/accounting-plus/fixed-assets-summary', {\n      params\n    });\n  }\n\n  multiUpdate(data: any, params?: any): Observable<any> {\n    return this.http.put('api/accounting-plus/fixed-assets-multi-update', data, { params });\n  }\n\n  export(params?: any) {\n    return this.http.get('api/accounting-plus/fixed-assets/export', { params });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {HttpService, TechlifyService} from \"ngx-techlify-core\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LocationService extends TechlifyService {\n\n  constructor(\n    httpService: HttpService\n  ) {\n    super(httpService, 'locations');\n  }\n}\n","import { Component, EventEmitter, Inject, Output } from '@angular/core';\nimport { MatError, MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatButton } from \"@angular/material/button\";\nimport { FormValidatorService, TechlifyFormComponent } from \"ngx-techlify-core\";\nimport { FormBuilder, ReactiveFormsModule, Validators } from \"@angular/forms\";\nimport { NgIf } from \"@angular/common\";\nimport { LocationService } from \"../location.service\";\nimport { MAT_DIALOG_DATA, MatDialogRef } from \"@angular/material/dialog\";\n\n@Component({\n  selector: 'app-location-form',\n  standalone: true,\n  imports: [\n    MatFormField,\n    MatInput,\n    MatButton,\n    MatLabel,\n    ReactiveFormsModule,\n    MatError,\n    NgIf\n  ],\n  templateUrl: './location-form.component.html',\n  styleUrl: './location-form.component.scss'\n})\nexport class LocationFormComponent extends TechlifyFormComponent {\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n  @Output() cancelled: EventEmitter<any> = new EventEmitter<any>();\n\n  isSaving!: boolean;\n  constructor(\n    formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder,\n    private locationService: LocationService,\n    public override dialogRef: MatDialogRef<LocationFormComponent>,\n    @Inject(MAT_DIALOG_DATA) public data: any,\n  ) {\n    super(formValidatorService);\n\n    this.errorMessages = {\n      title: {\n        required: 'The title field is required.'\n      },\n      address: {\n        required: 'The address field is required.'\n      }\n    }\n\n    this.form = this.formBuilder.group({\n      title: ['', Validators.required],\n      address: ['', Validators.required],\n      description: ['']\n    });\n  }\n\n  save() {\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please check the form for errors.', 'error');\n      return;\n    }\n\n    const data: any = { ...this.form.value };\n    this.isSaving = true;\n    this.locationService.store(data).subscribe({\n      next: (response: any) => {\n        this.isSaving = false;\n        this.dialogRef.close(response);\n        this.saved.emit(response?.item);\n        this.alertService.addAlert('The location saved successfully', 'success');\n      },\n      error: () => {\n        this.isSaving = false;\n      }\n    })\n  }\n\n  onCancel() {\n    this.cancelled.emit();\n    this.dialogRef.close();\n  }\n}\n","<form\n  (submit)=\"save()\"\n  class=\"d-flex flex-column justify-content-start gap-1 p-3\"\n  [formGroup]=\"form\"\n>\n  <h3>Add Location</h3>\n\n  <mat-form-field>\n    <mat-label>Title</mat-label>\n    <input formControlName=\"title\" type=\"text\" matInput placeholder=\"Title\">\n    <mat-error *ngIf=\"isFieldValid('title')\">{{ getErrorMessage('title') }}</mat-error>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Address</mat-label>\n    <input formControlName=\"address\" type=\"text\" matInput placeholder=\"Address\">\n    <mat-error *ngIf=\"isFieldValid('address')\">{{ getErrorMessage('address') }}</mat-error>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Description</mat-label>\n    <textarea formControlName=\"description\" matInput placeholder=\"Description\"></textarea>\n  </mat-form-field>\n\n  <div class=\"d-flex justify-content-end align-items-center gap-2\">\n    <button\n      [disabled]=\"isSaving\"\n      mat-raised-button\n      color=\"primary\"\n      type=\"submit\"\n    >\n      Save\n    </button>\n    <button\n      [disabled]=\"isSaving\"\n      mat-flat-button\n      type=\"button\"\n      (click)=\"onCancel()\"\n    >\n      Cancel\n    </button>\n  </div>\n</form>\n","import {Component, forwardRef, Input} from '@angular/core';\nimport {MatError, MatFormField, MatHint, MatLabel} from \"@angular/material/form-field\";\nimport {NgIf} from \"@angular/common\";\nimport {SearchableSelectorModule} from \"ngx-techlify-core\";\nimport {ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {LocationFormComponent} from \"../location-form/location-form.component\";\n\n@Component({\n  selector: 'app-asset-location-selector',\n  standalone: true,\n  imports: [\n    MatError,\n    MatFormField,\n    MatLabel,\n    NgIf,\n    SearchableSelectorModule,\n    FormsModule,\n    MatHint,\n  ],\n  templateUrl: './asset-location-selector.component.html',\n  styleUrl: './asset-location-selector.component.scss',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => AssetLocationSelectorComponent),\n      multi: true\n    }\n  ]\n})\nexport class AssetLocationSelectorComponent implements ControlValueAccessor {\n  @Input() required: boolean = false;\n  @Input() label = 'Location';\n  @Input() perPage: number = 25;\n  @Input() asset!: any;\n  @Input() multiple: boolean = false;\n  @Input() showAdd = false;\n  @Input() hint!: string;\n\n  value: any;\n  protected readonly LocationFormComponent = LocationFormComponent;\n\n  onChange: any = () => {};\n\n  onTouch: any = () => {};\n\n  writeValue(value: any): void {\n    this.value = value;\n    this.onChange(value);\n    this.onTouch(value);\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n}\n","<mat-form-field appearance=\"fill\" class=\"w-100\">\n  <mat-label>{{ label }}</mat-label>\n  <app-searchable-selector\n    apiUrl=\"api/locations\"\n    titleField=\"title\"\n    sortBy=\"title|asc\"\n    [required]=\"required\"\n    [(ngModel)]=\"value\"\n    #locationSelector=\"ngModel\"\n    name=\"locationSelector\"\n    (ngModelChange)=\"onChange($event)\"\n    [perPage]=\"perPage\"\n    [enableSearch]=\"true\"\n    [ngModelOptions]=\"{standalone: true}\"\n    [multiple]=\"multiple\"\n    [add]=\"showAdd\"\n    [itemComponent]=\"LocationFormComponent\"\n  >\n  </app-searchable-selector>\n  <mat-error *ngIf=\"locationSelector.invalid && locationSelector.touched\">\n    The {{ label }} field is required.\n  </mat-error>\n  <mat-hint *ngIf=\"hint\">{{ hint }}</mat-hint>\n</mat-form-field>\n","import { Injectable } from '@angular/core';\nimport {HttpService, TechlifyService} from \"ngx-techlify-core\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AssetLocationHistoryService extends TechlifyService {\n\n  constructor(httpService: HttpService) {\n    super(httpService, 'accounting-plus/asset-location-history');\n  }\n}\n","import {Injectable} from '@angular/core';\nimport {HttpService, TechlifyService} from 'ngx-techlify-core';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AssetLocationHistoryBatchService extends TechlifyService {\n\n  constructor(protected httpService: HttpService) {\n    super(httpService, 'accounting-plus/asset-location-history-batch');\n  }\n\n  override update(model: any, params?: any): Observable<any> {\n    return this.httpService.put('api/accounting-plus/asset-location-history-batch', model, {params});\n  }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n  AlertService,\n  FormValidatorService,\n  SearchableSelectorModule,\n  TechlifyFormComponent\n} from \"ngx-techlify-core\";\nimport { FormBuilder, ReactiveFormsModule, Validators } from \"@angular/forms\";\nimport { AssetLocationSelectorComponent } from \"../asset-location-selector/asset-location-selector.component\";\nimport { MatFormField, MatHint, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from \"@angular/material/datepicker\";\nimport { MatButton } from \"@angular/material/button\";\nimport { AssetLocationHistoryService } from \"../asset-location-history.service\";\nimport moment from \"moment/moment\";\nimport { AssetLocationHistoryBatchService } from '../asset-location-history-batch.service';\n\n@Component({\n  selector: 'app-asset-location-form',\n  standalone: true,\n  imports: [\n    ReactiveFormsModule,\n    AssetLocationSelectorComponent,\n    MatFormField,\n    MatLabel,\n    SearchableSelectorModule,\n    MatInput,\n    MatDatepickerInput,\n    MatDatepicker,\n    MatDatepickerToggle,\n    MatButton,\n    MatHint\n  ],\n  templateUrl: './asset-location-form.component.html',\n  styleUrl: './asset-location-form.component.scss'\n})\nexport class AssetLocationFormComponent extends TechlifyFormComponent implements OnInit {\n  @Input() assetLocation!: any;\n  @Input() assetId!: any;\n  @Input() assetIds!: number[];\n  @Input() locationId!: number;\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n  @Output() cancelled: EventEmitter<any> = new EventEmitter<any>();\n  isSaving!: boolean;\n\n  constructor(\n    formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder,\n    protected override service: AssetLocationHistoryService,\n    private batchService: AssetLocationHistoryBatchService\n  ) {\n    super(formValidatorService);\n\n    this.form = this.formBuilder.group({\n      id: [''],\n      asset_id: ['', Validators.required],\n      location_id: ['', Validators.required],\n      arrived_at: [''],\n      details: ['']\n    });\n  }\n\n  ngOnInit(): void {\n    if (this.assetLocation) {\n      const data: any = { ...this.assetLocation };\n      if (data?.arrived_at) {\n        data.arrived_at = new Date(data.arrived_at);\n      }\n      this.form.patchValue(data);\n    }\n    if (this.assetId) {\n      this.form.get('asset_id')?.setValue(this.assetId);\n    }\n    if (this.locationId) {\n      this.form.get('location_id')?.setValue(this.locationId);\n    }\n\n    // Make asset_id required only if assetIds not passed\n    const assetIdControl = this.form.get('asset_id');\n    if (this.assetIds && this.assetIds.length > 0) {\n      assetIdControl?.clearValidators();\n    } else {\n      assetIdControl?.setValidators([Validators.required]);\n    }\n    assetIdControl?.updateValueAndValidity();\n  }\n\n  save() {\n    this.form.markAllAsTouched();\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please check the form for errors.', 'error');\n      return;\n    }\n\n    let data: any = { ...this.form.value };\n    if (data?.arrived_at) {\n      data.arrived_at = moment(data.arrived_at).format('YYYY-MM-DD');\n    }\n    // If asset ids set then send request to batch service\n    if (this.assetIds) {\n      this.batchUpdate(data);\n    } else {\n      this.createOrUpdate(data);\n    }\n  }\n\n  private createOrUpdate(data: any) {\n    const params: any = {\n      with: 'location,creator'\n    };\n    this.isSaving = true;\n    let request = this.service.store(data, params);\n    if (this.assetLocation?.id) {\n      request = this.service.update(data, params);\n    }\n    request.subscribe({\n      next: (response: any) => {\n        this.isSaving = false;\n        this.alertService.addAlert('Asset Location update saved for the asset.', 'success');\n        this.saved.emit(response?.item);\n      },\n      error: () => (this.isSaving = false)\n    });\n  }\n\n  private batchUpdate(data: any) {\n    const batchData: any = {\n      asset_ids: this.assetIds,\n      ...data\n    }\n    this.isSaving = true;\n    this.batchService.update(batchData).subscribe({\n      next: (response: any) => {\n        this.isSaving = false;\n        this.saved.emit(response);\n        this.alertService.addAlert('Asset Location update saved for the assets.', 'success');\n      },\n      error: () => (this.isSaving = false)\n    });\n  }\n}\n","<form\n  [formGroup]=\"form\" class=\"d-flex flex-column justify-content-start gap-1\"\n  (submit)=\"save()\"\n>\n\n  <app-asset-location-selector\n    formControlName=\"location_id\"\n    [required]=\"true\"\n    [showAdd]=\"true\"\n  ></app-asset-location-selector>\n\n  <mat-form-field>\n    <mat-label>Arrived At</mat-label>\n    <input matInput [matDatepicker]=\"picker\" formControlName=\"arrived_at\" (focus)=\"picker.open()\">\n    <mat-hint>When did/will this asset reach the new location</mat-hint>\n    <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n    <mat-datepicker #picker></mat-datepicker>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Details</mat-label>\n    <textarea matInput formControlName=\"details\"></textarea>\n  </mat-form-field>\n\n  <div class=\"d-flex justify-content-end align-items-center gap-2\">\n    <button\n      [disabled]=\"isSaving\"\n      type=\"submit\"\n      mat-raised-button\n      color=\"primary\"\n    >\n      Save\n    </button>\n\n    <button\n      [disabled]=\"isSaving\"\n      type=\"button\"\n      mat-flat-button\n      (click)=\"cancelled.emit()\"\n    >\n      Cancel\n    </button>\n  </div>\n\n</form>\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { SelectionModel } from \"@angular/cdk/collections\";\nimport { MatError, MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { NgIf } from \"@angular/common\";\nimport { FormBuilder, ReactiveFormsModule, Validators } from \"@angular/forms\";\nimport {\n  AlertService,\n  FormValidatorService,\n  SearchableSelectorModule,\n  TechlifyFormComponent\n} from \"ngx-techlify-core\";\nimport { FixedAssetService } from \"../fixed-asset.service\";\nimport { SharedModule } from '../../../@shared';\nimport { AssetLocationSelectorComponent } from '../locations/asset-location-selector/asset-location-selector.component';\nimport { AssetLocationFormComponent } from '../locations/asset-location-form/asset-location-form.component';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Component({\n  selector: 'app-fixed-asset-batch-update-form',\n  standalone: true,\n  imports: [\n    MatError,\n    MatFormField,\n    MatLabel,\n    NgIf,\n    ReactiveFormsModule,\n    SearchableSelectorModule,\n    SharedModule,\n    AssetLocationSelectorComponent,\n    AssetLocationFormComponent\n  ],\n  templateUrl: './fixed-asset-batch-update-form.component.html',\n  styleUrl: './fixed-asset-batch-update-form.component.scss'\n})\nexport class FixedAssetBatchUpdateFormComponent extends TechlifyFormComponent implements OnInit {\n  @Input() selection = new SelectionModel<any>(true, []);\n  @Output() saved: EventEmitter<any> = new EventEmitter();\n  @ViewChild('assetLocationFormTemplate') assetLocationForm!: TemplateRef<any>;\n\n  constructor(\n    formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder,\n    private fixedAssetService: FixedAssetService,\n    protected matDialog: MatDialog\n  ) {\n    super(formValidatorService);\n\n    this.form = this.formBuilder.group({\n      location_id: [''],\n      type_id: [''],\n      purchase_price: [''],\n      salvage_value: [''],\n      depreciation_starts_on: [''],\n      depreciation_method_id: [''],\n      useful_life: [''],\n      asset_account_id: [''],\n      depreciation_expense_account_id: [''],\n      accumulated_depreciation_account_id: ['']\n    });\n  }\n\n  ngOnInit(): void {\n    this.form.get('location_id')?.valueChanges.subscribe((value: number) => {\n      this.matDialog.open(this.assetLocationForm, { data: { locationId: value }, width: '500px' });\n    });\n  }\n\n  save() {\n    const data: any = {\n      ...this.form.value,\n      ids: this.selection.selected.map((model: any) => model.id),\n    }\n    this.isWorking = true;\n    this.fixedAssetService.multiUpdate(data).subscribe({\n      next: () => {\n        this.isWorking = false;\n        this.alertService.addAlert('Fixed assets updated successfully.', 'success');\n        this.selection.clear();\n        this.saved.emit();\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  get assetIds(): number[] {\n    return this.selection.selected.map((model: any) => parseInt(model.id));\n  }\n}\n","<form [formGroup]=\"form\" class=\"d-flex flex-column gap-2\" (submit)=\"save()\">\n  <div class=\"d-flex flex-column gap-0\">\n    <strong>Multi Update Form</strong>\n    <small>{{ selection.selected.length }} records selected</small>\n  </div>\n\n  <app-asset-location-selector\n    formControlName=\"location_id\"\n    [required]=\"false\"\n    [showAdd]=\"true\"\n    hint=\"Move asset to this location\"\n  ></app-asset-location-selector>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Type</mat-label>\n    <app-searchable-selector\n      formControlName=\"type_id\"\n      [enableSearch]=\"false\"\n      apiUrl=\"api/accounting-plus/fixed-asset-types\"\n    ></app-searchable-selector>\n    <mat-error *ngIf=\"isFieldValid('type_id')\">\n      {{ getErrorMessage('type_id') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Purchase Price</mat-label>\n    <input\n      type=\"number\"\n      step=\"any\"\n      matInput\n      placeholder=\"Purchase Price\"\n      formControlName=\"purchase_price\"\n    />\n    <mat-error *ngIf=\"isFieldValid('purchase_price')\">\n      {{ getErrorMessage('purchase_price') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Salvage Value</mat-label>\n    <input\n      type=\"number\"\n      step=\"any\"\n      matInput\n      placeholder=\"Salvage Value\"\n      formControlName=\"salvage_value\"\n    />\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Depreciation Start Date</mat-label>\n    <input\n      placeholder=\"Depreciation Start Date\"\n      formControlName=\"depreciation_starts_on\"\n      matInput\n      [matDatepicker]=\"picker\"\n      (focus)=\"picker.open()\"\n    />\n    <mat-datepicker #picker></mat-datepicker>\n    <mat-error *ngIf=\"isFieldValid('depreciation_starts_on')\">\n      {{ getErrorMessage('depreciation_starts_on') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Depreciation Method</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/accounting-plus/depreciation-methods\"\n      [enableSearch]=\"false\"\n      formControlName=\"depreciation_method_id\"\n    ></app-searchable-selector>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Useful Life</mat-label>\n    <input\n      type=\"number\"\n      matInput\n      placeholder=\"Useful Life\"\n      formControlName=\"useful_life\"\n    />\n    <mat-hint>In Years</mat-hint>\n    <mat-error *ngIf=\"isFieldValid('useful_life')\">\n      {{ getErrorMessage('useful_life') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Asset Account</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/accounts\"\n      formControlName=\"asset_account_id\"\n    ></app-searchable-selector>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Depreciation Expense Account</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/accounts\"\n      formControlName=\"depreciation_expense_account_id\"\n    ></app-searchable-selector>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Accumulated Depreciation Account</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/accounts\"\n      formControlName=\"accumulated_depreciation_account_id\"\n    ></app-searchable-selector>\n  </mat-form-field>\n\n  <div class=\"d-flex justify-content-end align-content-center gap-2\">\n    <button [disabled]=\"isWorking\" type=\"submit\" mat-raised-button color=\"primary\">Update</button>\n    <button [disabled]=\"isWorking\" type=\"button\" mat-flat-button (click)=\"selection.clear()\">Cancel</button>\n  </div>\n</form>\n\n<ng-template #assetLocationFormTemplate let-data>\n  <div class=\"d-flex flex-column justify-content-start\">\n    <h3 class=\"mb-0\" mat-dialog-title>Set Location for {{ selection.selected.length }} Assets</h3>\n    <app-asset-location-form mat-dialog-content [assetIds]=\"assetIds\" [locationId]=\"data?.locationId\"\n                             (saved)=\"matDialog.closeAll()\" (cancelled)=\"matDialog.closeAll()\">\n    </app-asset-location-form>\n  </div>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Sort } from '@angular/material/sort';\nimport {\n  RequestHelperService,\n  TechlifyListComponent\n} from 'ngx-techlify-core';\nimport { FormGroup } from '@angular/forms';\nimport { FixedAssetService } from '../fixed-asset.service';\nimport {SelectionChange, SelectionModel} from \"@angular/cdk/collections\";\n\n@Component({\n  selector: 'app-fixed-assets-table',\n  templateUrl: './fixed-assets-table.component.html',\n  styleUrls: ['./fixed-assets-table.component.scss']\n})\nexport class FixedAssetsTableComponent extends TechlifyListComponent implements OnInit {\n  @Input() override filterForm: FormGroup = new FormGroup({});\n  @Input() columns: string[] = [];\n\n  displayedColumns: string[] = [\n    'no',\n    'type_id',\n    'name',\n    'serial_number',\n    'purchase_price',\n    'salvage_value',\n    'depreciation_starts_on',\n    'asset_account_id',\n    'depreciation_expense_account_id',\n    'actions',\n    'select'\n  ];\n  selection = new SelectionModel<any>(true, []);\n\n  constructor(\n    private fixedAssetService: FixedAssetService\n  ) {\n    super();\n    this.lastPage = 0;\n  }\n\n  override loadData() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value)\n    };\n    params.page = this.page;\n    params.perPage = this.perPage;\n    params.with =\n      'assetAccount,depreciationExpenseAccount,accumulatedDepreciationAccount,depreciationMethod,type';\n\n    this.isWorking = true;\n    this.fixedAssetService.index(params).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        this.models = this.models?.concat(response?.data);\n        this.lastPage = response?.last_page;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  onSortChange(sort: Sort) {\n    let { active, direction } = sort;\n    if (!active) active = 'created_at';\n    if (!direction) {\n      active = 'created_at';\n      direction = 'desc';\n    }\n    this.filterForm.get('sort_by')?.setValue(active + '|' + direction);\n  }\n\n  ngOnInit(): void {\n    // Set columns\n    if (this.columns?.length > 0) {\n      this.displayedColumns = this.displayedColumns.filter((col: string) =>\n        this.columns.includes(col)\n      );\n    }\n\n    this.selection.changed.subscribe({\n      next: (selectionChange: SelectionChange<any>) => {\n        if (selectionChange.source.selected.length > 0) {\n          const actionIndex = this.displayedColumns.findIndex((col: string) => col === 'actions');\n          if (actionIndex > -1) {\n            this.displayedColumns.splice(actionIndex, 1);\n          }\n\n          const depreciationIndex = this.displayedColumns.findIndex((col: string) => col === 'depreciation_expense_account_id');\n          if (depreciationIndex > -1) {\n            this.displayedColumns.splice(depreciationIndex, 1);\n          }\n        } else {\n          const actionIndex = this.displayedColumns.findIndex((col: string) => col === 'actions');\n          if (actionIndex == -1) {\n            this.displayedColumns.splice(this.displayedColumns.length - 1, 0, 'actions');\n          }\n          const depreciationIndex = this.displayedColumns.findIndex((col: string) => col === 'depreciation_expense_account_id');\n          if (depreciationIndex > -1) {\n            this.displayedColumns.splice(this.displayedColumns.length - 2, 0, 'depreciation_expense_account_id');\n          }\n        }\n      }\n    });\n  }\n\n  onCheckSheetClick(event: MouseEvent) {\n    event.stopPropagation();\n  }\n\n  /** Whether the number of selected elements matches the total number of rows. */\n  isAllRowsSelected() {\n    const numSelected = this.selection.selected.length;\n    const numRows = this.models.length;\n    return numSelected === numRows;\n  }\n\n  toggleAllRows() {\n    if (this.isAllRowsSelected()) {\n      this.selection.clear();\n      return;\n    }\n\n    this.selection.select(...this.models);\n  }\n\n  checkboxLabel(row?: any): string {\n    if (!row) {\n      return `${this.isAllRowsSelected() ? 'deselect' : 'select'} all`;\n    }\n    return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row ${row.position + 1}`;\n  }\n}\n","<div class=\"d-flex justify-content-start align-items-start gap-3\">\n  <div [style.width]=\"selection.isEmpty() ? '100%' : '80%'\">\n    <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Fixed Assets\" infiniteScroll\n      [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort\n      (matSortChange)=\"onSortChange($event)\" matSortActive=\"created_at\" matSortDirection=\"desc\">\n      <!-- # Column -->\n      <ng-container matColumnDef=\"no\">\n        <th mat-header-cell *matHeaderCellDef>#</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n      </ng-container>\n\n      <!-- Type Column -->\n      <ng-container matColumnDef=\"type_id\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"type_id\">Type</th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.type?.title }}</td>\n      </ng-container>\n\n      <!-- Name Column -->\n      <ng-container matColumnDef=\"name\">\n        <th mat-header-cell mat-sort-header *matHeaderCellDef style=\"max-width: 300px\">\n          Name\n        </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-1\">{{ element?.name }}</p>\n          <small class=\"text-secondary\" [innerHTML]=\"element?.description\"></small>\n        </td>\n      </ng-container>\n\n      <!-- Serial Number Column -->\n      <ng-container matColumnDef=\"serial_number\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>Serial Number</th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.serial_number }}</td>\n      </ng-container>\n\n      <!-- Purchase Price Column -->\n      <ng-container matColumnDef=\"purchase_price\">\n        <th mat-header-cell mat-sort-header *matHeaderCellDef>Purchase Price</th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.purchase_price | currency }}\n        </td>\n      </ng-container>\n\n      <!-- Salvage Value Column -->\n      <ng-container matColumnDef=\"salvage_value\">\n        <th mat-header-cell mat-sort-header *matHeaderCellDef>Salvage Value</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-1\">\n            {{ element?.salvage_value | currency }}\n          </p>\n          <small class=\"text-secondary\" *ngIf=\"element?.useful_life\">\n            Useful Life of {{ element?.useful_life }} years.\n          </small>\n        </td>\n      </ng-container>\n\n      <!-- Depreciation Start Date Column -->\n      <ng-container matColumnDef=\"depreciation_starts_on\">\n        <th mat-header-cell mat-sort-header *matHeaderCellDef>\n          Depreciation Start Date\n        </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-1\">\n            {{ element?.depreciation_starts_on | date }}\n          </p>\n          <small class=\"text-secondary\" *ngIf=\"element?.depreciation_method?.title\">\n            {{ element?.depreciation_method?.title }}\n          </small>\n        </td>\n      </ng-container>\n\n      <!-- Asset Account Column -->\n      <ng-container matColumnDef=\"asset_account_id\">\n        <th mat-header-cell mat-sort-header *matHeaderCellDef>Asset Account</th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.asset_account?.title }}\n        </td>\n      </ng-container>\n\n      <!-- Depreciation Expense Account Column -->\n      <ng-container matColumnDef=\"depreciation_expense_account_id\">\n        <th mat-header-cell mat-sort-header *matHeaderCellDef>\n          Depreciation Expense Account\n        </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-1\">\n            {{ element?.depreciation_expense_account?.title }}\n          </p>\n          <small *ngIf=\"element?.accumulated_depreciation_account\" class=\"text-secondary\">\n            Accumulated Depreciation Account:\n            {{ element?.accumulated_depreciation_account?.title }}\n          </small>\n        </td>\n      </ng-container>\n\n      <!-- Actions Column -->\n      <ng-container matColumnDef=\"actions\">\n        <th mat-header-cell *matHeaderCellDef>Actions</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <div class=\"d-flex gap-2 align-items-start justify-content-center\">\n            <mat-icon class=\"cursor-pointer text-secondary\" [routerLink]=\"['/fixed-assets', element?.id, 'edit']\"\n              *ngxPermissionsOnly=\"['fixed_asset.update']\">\n              edit\n            </mat-icon>\n            <mat-icon class=\"cursor-pointer text-secondary\" [routerLink]=\"['/fixed-assets', element?.id, 'read']\"\n              *ngxPermissionsOnly=\"['fixed_asset.read']\">\n              visibility\n            </mat-icon>\n\n          </div>\n        </td>\n      </ng-container>\n\n      <!-- Checkbox Column -->\n      <ng-container matColumnDef=\"select\">\n        <th mat-header-cell *matHeaderCellDef>\n          <mat-checkbox (change)=\"$event ? toggleAllRows() : null\"\n            [checked]=\"selection.hasValue() && isAllRowsSelected()\"\n            [indeterminate]=\"selection.hasValue() && !isAllRowsSelected()\" [aria-label]=\"checkboxLabel()\">\n          </mat-checkbox>\n        </th>\n        <td mat-cell *matCellDef=\"let row\">\n          <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(row) : null\"\n            [checked]=\"selection.isSelected(row)\" [aria-label]=\"checkboxLabel(row)\">\n          </mat-checkbox>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr class=\"cursor-pointer\" mat-row *matRowDef=\"let row; columns: displayedColumns\"\n        [routerLink]=\"['/fixed-assets', row?.id, 'read']\"></tr>\n    </table>\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n  </div>\n  <div class=\"p-2\" style=\"width: 20%\" *ngIf=\"selection.selected.length > 0\">\n    <app-fixed-asset-batch-update-form [selection]=\"selection\" (saved)=\"reload()\"></app-fixed-asset-batch-update-form>\n  </div>\n</div>","import {Component} from '@angular/core';\nimport {FormBuilder, FormGroup} from '@angular/forms';\nimport {RequestHelperService} from 'ngx-techlify-core';\nimport {FixedAssetService} from '../fixed-asset.service';\n\n@Component({\n  selector: 'app-fixed-assets-list-page',\n  templateUrl: './fixed-assets-list-page.component.html',\n  styleUrls: ['./fixed-assets-list-page.component.scss']\n})\nexport class FixedAssetsListPageComponent {\n  filterForm: FormGroup;\n  filterConfig = {\n    search: {\n      placeholder: 'Search Asset Name, Serial No. Description, Account, etc.'\n    }\n  };\n  isExporting = false;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private requestHelperService: RequestHelperService,\n    private service: FixedAssetService\n  ) {\n    this.filterForm = this.formBuilder.group({\n      search: [''],\n      fixed_asset_type_ids: [''],\n      asset_account_ids: [''],\n      depreciation_expense_account_ids: [''],\n      depreciation_method_ids: [''],\n      sort_by: ['created_at|desc']\n    });\n  }\n\n  export() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value),\n      perPage: 50000,\n    }\n    this.isExporting = true;\n    this.service.export(params).subscribe({\n      next: (response: any) => {\n        this.isExporting = false;\n        window.open(response?.item?.file_link, '_blank');\n      },\n      error: () => (this.isExporting = false)\n    });\n  }\n}\n","<mat-card class=\"mb-3\">\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n    <div class=\"d-flex justify-content-center align-items-center gap-2\">\n      <h3 class=\"mb-0\">Assets</h3>\n      <mat-icon\n        class=\"cursor-pointer\"\n        routerLink=\"/fixed-assets/create\"\n        *ngxPermissionsOnly=\"['fixed_asset.create']\"\n      >\n        add\n      </mat-icon>\n      <i class=\"fa-solid fa-file-excel cursor-pointer d-print-none\" (click)=\"export()\"></i>\n    </div>\n    <app-techlify-filter\n      [filterForm]=\"filterForm\"\n      [filterConfig]=\"filterConfig\"\n      (filterUpdated)=\"fixedAssetsTableComponent.reload()\"\n    ></app-techlify-filter>\n  </mat-card-content>\n</mat-card>\n\n<mat-card>\n  <mat-card-content class=\"p-0\">\n    <app-fixed-assets-table\n      [filterForm]=\"filterForm\"\n      #fixedAssetsTableComponent\n    ></app-fixed-assets-table>\n  </mat-card-content>\n</mat-card>\n","export enum DepreciationMethod {\n  STRAIGHT_LINE = 1\n}\n","export enum FixedAssetTypeEnum {\n  TYPE_LAND = 1,\n  TYPE_MACHINERY = 2,\n  TYPE_EQUIPMENT = 3\n}\n","import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport { Editor, Toolbar } from 'ngx-editor';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { AlertService, FormValidatorService } from 'ngx-techlify-core';\nimport { DepreciationMethod } from '../../depreciation-methods/depreciation-method.enum';\nimport { FixedAssetService } from '../fixed-asset.service';\nimport {FixedAssetTypeEnum} from \"../fixed-asset-type.enum\";\nimport {Observable} from \"rxjs\";\nimport moment from 'moment/moment';\n\n@Component({\n  selector: 'app-fixed-asset-form',\n  templateUrl: './fixed-asset-form.component.html',\n  styleUrls: ['./fixed-asset-form.component.scss']\n})\nexport class FixedAssetFormComponent implements OnInit, OnDestroy {\n  @Input() fixedAsset: any;\n  @Output() saved = new EventEmitter();\n  @Output() cancelled = new EventEmitter();\n\n  editor: Editor = new Editor();\n  toolbar: Toolbar = [\n    ['bold', 'italic'],\n    ['underline', 'strike'],\n    ['code', 'blockquote']\n  ];\n  form: FormGroup;\n  errorMessages: any = {\n    type_id: {\n      required: 'The type field is required.'\n    },\n    name: {\n      required: 'The name field is required.'\n    },\n    purchase_price: {\n      required: 'The purchase price field is required.'\n    },\n    depreciation_starts_on: {\n      required: 'The depreciation start date field is required.'\n    },\n    useful_life: {\n      required: 'The useful life field is required.'\n    }\n  };\n  isSaving = false;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private formValidatorService: FormValidatorService,\n    private alertService: AlertService,\n    private fixedAssetService: FixedAssetService\n  ) {\n    this.form = this.formBuilder.group({\n      id: [''],\n      type_id: [FixedAssetTypeEnum.TYPE_EQUIPMENT, Validators.required],\n      name: ['', Validators.required],\n      serial_number: [''],\n      description: [''],\n      purchase_price: ['', Validators.required],\n      salvage_value: [''],\n      depreciation_starts_on: [new Date(), Validators.required],\n      depreciation_method_id: [DepreciationMethod.STRAIGHT_LINE],\n      useful_life: [5, Validators.required],\n      asset_account_id: [''],\n      depreciation_expense_account_id: [''],\n      accumulated_depreciation_account_id: ['']\n    });\n  }\n\n  ngOnInit() {\n    if (this.fixedAsset) {\n      const data: any = { ...this.fixedAsset };\n      if (!this.fixedAsset?.description) {\n        data.description = '';\n      }\n      this.form.patchValue(data);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.editor.destroy();\n  }\n\n  isFieldValid(field: string) {\n    return this.formValidatorService.isFieldValid(field, this.form);\n  }\n\n  getErrorMessage(field: string) {\n    return this.formValidatorService.getErrorMessage(\n      field,\n      this.form,\n      this.errorMessages\n    );\n  }\n\n  save() {\n    this.form.markAllAsTouched();\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please check the form for errors.', 'error');\n      return;\n    }\n    this.isSaving = true;\n    const data: any = { ...this.form.value }\n    if (data?.depreciation_starts_on) {\n      data.depreciation_starts_on = moment(data.depreciation_starts_on).format('YYYY-MM-DD');\n    }\n\n    let request: Observable<any> = this.fixedAssetService.store(data);\n    if (this.fixedAsset?.id) {\n      request = this.fixedAssetService.update(data);\n    }\n\n    request.subscribe({\n      next: (response: any) => {\n        this.isSaving = false;\n        this.alertService.addAlert(\n          'Fixed asset saved successfully!',\n          'success'\n        );\n        this.saved.emit(response?.item);\n      },\n      error: () => (this.isSaving = false)\n    });\n  }\n}\n","<form\n  class=\"d-flex flex-row flex-wrap gap-2\"\n  [formGroup]=\"form\"\n  (submit)=\"save()\"\n>\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Name</mat-label>\n    <input type=\"text\" matInput placeholder=\"Name\" formControlName=\"name\" />\n    <mat-error *ngIf=\"isFieldValid('name')\">\n      {{ getErrorMessage('name') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Type</mat-label>\n    <app-searchable-selector\n      formControlName=\"type_id\"\n      [enableSearch]=\"false\"\n      apiUrl=\"api/accounting-plus/fixed-asset-types\"\n    ></app-searchable-selector>\n    <mat-error *ngIf=\"isFieldValid('type_id')\">\n      {{ getErrorMessage('type_id') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Serial No.</mat-label>\n    <input\n      type=\"text\"\n      matInput\n      placeholder=\"Serial No.\"\n      formControlName=\"serial_number\"\n    />\n  </mat-form-field>\n\n  <div style=\"width: calc(100% - 0.5rem)\">\n    <p class=\"mb-1\">Description</p>\n    <div class=\"NgxEditor__Wrapper\">\n      <ngx-editor-menu [editor]=\"editor\" [toolbar]=\"toolbar\"> </ngx-editor-menu>\n      <ngx-editor [editor]=\"editor\" formControlName=\"description\"></ngx-editor>\n    </div>\n  </div>\n\n  <div style=\"width: calc(100% - 0.5rem)\">\n    <strong>Description Details</strong>\n    <mat-divider></mat-divider>\n  </div>\n\n  <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n    <mat-label>Purchase Price</mat-label>\n    <input\n      type=\"number\"\n      step=\"any\"\n      matInput\n      placeholder=\"Purchase Price\"\n      formControlName=\"purchase_price\"\n    />\n    <mat-error *ngIf=\"isFieldValid('purchase_price')\">\n      {{ getErrorMessage('purchase_price') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n    <mat-label>Salvage Value</mat-label>\n    <input\n      type=\"number\"\n      step=\"any\"\n      matInput\n      placeholder=\"Salvage Value\"\n      formControlName=\"salvage_value\"\n    />\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n    <mat-label>Depreciation Start Date</mat-label>\n    <input\n      placeholder=\"Depreciation Start Date\"\n      formControlName=\"depreciation_starts_on\"\n      matInput\n      [matDatepicker]=\"picker\"\n      (focus)=\"picker.open()\"\n    />\n    <mat-datepicker #picker></mat-datepicker>\n    <mat-error *ngIf=\"isFieldValid('depreciation_starts_on')\">\n      {{ getErrorMessage('depreciation_starts_on') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n    <mat-label>Depreciation Method</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/accounting-plus/depreciation-methods\"\n      [enableSearch]=\"false\"\n      formControlName=\"depreciation_method_id\"\n    ></app-searchable-selector>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n    <mat-label>Useful Life</mat-label>\n    <input\n      type=\"number\"\n      matInput\n      placeholder=\"Useful Life\"\n      formControlName=\"useful_life\"\n    />\n    <mat-hint>In Years</mat-hint>\n    <mat-error *ngIf=\"isFieldValid('useful_life')\">\n      {{ getErrorMessage('useful_life') }}\n    </mat-error>\n  </mat-form-field>\n\n  <div style=\"width: calc(100% - 0.5rem)\">\n    <strong>Account Details</strong>\n    <mat-divider></mat-divider>\n  </div>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Asset Account</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/accounts\"\n      formControlName=\"asset_account_id\"\n    ></app-searchable-selector>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Depreciation Expense Account</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/accounts\"\n      formControlName=\"depreciation_expense_account_id\"\n    ></app-searchable-selector>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100% - 0.5rem)\">\n    <mat-label>Accumulated Depreciation Account</mat-label>\n    <app-searchable-selector\n      apiUrl=\"api/accounts\"\n      formControlName=\"accumulated_depreciation_account_id\"\n    ></app-searchable-selector>\n  </mat-form-field>\n\n  <div\n    style=\"width: calc(100% - 0.5rem)\"\n    class=\"d-flex gap-2 justify-content-end\"\n  >\n    <button (click)=\"cancelled.emit()\" [disabled]=\"isSaving\" mat-flat-button>\n      Cancel\n    </button>\n    <button [disabled]=\"isSaving\" mat-raised-button color=\"primary\">\n      Save\n    </button>\n  </div>\n</form>\n","import { Component, OnInit } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { FixedAssetService } from '../fixed-asset.service';\nimport {ActivatedRoute} from \"@angular/router\";\n\n@Component({\n  selector: 'app-fixed-asset-form-page',\n  templateUrl: './fixed-asset-form-page.component.html',\n  styleUrls: ['./fixed-asset-form-page.component.scss']\n})\nexport class FixedAssetFormPageComponent implements OnInit {\n  id!: number;\n  isLoading: boolean = false;\n  fixedAsset: any;\n\n  constructor(\n    private location: Location,\n    private fixedAssetService: FixedAssetService,\n    private activatedRoute: ActivatedRoute\n  ) {\n    this.id = parseInt(this.activatedRoute.snapshot.params['id']);\n  }\n\n  ngOnInit(): void {\n    if (this.id) {\n      this.loadModel();\n    }\n  }\n\n  private loadModel() {\n    this.isLoading = true;\n    this.fixedAssetService.show(this.id).subscribe({\n      next: (response: any) => {\n        this.fixedAsset = response?.item;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n\n  redirectBack() {\n    this.location.back();\n  }\n}\n","<div class=\"d-flex justify-content-center\" *ngIf=\"!isLoading\">\n  <mat-card style=\"width: 50%\">\n    <mat-card-content>\n      <h3>{{ fixedAsset?.id ? 'Edit' : 'Create' }} Fixed Asset</h3>\n      <app-fixed-asset-form\n        [fixedAsset]=\"fixedAsset\"\n        (saved)=\"redirectBack()\"\n        (cancelled)=\"redirectBack()\"\n      ></app-fixed-asset-form>\n    </mat-card-content>\n  </mat-card>\n</div>\n\n<mat-progress-bar *ngIf=\"isLoading\"></mat-progress-bar>\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { FixedAssetService } from '../fixed-asset.service';\n\n@Component({\n  selector: 'app-fixed-assets-dashboard-page',\n  templateUrl: './fixed-assets-dashboard-page.component.html',\n  styleUrls: ['./fixed-assets-dashboard-page.component.scss']\n})\nexport class FixedAssetsDashboardPageComponent implements OnInit {\n  fixedAssetFilterForm: FormGroup;\n  fixedAssetsTableColumns: string[] = [\n    'no',\n    'type_id',\n    'name',\n    'serial_number'\n  ];\n  fixedAssetFilterConfig: any = {\n    search: {\n      placeholder: 'Search Asset Name, Serial No. Description, Account, etc.'\n    }\n  };\n  isLoadingStats: boolean = true;\n  totalFixedAssets!: number;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private fixedAssetService: FixedAssetService\n  ) {\n    this.fixedAssetFilterForm = this.formBuilder.group({\n      search: [''],\n      sort_by: ['created_at|desc']\n    });\n  }\n\n  ngOnInit(): void {\n    this.loadStats();\n  }\n\n  private loadStats() {\n    const params: any = {\n      include: 'total_count'\n    };\n    this.isLoadingStats = true;\n    this.fixedAssetService.summary(params).subscribe({\n      next: (response: any): void => {\n        this.isLoadingStats = false;\n        this.totalFixedAssets = response?.total_count;\n      },\n      error: () => (this.isLoadingStats = false)\n    });\n  }\n}\n","<div class=\"d-flex gap-3\" style=\"height: 100vh\">\n  <!--  Main Content -->\n  <div\n    style=\"width: calc(80% - 1rem)\"\n    class=\"d-flex flex-column align-items-start gap-3\"\n  >\n    <!-- Stats Row -->\n    <mat-card class=\"w-100\">\n      <mat-card-content *ngIf=\"!isLoadingStats\">\n        <h2 class=\"mb-1\">{{ totalFixedAssets }}</h2>\n        <p class=\"mb-0 text-secondary\">Assets</p>\n      </mat-card-content>\n      <mat-progress-bar *ngIf=\"isLoadingStats\" mode=\"indeterminate\"></mat-progress-bar>\n    </mat-card>\n    <!-- Asset List Row -->\n    <div class=\"w-100 d-flex justify-content-start align-items-start gap-3\">\n      <mat-card class=\"p-0\" style=\"width: calc(50% - 1rem)\">\n        <mat-card-content class=\"p-2 mb-0\">\n          <strong>Asset Quick Search</strong>\n        </mat-card-content>\n        <mat-card-content class=\"p-2 mb-0\">\n          <app-techlify-filter\n            [filterForm]=\"fixedAssetFilterForm\"\n            [filterConfig]=\"fixedAssetFilterConfig\"\n            (filterUpdated)=\"fixedAssetsTableComponent.reload()\"\n          ></app-techlify-filter>\n        </mat-card-content>\n\n        <mat-card-content>\n          <app-fixed-assets-table\n            [columns]=\"fixedAssetsTableColumns\"\n            #fixedAssetsTableComponent\n            [filterForm]=\"fixedAssetFilterForm\"\n          ></app-fixed-assets-table>\n        </mat-card-content>\n      </mat-card>\n      <div style=\"width: calc(50%)\"></div>\n    </div>\n  </div>\n  <!-- Left Sidebar -->\n  <div class=\"left-nav-container\" style=\"width: calc(20% - 1rem)\">\n    <div\n      class=\"text-dark d-flex flex-row justify-content-start align-items-center gap-2\"\n    >\n      <mat-icon class=\"material-symbol-outlined\"> campaign </mat-icon>\n      <strong>Assets</strong>\n    </div>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { FixedAssetService } from '../fixed-asset.service';\n\n@Component({\n  selector: 'app-fixed-asset-view-page',\n  templateUrl: './fixed-asset-view-page.component.html',\n  styleUrls: ['./fixed-asset-view-page.component.scss']\n})\nexport class FixedAssetViewPageComponent implements OnInit {\n  selectedTab: string | undefined = 'asset-information';\n\n  id: number;\n  fixedAsset: any;\n  isLoading: boolean = false;\n  tabs: any[] = [\n    {\n      title: 'Asset Information',\n      value: 'asset-information'\n    },\n    {\n      title: 'Documents',\n      value: 'documents'\n    },\n    {\n      title: 'Maintenance',\n      value: 'maintenances'\n    },\n    {\n      title: 'Location History',\n      value: 'locations',\n    },\n    {\n      title: 'Asset Usage',\n      value: 'usage',\n    }\n  ];\n\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private fixedAssetService: FixedAssetService\n  ) {\n    this.id = parseInt(this.activatedRoute.snapshot.params['id']);\n    this.selectedTab =\n      this.activatedRoute.snapshot.firstChild?.routeConfig?.path;\n  }\n\n  ngOnInit(): void {\n    if (this.id) {\n      this.loadModel();\n    }\n  }\n\n  private loadModel() {\n    this.isLoading = true;\n    const params: any = {};\n    this.fixedAssetService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.fixedAsset = response?.item;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n}\n","<ng-container *ngIf=\"fixedAsset\">\n  <div class=\"d-flex flex-row justify-content-start align-items-start gap-3\">\n    <mat-card style=\"width: calc(18% - 1rem)\">\n      <mat-card-content class=\"p-0\">\n        <mat-selection-list [hideSingleSelectionIndicator]=\"true\" [multiple]=\"false\">\n          <mat-list-option\n            [routerLink]=\"tab.value\"\n            *ngFor=\"let tab of tabs\"\n            [value]=\"tab.value\"\n            [selected]=\"tab.value === selectedTab\"\n          >\n            {{ tab.title }}\n          </mat-list-option>\n        </mat-selection-list>\n      </mat-card-content>\n    </mat-card>\n    <div style=\"width: 82%\">\n      <router-outlet></router-outlet>\n    </div>\n  </div>\n</ng-container>\n\n<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { FixedAssetService } from '../fixed-asset.service';\n\n@Component({\n  selector: 'app-fixed-asset-delete-button',\n  templateUrl: './fixed-asset-delete-button.component.html',\n  styleUrls: ['./fixed-asset-delete-button.component.scss']\n})\nexport class FixedAssetDeleteButtonComponent {\n  @Input() fixedAsset: any;\n  @Output() deleted: EventEmitter<any> = new EventEmitter();\n  isDeleting: boolean = false;\n\n  constructor(\n    private matDialog: MatDialog,\n    private fixedAssetService: FixedAssetService\n  ) {}\n\n  showDeleteDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef);\n  }\n\n  deleteModel() {\n    this.isDeleting = true;\n    this.fixedAssetService.delete(this.fixedAsset).subscribe({\n      next: () => {\n        this.isDeleting = false;\n        this.matDialog.closeAll();\n        this.deleted.emit();\n      },\n      error: () => {\n        this.isDeleting = false;\n      }\n    });\n  }\n}\n","<mat-icon\n  class=\"text-secondary cursor-pointer\"\n  (click)=\"showDeleteDialog(deleteModelDialog)\"\n>\n  delete\n</mat-icon>\n\n<ng-template #deleteModelDialog>\n  <h3 mat-dialog-title>Delete Fixed Asset</h3>\n  <mat-dialog-content>\n    <p>Are you sure you want to delete this fixed asset?</p>\n  </mat-dialog-content>\n  <mat-dialog-actions\n    class=\"d-flex justify-content-end align-items-center gap-1\"\n  >\n    <button\n      [disabled]=\"isDeleting\"\n      (click)=\"deleteModel()\"\n      type=\"button\"\n      mat-raised-button\n      color=\"warn\"\n    >\n      Delete\n    </button>\n    <button\n      [disabled]=\"isDeleting\"\n      type=\"button\"\n      mat-dialog-close\n      mat-flat-button\n    >\n      Cancel\n    </button>\n  </mat-dialog-actions>\n</ng-template>\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\n\n@Component({\n  selector: 'app-fixed-asset-information-teaser-card',\n  templateUrl: './fixed-asset-information-teaser-card.component.html',\n  styleUrls: ['./fixed-asset-information-teaser-card.component.scss']\n})\nexport class FixedAssetInformationTeaserCardComponent implements OnInit {\n  @Input() fixedAsset: any;\n  @Output() deleted: EventEmitter<any> =  new EventEmitter<any>();\n\n  constructor() {}\n\n  ngOnInit(): void {}\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex flex-column gap-2\">\n    <div class=\"d-flex justify-content-between align-items-center gap-2 mb-2\">\n      <h3 class=\"mb-0\">Asset Information</h3>\n      <div class=\"d-flex gap-1 justify-content-end align-items-center\">\n        <mat-icon\n          class=\"cursor-pointer text-secondary\"\n          [routerLink]=\"['/fixed-assets', fixedAsset?.id, 'edit']\"\n        >\n          edit\n        </mat-icon>\n        <app-fixed-asset-delete-button\n          [fixedAsset]=\"fixedAsset\"\n          (deleted)=\"deleted.emit()\"\n        ></app-fixed-asset-delete-button>\n      </div>\n    </div>\n    <div class=\"d-flex justify-content-between align-items-center gap-2\">\n      <div class=\"d-flex justify-content-start align-items-center gap-2\">\n        <h3 class=\"mb-0\">{{ fixedAsset?.name }}</h3>\n        <span class=\"text-success\">{{ fixedAsset?.status?.title }}</span>\n      </div>\n      <div class=\"d-flex justify-content-end align-items-center gap-2\">\n        <span class=\"badge badge-info\">{{ fixedAsset?.serial_number }}</span>\n        <span class=\"badge badge-secondary\">{{ fixedAsset?.type?.title }}</span>\n      </div>\n    </div>\n\n    <div\n      *ngIf=\"fixedAsset?.description\"\n      class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n    >\n      <small class=\"text-secondary\">Description</small>\n      <p class=\"mb-0\" [innerHtml]=\"fixedAsset?.description\"></p>\n    </div>\n\n    <div class=\"d-flex justify-content-between align-items-center gap-2\">\n      <div\n        *ngIf=\"fixedAsset?.purchase_price\"\n        class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n      >\n        <small class=\"text-secondary\">Purchase Price</small>\n        <p class=\"mb-0\">{{ fixedAsset?.purchase_price | currency }}</p>\n      </div>\n\n      <div\n        *ngIf=\"fixedAsset?.salvage_value\"\n        class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n      >\n        <small class=\"text-secondary\">Salvage Value</small>\n        <p class=\"mb-0\">{{ fixedAsset?.salvage_value | currency }}</p>\n      </div>\n      <div\n        *ngIf=\"fixedAsset?.useful_life\"\n        class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n      >\n        <small class=\"text-secondary\">Useful Life</small>\n        <p class=\"mb-0\">{{ fixedAsset?.useful_life }} years</p>\n      </div>\n    </div>\n\n    <div\n      *ngIf=\"fixedAsset?.depreciation_starts_on\"\n      class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n    >\n      <small class=\"text-secondary\">Depreciation Start Date</small>\n      <p class=\"mb-0\">{{ fixedAsset?.depreciation_starts_on | date }}</p>\n    </div>\n\n    <div\n      *ngIf=\"fixedAsset?.depreciation_method?.title\"\n      class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n    >\n      <small class=\"text-secondary\">Depreciation Method</small>\n      <p class=\"mb-0\">{{ fixedAsset?.depreciation_method?.title }}</p>\n    </div>\n\n    <div\n      *ngIf=\"fixedAsset?.asset_account?.title\"\n      class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n    >\n      <small class=\"text-secondary\">Asset Account</small>\n      <p class=\"mb-0\">{{ fixedAsset?.asset_account?.title }}</p>\n    </div>\n\n    <div\n      *ngIf=\"fixedAsset?.depreciation_expense_account?.title\"\n      class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n    >\n      <small class=\"text-secondary\">Depretiation Expense Account</small>\n      <p class=\"mb-0\">{{ fixedAsset?.depreciation_expense_account?.title }}</p>\n    </div>\n\n    <div\n      *ngIf=\"fixedAsset?.accumulated_depreciation_account?.title\"\n      class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n    >\n      <small class=\"text-secondary\">Accumulated Depreciation Account</small>\n      <p class=\"mb-0\">\n        {{ fixedAsset?.accumulated_depreciation_account?.title }}\n      </p>\n    </div>\n  </mat-card-content>\n</mat-card>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FixedAssetService } from '../fixed-asset.service';\n\n@Component({\n  selector: 'app-fixed-asset-information-page',\n  templateUrl: './fixed-asset-information-page.component.html',\n  styleUrls: ['./fixed-asset-information-page.component.scss']\n})\nexport class FixedAssetInformationPageComponent implements OnInit {\n  id!: number;\n  isLoading: boolean = false;\n  fixedAsset!: any;\n\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private fixedAssetService: FixedAssetService,\n    private router: Router\n  ) {\n    this.id = parseInt(this.activatedRoute.snapshot.parent?.params['id']);\n  }\n\n  ngOnInit(): void {\n    if (this.id) {\n      this.loadModel();\n    }\n  }\n\n  private loadModel() {\n    this.isLoading = true;\n    const params: any = {\n      with: 'type,status,depreciationMethod,assetAccount,depreciationExpenseAccount,accumulatedDepreciationAccount'\n    };\n    this.fixedAssetService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.fixedAsset = response?.item;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n\n  onDeleted() {\n    this.router.navigateByUrl('/fixed-assets/list');\n  }\n}\n","<div\n  *ngIf=\"!isLoading && fixedAsset\"\n  class=\"d-flex align-items-start justify-content-start gap-3\"\n>\n  <app-fixed-asset-information-teaser-card\n    [fixedAsset]=\"fixedAsset\"\n    (deleted)=\"onDeleted()\"\n    style=\"width: calc(50% - 1rem)\"\n  ></app-fixed-asset-information-teaser-card>\n  <mat-card class=\"p-0\" style=\"width: calc(50%)\">\n    <mat-card-content>\n      <app-note-list\n        modelType=\"fixed-asset\"\n        [relatedModelId]=\"id\"\n        labelText=\"Asset Notes\"\n      ></app-note-list>\n    </mat-card-content>\n  </mat-card>\n</div>\n<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FixedAssetDocumentService extends TechlifyService {\n  constructor(httpService: HttpService) {\n    super(httpService, 'accounting-plus/fixed-asset-documents');\n  }\n}\n","export enum FixedAssetDocumentTypeEnum {\n  TYPE_BUSS_PASS = 1,\n  TYPE_FITNESS = 2,\n  TYPE_INSURANCE = 3,\n  TYPE_REVENUE_LICENSE = 4,\n  TYPE_ROAD_SERVICE = 5\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { FixedAssetDocumentTypeEnum } from '../fixed-asset-document-type.enum';\nimport {\n  AlertService,\n  DateUtils,\n  EntityFileService,\n  FileDropperConfig,\n  FormValidatorService,\n  ViewerConfig\n} from 'ngx-techlify-core';\nimport { FixedAssetDocumentService } from '../fixed-asset-document.service';\nimport { Observable } from 'rxjs';\n\n@Component({\n  selector: 'app-fixed-asset-document-form',\n  templateUrl: './fixed-asset-document-form.component.html',\n  styleUrls: ['./fixed-asset-document-form.component.scss']\n})\nexport class FixedAssetDocumentFormComponent implements OnInit {\n  @Input() fixedAssetDocument: any;\n  @Input() fixedAssetId!: number;\n  @Output() saved: EventEmitter<any> = new EventEmitter();\n  @Output() cancelled: EventEmitter<any> = new EventEmitter();\n\n  form: FormGroup;\n  fileDropperConfig: FileDropperConfig = {\n    acceptFile: '*',\n    containerId: 'file-dropper-container',\n    multiple: false,\n    fileId: 'file'\n  };\n  selectedFile!: any;\n  updateMode: boolean = false;\n  viewerConfig: ViewerConfig = {};\n  errorMessages: any = {\n    type_id: {\n      required: 'The type field is required.'\n    },\n    start_date: {\n      required: 'The start date field is required.'\n    }\n  };\n  isSaving: boolean = false;\n  isFileChanged: boolean = false;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private entityFileService: EntityFileService,\n    private formValidatorService: FormValidatorService,\n    private alertService: AlertService,\n    private dateUtils: DateUtils,\n    private fixedAssetDocumentService: FixedAssetDocumentService\n  ) {\n    this.form = this.formBuilder.group({\n      id: [''],\n      fixed_asset_id: [''],\n      type_id: [FixedAssetDocumentTypeEnum.TYPE_INSURANCE, Validators.required],\n      start_date: [new Date(), Validators.required],\n      expiration_date: [''],\n      details: ['']\n    });\n\n    this.viewerConfig = {\n      viewerStyle: {\n        height: '200px',\n        width: '100%'\n      }\n    };\n  }\n\n  ngOnInit() {\n    if (this.fixedAssetId) {\n      this.form.get('fixed_asset_id')?.setValue(this.fixedAssetId);\n    }\n\n    if (this.fixedAssetDocument) {\n      let data: any = {\n        ...this.fixedAssetDocument\n      };\n      if (data?.start_date) {\n        data.start_date = new Date(data.start_date);\n      }\n      if (data?.expiration_date) {\n        data.expiration_date = new Date(data.expiration_date);\n      }\n      if (data?.entity_file) {\n        this.selectedFile = data.entity_file;\n      }\n      this.form.patchValue(data);\n    }\n  }\n\n  /**\n   * Upload a file.\n   *\n   * @param event\n   */\n  async fileChanged(event: any) {\n    if (event.length > 0) {\n      const result: any = await this.entityFileService.uploadEntityFile(\n        event[0]\n      );\n      this.isFileChanged = true;\n      this.selectedFile = result?.item;\n    }\n  }\n\n  removeFile() {\n    if (this.selectedFile?.id) {\n      this.entityFileService.delete(this.selectedFile).subscribe();\n    }\n    this.selectedFile = null;\n  }\n\n  isFieldValid(field: string) {\n    return this.formValidatorService.isFieldValid(field, this.form);\n  }\n\n  getErrorMessage(field: string) {\n    return this.formValidatorService.getErrorMessage(\n      field,\n      this.form,\n      this.errorMessages\n    );\n  }\n\n  /**\n   * Save the fixed asset document.\n   */\n  save() {\n    this.form.markAllAsTouched();\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please check the form for errors.', 'error');\n      return;\n    }\n\n    const data: any = { ...this.form.value };\n    if (data?.start_date) {\n      data.start_date = this.dateUtils.getYYYYMMDDString(data.start_date);\n    }\n    if (data?.expiration_date) {\n      data.expiration_date = this.dateUtils.getYYYYMMDDString(\n        data.expiration_date\n      );\n    }\n    this.isSaving = true;\n    const params: any = {\n      with: 'type,entityFile'\n    };\n    let request: Observable<any> = this.fixedAssetDocument\n      ? this.fixedAssetDocumentService.update(data, params)\n      : this.fixedAssetDocumentService.store(data, params);\n    request.subscribe({\n      next: (response: any) => {\n        if (this.selectedFile && this.isFileChanged) {\n          this.createEntityFileRecord(response?.item);\n        } else {\n          this.isSaving = false;\n          this.saved.emit(response?.item);\n          this.alertService.addAlert(\n            'The fixed asset document saved successfully!',\n            'success'\n          );\n        }\n      },\n      error: () => (this.isSaving = false)\n    });\n  }\n\n  /**\n   * Create a new Entity File record for the document.\n   *\n   * @param document\n   * @private\n   */\n  private createEntityFileRecord(document: any) {\n    this.selectedFile.entity_id = document?.id;\n    this.selectedFile.entity_type = 'fixed-asset-document';\n    this.selectedFile.title = this.selectedFile.file_name;\n\n    this.entityFileService.store(this.selectedFile).subscribe({\n      next: () => {\n        this.isSaving = false;\n        this.saved.emit(document);\n        this.alertService.addAlert(\n          'The fixed asset document saved successfully!',\n          'success'\n        );\n      },\n      error: () => {\n        this.isSaving = false;\n      }\n    });\n  }\n}\n","<form\n  [formGroup]=\"form\"\n  class=\"d-flex flex-wrap justify-content-start gap-3\"\n  (submit)=\"save()\"\n>\n  <div class=\"d-flex flex-column gap-1\" style=\"width: calc(60% - 1rem)\">\n    <mat-form-field>\n      <mat-label>Type</mat-label>\n      <app-searchable-selector\n        apiUrl=\"api/accounting-plus/fixed-asset-document-types\"\n        formControlName=\"type_id\"\n        [enableSearch]=\"false\"\n      ></app-searchable-selector>\n      <mat-error *ngIf=\"isFieldValid('type_id')\">\n        {{ getErrorMessage('type_id') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field>\n      <mat-label>Start Date</mat-label>\n      <input\n        matInput\n        [matDatepicker]=\"startDatePicker\"\n        formControlName=\"start_date\"\n        (focus)=\"startDatePicker.open()\"\n      />\n      <mat-error *ngIf=\"isFieldValid('start_date')\">\n        {{ getErrorMessage('start_date') }}\n      </mat-error>\n      <mat-datepicker #startDatePicker></mat-datepicker>\n    </mat-form-field>\n\n    <mat-form-field>\n      <mat-label>Expiration Date</mat-label>\n      <input\n        matInput\n        [matDatepicker]=\"expirationDatePicker\"\n        formControlName=\"expiration_date\"\n        (focus)=\"expirationDatePicker.open()\"\n      />\n      <mat-datepicker #expirationDatePicker></mat-datepicker>\n    </mat-form-field>\n\n    <mat-form-field>\n      <mat-label>Details</mat-label>\n      <textarea matInput formControlName=\"details\"></textarea>\n    </mat-form-field>\n\n    <div class=\"d-flex justify-content-end align-items-center gap-3\">\n      <button\n        [disabled]=\"isSaving\"\n        mat-raised-button\n        color=\"primary\"\n        type=\"submit\"\n      >\n        Save\n      </button>\n      <button\n        (click)=\"cancelled.emit()\"\n        [disabled]=\"isSaving\"\n        mat-flat-button\n        type=\"button\"\n      >\n        Cancel\n      </button>\n    </div>\n  </div>\n  <div style=\"width: calc(40% - 1rem)\" id=\"file-dropper-container\">\n    <app-file-dropper\n      [config]=\"fileDropperConfig\"\n      (fileChanged)=\"fileChanged($event)\"\n      *ngIf=\"!selectedFile\"\n      style=\"width: 100%; height: 100%\"\n    ></app-file-dropper>\n    <app-document-viewer\n      *ngIf=\"selectedFile\"\n      [file]=\"selectedFile.file_name || selectedFile.title\"\n      [fileUrl]=\"selectedFile.url\"\n      [config]=\"this.viewerConfig\"\n      (remove)=\"removeFile()\"\n      [disableEdit]=\"updateMode\"\n    >\n    </app-document-viewer>\n  </div>\n</form>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ThemePalette } from '@angular/material/core';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n  selector: 'app-fixed-asset-document-form-button',\n  templateUrl: './fixed-asset-document-form-button.component.html',\n  styleUrls: ['./fixed-asset-document-form-button.component.scss']\n})\nexport class FixedAssetDocumentFormButtonComponent {\n  @Input() color: ThemePalette;\n  @Input() fixedAssetDocument: any;\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n  fixedAssetId: number;\n\n  constructor(\n    public matDialog: MatDialog,\n    private activatedRoute: ActivatedRoute\n  ) {\n    this.fixedAssetId = parseInt(\n      this.activatedRoute.snapshot?.parent?.params['id']\n    );\n  }\n\n  /**\n   * Show fixed asset document form in dialog.\n   *\n   * @param templateRef\n   */\n  showForm(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, { width: '800px' });\n  }\n\n  /**\n   * Handle on fixed asset document save event.\n   *\n   * @param document\n   */\n  onSaved(document: any) {\n    this.saved.emit(document);\n    this.matDialog.closeAll();\n  }\n}\n","<mat-icon\n  [color]=\"color\"\n  class=\"cursor-pointer\"\n  (click)=\"showForm(fixedAssetDocumentForm)\"\n>\n  {{ fixedAssetDocument ? 'edit' : 'add' }}\n</mat-icon>\n\n<ng-template #fixedAssetDocumentForm>\n  <div\n    class=\"mb-2 d-flex flex-column justify-content-center align-items-center\"\n  >\n    <h2 class=\"mb-0\" mat-dialog-title>\n      {{ fixedAssetDocument ? 'Edit' : 'Create' }} Fixed Asset Document\n    </h2>\n    <p class=\"text-secondary\">\n      Use this form to add a new document to this fixed asset.\n    </p>\n  </div>\n  <app-fixed-asset-document-form\n    mat-dialog-content\n    (cancelled)=\"matDialog.closeAll()\"\n    (saved)=\"onSaved($event)\"\n    [fixedAssetId]=\"fixedAssetId\"\n    [fixedAssetDocument]=\"fixedAssetDocument\"\n  ></app-fixed-asset-document-form>\n</ng-template>\n","import { Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { FixedAssetDocumentService } from '../fixed-asset-document.service';\nimport {\n  RequestHelperService,\n  TechlifyListComponent\n} from 'ngx-techlify-core';\nimport { Sort } from '@angular/material/sort';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n  selector: 'app-fixed-asset-documents',\n  templateUrl: './fixed-asset-documents.component.html',\n  styleUrls: ['./fixed-asset-documents.component.scss']\n})\nexport class FixedAssetDocumentsComponent extends TechlifyListComponent {\n  displayedColumns: string[] = [\n    'no',\n    'type_id',\n    'start_date',\n    'expiration_date',\n    'is_active',\n    'file',\n    'details',\n    'actions'\n  ];\n  filterConfig: any = {\n    fixed_asset_document_type_ids: {\n      enableSearch: false\n    },\n    fixed_asset_document_status: {\n      showLabel: false\n    }\n  };\n  totalItems!: number;\n  currentPage: number = 1;\n  fixedAssetId!: number;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private fixedAssetDocumentService: FixedAssetDocumentService,\n    private activatedRoute: ActivatedRoute\n  ) {\n    super();\n    this.fixedAssetId = parseInt(\n      this.activatedRoute?.snapshot?.parent?.params['id']\n    );\n    this.filterForm = this.formBuilder.group({\n      fixed_asset_document_type_ids: [''],\n      fixed_asset_document_status: ['active'],\n      sort_by: ['created_at|desc']\n    });\n  }\n\n  /**\n   * Load fixed asset documents.\n   *\n   * @private\n   */\n  override loadData() {\n    const params: any = {\n      with: 'type,entityFile',\n      page: this.currentPage,\n      fixed_asset_ids: this.fixedAssetId,\n      ...this.requestHelperService.convertToFormData({\n        ...this.filterForm.value\n      })\n    };\n    this.isWorking = true;\n    this.fixedAssetDocumentService.index(params).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        const data: any[] = this.models?.concat(response?.data);\n        this.totalItems = response?.total;\n        this.models = data;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  /**\n   * Handle sort change event.\n   *\n   * @param sort\n   */\n  onSortChange(sort: Sort) {\n    let { active, direction } = sort;\n    if (!active) active = 'created_at';\n    if (!direction) {\n      active = 'created_at';\n      direction = 'desc';\n    }\n    this.filterForm.get('sort_by')?.setValue(active + '|' + direction);\n  }\n\n  /**\n   * Handle on saved event to update the table.\n   *\n   * @param document\n   * @param index\n   */\n  onSaved(document: any, index?: number) {\n    const params: any = { with: 'type,entityFile' };\n    this.fixedAssetDocumentService.show(document?.id, params).subscribe({\n      next: (response: any) => {\n        document = response?.item;\n        const data: any[] = this.models;\n        if (index != undefined && index != -1) {\n          data[index] = document;\n        } else {\n          data.unshift(document);\n        }\n        this.models = data;\n      },\n      error: () => this.reload()\n    });\n  }\n}\n","<mat-card>\n  <mat-card-content>\n    <div class=\"d-flex justify-content-start align-items-center gap-2\">\n      <strong class=\"mb-1\">Documents</strong>\n      <app-fixed-asset-document-form-button\n        color=\"primary\"\n        (saved)=\"reload()\"\n      ></app-fixed-asset-document-form-button>\n    </div>\n  </mat-card-content>\n\n  <mat-card-content>\n    <app-techlify-filter\n      [filterForm]=\"filterForm\"\n      [filterConfig]=\"filterConfig\"\n      (filterUpdated)=\"reload()\"\n    ></app-techlify-filter>\n  </mat-card-content>\n\n  <mat-card-content>\n    <table\n      mat-table\n      [dataSource]=\"models\"\n      class=\"w-100\"\n      aria-describedby=\"Fixed Asset Documents\"\n      infiniteScroll\n      [infiniteScrollDistance]=\"2\"\n      [infiniteScrollThrottle]=\"50\"\n      (scrolled)=\"onScroll()\"\n      [fromRoot]=\"true\"\n      matSort\n      (matSortChange)=\"onSortChange($event)\"\n      matSortActive=\"created_at\"\n      matSortDirection=\"desc\"\n    >\n      <!-- No Column -->\n      <ng-container matColumnDef=\"no\">\n        <th mat-header-cell *matHeaderCellDef>#</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n      </ng-container>\n\n      <!-- Type Column -->\n      <ng-container matColumnDef=\"type_id\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>Type</th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.type?.title }}</td>\n      </ng-container>\n\n      <!-- Start Date Column -->\n      <ng-container matColumnDef=\"start_date\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>Start Date</th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element.start_date | date }}\n        </td>\n      </ng-container>\n\n      <!-- Expiration Date Column -->\n      <ng-container matColumnDef=\"expiration_date\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>\n          Expiration Date\n        </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element.expiration_date | date }}\n        </td>\n      </ng-container>\n\n      <!-- Is Active Column -->\n      <ng-container matColumnDef=\"is_active\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>Is Active</th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element.is_active ? 'Yes' : 'No' }}\n        </td>\n      </ng-container>\n\n      <!-- File Column -->\n      <ng-container matColumnDef=\"file\">\n        <th mat-header-cell *matHeaderCellDef>File</th>\n        <td mat-cell *matCellDef=\"let element\" style=\"max-width: 300px\">\n          <a\n            [href]=\"element?.entity_file?.url\"\n            *ngIf=\"element?.entity_file\"\n            target=\"_blank\"\n          >\n            {{ element?.entity_file?.title }}\n          </a>\n        </td>\n      </ng-container>\n\n      <!-- Details Column -->\n      <ng-container matColumnDef=\"details\">\n        <th mat-header-cell *matHeaderCellDef>Details</th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.details }}\n        </td>\n      </ng-container>\n\n      <!-- Actions Column -->\n      <ng-container matColumnDef=\"actions\">\n        <th mat-header-cell *matHeaderCellDef>Actions</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">\n          <app-fixed-asset-document-form-button\n            [fixedAssetDocument]=\"element\"\n            (saved)=\"onSaved($event, i)\"\n          ></app-fixed-asset-document-form-button>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n    </table>\n\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FixedAssetMaintenanceService extends TechlifyService {\n  constructor(private httpService: HttpService) {\n    super(httpService, 'accounting-plus/fixed-asset-maintenances');\n  }\n\n  updateStatus(\n    fixedAssetMaintenance: any,\n    statusId: number,\n    params?: any\n  ): Observable<any> {\n    return this.httpService.put(\n      `api/accounting-plus/fixed-asset-maintenances/${fixedAssetMaintenance?.id}/update-status`,\n      { status_id: statusId },\n      { params }\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {HttpService, TechlifyService} from \"ngx-techlify-core\";\nimport {Observable} from \"rxjs\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FixedAssetMaintenanceStatusService extends TechlifyService{\n\n  constructor(httpService: HttpService) {\n    super(httpService, 'accounting-plus/fixed-asset-maintenance-statuses');\n  }\n\n  indexCached(params?: any): Observable<any> {\n    return this.http.cache().get('api/accounting-plus/fixed-asset-maintenance-statuses', { params });\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild,\n  Input\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AlertService } from 'ngx-techlify-core';\nimport { FixedAssetMaintenanceStatusService } from '../../fixed-asset-maintenance-status.service';\nimport { FixedAssetMaintenanceService } from '../../fixed-asset-maintenance.service';\n\n@Component({\n  selector: 'app-fixed-asset-maintenance-status-button',\n  templateUrl: './fixed-asset-maintenance-status-button.component.html',\n  styleUrls: ['./fixed-asset-maintenance-status-button.component.scss']\n})\nexport class FixedAssetMaintenanceStatusButtonComponent implements OnInit {\n  @Input() fixedAssetMaintenance: any;\n  @ViewChild('confirmDialog') confirmDialogTemplate!: TemplateRef<any>;\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n\n  statuses!: any[];\n  formControl: FormControl = new FormControl();\n  isSaving!: boolean;\n\n  constructor(\n    private fixedAssetMaintenanceStatusService: FixedAssetMaintenanceStatusService,\n    private matDialog: MatDialog,\n    private fixedAssetMaintenanceService: FixedAssetMaintenanceService,\n    private alertService: AlertService\n  ) {}\n\n  ngOnInit(): void {\n    this.formControl.setValue(this.fixedAssetMaintenance?.status_id, {\n      emitEvent: false\n    });\n\n    this.formControl.valueChanges.subscribe({\n      next: () => {\n        this.showConfirmDialog();\n      }\n    });\n\n    this.loadData();\n  }\n\n  loadData() {\n    this.fixedAssetMaintenanceStatusService.indexCached().subscribe({\n      next: (response: any) => {\n        this.statuses = response?.data;\n      }\n    });\n  }\n\n  private showConfirmDialog() {\n    this.matDialog.open(this.confirmDialogTemplate, { width: '500px' });\n  }\n\n  updateStatus() {\n    this.isSaving = true;\n    this.fixedAssetMaintenanceService\n      .updateStatus(this.fixedAssetMaintenance, this.formControl.value)\n      .subscribe({\n        next: (response: any) => {\n          this.matDialog.closeAll();\n          this.saved.emit(response?.item);\n          this.alertService.addAlert(\n            'The status updated successfully!',\n            'success'\n          );\n        },\n        complete: () => (this.isSaving = false)\n      });\n  }\n}\n","<mat-button-toggle-group *ngIf=\"statuses\" [formControl]=\"formControl\">\n  <mat-button-toggle *ngFor=\"let status of statuses\" [value]=\"status?.id\">\n    {{ status?.title }}\n  </mat-button-toggle>\n</mat-button-toggle-group>\n\n<ng-template #confirmDialog>\n  <h3 mat-dialog-title>Update Status</h3>\n  <div mat-dialog-content>\n    <p>Are you sure, you want to update the status?</p>\n  </div>\n  <div\n    mat-dialog-actions\n    class=\"d-flex justify-content-end align-items-center gap-2\"\n  >\n    <button\n      [disabled]=\"isSaving\"\n      mat-raised-button\n      type=\"button\"\n      color=\"primary\"\n      (click)=\"updateStatus()\"\n    >\n      Update\n    </button>\n    <button\n      [disabled]=\"isSaving\"\n      mat-flat-button\n      type=\"button\"\n      mat-dialog-close\n    >\n      Cancel\n    </button>\n  </div>\n</ng-template>\n","export enum AssetMaintenanceTypeEnum {\n  TYPE_PREVENTIVE = 1,\n  TYPE_CORRECTIVE = 2\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport {\n  AlertService,\n  DateUtils,\n  EntityFileService,\n  FileDropperConfig,\n  FormValidatorService, TechlifyFormComponent,\n  ViewerConfig\n} from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\nimport { FixedAssetMaintenanceService } from '../fixed-asset-maintenance.service';\nimport { AssetMaintenanceTypeEnum } from \"../asset-maintenance-type.enum\";\n\n@Component({\n  selector: 'app-fixed-asset-maintenance-form',\n  templateUrl: './fixed-asset-maintenance-form.component.html',\n  styleUrls: ['./fixed-asset-maintenance-form.component.scss']\n})\nexport class FixedAssetMaintenanceFormComponent extends TechlifyFormComponent implements OnInit {\n  @Input() fixedAssetMaintenance: any;\n  @Input() fixedAssetId!: number;\n  @Output() saved: EventEmitter<any> = new EventEmitter();\n  @Output() cancelled: EventEmitter<any> = new EventEmitter();\n\n  fileDropperConfig: FileDropperConfig = {\n    acceptFile: 'image/*',\n    containerId: 'file-dropper-container',\n    multiple: true,\n    fileId: 'file'\n  };\n  selectedFiles: any[] = [];\n  updateMode: boolean = false;\n  viewerConfig: ViewerConfig = {};\n  isSaving: boolean = false;\n  isFileChanged: boolean = false;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private entityFileService: EntityFileService,\n    formValidatorService: FormValidatorService,\n    private dateUtils: DateUtils,\n    private fixedAssetMaintenanceService: FixedAssetMaintenanceService\n  ) {\n    super(formValidatorService);\n    this.form = this.formBuilder.group({\n      id: [''],\n      asset_id: [''],\n      date: [new Date(), Validators.required],\n      type_id: [AssetMaintenanceTypeEnum.TYPE_PREVENTIVE, Validators.required],\n      service_center_id: [''],\n      observations: [''],\n      diagnosis: [''],\n      details: ['']\n    });\n\n    this.errorMessages = {\n      date: {\n        required: 'The date field is required.'\n      },\n      type_id: {\n        required: 'The type field is required.'\n      }\n    };\n\n    this.viewerConfig = {\n      viewerStyle: {\n        height: '200px',\n        width: '100%'\n      }\n    };\n  }\n\n  ngOnInit() {\n    if (this.fixedAssetId) {\n      this.form.get('asset_id')?.setValue(this.fixedAssetId);\n    }\n\n    if (this.fixedAssetMaintenance) {\n      let data: any = {\n        ...this.fixedAssetMaintenance\n      };\n      if (data?.date) {\n        data.date = new Date(data.date);\n      }\n      if (data?.photos) {\n        this.selectedFiles = data.photos;\n      }\n\n      if (!data?.type_id) {\n        data.type_id = AssetMaintenanceTypeEnum.TYPE_PREVENTIVE;\n      }\n\n      this.form.patchValue(data);\n    }\n  }\n\n  /**\n   * Upload a file.\n   *\n   * @param event\n   */\n  async fileChanged(event: any) {\n    if (event.length > 0) {\n      (event as []).forEach((file: any) => {\n        this.entityFileService.uploadEntityFile(file).then((result: any) => {\n          this.selectedFiles.push(result?.item);\n        });\n        this.isFileChanged = true;\n      });\n    }\n  }\n\n  removeFile(index: number) {\n    const file: any = this.selectedFiles[index];\n    this.selectedFiles.splice(index, 1);\n    if (file?.id) {\n      this.entityFileService.delete(file).subscribe();\n    }\n  }\n\n  /**\n   * Save the fixed asset document.\n   */\n  save() {\n    this.form.markAllAsTouched();\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please check the form for errors.', 'error');\n      return;\n    }\n\n    const data: any = { ...this.form.value };\n    if (data?.date) {\n      data.date = this.dateUtils.getYYYYMMDDString(data.date);\n    }\n    this.isSaving = true;\n    const params: any = {\n      with: 'serviceCenter,status,photos,type'\n    };\n    let request: Observable<any> = this.fixedAssetMaintenance\n      ? this.fixedAssetMaintenanceService.update(data, params)\n      : this.fixedAssetMaintenanceService.store(data, params);\n    request.subscribe({\n      next: (response: any) => {\n        if (this.selectedFiles && this.isFileChanged) {\n          this.createEntityFileRecord(response?.item);\n        } else {\n          this.isSaving = false;\n          this.saved.emit(response?.item);\n        }\n      },\n      error: () => (this.isSaving = false)\n    });\n  }\n\n  /**\n   * Create a new Entity File record for the maintenance.\n   *\n   * @param maintenance\n   * @private\n   */\n  private createEntityFileRecord(maintenance: any) {\n    this.selectedFiles.forEach((file: any) => {\n      file.entity_id = maintenance?.id;\n      file.entity_type = 'fixed-asset-maintenance';\n      file.title = file.file_name;\n\n      this.entityFileService.store(file).subscribe({\n        next: () => {\n          this.isSaving = false;\n        },\n        error: () => {\n          this.isSaving = false;\n        }\n      });\n    });\n    this.saved.emit(maintenance);\n  }\n}\n","<form\n  [formGroup]=\"form\"\n  class=\"d-flex flex-wrap justify-content-start gap-3\"\n  (submit)=\"save()\"\n>\n  <div class=\"d-flex flex-column gap-1\" style=\"width: calc(60% - 1rem)\">\n\n    <mat-form-field *ngIf=\"!fixedAssetId\">\n      <mat-label>Fixed Asset</mat-label>\n      <app-searchable-selector\n        apiUrl=\"api/accounting-plus/fixed-assets\"\n        formControlName=\"asset_id\"\n        titleField=\"name\"\n      ></app-searchable-selector>\n      <mat-error *ngIf=\"isFieldValid('asset_id')\">\n        {{ getErrorMessage('asset_id') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field>\n      <mat-label>Date</mat-label>\n      <input\n        matInput\n        [matDatepicker]=\"datePicker\"\n        formControlName=\"date\"\n        (focus)=\"datePicker.open()\"\n      />\n      <mat-error *ngIf=\"isFieldValid('date')\">\n        {{ getErrorMessage('date') }}\n      </mat-error>\n      <mat-datepicker #datePicker></mat-datepicker>\n    </mat-form-field>\n\n    <mat-form-field>\n      <mat-label>Type</mat-label>\n      <app-searchable-selector\n        apiUrl=\"api/accounting-plus/asset-maintenance-types\"\n        formControlName=\"type_id\"\n        titleField=\"title\"\n        [enableSearch]=\"false\"\n        [required]=\"true\"\n      ></app-searchable-selector>\n      <mat-error *ngIf=\"isFieldValid('type_id')\">\n        {{ getErrorMessage('type_id') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field>\n      <mat-label>Service Center</mat-label>\n      <app-searchable-selector\n        apiUrl=\"api/accounting-plus/service-centers\"\n        formControlName=\"service_center_id\"\n        titleField=\"name\"\n        [enableSearch]=\"false\"\n      ></app-searchable-selector>\n      <mat-error *ngIf=\"isFieldValid('service_center_id')\">\n        {{ getErrorMessage('service_center_id') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field>\n      <mat-label>Observations</mat-label>\n      <textarea matInput formControlName=\"observations\"></textarea>\n    </mat-form-field>\n\n    <mat-form-field>\n      <mat-label>Diagnosis</mat-label>\n      <textarea matInput formControlName=\"diagnosis\"></textarea>\n    </mat-form-field>\n\n    <mat-form-field>\n      <mat-label>Details</mat-label>\n      <textarea matInput formControlName=\"details\"></textarea>\n    </mat-form-field>\n\n    <div class=\"d-flex justify-content-end align-items-center gap-3\">\n      <button\n        [disabled]=\"isSaving\"\n        mat-raised-button\n        color=\"primary\"\n        type=\"submit\"\n      >\n        Save\n      </button>\n      <button\n        (click)=\"cancelled.emit()\"\n        [disabled]=\"isSaving\"\n        mat-flat-button\n        type=\"button\"\n      >\n        Cancel\n      </button>\n    </div>\n  </div>\n  <div style=\"width: calc(40% - 1rem)\" id=\"file-dropper-container\">\n    <app-file-dropper\n      *ngIf=\"selectedFiles && selectedFiles?.length === 0\"\n      [config]=\"fileDropperConfig\"\n      (fileChanged)=\"fileChanged($event)\"\n      style=\"width: 100%; height: 100%\"\n    ></app-file-dropper>\n    <div *ngIf=\"selectedFiles.length > 0\" class=\"mt-2\">\n      <div\n        *ngFor=\"let file of selectedFiles; index as i\"\n        class=\"d-flex justify-content-start align-items-center flex-row gap-1\"\n      >\n        <img\n          [src]=\"file?.url\"\n          class=\"img-thumbnail\"\n          style=\"height: 75px\"\n          alt=\"File\"\n        />\n        <button\n          type=\"button\"\n          mat-raised-button\n          color=\"warn\"\n          (click)=\"removeFile(i)\"\n        >\n          Remove\n        </button>\n      </div>\n    </div>\n  </div>\n</form>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport {ActivatedRoute} from \"@angular/router\";\n\n@Component({\n  selector: 'app-fixed-asset-maintenance-form-button',\n  templateUrl: './fixed-asset-maintenance-form-button.component.html',\n  styleUrls: ['./fixed-asset-maintenance-form-button.component.scss']\n})\nexport class FixedAssetMaintenanceFormButtonComponent {\n  @Input() color: ThemePalette;\n  @Input() fixedAssetMaintenance: any;\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n  fixedAssetId: number;\n\n  constructor(\n    public matDialog: MatDialog,\n    private activatedRoute: ActivatedRoute\n  ) {\n    this.fixedAssetId = parseInt(\n      this.activatedRoute.snapshot.parent?.params['id']\n    );\n  }\n\n  /**\n   * Show fixed asset document form in dialog.\n   *\n   * @param templateRef\n   */\n  showForm(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, { width: '800px' });\n  }\n\n  /**\n   * Handle on fixed asset document save event.\n   *\n   * @param document\n   */\n  onSaved(document: any) {\n    this.saved.emit(document);\n    this.matDialog.closeAll();\n  }\n}\n","<mat-icon\n  [color]=\"color\"\n  class=\"cursor-pointer\"\n  (click)=\"showForm(fixedAssetMaintenanceForm)\"\n>\n  {{ fixedAssetMaintenance ? 'edit' : 'add' }}\n</mat-icon>\n\n<ng-template #fixedAssetMaintenanceForm>\n  <div\n    class=\"mb-2 d-flex flex-column justify-content-center align-items-center\"\n  >\n    <h2 class=\"mb-0\" mat-dialog-title>\n      {{ fixedAssetMaintenance ? 'Edit' : 'Create' }} Fixed Asset Maintenance\n    </h2>\n  </div>\n  <app-fixed-asset-maintenance-form\n    mat-dialog-content\n    (cancelled)=\"matDialog.closeAll()\"\n    (saved)=\"onSaved($event)\"\n    [fixedAssetMaintenance]=\"fixedAssetMaintenance\"\n    [fixedAssetId]=\"fixedAssetId\"\n  ></app-fixed-asset-maintenance-form>\n</ng-template>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'app-fixed-asset-maintenance-photos',\n  templateUrl: './fixed-asset-maintenance-photos.component.html',\n  styleUrls: ['./fixed-asset-maintenance-photos.component.scss']\n})\nexport class FixedAssetMaintenancePhotosComponent {\n  @Input() fixedAssetMaintenance: any;\n\n  constructor() {}\n}\n","<div\n  *ngIf=\"fixedAssetMaintenance?.photos?.length > 0\"\n  class=\"d-flex flex-row gap-2 flex-wrap\"\n>\n  <img\n    *ngFor=\"let photo of fixedAssetMaintenance?.photos\"\n    [src]=\"photo?.url\"\n    style=\"height: 30px\"\n    alt=\"Photo\"\n  />\n</div>\n","import {Component, OnInit} from '@angular/core';\nimport { FixedAssetMaintenanceService } from '../fixed-asset-maintenance.service';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { Sort } from '@angular/material/sort';\nimport {\n  AlertService,\n  RequestHelperService,\n  TechlifyListComponent\n} from 'ngx-techlify-core';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n  selector: 'app-fixed-asset-maintenances',\n  templateUrl: './fixed-asset-maintenances.component.html',\n  styleUrls: ['./fixed-asset-maintenances.component.scss']\n})\nexport class FixedAssetMaintenancesComponent extends TechlifyListComponent implements OnInit {\n  filterConfig: any = {\n    search: {\n      placeholder: 'Search maintenance data'\n    }\n  };\n  displayedColumns: string[] = [\n    'no',\n    'fixed_asset',\n    'date',\n    'type_id',\n    'service_center_id',\n    'observations',\n    'diagnosis',\n    'details',\n    'status_id',\n    'photos',\n    'actions'\n  ];\n  fixedAssetId!: any;\n\n  constructor(\n    private fixedAssetMaintenanceService: FixedAssetMaintenanceService,\n    private formBuilder: FormBuilder,\n    private alertService: AlertService,\n    private activatedRoute: ActivatedRoute\n  ) {\n    super();\n    this.models = [];\n\n    this.fixedAssetId = this.activatedRoute?.snapshot?.parent?.params['id'] ?\n      parseInt(this.activatedRoute?.snapshot?.parent?.params['id']) : ''\n\n    this.filterForm = this.formBuilder.group({\n      search: [''],\n      service_center_ids: [''],\n      fixed_asset_maintenance_status_ids: [''],\n      fixed_asset_ids: [''],\n      sort_by: ['created_at|desc'],\n      type_ids: ['']\n    });\n  }\n\n  ngOnInit() {\n    if (this.fixedAssetId) {\n      this.filterForm.get('fixed_asset_ids')?.setValue(this.fixedAssetId, { emitEvent: false });\n      const assetIndex = this.displayedColumns.findIndex((col: string) => col === 'fixed_asset');\n      if (assetIndex > -1) {\n        this.displayedColumns.splice(assetIndex, 1);\n      }\n    }\n  }\n\n  /**\n   * Load fixed asset documents.\n   */\n  override loadData() {\n    const {\n      service_center_ids,\n      fixed_asset_maintenance_status_ids,\n      fixed_asset_ids,\n      search,\n      sort_by,\n      type_ids\n    } = this.filterForm.value;\n    const params: any = {\n      with: 'serviceCenter,status,photos,fixedAsset,type',\n      page: this.page,\n      perPage: this.perPage,\n      ...this.requestHelperService.convertToFormData({\n        service_center_ids,\n        fixed_asset_maintenance_status_ids,\n        fixed_asset_ids,\n        type_ids\n      }),\n      search,\n      sort_by\n    };\n    this.isWorking = true;\n    this.fixedAssetMaintenanceService.index(params).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        const data: any[] = this.models?.concat(response?.data);\n        this.lastPage = response?.last_page;\n        this.models = data;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  /**\n   * Handle sort change event.\n   *\n   * @param sort\n   */\n  onSortChange(sort: Sort) {\n    let { active, direction } = sort;\n    if (!active) active = 'created_at';\n    if (!direction) {\n      active = 'created_at';\n      direction = 'desc';\n    }\n    this.filterForm.get('sort_by')?.setValue(active + '|' + direction);\n  }\n\n  /**\n   * Handle on saved event to update the table.\n   *\n   * @param maintenance\n   * @param index\n   */\n  onSaved(maintenance: any, index?: number) {\n    this.alertService.addAlert(\n      'The fixed asset maintenance saved successfully!',\n      'success'\n    );\n\n    this.reload();\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-between align-items-center\">\n    <div class=\"d-flex justify-content-start align-items-center gap-2\">\n      <h3 class=\"mb-0 fw-bold\">Maintenances</h3>\n      <app-fixed-asset-maintenance-form-button color=\"primary\"\n        (saved)=\"onSaved($event)\"></app-fixed-asset-maintenance-form-button>\n    </div>\n    <form [formGroup]=\"filterForm\" class=\"d-flex justify-content-start align-items-center gap-2\">\n      <app-techlify-filter [filterForm]=\"filterForm\" [filterConfig]=\"filterConfig\"\n        (filterUpdated)=\"reload()\"></app-techlify-filter>\n\n      <ng-container *ngIf=\"!fixedAssetId\">\n        <mat-form-field *ngxPermissionsOnly=\"['fixed_asset.read']\">\n          <mat-label>Fixed Asset</mat-label>\n          <app-searchable-selector formControlName=\"fixed_asset_ids\" titleField=\"name\"\n            apiUrl=\"api/accounting-plus/fixed-assets\" [multiple]=\"true\"></app-searchable-selector>\n        </mat-form-field>\n      </ng-container>\n\n      <mat-form-field>\n        <mat-label>Type</mat-label>\n        <app-searchable-selector formControlName=\"type_ids\" titleField=\"title\"\n          apiUrl=\"api/accounting-plus/asset-maintenance-types\" [multiple]=\"true\"\n          [enableSearch]=\"false\"></app-searchable-selector>\n      </mat-form-field>\n    </form>\n  </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-3\">\n  <mat-card-content class=\"p-0\">\n    <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Fixed Asset Maintenance\" infiniteScroll\n      [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort\n      (matSortChange)=\"onSortChange($event)\" matSortActive=\"created_at\" matSortDirection=\"desc\">\n      <!-- No Column -->\n      <ng-container matColumnDef=\"no\">\n        <th mat-header-cell *matHeaderCellDef>#</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n      </ng-container>\n\n      <!-- Fixed Asset Column -->\n      <ng-container matColumnDef=\"fixed_asset\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>Fixed Asset</th>\n        <td mat-cell *matCellDef=\"let element;\">\n          <a class=\"text-dark\" [routerLink]=\"['/fixed-assets', element?.asset_id, 'read']\">\n            {{ element?.fixed_asset?.name }}\n          </a>\n        </td>\n      </ng-container>\n\n      <!-- Date Column -->\n      <ng-container matColumnDef=\"date\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>Date</th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.date | date }}\n        </td>\n      </ng-container>\n\n      <!-- Type Column -->\n      <ng-container matColumnDef=\"type_id\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>Type</th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.type?.title }}\n        </td>\n      </ng-container>\n\n      <!-- Service Center Column -->\n      <ng-container matColumnDef=\"service_center_id\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>\n          Service Center\n        </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.service_center?.name }}\n        </td>\n      </ng-container>\n\n      <!-- Observations Column -->\n      <ng-container matColumnDef=\"observations\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>Observations</th>\n        <td mat-cell *matCellDef=\"let element\" style=\"max-width: 200px\">\n          {{ element?.observations }}\n        </td>\n      </ng-container>\n\n      <!-- Diagnosis Column -->\n      <ng-container matColumnDef=\"diagnosis\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>Diagnosis</th>\n        <td mat-cell *matCellDef=\"let element\" style=\"max-width: 200px\">\n          {{ element?.diagnosis }}\n        </td>\n      </ng-container>\n\n      <!-- Details Column -->\n      <ng-container matColumnDef=\"details\">\n        <th mat-header-cell *matHeaderCellDef>Details</th>\n        <td mat-cell *matCellDef=\"let element\" style=\"max-width: 200px\">\n          {{ element?.details }}\n        </td>\n      </ng-container>\n\n      <!-- Status Column -->\n      <ng-container matColumnDef=\"status_id\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>Status</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <app-fixed-asset-maintenance-status-button [fixedAssetMaintenance]=\"element\"\n            (saved)=\"reload()\"></app-fixed-asset-maintenance-status-button>\n        </td>\n      </ng-container>\n\n      <!-- Photos Column -->\n      <ng-container matColumnDef=\"photos\">\n        <th mat-header-cell *matHeaderCellDef>Photos</th>\n        <td mat-cell *matCellDef=\"let element\" style=\"max-width: 200px\">\n          <app-fixed-asset-maintenance-photos [fixedAssetMaintenance]=\"element\"></app-fixed-asset-maintenance-photos>\n        </td>\n      </ng-container>\n\n      <!-- Actions Column -->\n      <ng-container matColumnDef=\"actions\">\n        <th mat-header-cell *matHeaderCellDef>Actions</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">\n          <div class=\"d-flex justify-content-start align-items-center gap-2 text-secondary\">\n            <app-techlify-icon role='button' name='view'\n              [routerLink]=\"['/fixed-assets/maintenances', element?.id, 'view']\"></app-techlify-icon>\n            <app-fixed-asset-maintenance-form-button (saved)=\"onSaved($event, i)\"\n              [fixedAssetMaintenance]=\"element\"></app-fixed-asset-maintenance-form-button>\n          </div>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n    </table>\n\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { FixedAssetMaintenanceService } from '../fixed-asset-maintenance.service';\n\n@Component({\n  selector: 'app-fixed-asset-maintenance-view-page',\n  templateUrl: './fixed-asset-maintenance-view-page.component.html',\n  styleUrls: ['./fixed-asset-maintenance-view-page.component.scss']\n})\nexport class FixedAssetMaintenanceViewPageComponent implements OnInit {\n  id: number;\n  isLoading!: boolean;\n  maintenance: any;\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private fixedAssetMaintenanceService: FixedAssetMaintenanceService\n  ) {\n    this.id = this.activatedRoute?.snapshot.params?.['id'];\n  }\n\n  ngOnInit(): void {\n    if (this.id) {\n      // load data\n      this.loadData();\n    }\n  }\n\n  loadData() {\n    this.isLoading = true;\n    const params: any = {\n      with: 'serviceCenter,status,photos,fixedAsset.type,fixedAsset.status,fixedAsset.depreciationMethod,fixedAsset.assetAccount,fixedAsset.depreciationExpenseAccount,fixedAsset.accumulatedDepreciationAccount'\n    };\n    this.fixedAssetMaintenanceService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.isLoading = false;\n        this.maintenance = response?.item;\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n}\n","<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n\n<div *ngIf=\"maintenance\">\n  <div class=\"d-flex justify-content-start align-items-center gap-2 mb-2\">\n    <span class=\"material-symbols-outlined\"> engineering </span>\n    <h3 class=\"mb-0\">Maintenance for {{ maintenance?.fixed_asset?.name }}</h3>\n    <app-fixed-asset-maintenance-form-button [fixedAssetMaintenance]=\"maintenance\"\n      (saved)=\"loadData()\"></app-fixed-asset-maintenance-form-button>\n  </div>\n  <div class=\"d-flex justify-content-start align-items-start gap-3\">\n    <div class=\"d-flex flex-column gap-2\" style=\"width: calc(30% - 1rem)\">\n      <mat-card class=\"p-2\">\n        <mat-card-content class=\"mb-2\">\n          <h3 class=\"mb-0\">Information</h3>\n        </mat-card-content>\n        <mat-divider></mat-divider>\n        <mat-card-content class=\"pt-2\">\n          <div class=\"d-flex justify-content-between align-items-start gap-2\">\n            <div class=\"d-flex flex-column justify-content-start align-items-start gap-1\">\n              <small class=\"text-secondary\">Service Center</small>\n              <p class=\"mb-0\">{{ maintenance?.service_center?.name }}</p>\n            </div>\n            <div class=\"d-flex flex-column justify-content-start align-items-start gap-1\">\n              <small class=\"text-secondary\">Date</small>\n              <p class=\"mb-0\">{{ maintenance?.date | date }}</p>\n            </div>\n          </div>\n\n          <span class=\"badge badge-primary w-100 my-3 p-2\">\n            {{ maintenance?.status?.title }}\n          </span>\n\n          <div *ngIf=\"maintenance?.observations\"\n            class=\"d-flex flex-column justify-content-start align-items-start gap-1 mb-2\">\n            <small class=\"text-secondary\">Observations</small>\n            <p class=\"mb-0\">{{ maintenance?.observations }}</p>\n          </div>\n\n          <div *ngIf=\"maintenance?.diagnosis\"\n            class=\"d-flex flex-column justify-content-start align-items-start gap-1 mb-2\">\n            <small class=\"text-secondary\">Diagnosis</small>\n            <p class=\"mb-0\">{{ maintenance?.diagnosis }}</p>\n          </div>\n\n          <div *ngIf=\"maintenance?.details\"\n            class=\"d-flex flex-column justify-content-start align-items-start gap-1 mb-2\">\n            <small class=\"text-secondary\">Details</small>\n            <p class=\"mb-0\">{{ maintenance?.details }}</p>\n          </div>\n          <div *ngIf=\"maintenance?.details\"\n            class=\"d-flex flex-column justify-content-start align-items-start gap-1 mb-2\">\n            <small class=\"text-secondary\">Photos</small>\n            <app-fixed-asset-maintenance-photos\n              [fixedAssetMaintenance]=\"maintenance\"></app-fixed-asset-maintenance-photos>\n          </div>\n        </mat-card-content>\n      </mat-card>\n\n      <app-fixed-asset-information-teaser-card\n        [fixedAsset]=\"maintenance?.fixed_asset\"></app-fixed-asset-information-teaser-card>\n    </div>\n    <div class=\"d-flex flex-column gap-2\" style=\"width: calc(70% - 1rem)\">\n      <app-note-list modelType=\"fixed-asset-maintenance\" [relatedModelId]=\"maintenance?.id\"></app-note-list>\n\n      <app-entity-files-view-all [entityId]=\"maintenance?.id\" entityType=\"fixed-asset-maintenance\"\n        title=\"Photo\"></app-entity-files-view-all>\n\n      <app-stock-issue-page label=\"Parts Used\" issuableType=\"fixed-asset-maintenance\"\n        [issuableId]=\"maintenance?.id\"></app-stock-issue-page>\n    </div>\n  </div>\n</div>","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {MatDialog, MatDialogContent, MatDialogTitle} from \"@angular/material/dialog\";\nimport {MatIcon} from \"@angular/material/icon\";\nimport {AssetLocationFormComponent} from \"../asset-location-form/asset-location-form.component\";\nimport {ThemePalette} from \"@angular/material/core\";\n\n@Component({\n  selector: 'app-asset-location-form-button',\n  standalone: true,\n  imports: [\n    MatDialogContent,\n    MatDialogTitle,\n    MatIcon,\n    AssetLocationFormComponent,\n  ],\n  templateUrl: './asset-location-form-button.component.html',\n  styleUrl: './asset-location-form-button.component.scss'\n})\nexport class AssetLocationFormButtonComponent {\n  @Input() color: ThemePalette;\n  @Input() assetLocation: any;\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n  @Input() assetId!: any;\n\n  constructor(\n    public matDialog: MatDialog,\n  ) {}\n\n  /**\n   * Show fixed asset document form in dialog.\n   *\n   * @param templateRef\n   */\n  showForm(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, { width: '500px' });\n  }\n\n  /**\n   * Handle on fixed asset document save event.\n   *\n   * @param document\n   */\n  onSaved(document: any) {\n    this.saved.emit(document);\n    this.matDialog.closeAll();\n  }\n}\n","<mat-icon\n  [color]=\"color\"\n  class=\"cursor-pointer text-secondary\"\n  (click)=\"showForm(assetLocationFormTemplate)\"\n>\n  {{ assetLocation ? 'edit' : 'add' }}\n</mat-icon>\n\n<ng-template #assetLocationFormTemplate>\n  <div\n    class=\"d-flex flex-column justify-content-start\"\n  >\n    <h3 class=\"mb-0\" mat-dialog-title>\n      Set Asset Location\n    </h3>\n    <app-asset-location-form\n      [assetId]=\"assetId\"\n      [assetLocation]=\"assetLocation\"\n      (saved)=\"onSaved($event)\"\n      (cancelled)=\"matDialog.closeAll()\"\n      mat-dialog-content\n    ></app-asset-location-form>\n  </div>\n</ng-template>\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {MatButton} from \"@angular/material/button\";\nimport {MatDialog, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle} from \"@angular/material/dialog\";\nimport {MatIcon} from \"@angular/material/icon\";\nimport {AssetLocationHistoryService} from \"../asset-location-history.service\";\n\n@Component({\n  selector: 'app-asset-location-history-delete-button',\n  standalone: true,\n\timports: [\n\t\tMatButton,\n\t\tMatDialogActions,\n\t\tMatDialogClose,\n\t\tMatDialogContent,\n\t\tMatDialogTitle,\n\t\tMatIcon\n\t],\n  templateUrl: './asset-location-history-delete-button.component.html',\n  styleUrl: './asset-location-history-delete-button.component.scss'\n})\nexport class AssetLocationHistoryDeleteButtonComponent {\n  @Input() assetLocationHistory: any;\n  @Output() deleted: EventEmitter<any> = new EventEmitter();\n  isDeleting: boolean = false;\n\n  constructor(\n    private matDialog: MatDialog,\n    private assetLocationHistoryService: AssetLocationHistoryService\n  ) {}\n\n  showDeleteDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef);\n  }\n\n  deleteModel() {\n    this.isDeleting = true;\n    this.assetLocationHistoryService.delete(this.assetLocationHistory).subscribe({\n      next: () => {\n        this.isDeleting = false;\n        this.matDialog.closeAll();\n        this.deleted.emit();\n      },\n      error: () => {\n        this.isDeleting = false;\n      }\n    });\n  }\n}\n","<mat-icon\n  class=\"text-secondary cursor-pointer\"\n  (click)=\"showDeleteDialog(deleteModelDialog)\"\n>\n  delete\n</mat-icon>\n\n<ng-template #deleteModelDialog>\n  <h3 mat-dialog-title>Delete Asset Location History</h3>\n  <mat-dialog-content>\n    <p>Deleting this record will remove a location history of this asset, this action cannot be undone.</p>\n    <p> Are you sure you want to continue?</p>\n  </mat-dialog-content>\n  <mat-dialog-actions\n    class=\"d-flex justify-content-end align-items-center gap-1\"\n  >\n    <button\n      [disabled]=\"isDeleting\"\n      (click)=\"deleteModel()\"\n      type=\"button\"\n      mat-raised-button\n      color=\"warn\"\n    >\n      Delete\n    </button>\n    <button\n      [disabled]=\"isDeleting\"\n      type=\"button\"\n      mat-dialog-close\n      mat-flat-button\n    >\n      Cancel\n    </button>\n  </mat-dialog-actions>\n</ng-template>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { MatCard, MatCardContent } from \"@angular/material/card\";\nimport { AssetLocationFormButtonComponent } from \"../asset-location-form-button/asset-location-form-button.component\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport {\n  TechlifyListComponent,\n  TimelineFilterModule\n} from \"ngx-techlify-core\";\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { AssetLocationSelectorComponent } from \"../asset-location-selector/asset-location-selector.component\";\nimport { debounceTime, distinctUntilChanged } from \"rxjs\";\nimport { AssetLocationHistoryService } from \"../asset-location-history.service\";\nimport {\n  MatCell,\n  MatCellDef,\n  MatColumnDef,\n  MatHeaderCell,\n  MatHeaderCellDef,\n  MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef,\n  MatTable\n} from \"@angular/material/table\";\nimport { DatePipe, NgIf } from \"@angular/common\";\nimport { MatProgressBar } from \"@angular/material/progress-bar\";\nimport { InfiniteScrollDirective } from \"ngx-infinite-scroll\";\nimport { MatSort } from \"@angular/material/sort\";\nimport {\n  AssetLocationHistoryDeleteButtonComponent\n} from \"../asset-location-history-delete-button/asset-location-history-delete-button.component\";\n\n@Component({\n  selector: 'app-asset-location-history-page',\n  standalone: true,\n  imports: [\n    MatCard,\n    MatCardContent,\n    AssetLocationFormButtonComponent,\n    MatFormField,\n    MatInput,\n    ReactiveFormsModule,\n    MatLabel,\n    AssetLocationSelectorComponent,\n    TimelineFilterModule,\n    MatTable,\n    MatColumnDef,\n    MatHeaderCell,\n    MatCell,\n    MatHeaderCellDef,\n    MatCellDef,\n    MatHeaderRow,\n    MatHeaderRowDef,\n    MatRowDef,\n    DatePipe,\n    MatRow,\n    MatProgressBar,\n    NgIf,\n    InfiniteScrollDirective,\n    MatSort,\n    AssetLocationHistoryDeleteButtonComponent,\n  ],\n  templateUrl: './asset-location-history-page.component.html',\n  styleUrl: './asset-location-history-page.component.scss'\n})\nexport class AssetLocationHistoryPageComponent extends TechlifyListComponent implements OnInit {\n  @ViewChild('table') table!: MatTable<any>;\n  assetId!: number;\n  displayedColumns: string[] = [\n    'No',\n    'Arrived At',\n    'Location',\n    'Details',\n    'Creator',\n    'Actions',\n  ];\n\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private formBuilder: FormBuilder,\n    private assetLocationHistoryService: AssetLocationHistoryService\n  ) {\n    super();\n    this.lastPage = 0;\n    this.filterForm = this.formBuilder.group({\n      search: [''],\n      location_ids: [''],\n      asset_ids: [''],\n      duration: [''],\n      date_from: [''],\n      date_to: [''],\n      sort_by: ['id|desc'],\n    });\n  }\n\n  ngOnInit() {\n    this.assetId = parseInt(this.activatedRoute.snapshot.parent?.params['id']);\n    if (this.assetId) {\n      this.filterForm.get('asset_ids')?.setValue(this.assetId);\n    }\n\n    this.requestHelperService.updateFormWithQueryParams(\n      this.filterForm,\n      {\n        asset_ids: { multiple: true },\n        location_ids: { multiple: true }\n      }\n    );\n\n    (this.filterForm as FormGroup).valueChanges.pipe(\n      debounceTime(800)\n    ).subscribe({\n      next: () => {\n        this.requestHelperService.updateQueryParams(\n          this.requestHelperService.convertToFormData(this.filterForm.value)\n        );\n      }\n    });\n\n    // listen for route change\n    this.activatedRoute.queryParams\n      .pipe(debounceTime(500), distinctUntilChanged())\n      .subscribe((val: any) => {\n        this.reload();\n      });\n  }\n\n  override  loadData(): void {\n    if (this.isWorking) {\n      return;\n    }\n\n    this.isWorking = true;\n    const params: any = {\n      page: this.page,\n      perPage: this.perPage,\n      ...this.requestHelperService.convertToFormData(this.filterForm.value),\n      with: 'location,creator',\n    }\n    this.assetLocationHistoryService.index(params).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        this.models = this.models?.concat(response?.data);\n        this.lastPage = response?.last_page;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  onCreated(assetLocationHistory: any) {\n    this.models.unshift(assetLocationHistory);\n    this.table.renderRows();\n  }\n\n  onSaved(assetLocationHistory: any, index: number) {\n    this.models[index] = assetLocationHistory;\n    this.table.renderRows();\n  }\n\n  onDeleted(event: any, index: number) {\n    this.models.splice(index, 1);\n    this.table.renderRows();\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n    <div class=\"d-flex justify-content-start align-items-center gap-3\">\n      <strong class=\"mb-0\">Asset Location History</strong>\n      <app-asset-location-form-button\n        color=\"primary\"\n        [assetId]=\"assetId\"\n        (saved)=\"onCreated($event)\"\n      ></app-asset-location-form-button>\n    </div>\n    <form\n      [formGroup]=\"filterForm\" (submit)=\"reload()\"\n      class=\"d-flex justify-content-end align-items-center gap-2\"\n    >\n      <mat-form-field>\n        <mat-label>Search</mat-label>\n        <input formControlName=\"search\" type=\"text\" matInput placeholder=\"Search Locations\">\n      </mat-form-field>\n\n      <app-asset-location-selector\n        formControlName=\"location_ids\"\n        [multiple]=\"true\"\n      ></app-asset-location-selector>\n\n      <app-timeline-filter\n        labelText=\"Date\"\n        formControlName=\"duration\"\n        [form]=\"filterForm\"\n      ></app-timeline-filter>\n    </form>\n  </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-3\">\n  <mat-card-content class=\"p-0\">\n    <table\n      #table\n      mat-table [dataSource]=\"models\" class=\"w-100\"\n      infiniteScroll\n      [infiniteScrollDistance]=\"2\"\n      [infiniteScrollThrottle]=\"50\"\n      (scrolled)=\"onScroll()\"\n      [fromRoot]=\"true\"\n      matSort\n    >\n      <ng-container matColumnDef=\"No\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i + 1 }} </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Arrived At\">\n        <th mat-header-cell *matHeaderCellDef> Arrived At </th>\n        <td mat-cell *matCellDef=\"let element\"> {{ element?.arrived_at | date }} </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Location\">\n        <th mat-header-cell *matHeaderCellDef> Location </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-0\">{{ element?.location?.title }}</p>\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Details\">\n        <th mat-header-cell *matHeaderCellDef> Details </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.details }}\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Creator\">\n        <th mat-header-cell *matHeaderCellDef> Creator </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n          <small class=\"text-secondary\">{{ element?.created_at | date }}</small>\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Actions\">\n        <th mat-header-cell *matHeaderCellDef> Actions </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">\n          <div class=\"d-flex justify-content-start align-items-center gap-2\">\n            <app-asset-location-form-button\n              [assetId]=\"assetId\"\n              [assetLocation]=\"element\"\n              (saved)=\"onSaved($event, i)\"\n            ></app-asset-location-form-button>\n\n            <app-asset-location-history-delete-button\n              [assetLocationHistory]=\"element\"\n              (deleted)=\"onDeleted($event, i)\"\n            ></app-asset-location-history-delete-button>\n          </div>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n    <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n","import { Injectable } from '@angular/core';\nimport {HttpService, TechlifyService} from \"ngx-techlify-core\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AssetUsageService extends TechlifyService {\n\n  constructor(\n    httpService: HttpService,\n  ) {\n    super(httpService, 'accounting-plus/asset-usages');\n  }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n  AlertService,\n  FormValidatorService,\n  SearchableSelectorModule,\n  TechlifyFormComponent\n} from \"ngx-techlify-core\";\nimport { FormBuilder, ReactiveFormsModule, Validators } from \"@angular/forms\";\nimport { AssetUsageService } from \"../asset-usage.service\";\nimport { MatError, MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { NgIf } from \"@angular/common\";\nimport { MatButton } from \"@angular/material/button\";\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from \"@angular/material/datepicker\";\nimport moment from \"moment\";\n\n@Component({\n  selector: 'app-asset-usage-form',\n  standalone: true,\n  imports: [\n    ReactiveFormsModule,\n    MatLabel,\n    MatFormField,\n    MatInput,\n    NgIf,\n    MatButton,\n    MatError,\n    SearchableSelectorModule,\n    MatDatepickerInput,\n    MatDatepickerToggle,\n    MatDatepicker,\n  ],\n  templateUrl: './asset-usage-form.component.html',\n  styleUrl: './asset-usage-form.component.scss'\n})\nexport class AssetUsageFormComponent extends TechlifyFormComponent implements OnInit {\n  @Input() assetId: any;\n  @Input() model: any;\n  @Output() cancelled: EventEmitter<any> = new EventEmitter();\n  @Output() saved: EventEmitter<any> = new EventEmitter();\n\n  constructor(\n    formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder,\n    protected override service: AssetUsageService,\n  ) {\n    super(formValidatorService);\n\n    this.errorMessages = {\n      asset_id: {\n        required: 'The asset field is required.'\n      },\n      measured_at: {\n        required: 'The measured date field is required.'\n      },\n      value: {\n        required: 'The value field is required.'\n      }\n    }\n\n    this.form = this.formBuilder.group({\n      id: [''],\n      asset_id: ['', Validators.required],\n      measured_at: [new Date(), Validators.required],\n      value: ['', Validators.required],\n      details: [''],\n    });\n  }\n\n  ngOnInit() {\n    if (this.model) {\n      const data: any = { ...this.model };\n      if (data?.measured_at) {\n        data.measured_at = new Date(data.measured_at);\n      }\n      this.form.patchValue({\n        ...data\n      });\n    }\n    if (this.assetId) {\n      this.form.get('asset_id')?.setValue(this.assetId);\n    }\n  }\n\n  save() {\n    this.form.markAllAsTouched();\n\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please check the form for errors.', 'error');\n      return;\n    }\n\n    const data: any = {\n      ...this.form.value\n    }\n\n    if (data.measured_at) {\n      data.measured_at = moment(data.measured_at).format('YYYY-MM-DD');\n    }\n\n    this.isWorking = true;\n    const params: any = {\n      with: 'creator',\n    }\n    let request = this.service.store(data, params);\n    if (this.model) {\n      request = this.service.update(data, params);\n    }\n    request.subscribe({\n      next: (response: any) => {\n        this.saved.emit(response?.item);\n        this.isWorking = false;\n        this.alertService.addAlert('The asset usage record saved successfully!', 'success');\n      },\n      error: () => {\n        this.isWorking = false;\n      }\n    });\n  }\n}\n","<form [formGroup]=\"form\" class=\"d-flex flex-column gap-1\" (ngSubmit)=\"save()\">\n  <mat-form-field *ngIf=\"!assetId\">\n    <mat-label>Asset</mat-label>\n    <app-searchable-selector\n      formControlName=\"asset_id\"\n      apiUrl=\"api/accounting-plus/fixed-assets\"\n      titleField=\"name\"\n      [required]=\"true\"\n    ></app-searchable-selector>\n\n    <mat-error *ngIf=\"isFieldValid('asset_id')\">\n      {{ getErrorMessage('asset_id') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Value</mat-label>\n    <input type=\"number\" matInput placeholder=\"Value\" formControlName=\"value\">\n    <mat-error *ngIf=\"isFieldValid('value')\">\n      {{ getErrorMessage('value') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Measured Date</mat-label>\n    <input matInput [matDatepicker]=\"picker\" (focus)=\"picker.open()\" formControlName=\"measured_at\">\n    <mat-datepicker #picker></mat-datepicker>\n    <mat-error *ngIf=\"isFieldValid('measured_at')\">\n      {{ getErrorMessage('measured_at') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Details</mat-label>\n    <textarea formControlName=\"details\" matInput placeholder=\"Details\"></textarea>\n  </mat-form-field>\n\n  <div class=\"d-flex justify-content-end align-items-center gap-2\">\n    <button [disabled]=\"isWorking\" type=\"submit\" mat-raised-button color=\"primary\">\n      Save\n    </button>\n    <button [disabled]=\"isWorking\" type=\"button\" mat-flat-button (click)=\"cancelled.emit()\">Cancel</button>\n  </div>\n</form>\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {MatIcon} from \"@angular/material/icon\";\nimport {MatDialog, MatDialogContent, MatDialogRef, MatDialogTitle} from \"@angular/material/dialog\";\nimport {AssetUsageFormComponent} from \"../asset-usage-form/asset-usage-form.component\";\n\n@Component({\n  selector: 'app-asset-usage-form-button',\n  standalone: true,\n  imports: [\n    MatIcon,\n    MatDialogTitle,\n    AssetUsageFormComponent,\n    MatDialogContent\n  ],\n  templateUrl: './asset-usage-form-button.component.html',\n  styleUrl: './asset-usage-form-button.component.scss'\n})\nexport class AssetUsageFormButtonComponent {\n  @Input() assetId!: number;\n  @Input() model: any;\n  @Output() saved: EventEmitter<any> = new EventEmitter();\n\n  matDialogRef!: MatDialogRef<TemplateRef<any>>;\n  constructor(\n    private matDialog: MatDialog,\n  ) {\n  }\n\n  showForm(templateRef: TemplateRef<any>) {\n    this.matDialogRef = this.matDialog.open(templateRef, { width: '500px' });\n  }\n\n  onSaved(model: any) {\n    this.matDialogRef.close();\n    this.saved.emit(model);\n  }\n}\n","<mat-icon class=\"cursor-pointer\" (click)=\"showForm(modelForm)\">\n  {{ model ? 'edit' : 'add' }}\n</mat-icon>\n\n<ng-template #modelForm>\n  <h3 mat-dialog-title>{{ model ? 'Edit' : 'Add' }} Asset Usage</h3>\n\n  <app-asset-usage-form\n    mat-dialog-content\n    [assetId]=\"assetId\"\n    [model]=\"model\"\n    (saved)=\"onSaved($event)\"\n    (cancelled)=\"matDialogRef.close()\"\n  ></app-asset-usage-form>\n\n</ng-template>\n","import {Injectable} from '@angular/core';\nimport {HttpService, TechlifyService} from \"ngx-techlify-core\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AssetUsageSpecificationService extends TechlifyService {\n\n  constructor(\n    httpService: HttpService,\n  ) {\n    super(httpService, 'accounting-plus/asset-usage-specifications');\n  }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from \"@angular/forms\";\nimport { MatButton } from \"@angular/material/button\";\nimport { MatDatepicker, MatDatepickerInput } from \"@angular/material/datepicker\";\nimport { MatError, MatFormField, MatHint, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { NgIf } from \"@angular/common\";\nimport {\n  AlertService,\n  FormValidatorService,\n  SearchableSelectorModule,\n  TechlifyFormComponent\n} from \"ngx-techlify-core\";\nimport { AssetUsageSpecificationService } from \"../asset-usage-specification.service\";\n\n@Component({\n  selector: 'app-asset-usage-specification-form',\n  standalone: true,\n  imports: [\n    FormsModule,\n    MatButton,\n    MatDatepicker,\n    MatDatepickerInput,\n    MatError,\n    MatFormField,\n    MatInput,\n    MatLabel,\n    NgIf,\n    ReactiveFormsModule,\n    SearchableSelectorModule,\n    MatHint\n  ],\n  templateUrl: './asset-usage-specification-form.component.html',\n  styleUrl: './asset-usage-specification-form.component.scss'\n})\nexport class AssetUsageSpecificationFormComponent extends TechlifyFormComponent implements OnInit {\n  @Input() assetId: any;\n  @Input() model: any;\n  @Output() cancelled: EventEmitter<any> = new EventEmitter();\n  @Output() saved: EventEmitter<any> = new EventEmitter();\n\n  selectedMeasure!: any;\n\n  constructor(\n    formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder,\n    protected override service: AssetUsageSpecificationService,\n  ) {\n    super(formValidatorService);\n\n    this.errorMessages = {\n      asset_id: {\n        required: 'The asset field is required.'\n      },\n      usage_measure_id: {\n        required: 'The usage measure field is required.'\n      },\n      maintenance_interval: {\n        required: 'The maintenance interval field is required.'\n      }\n    }\n\n    this.form = this.formBuilder.group({\n      id: [''],\n      usage_measure_id: ['', Validators.required],\n      asset_id: ['', Validators.required],\n      maintenance_interval: ['', Validators.required],\n    });\n  }\n\n  ngOnInit() {\n    if (this.model) {\n      const data: any = { ...this.model };\n      this.form.patchValue({\n        ...data\n      });\n      this.selectedMeasure = this.model?.usage_measure;\n    }\n    if (this.assetId) {\n      this.form.get('asset_id')?.setValue(this.assetId);\n    }\n  }\n\n  save() {\n    this.form.markAllAsTouched();\n\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please check the form for errors.', 'error');\n      return;\n    }\n\n    const data: any = {\n      ...this.form.value\n    }\n\n    this.isWorking = true;\n    const params: any = {\n      with: 'usageMeasure'\n    }\n    let request = this.service.store(data, params);\n    if (this.model) {\n      request = this.service.update(data, params);\n    }\n    request.subscribe({\n      next: (response: any) => {\n        this.saved.emit(response?.item);\n        this.isWorking = false;\n        this.alertService.addAlert('The asset usage specification saved successfully!', 'success');\n      },\n      error: () => {\n        this.isWorking = false;\n      }\n    });\n  }\n\n  onUsageMeasureChange(selected: any) {\n    this.selectedMeasure = selected;\n  }\n}\n","<form [formGroup]=\"form\" class=\"d-flex flex-column gap-1\" (ngSubmit)=\"save()\">\n  <mat-form-field *ngIf=\"!assetId\">\n    <mat-label>Asset</mat-label>\n    <app-searchable-selector\n      formControlName=\"asset_id\"\n      apiUrl=\"api/accounting-plus/fixed-assets\"\n      titleField=\"name\"\n      [required]=\"true\"\n    ></app-searchable-selector>\n\n    <mat-error *ngIf=\"isFieldValid('asset_id')\">\n      {{ getErrorMessage('asset_id') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Usage Measure</mat-label>\n    <app-searchable-selector\n      formControlName=\"usage_measure_id\"\n      apiUrl=\"api/accounting-plus/asset-usage-measures\"\n      [enableSearch]=\"false\"\n      [required]=\"true\"\n      (selectedValueChange)=\"onUsageMeasureChange($event)\"\n    ></app-searchable-selector>\n\n    <mat-error *ngIf=\"isFieldValid('usage_measure_id')\">\n      {{ getErrorMessage('usage_measure_id') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Maintenance Interval</mat-label>\n    <input type=\"number\" matInput placeholder=\"Value\" formControlName=\"maintenance_interval\">\n    <mat-error *ngIf=\"isFieldValid('maintenance_interval')\">\n      {{ getErrorMessage('maintenance_interval') }}\n    </mat-error>\n    <mat-hint *ngIf=\"selectedMeasure\">\n      After how many {{ selectedMeasure?.title }} does this asset need to be serviced?\n    </mat-hint>\n  </mat-form-field>\n\n  <div class=\"d-flex justify-content-end align-items-center gap-2\">\n    <button [disabled]=\"isWorking\" type=\"submit\" mat-raised-button color=\"primary\">\n      Save\n    </button>\n    <button [disabled]=\"isWorking\" type=\"button\" mat-flat-button (click)=\"cancelled.emit()\">Cancel</button>\n  </div>\n</form>\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { NgIf } from \"@angular/common\";\nimport { FixedAssetService } from \"../../fixed-asset.service\";\nimport { AssetUsageFormComponent } from \"../asset-usage-form/asset-usage-form.component\";\nimport { MatDialog, MatDialogContent, MatDialogRef, MatDialogTitle } from \"@angular/material/dialog\";\nimport {\n  AssetUsageSpecificationFormComponent\n} from \"../asset-usage-specification-form/asset-usage-specification-form.component\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n  selector: 'app-asset-usage-specification',\n  standalone: true,\n  imports: [\n    NgIf,\n    AssetUsageFormComponent,\n    MatDialogContent,\n    MatDialogTitle,\n    AssetUsageSpecificationFormComponent,\n    MatIcon\n  ],\n  templateUrl: './asset-usage-specification.component.html',\n  styleUrl: './asset-usage-specification.component.scss'\n})\nexport class AssetUsageSpecificationComponent implements OnInit {\n  @Input() assetId!: number;\n  @Output() saved: EventEmitter<any> = new EventEmitter();\n\n  assetUsageSpecification!: any;\n  isWorking!: boolean;\n  matDialogRef!: MatDialogRef<TemplateRef<any>>;\n\n  constructor(\n    private service: FixedAssetService,\n    private matDialog: MatDialog\n  ) {\n  }\n\n  ngOnInit() {\n    if (this.assetId) {\n      this.loadData();\n    }\n  }\n\n  loadData(): void {\n    this.isWorking = true;\n    const params: any = {\n      with: 'usageSpecification.usageMeasure',\n    }\n    this.service.show(this.assetId, params).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        this.assetUsageSpecification = response?.item?.usage_specification;\n      },\n      error: () => {\n        this.isWorking = false;\n      }\n    });\n  }\n\n  showForm(templateRef: TemplateRef<any>) {\n    this.matDialogRef = this.matDialog.open(templateRef, { width: '500px' });\n  }\n\n  onSaved(model: any) {\n    this.matDialogRef.close();\n    this.assetUsageSpecification = model;\n    this.saved.emit(model);\n  }\n}\n","<p *ngIf=\"!assetUsageSpecification && !isWorking\" class=\"mb-0 cursor-pointer text-dark\" (click)=\"showForm(modelForm)\">\n  Add Usage Specification\n</p>\n\n<div *ngIf=\"assetUsageSpecification && !isWorking\" class=\"d-flex justify-content-start align-items-center gap-1\">\n  <p class=\"mb-0\">\n    Measure: {{ assetUsageSpecification?.usage_measure?.title }},\n    Maintenance Interval: every {{ assetUsageSpecification?.maintenance_interval }} {{ assetUsageSpecification?.usage_measure?.title }}\n  </p>\n  <mat-icon (click)=\"showForm(modelForm)\" class=\"cursor-pointer\">edit</mat-icon>\n</div>\n\n<ng-template #modelForm>\n  <h3 mat-dialog-title>{{ assetUsageSpecification ? 'Edit' : 'Add' }} Asset Usage Specification</h3>\n\n  <app-asset-usage-specification-form\n    mat-dialog-content\n    [assetId]=\"assetId\"\n    [model]=\"assetUsageSpecification\"\n    (saved)=\"onSaved($event)\"\n    (cancelled)=\"matDialogRef.close()\"\n  ></app-asset-usage-specification-form>\n\n</ng-template>\n","import { Component, OnInit } from '@angular/core';\nimport {\n  TechlifyListComponent,\n  TimelineFilterModule\n} from \"ngx-techlify-core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatCard, MatCardContent } from \"@angular/material/card\";\nimport { MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport {\n  MatCell,\n  MatCellDef,\n  MatColumnDef,\n  MatHeaderCell,\n  MatHeaderCellDef,\n  MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef,\n  MatTable\n} from \"@angular/material/table\";\nimport { InfiniteScrollDirective } from \"ngx-infinite-scroll\";\nimport { MatProgressBar } from \"@angular/material/progress-bar\";\nimport { DatePipe, NgIf } from \"@angular/common\";\nimport { debounceTime } from \"rxjs/operators\";\nimport { distinctUntilChanged } from \"rxjs\";\nimport { AssetUsageService } from \"../asset-usage.service\";\nimport { AssetUsageFormButtonComponent } from \"../asset-usage-form-button/asset-usage-form-button.component\";\nimport { AssetUsageSpecificationComponent } from \"../asset-usage-specification/asset-usage-specification.component\";\nimport { MatSort, MatSortHeader, Sort } from \"@angular/material/sort\";\n\n@Component({\n  selector: 'app-asset-usage-list',\n  standalone: true,\n  imports: [\n    MatCard,\n    MatCardContent,\n    ReactiveFormsModule,\n    MatFormField,\n    MatInput,\n    MatTable,\n    InfiniteScrollDirective,\n    MatColumnDef,\n    MatHeaderCellDef,\n    MatCellDef,\n    MatHeaderCell,\n    MatCell,\n    MatHeaderRow,\n    MatHeaderRowDef,\n    MatRowDef,\n    MatRow,\n    MatProgressBar,\n    DatePipe,\n    NgIf,\n    MatLabel,\n    AssetUsageFormButtonComponent,\n    TimelineFilterModule,\n    AssetUsageSpecificationComponent,\n    MatSortHeader,\n    MatSort\n  ],\n  templateUrl: './asset-usage-list.component.html',\n  styleUrl: './asset-usage-list.component.scss'\n})\nexport class AssetUsageListComponent extends TechlifyListComponent implements OnInit {\n  assetId!: any;\n  displayedColumns: string[] = [\n    '#',\n    'Date',\n    'Usage',\n    'Details',\n    'Creator',\n    'Action'\n  ];\n\n  constructor(\n    protected override service: AssetUsageService,\n    private formBuilder: FormBuilder,\n    private activatedRoute: ActivatedRoute\n  ) {\n    super();\n    this.assetId = this.activatedRoute?.snapshot?.parent?.params['id'] ?\n      parseInt(this.activatedRoute?.snapshot?.parent?.params['id']) : ''\n\n    this.lastPage = 0;\n    this.filterForm = this.formBuilder.group({\n      asset_ids: [''],\n      duration: [''],\n      date_from: [''],\n      date_to: [''],\n      sort_by: ['measured_at|desc']\n    })\n  }\n\n  ngOnInit() {\n    if (this.assetId) {\n      this.filterForm.get('asset_ids')?.setValue(this.assetId, { emitEvent: false });\n    }\n    this.updateFormWithQueryParams();\n    this.subscribeToFormChanges();\n    this.subscribeToRouteChanges();\n  }\n\n  override loadData(): void {\n    this.isWorking = true;\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value),\n      with: 'creator,asset,usageMeasure',\n      page: this.page,\n      perPage: this.perPage\n    }\n\n    this.service.index(params).subscribe({\n      next: (response: any) => {\n        this.models = this.models?.concat(response?.data);\n        this.lastPage = response?.last_page;\n        this.isWorking = false;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  private updateFormWithQueryParams(): void {\n    this.requestHelperService.updateFormWithQueryParams(\n      this.filterForm,\n      {}\n    );\n  }\n\n  private subscribeToFormChanges(): void {\n    (this.filterForm as FormGroup).valueChanges.pipe(\n      debounceTime(800)\n    ).subscribe({\n      next: () => {\n        this.requestHelperService.updateQueryParams(\n          this.requestHelperService.convertToFormData(this.filterForm.value)\n        );\n      }\n    });\n  }\n\n  private subscribeToRouteChanges(): void {\n    this.activatedRoute.queryParams\n      .pipe(debounceTime(500),\n        distinctUntilChanged())\n      .subscribe(() => {\n        this.reload();\n      });\n  }\n\n  onSortChange(sort: Sort) {\n    let { active, direction } = sort;\n\n    if (!active) active = 'measured_at';\n\n    if (!direction) direction = 'desc';\n\n    this.filterForm.get('sort_by')?.setValue(active + '|' + direction);\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n    <div class=\"d-flex justify-content-start align-items-center gap-3\">\n      <h3 class=\"mb-0 fw-bold\">Asset Usages</h3>\n      <app-asset-usage-form-button\n        [assetId]=\"assetId\"\n        class=\"mt-1\"\n        (saved)=\"reload()\"\n      ></app-asset-usage-form-button>\n      <app-asset-usage-specification [assetId]=\"assetId\"></app-asset-usage-specification>\n    </div>\n    <form class=\"d-flex justify-content-end align-items-center gap-3\" [formGroup]=\"filterForm\">\n      <app-timeline-filter\n        labelText=\"Date\"\n        formControlName=\"duration\"\n        [form]=\"filterForm\"\n      ></app-timeline-filter>\n    </form>\n  </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-3\">\n  <mat-card-content class=\"p-0\">\n    <table mat-table [dataSource]=\"models\" class=\"w-100\"\n           infiniteScroll\n           [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\"\n           matSort\n           (matSortChange)=\"onSortChange($event)\"\n    >\n      <ng-container matColumnDef=\"#\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let i = index\"> {{ i + 1}} </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Date\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"measured_at\"> Date </th>\n        <td mat-cell *matCellDef=\"let element\"> {{ element?.measured_at | date }} </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Usage\">\n        <th mat-header-cell *matHeaderCellDef> Usage </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.value }}\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Phone\">\n        <th mat-header-cell *matHeaderCellDef> Phone </th>\n        <td mat-cell *matCellDef=\"let element\"> {{ element?.phone }} </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Email\">\n        <th mat-header-cell *matHeaderCellDef> Email </th>\n        <td mat-cell *matCellDef=\"let element\"> {{ element?.email }} </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Details\">\n        <th mat-header-cell *matHeaderCellDef> Details </th>\n        <td mat-cell *matCellDef=\"let element\"> {{ element?.details }} </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Creator\">\n        <th mat-header-cell *matHeaderCellDef> Creator </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n          <small class=\"text-secondary\">{{ element?.created_at | date }}</small>\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Action\">\n        <th mat-header-cell *matHeaderCellDef> Action </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">\n          <div class=\"d-flex justify-content-start align-items-center gap-2\">\n            <app-asset-usage-form-button\n              [assetId]=\"assetId\"\n              [model]=\"element\"\n              (saved)=\"reload()\"\n            ></app-asset-usage-form-button>\n          </div>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n    <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { FixedAssetsListPageComponent } from './fixed-assets-list-page/fixed-assets-list-page.component';\nimport { FixedAssetFormPageComponent } from './fixed-asset-form-page/fixed-asset-form-page.component';\nimport { FixedAssetsDashboardPageComponent } from './fixed-assets-dashboard-page/fixed-assets-dashboard-page.component';\nimport { FixedAssetViewPageComponent } from './fixed-asset-view-page/fixed-asset-view-page.component';\nimport { FixedAssetInformationPageComponent } from './fixed-asset-information-page/fixed-asset-information-page.component';\nimport { FixedAssetDocumentsComponent } from './fixed-asset-documents/fixed-asset-documents.component';\nimport { FixedAssetMaintenancesComponent } from './fixed-asset-maintenances/fixed-asset-maintenances.component';\nimport {\n  FixedAssetMaintenanceViewPageComponent\n} from \"./fixed-asset-maintenance-view-page/fixed-asset-maintenance-view-page.component\";\nimport {\n  AssetLocationHistoryPageComponent\n} from \"./locations/asset-location-history-page/asset-location-history-page.component\";\nimport {AssetUsageListComponent} from \"./asset-usage/asset-usage-list/asset-usage-list.component\";\n\nconst routes: Routes = [\n  {\n    path: 'dashboard',\n    component: FixedAssetsDashboardPageComponent\n  },\n  {\n    path: 'maintenances',\n    component: FixedAssetMaintenancesComponent\n  },\n  {\n    path: 'maintenances/:id/view',\n    component: FixedAssetMaintenanceViewPageComponent\n  },\n  {\n    path: 'list',\n    component: FixedAssetsListPageComponent\n  },\n  {\n    path: 'create',\n    component: FixedAssetFormPageComponent\n  },\n  {\n    path: ':id/edit',\n    component: FixedAssetFormPageComponent\n  },\n  {\n    path: ':id/read',\n    component: FixedAssetViewPageComponent,\n    children: [\n      {\n        path: 'asset-information',\n        component: FixedAssetInformationPageComponent\n      },\n      {\n        path: 'documents',\n        component: FixedAssetDocumentsComponent\n      },\n      {\n        path: 'maintenances',\n        component: FixedAssetMaintenancesComponent\n      },\n      {\n        path: 'locations',\n        component: AssetLocationHistoryPageComponent\n      },\n      {\n        path: 'usage',\n        component: AssetUsageListComponent\n      },\n      {\n        path: '**',\n        redirectTo: 'asset-information',\n        pathMatch: 'full'\n      }\n    ]\n  },\n  {\n    path: '**',\n    redirectTo: 'dashboard',\n    pathMatch: 'full'\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class FixedAssetsRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FixedAssetDeleteButtonComponent } from './fixed-asset-delete-button.component';\nimport {MaterialModule} from \"ngx-techlify-core\";\n\n@NgModule({\n  declarations: [FixedAssetDeleteButtonComponent],\n  imports: [CommonModule, MaterialModule],\n  exports: [FixedAssetDeleteButtonComponent, FixedAssetDeleteButtonComponent, FixedAssetDeleteButtonComponent]\n})\nexport class FixedAssetDeleteButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FixedAssetInformationTeaserCardComponent } from './fixed-asset-information-teaser-card/fixed-asset-information-teaser-card.component';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\nimport {FixedAssetDeleteButtonModule} from \"../fixed-asset-delete-button/fixed-asset-delete-button.module\";\n\n@NgModule({\n  declarations: [FixedAssetInformationTeaserCardComponent],\n  exports: [FixedAssetInformationTeaserCardComponent],\n  imports: [\n    CommonModule,\n    MatCardModule,\n    MatIconModule,\n    RouterLink,\n    FixedAssetDeleteButtonModule,\n  ]\n})\nexport class FixedAssetInformationModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FixedAssetMaintenanceStatusButtonComponent } from './fixed-asset-maintenance-status-button/fixed-asset-maintenance-status-button.component';\nimport {MaterialModule} from \"ngx-techlify-core\";\nimport {ReactiveFormsModule} from \"@angular/forms\";\n\n\n\n@NgModule({\n    declarations: [\n        FixedAssetMaintenanceStatusButtonComponent\n    ],\n    exports: [\n        FixedAssetMaintenanceStatusButtonComponent\n    ],\n    imports: [\n        CommonModule,\n        MaterialModule,\n        ReactiveFormsModule\n    ]\n})\nexport class FixedAssetMaintenanceWidgetsModule { }\n","import { NgModule } from '@angular/core';\n\nimport { FixedAssetsRoutingModule } from './fixed-assets-routing.module';\nimport { FixedAssetFormPageComponent } from './fixed-asset-form-page/fixed-asset-form-page.component';\nimport { FixedAssetsListPageComponent } from './fixed-assets-list-page/fixed-assets-list-page.component';\nimport { FixedAssetFormComponent } from './fixed-asset-form/fixed-asset-form.component';\nimport { NgxEditorModule } from 'ngx-editor';\nimport { DocumentViewerModule, NoteModule } from 'ngx-techlify-core';\nimport { FixedAssetsDashboardPageComponent } from './fixed-assets-dashboard-page/fixed-assets-dashboard-page.component';\nimport { FixedAssetsTableComponent } from './fixed-assets-table/fixed-assets-table.component';\nimport { FixedAssetViewPageComponent } from './fixed-asset-view-page/fixed-asset-view-page.component';\nimport {\n  FixedAssetInformationPageComponent\n} from './fixed-asset-information-page/fixed-asset-information-page.component';\nimport { FixedAssetDocumentsComponent } from './fixed-asset-documents/fixed-asset-documents.component';\nimport { FixedAssetDocumentFormComponent } from './fixed-asset-document-form/fixed-asset-document-form.component';\nimport {\n  FixedAssetDocumentFormButtonComponent\n} from './fixed-asset-document-form-button/fixed-asset-document-form-button.component';\nimport { FixedAssetMaintenancesComponent } from './fixed-asset-maintenances/fixed-asset-maintenances.component';\nimport {\n  FixedAssetMaintenanceFormComponent\n} from './fixed-asset-maintenance-form/fixed-asset-maintenance-form.component';\nimport {\n  FixedAssetMaintenanceFormButtonComponent\n} from './fixed-asset-maintenance-form-button/fixed-asset-maintenance-form-button.component';\nimport {\n  FixedAssetMaintenancePhotosComponent\n} from './fixed-asset-maintenance-photos/fixed-asset-maintenance-photos.component';\nimport {\n  FixedAssetMaintenanceViewPageComponent\n} from './fixed-asset-maintenance-view-page/fixed-asset-maintenance-view-page.component';\nimport { FixedAssetInformationModule } from './fixed-asset-information/fixed-asset-information.module';\nimport {\n  FixedAssetMaintenanceWidgetsModule\n} from \"./fixed-asset-maintenance-widgets/fixed-asset-maintenance-widgets.module\";\nimport {\n  FixedAssetBatchUpdateFormComponent\n} from \"./fixed-asset-batch-update-form/fixed-asset-batch-update-form.component\";\nimport { SharedModule } from '../../@shared';\nimport { StockIssueModule, StockIssuePageModule } from 'techlify-inventory-common';\n\n@NgModule({\n  declarations: [\n    FixedAssetFormPageComponent,\n    FixedAssetsListPageComponent,\n    FixedAssetFormComponent,\n    FixedAssetsDashboardPageComponent,\n    FixedAssetsTableComponent,\n    FixedAssetViewPageComponent,\n    FixedAssetInformationPageComponent,\n    FixedAssetDocumentsComponent,\n    FixedAssetDocumentFormComponent,\n    FixedAssetDocumentFormButtonComponent,\n    FixedAssetMaintenancesComponent,\n    FixedAssetMaintenanceFormComponent,\n    FixedAssetMaintenanceFormButtonComponent,\n    FixedAssetMaintenancePhotosComponent,\n    FixedAssetMaintenanceViewPageComponent\n  ],\n  imports: [\n    SharedModule,\n    FixedAssetsRoutingModule,\n    NgxEditorModule,\n    NoteModule,\n    DocumentViewerModule,\n    FixedAssetInformationModule,\n    FixedAssetMaintenanceWidgetsModule,\n    FixedAssetBatchUpdateFormComponent,\n    StockIssueModule,\n    StockIssuePageModule\n  ]\n})\nexport class FixedAssetsModule {\n}\n","import { Injectable } from '@angular/core';\nimport {HttpService, TechlifyService} from \"ngx-techlify-core\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ServiceCenterService extends TechlifyService {\n\n  constructor(httpService: HttpService) {\n    super(httpService, 'accounting-plus/service-centers');\n  }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n  AlertService,\n  FormValidatorService,\n  TechlifyFormComponent,\n  TechlifyTaggerTagFormConfigModel\n} from 'ngx-techlify-core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { ServiceCenterService } from '../../service-center.service';\nimport { Observable } from 'rxjs';\n\n@Component({\n  selector: 'app-service-center-form',\n  templateUrl: './service-center-form.component.html',\n  styleUrls: ['./service-center-form.component.scss']\n})\nexport class ServiceCenterFormComponent\n  extends TechlifyFormComponent\n  implements OnInit {\n  @Input() serviceCenter: any;\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n  @Output() cancelled: EventEmitter<any> = new EventEmitter<any>();\n\n  tagConfig: TechlifyTaggerTagFormConfigModel =\n    new TechlifyTaggerTagFormConfigModel();\n\n  constructor(\n    formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder,\n    private serviceCenterService: ServiceCenterService\n  ) {\n    super(formValidatorService);\n\n    this.errorMessages = {\n      name: {\n        required: 'The name field is required.'\n      }\n    };\n\n    this.form = this.formBuilder.group({\n      id: [''],\n      name: ['', Validators.required],\n      tags: [''],\n      contact_person: [''],\n      phone: [''],\n      email: [''],\n      address: [''],\n      details: ['']\n    });\n  }\n\n  ngOnInit(): void {\n    if (this.serviceCenter) {\n      const { tags, ...serviceCenterWithoutTags } = this.serviceCenter;\n      this.form.patchValue({ ...serviceCenterWithoutTags });\n    }\n  }\n\n  save() {\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please check the form for errors.', 'error');\n      return;\n    }\n    const data: any = {\n      ...this.form.value\n    };\n    this.isWorking = true;\n    let request: Observable<any> = this.serviceCenterService.store(data);\n    if (this.serviceCenter?.id) {\n      request = this.serviceCenterService.update(data);\n    }\n    request.subscribe({\n      next: (response: any) => {\n        this.alertService.addAlert(\n          'Service Center saved successfully!',\n          'success'\n        );\n        this.isWorking = false;\n        this.saved.emit(response?.item);\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n}\n","<h3 class=\"text-center\">\n  {{ serviceCenter?.id ? 'Edit' : 'Create' }} Service Center\n</h3>\n\n<form\n  [formGroup]=\"form\"\n  class=\"d-flex flex-row flex-wrap justify-content-start gap-2\"\n  (submit)=\"save()\"\n>\n  <mat-form-field style=\"width: calc(100%)\">\n    <mat-label>Name</mat-label>\n    <input formControlName=\"name\" type=\"text\" matInput placeholder=\"Name\" />\n    <mat-error *ngIf=\"isFieldValid('name')\">\n      {{ getErrorMessage('name') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100%)\">\n    <mat-label>Tags</mat-label>\n    <app-techlify-tagger-tag-form-field\n        [categories]=\"['service-center']\"\n        modelType=\"ServiceCenter\"\n        formControlName=\"tags\"\n        [modelId]=\"form.value?.id\"\n        placeholder=\"Enter new tag\"\n        [config]=\"tagConfig\"\n    ></app-techlify-tagger-tag-form-field>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(100%)\">\n    <mat-label>Contact Person</mat-label>\n    <input\n      formControlName=\"contact_person\"\n      type=\"text\"\n      matInput\n      placeholder=\"Contact Person\"\n    />\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n    <mat-label>Phone</mat-label>\n    <input formControlName=\"phone\" type=\"text\" matInput placeholder=\"Phone\" />\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n    <mat-label>Email</mat-label>\n    <input formControlName=\"email\" type=\"email\" matInput placeholder=\"Email\" />\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n    <mat-label>Address</mat-label>\n    <textarea\n      matInput\n      formControlName=\"address\"\n      placeholder=\"Address\"\n      rows=\"3\"\n    ></textarea>\n  </mat-form-field>\n\n  <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n    <mat-label>Details</mat-label>\n    <textarea\n      matInput\n      formControlName=\"details\"\n      placeholder=\"Details\"\n      rows=\"3\"\n    ></textarea>\n  </mat-form-field>\n\n  <div\n    class=\"d-flex justify-content-end align-items-center gap-2\"\n    style=\"width: calc(100%)\"\n  >\n    <button\n      [disabled]=\"isWorking\"\n      type=\"submit\"\n      mat-raised-button\n      color=\"primary\"\n    >\n      Save\n    </button>\n    <button\n      [disabled]=\"isWorking\"\n      type=\"button\"\n      mat-flat-button\n      (click)=\"cancelled.emit()\"\n    >\n      Cancel\n    </button>\n  </div>\n</form>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Component({\n  selector: 'app-service-center-form-button',\n  templateUrl: './service-center-form-button.component.html',\n  styleUrls: ['./service-center-form-button.component.scss']\n})\nexport class ServiceCenterFormButtonComponent {\n  @Input() serviceCenter: any;\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n\n  constructor(public matDialog: MatDialog) {}\n\n  showForm(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, { width: '500px' });\n  }\n\n  onSave(serviceCenter: any) {\n    this.matDialog.closeAll();\n    this.saved.emit(serviceCenter);\n  }\n}\n","<span\n  class=\"material-symbols-outlined cursor-pointer\"\n  (click)=\"showForm(serviceCenterFormTemplate)\"\n  [class.text-primary]=\"!serviceCenter?.id\"\n>\n  {{ serviceCenter?.id ? 'edit' : 'add' }}\n</span>\n\n<ng-template #serviceCenterFormTemplate>\n  <app-service-center-form\n    [serviceCenter]=\"serviceCenter\"\n    mat-dialog-content\n    (saved)=\"onSave($event)\"\n    (cancelled)=\"matDialog.closeAll()\"\n  ></app-service-center-form>\n</ng-template>\n","import {Component, Input} from '@angular/core';\nimport {NgForOf, NgIf} from \"@angular/common\";\n\n@Component({\n  selector: 'app-service-center-tags',\n  standalone: true,\n  imports: [\n    NgForOf,\n    NgIf\n  ],\n  templateUrl: './service-center-tags.component.html',\n  styleUrl: './service-center-tags.component.scss'\n})\nexport class ServiceCenterTagsComponent {\n  @Input() serviceCenter: any;\n}\n","<div *ngIf=\"serviceCenter?.tags?.length > 0\"\n     class=\"d-flex justify-content-start align-items-center gap-2\">\n  <span class=\"badge bg-dark\" *ngFor=\"let tag of serviceCenter?.tags\">\n    {{ tag?.title }}\n  </span>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { TechlifyListComponent } from 'ngx-techlify-core';\nimport { ServiceCenterService } from '../service-center.service';\nimport { FormBuilder } from '@angular/forms';\nimport { Sort } from '@angular/material/sort';\n\n@Component({\n  selector: 'app-service-center-list',\n  templateUrl: './service-center-list.component.html',\n  styleUrls: ['./service-center-list.component.scss']\n})\nexport class ServiceCenterListComponent\n  extends TechlifyListComponent\n  implements OnInit {\n  displayedColumns: string[] = [\n    'no',\n    'name',\n    'contact_person',\n    'phone',\n    'email',\n    'tags',\n    'details',\n    'actions'\n  ];\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private serviceCenterService: ServiceCenterService\n  ) {\n    super();\n    this.filterForm = this.formBuilder.group({\n      search: [''],\n      sort_by: ['created_at|desc']\n    });\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n  }\n\n  override loadData(): void {\n    const params: any = {\n      page: this.page,\n      perPage: this.perPage,\n      ...this.filterForm.value,\n      with: 'tags'\n    };\n    this.isWorking = true;\n    this.serviceCenterService.index(params).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        this.models = this.models.concat(response?.data);\n        this.lastPage = response?.last_page;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  onSortChange(sort: Sort) {\n    let { active, direction } = sort;\n    if (!active) {\n      active = 'created_at';\n    }\n    if (!direction) {\n      direction = 'desc';\n      active = 'created_at';\n    }\n    this.filterForm.get('sort_by').setValue(active + '|' + direction);\n  }\n}\n","<mat-card class=\"mb-2\">\n  <mat-card-content\n    class=\"d-flex justify-content-between align-items-center gap-3\"\n  >\n    <div class=\"d-flex justify-content-center align-items-center gap-2\">\n      <h2 class=\"mb-0\">Service Centers</h2>\n      <app-service-center-form-button\n        class=\"mt-1\"\n        (saved)=\"reload()\"\n      ></app-service-center-form-button>\n    </div>\n    <app-techlify-filter\n      [filterForm]=\"filterForm\"\n      (filterUpdated)=\"reload()\"\n    ></app-techlify-filter>\n  </mat-card-content>\n</mat-card>\n\n<mat-card>\n  <mat-card-content class=\"p-0\">\n    <table\n      mat-table\n      [dataSource]=\"models\"\n      class=\"w-100\"\n      aria-describedby=\"Service Centers\"\n      infiniteScroll\n      [infiniteScrollDistance]=\"2\"\n      [infiniteScrollThrottle]=\"50\"\n      (scrolled)=\"onScroll()\"\n      matSort\n      (matSortChange)=\"onSortChange($event)\"\n    >\n      <!-- # Column -->\n      <ng-container matColumnDef=\"no\">\n        <th mat-header-cell *matHeaderCellDef>#</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n      </ng-container>\n\n      <!-- Name Column -->\n      <ng-container matColumnDef=\"name\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-0\">\n            {{ element?.name }}\n          </p>\n          <small class=\"text-secondary\">{{ element?.address }}</small>\n        </td>\n      </ng-container>\n\n      <!-- Contact Person Column -->\n      <ng-container matColumnDef=\"contact_person\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>\n          Contact Person\n        </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.contact_person }}\n        </td>\n      </ng-container>\n\n      <!-- Phone Column -->\n      <ng-container matColumnDef=\"phone\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>Phone</th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.phone }}</td>\n      </ng-container>\n\n      <!-- Email Column -->\n      <ng-container matColumnDef=\"email\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header>Email</th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.email }}</td>\n      </ng-container>\n\n      <!-- Tags Column -->\n      <ng-container matColumnDef=\"tags\">\n        <th mat-header-cell *matHeaderCellDef>Tags</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <app-service-center-tags [serviceCenter]=\"element\"></app-service-center-tags>\n        </td>\n      </ng-container>\n\n      <!-- Details Column -->\n      <ng-container matColumnDef=\"details\">\n        <th mat-header-cell *matHeaderCellDef>Details</th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.details }}</td>\n      </ng-container>\n\n      <!-- Actions Column -->\n      <ng-container matColumnDef=\"actions\">\n        <th mat-header-cell *matHeaderCellDef>Actions</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <app-service-center-form-button\n            [serviceCenter]=\"element\"\n            (saved)=\"reload()\"\n          ></app-service-center-form-button>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n    </table>\n\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { ServiceCenterListComponent } from './service-center-list/service-center-list.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: ServiceCenterListComponent\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class ServiceCenterRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ServiceCenterFormComponent } from './service-center-form/service-center-form.component';\nimport { ServiceCenterFormButtonComponent } from './service-center-form-button/service-center-form-button.component';\nimport {MatDialogModule} from \"@angular/material/dialog\";\nimport {MaterialModule} from \"ngx-techlify-core\";\nimport {ReactiveFormsModule} from \"@angular/forms\";\nimport {TechlifyTaggerTagFormFieldModule} from \"ngx-techlify-core\";\nimport {MatFormField} from \"@angular/material/form-field\";\nimport {MatInput} from '@angular/material/input';\nimport {MatButton} from '@angular/material/button';\n\n\n\n@NgModule({\n  declarations: [\n    ServiceCenterFormComponent,\n    ServiceCenterFormButtonComponent\n  ],\n  imports: [\n    CommonModule,\n    MatDialogModule,\n    MaterialModule,\n    ReactiveFormsModule,\n    TechlifyTaggerTagFormFieldModule,\n    MatFormField,\n    MatInput,\n    MatButton\n  ],\n  exports: [\n    ServiceCenterFormComponent,\n    ServiceCenterFormButtonComponent\n  ]\n})\nexport class ServiceCenterFormModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ServiceCenterRoutingModule } from './service-center-routing.module';\nimport { ServiceCenterListComponent } from './service-center-list/service-center-list.component';\nimport {InfiniteScrollModule} from \"ngx-infinite-scroll\";\nimport {ServiceCenterFormModule} from \"./service-center-form/service-center-form.module\";\nimport {ServiceCenterTagsComponent} from \"./service-center-tags/service-center-tags.component\";\nimport {MaterialModule} from 'ngx-techlify-core';\nimport {TechlifyFilterModule} from '../../@shared/techlify-filter/techlify-filter.module';\nimport {MatProgressBar} from '@angular/material/progress-bar';\n\n\n@NgModule({\n  declarations: [\n    ServiceCenterListComponent\n  ],\n  imports: [\n    CommonModule,\n    ServiceCenterRoutingModule,\n    MaterialModule,\n    TechlifyFilterModule,\n    InfiniteScrollModule,\n    ServiceCenterFormModule,\n    ServiceCenterTagsComponent,\n    MatProgressBar\n  ]\n})\nexport class ServiceCenterModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TransactionService extends TechlifyService {\n  constructor(httpService: HttpService) {\n    super(httpService, 'transactions');\n  }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AlertService, FormValidatorService, TechlifyFormComponent } from 'ngx-techlify-core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport moment from 'moment';\nimport { TransactionService } from '../../../transaction/transaction.service';\n\n@Component({\n  selector: 'app-transaction-form',\n  templateUrl: './transaction-form.component.html',\n  styleUrls: ['./transaction-form.component.scss']\n})\nexport class TransactionFormComponent\n  extends TechlifyFormComponent\n  implements OnInit {\n  @Input() accountId!: number;\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n  @Output() cancelled: EventEmitter<any> = new EventEmitter<any>();\n\n  isSaving!: boolean;\n\n  constructor(\n    formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder,\n    private transactionService: TransactionService\n  ) {\n    super(formValidatorService);\n\n    this.form = this.formBuilder.group({\n      account_id: ['', Validators.required],\n      type: ['debit', Validators.required],\n      date: [new Date(), Validators.required],\n      amount: ['', Validators.required],\n      payment_method_id: ['', Validators.required],\n      description: ['']\n    });\n\n    this.errorMessages = {\n      account_id: {\n        required: 'The account field is required.'\n      },\n      type: {\n        required: 'The transaction type field is required.'\n      },\n      date: {\n        required: 'The transaction date field is required.'\n      },\n      amount: {\n        required: 'The amount field is required.'\n      },\n      payment_method_id: {\n        required: 'The payment method field is required.'\n      }\n    };\n  }\n\n  ngOnInit(): void {\n    if (this.accountId) {\n      this.form.get('account_id')?.setValue(this.accountId);\n    }\n  }\n\n  save() {\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please check the form for errors.', 'errors');\n      return;\n    }\n\n    const data: any = {\n      ...this.form.value\n    };\n    if (data?.date) {\n      data.date = moment(data.date).format('YYYY-MM-DD');\n    }\n    this.isSaving = true;\n    this.transactionService.store(data).subscribe({\n      next: (response: any) => {\n        this.isSaving = false;\n        this.alertService.addAlert(\n          'Transaction saved successfully!',\n          'success'\n        );\n        this.saved.emit(response);\n      },\n      error: () => {\n        this.isSaving = false;\n      }\n    });\n  }\n}\n","<form\n  [formGroup]=\"form\"\n  class=\"d-flex flex-column justify-content-start gap-2\"\n  (submit)=\"save()\"\n>\n  <div class=\"d-flex flex-column justify-content-start align-items-start gap-1\">\n    <label>Transaction Type</label>\n    <mat-button-toggle-group formControlName=\"type\">\n      <mat-button-toggle value=\"credit\">Credit</mat-button-toggle>\n      <mat-button-toggle value=\"debit\">Debit</mat-button-toggle>\n    </mat-button-toggle-group>\n    <mat-error *ngIf=\"isFieldValid('type')\">\n      {{ getErrorMessage('type') }}\n    </mat-error>\n  </div>\n\n  <mat-form-field>\n    <mat-label>Payment Method</mat-label>\n    <app-searchable-selector\n      formControlName=\"payment_method_id\"\n      apiUrl=\"api/payment-methods\"\n      [enableSearch]=\"false\"\n    ></app-searchable-selector>\n    <mat-error *ngIf=\"isFieldValid('payment_method_id')\">\n      {{ getErrorMessage('payment_method_id') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Date</mat-label>\n    <input matInput [matDatepicker]=\"picker\" formControlName=\"date\" />\n    <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n    <mat-datepicker #picker></mat-datepicker>\n    <mat-error *ngIf=\"isFieldValid('date')\">\n      {{ getErrorMessage('date') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Amount</mat-label>\n    <input matInput type=\"number\" formControlName=\"amount\" />\n    <mat-error *ngIf=\"isFieldValid('amount')\">\n      {{ getErrorMessage('amount') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Description</mat-label>\n    <textarea matInput formControlName=\"description\"></textarea>\n  </mat-form-field>\n\n  <div class=\"d-flex justify-content-end align-items-center gap-2 mb-2\">\n    <button\n      [disabled]=\"isSaving\"\n      type=\"submit\"\n      mat-raised-button\n      color=\"primary\"\n    >\n      Save\n    </button>\n    <button\n      [disabled]=\"isSaving\"\n      type=\"button\"\n      mat-flat-button\n      (click)=\"cancelled.emit()\"\n    >\n      Cancel\n    </button>\n  </div>\n</form>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Component({\n  selector: 'app-transaction-form-button',\n  templateUrl: './transaction-form-button.component.html',\n  styleUrls: ['./transaction-form-button.component.scss']\n})\nexport class TransactionFormButtonComponent {\n  @Input() accountId!: number;\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n\n  constructor(public matDialog: MatDialog) {}\n\n  showDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, { width: '500px' });\n  }\n\n  onSaved(payment: any) {\n    this.saved.emit(payment);\n    this.matDialog.closeAll();\n  }\n}\n","<span\n  class=\"material-symbols-outlined cursor-pointer text-primary\"\n  (click)=\"showDialog(transactionFormDialog)\"\n>\n  add\n</span>\n\n<ng-template #transactionFormDialog>\n  <h3 mat-dialog-title>Create Transaction</h3>\n  <app-transaction-form\n    [accountId]=\"accountId\"\n    mat-dialog-content\n    (saved)=\"onSaved($event)\"\n    (cancelled)=\"matDialog.closeAll()\"\n  ></app-transaction-form>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TransactionFormComponent } from './transaction-form/transaction-form.component';\nimport { TransactionFormButtonComponent } from './transaction-form-button/transaction-form-button.component';\nimport {MaterialModule, SearchableSelectorModule} from \"ngx-techlify-core\";\nimport {ReactiveFormsModule} from \"@angular/forms\";\n\n\n\n@NgModule({\n    declarations: [\n        TransactionFormComponent,\n        TransactionFormButtonComponent\n    ],\n    exports: [\n        TransactionFormButtonComponent\n    ],\n  imports: [\n    CommonModule,\n    MaterialModule,\n    ReactiveFormsModule,\n    SearchableSelectorModule\n  ]\n})\nexport class TransactionFormModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\nimport { Transaction } from '../transaction/transaction.model';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AccountService extends TechlifyService {\n  constructor(httpService: HttpService) {\n    super(httpService, 'accounts');\n  }\n\n  transactions(account: any, params?: any) {\n    return this.http.get(`api/accounts/${account.id}/transactions`, { params });\n  }\n\n  trialBalance(params?: any): Observable<any> {\n    return this.http.get('api/accounts-trial-balance', { params });\n  }\n\n  /**\n   * Calculate the account balance.\n   *\n   * @param account\n   * @param params\n   */\n  calculateBalance(account: any, params?: any): Observable<any> {\n    return this.http.get(`api/accounts/${account?.id}/calculate-balance`, {\n      params\n    });\n  }\n\n  processTransactions(\n    transactions: Transaction[],\n    initialBalance: number = 0\n  ): Transaction[] {\n    transactions.sort((a, b) => {\n      if (a.date && b.date) {\n        return a.date.getTime() - b.date.getTime();\n      } else {\n        return 0;\n      }\n    });\n\n    let balance: number = initialBalance;\n\n    for (const transaction of transactions) {\n      if (transaction.type === 'credit' && transaction.credit) {\n        balance += transaction.credit;\n      } else if (transaction.type === 'debit' && transaction.debit) {\n        balance -= transaction.debit;\n      }\n      transaction.balance = balance;\n    }\n\n    return transactions.reverse();\n  }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AccountService } from '../../../account/account.service';\nimport { TechlifyListComponent } from 'ngx-techlify-core';\n\n@Component({\n  selector: 'app-transaction-list',\n  templateUrl: './transaction-list.component.html',\n  styleUrls: ['./transaction-list.component.scss']\n})\nexport class TransactionListComponent\n  extends TechlifyListComponent\n  implements OnInit\n{\n  @Input() account!: any;\n  isLoading!: boolean;\n  displayedColumns: string[] = [\n    'no',\n    'type',\n    'date',\n    'details',\n    'debit',\n    'credit',\n    'balance',\n    'action',\n  ];\n\n  constructor(private accountService: AccountService) {\n    super();\n    this.lastPage = 0;\n    this.perPage = 50000;\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n  }\n\n  override loadData() {\n    this.isLoading = true;\n    this.accountService.transactions(this.account).subscribe({\n      next: (response: any) => {\n        this.models = response?.data;\n      },\n      complete: () => (this.isLoading = false)\n    });\n  }\n}\n","<table\n  mat-table\n  [dataSource]=\"models\"\n  class=\"w-100\"\n  aria-describedby=\"Transactions\"\n>\n  <!-- # Column -->\n  <ng-container matColumnDef=\"no\">\n    <th mat-header-cell *matHeaderCellDef>#</th>\n    <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n  </ng-container>\n\n  <!-- Type Column -->\n  <ng-container matColumnDef=\"type\">\n    <th mat-header-cell *matHeaderCellDef>Type</th>\n    <td mat-cell *matCellDef=\"let element\">{{ element?.type }}</td>\n  </ng-container>\n\n  <!-- Date Column -->\n  <ng-container matColumnDef=\"date\">\n    <th mat-header-cell *matHeaderCellDef>Date</th>\n    <td mat-cell *matCellDef=\"let element\">{{ element?.date | date }}</td>\n  </ng-container>\n\n  <!-- Details Column -->\n  <ng-container matColumnDef=\"details\">\n    <th mat-header-cell *matHeaderCellDef>Details</th>\n    <td mat-cell *matCellDef=\"let element\">{{ element?.description }}</td>\n  </ng-container>\n\n  <!-- Debit Column -->\n  <ng-container matColumnDef=\"debit\">\n    <th mat-header-cell *matHeaderCellDef>Debit</th>\n    <td mat-cell *matCellDef=\"let element\">\n      <span *ngIf=\"element?.debit\">\n        {{ element?.debit | currency }}\n      </span>\n    </td>\n  </ng-container>\n\n  <!-- Credit Column -->\n  <ng-container matColumnDef=\"credit\">\n    <th mat-header-cell *matHeaderCellDef>Credit</th>\n    <td mat-cell *matCellDef=\"let element\">\n      <span *ngIf=\"element?.credit\">\n        {{ element?.credit | currency }}\n      </span>\n    </td>\n  </ng-container>\n\n  <!-- Balance Column -->\n  <ng-container matColumnDef=\"balance\">\n    <th mat-header-cell *matHeaderCellDef>Balance</th>\n    <td mat-cell *matCellDef=\"let element\">\n      {{ element?.balance | currency }}\n    </td>\n  </ng-container>\n\n  <!-- Action Column -->\n  <ng-container matColumnDef=\"action\">\n    <th mat-header-cell *matHeaderCellDef>Action</th>\n    <td mat-cell *matCellDef=\"let element\">\n      <a class=\"text-decoration-none text-secondary\"\n         [routerLink]=\"['/sales/transactions', element?.id, 'view']\"\n         [queryParams]=\"{ transactable_type: element?.transactable_type }\"\n      >\n        <span class=\"material-symbols-outlined\">\n          visibility\n        </span>\n      </a>\n    </td>\n  </ng-container>\n\n  <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n  <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n</table>\n<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TransactionListComponent } from './transaction-list/transaction-list.component';\nimport {MatProgressBarModule} from \"@angular/material/progress-bar\";\nimport {MatTableModule} from \"@angular/material/table\";\nimport {RouterLink} from \"@angular/router\";\n\n\n\n@NgModule({\n  declarations: [\n    TransactionListComponent\n  ],\n  exports: [\n    TransactionListComponent\n  ],\n  imports: [\n    CommonModule,\n    MatProgressBarModule,\n    MatTableModule,\n    RouterLink\n  ]\n})\nexport class TransactionListModule { }\n","import {Component, Input} from '@angular/core';\nimport {NgIf, NgSwitch, NgSwitchCase, NgTemplateOutlet} from \"@angular/common\";\nimport {\n  InvoiceInformationCardComponent\n} from \"../../invoice/invoice-information-card/invoice-information-card.component\";\nimport {\n  InvoiceLineItemsTableComponent\n} from \"../../invoice/invoice-line-items-table/invoice-line-items-table.component\";\nimport {MatCard, MatCardContent, MatCardTitle} from \"@angular/material/card\";\nimport {MatDivider} from \"@angular/material/divider\";\n\n@Component({\n  selector: 'app-transactable-view',\n  standalone: true,\n  imports: [\n    NgIf,\n    NgSwitch,\n    NgSwitchCase,\n    InvoiceInformationCardComponent,\n    InvoiceLineItemsTableComponent,\n    MatCard,\n    MatCardContent,\n    MatCardTitle,\n    MatDivider,\n    NgTemplateOutlet,\n  ],\n  templateUrl: './transactable-view.component.html',\n  styleUrl: './transactable-view.component.scss'\n})\nexport class TransactableViewComponent {\n  @Input() transaction: any;\n}\n","<div *ngIf=\"transaction\" [ngSwitch]=\"transaction?.transactable_type\">\n  <!-- Invoice Item -->\n  <ng-container *ngSwitchCase=\"'InvoiceItem'\">\n    <ng-container *ngTemplateOutlet=\"invoiceLayout; context: { invoice: transaction?.transactable?.invoice }\"></ng-container>\n  </ng-container>\n\n  <!-- Invoice -->\n  <ng-container *ngSwitchCase=\"'Invoice'\">\n    <ng-container *ngTemplateOutlet=\"invoiceLayout; context: { invoice: transaction?.transactable }\"></ng-container>\n  </ng-container>\n</div>\n\n<!-- Reusable Invoice Layout -->\n<ng-template #invoiceLayout let-invoice=\"invoice\">\n  <div class=\"d-flex justify-content-start align-items-start gap-3\" *ngIf=\"invoice\">\n    <!-- Invoice Information Card -->\n    <app-invoice-information-card\n      [invoice]=\"invoice\"\n      style=\"width: calc(300px)\"\n    ></app-invoice-information-card>\n\n    <!-- Line Items Section -->\n    <div style=\"width: calc(100% - 300px - 1rem)\" class=\"d-flex flex-column gap-2\">\n      <mat-card>\n        <mat-card-content class=\"mb-2\">\n          <mat-card-title>Line Items</mat-card-title>\n        </mat-card-content>\n        <mat-divider></mat-divider>\n        <mat-card-content>\n          <app-invoice-line-items-table [invoice]=\"invoice\"></app-invoice-line-items-table>\n        </mat-card-content>\n      </mat-card>\n    </div>\n  </div>\n</ng-template>\n","import {Component, OnInit} from '@angular/core';\nimport {CurrencyPipe, DatePipe, NgIf} from \"@angular/common\";\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {NgxPermissionsModule} from \"ngx-permissions\";\nimport {TransactionService} from \"../transaction.service\";\nimport {ActivatedRoute} from \"@angular/router\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {TransactableViewComponent} from \"../transactable-view/transactable-view.component\";\n\n@Component({\n  selector: 'app-transaction-view',\n  standalone: true,\n  imports: [\n    CurrencyPipe,\n    MatCard,\n    MatCardContent,\n    NgIf,\n    NgxPermissionsModule,\n    DatePipe,\n    MatProgressBar,\n    TransactableViewComponent\n  ],\n  templateUrl: './transaction-view.component.html',\n  styleUrl: './transaction-view.component.scss'\n})\nexport class TransactionViewComponent implements OnInit {\n\n  transaction: any;\n  id!: number;\n  transactableType!: string;\n  isWorking: boolean = false;\n\n  constructor(\n    private transactionService: TransactionService,\n    private activatedRoute: ActivatedRoute,\n  ) {\n    this.id = parseInt(this.activatedRoute.snapshot.params['id']);\n    this.transactableType = this.activatedRoute.snapshot.queryParams['transactable_type'];\n  }\n\n  ngOnInit() {\n    if (this.id) {\n      this.loadData();\n    }\n\n  }\n\n  private loadData() {\n    let relations = ['account','paymentMethod','creator'];\n    if (this.transactableType === 'InvoiceItem') {\n      relations.push(...['transactable.invoice.items', 'transactable.invoice.customer'])\n    } else if (this.transactableType === 'Invoice') {\n      relations.push(...['transactable.customer', 'transactable.items']);\n    } else if (this.transactableType === 'Expense') {\n      relations.push(...['transactable.type', 'transactable.lineItems.category','transactable.lineItems.creator']);\n    } else if (this.transactableType === 'ExpenseLineItem') {\n      relations.push(...['transactable.expense.type', 'transactable.expense.lineItems.category','transactable.expense.lineItems.creator']);\n    }\n\n    const params: any = {\n      with: relations.toString()\n    }\n\n    this.isWorking = true;\n    this.transactionService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.transaction = response?.item;\n        this.isWorking = false;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n}\n","<div\n  *ngIf=\"transaction\"\n  class=\"d-flex flex-row justify-content-start align-items-start gap-3\"\n>\n  <mat-card class=\"p-0\" style=\"width: calc(30% - 1rem)\">\n    <mat-card-content class=\"p-3 mb-0\">\n      <div class=\"d-flex justify-content-start align-items-center gap-2\">\n        <strong>Transaction Information</strong>\n      </div>\n    </mat-card-content>\n\n    <table\n      class=\"table table-bordered w-100\"\n      aria-describedby=\"Account Details\"\n    >\n      <tbody>\n      <tr>\n        <td>Type</td>\n        <td>{{ transaction?.type }}</td>\n      </tr>\n      <tr>\n        <td>Account</td>\n        <td>{{ transaction?.account?.title }}</td>\n      </tr>\n      <tr>\n        <td>Payment Method</td>\n        <td>{{ transaction?.payment_method?.title }}</td>\n      </tr>\n      <tr>\n        <td>Date</td>\n        <td>{{ transaction?.date | date }}</td>\n      </tr>\n      <tr>\n        <td>Amount</td>\n        <td>{{ transaction?.amount | currency }}</td>\n      </tr>\n      <tr>\n        <td>Description</td>\n        <td>{{ transaction?.description }}</td>\n      </tr>\n      <tr *ngIf=\"transaction?.voided_at\">\n        <td>Voided At</td>\n        <td>{{ transaction?.voided_at | date }}</td>\n      </tr>\n      <tr>\n        <td>Creator</td>\n        <td>\n          <p class=\"mb-0\">{{ transaction?.creator?.name }}</p>\n          <small class=\"text-secondary\">{{ transaction?.created_at | date }}</small>\n        </td>\n      </tr>\n      </tbody>\n    </table>\n  </mat-card>\n\n  <div style=\"width: calc(70% - 1rem)\">\n    <app-transactable-view\n      [transaction]=\"transaction\"\n    ></app-transactable-view>\n  </div>\n</div>\n\n<mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {TransactionViewComponent} from \"./transaction-view/transaction-view.component\";\n\nconst routes: Routes = [\n  {\n    path: ':id/view',\n    component: TransactionViewComponent,\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class TransactionRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TransactionRoutingModule } from './transaction-routing.module';\n\n\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule,\n    TransactionRoutingModule\n  ]\n})\nexport class TransactionModule { }\n","export class Transaction {\n  type: 'credit' | 'debit';\n  date: Date | null;\n  details: string | null;\n  debit?: number;\n  credit?: number;\n  balance: number;\n\n  constructor(data: any) {\n    this.type = data.type;\n    this.date = new Date(data.date);\n    this.details = data.details;\n    this.debit = data.debit ?? 0;\n    this.credit = data.credit ?? 0;\n    this.balance = data.balance ?? 0;\n  }\n}\n","import {BehaviorSubject, Observable} from 'rxjs';\n\nexport default class TechlifyFormService {\n  private _isListUpdated = new BehaviorSubject(false);\n\n  isListUpdated(): Observable<boolean> {\n    return this._isListUpdated.asObservable();\n  }\n\n  listUpdated(val: boolean): void {\n    this._isListUpdated.next(val);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport TechlifyFormService from '../../@shared/techlify-form-service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AccountFormService extends TechlifyFormService {\n  constructor() {\n    super();\n  }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport {\n  FormValidatorService,\n  TechlifyFormComponent\n} from 'ngx-techlify-core';\nimport { AccountService } from '../account.service';\nimport { Observable } from 'rxjs';\nimport { AccountFormService } from '../account-form.service';\n\n@Component({\n  selector: 'app-account-form',\n  templateUrl: './account-form.component.html'\n})\nexport class AccountFormComponent\n  extends TechlifyFormComponent\n  implements OnInit {\n\n  constructor(\n    private accountService: AccountService,\n    private fb: FormBuilder,\n    public override dialogRef: MatDialogRef<AccountFormComponent>,\n    @Inject(MAT_DIALOG_DATA) public data: any,\n    formValidatorService: FormValidatorService,\n    private accountFormService: AccountFormService\n  ) {\n    super(formValidatorService);\n    this.form = this.fb.group({\n      id: [''],\n      title: ['', Validators.compose([Validators.required])],\n      code: [''],\n      parent_id: [''],\n      description: ['', Validators.compose([Validators.required])],\n      type_id: [''],\n      detail_type_id: [''],\n      initial_balance: 0,\n      current_balance: 0\n    });\n    this.errorMessages = {\n      title: {\n        required: 'Please Enter Title'\n      },\n      description: {\n        required: 'Please Enter Description'\n      },\n      type_id: {\n        required: 'Please Enter Type'\n      },\n      detail_type_id: {\n        required: 'Please Enter Detail Type'\n      },\n      initial_balance: {\n        required: 'Please Enter Initial Balance'\n      },\n      current_balance: {\n        required: 'Please Enter Current Balance'\n      }\n    };\n  }\n\n  ngOnInit(): void {\n    if (this.data.details) {\n      this.isUpdate = true;\n      this.form.patchValue(this.data.details);\n    }\n  }\n\n  async save() {\n    if (!this.form.valid) {\n      this.alertService.addAlert('Please Fill All Required Fields', 'warn');\n      this.form.markAllAsTouched();\n      return;\n    }\n    let account = this.form.value;\n    this.isWorking = true;\n    const params: any = {\n      with: 'type,parent'\n    };\n    let request: Observable<any> = this.isUpdate\n      ? this.accountService.update(account, params)\n      : this.accountService.store(account, params);\n    request.subscribe({\n      next: (result: any) => {\n        this.alertService.addAlert('Account saved successfully!', 'success');\n        this.isWorking = false;\n        this.dialogRef.close(result);\n        this.accountFormService.listUpdated(true);\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n}\n","<div class=\"p-3\">\n  <form [formGroup]=\"form\" (ngSubmit)=\"save()\">\n    <h3 class=\"text-center\">Create/Update Account</h3>\n    <div class=\"d-flex flex-wrap justify-content-start gap-2\">\n      <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n        <mat-label>Account Type</mat-label>\n        <app-searchable-selector\n          apiUrl=\"api/account-types\"\n          formControlName=\"type_id\"\n        >\n        </app-searchable-selector>\n        <mat-error *ngIf=\"isFieldValid('type_id')\"\n          >{{ getErrorMessage('type_id') }}\n        </mat-error>\n      </mat-form-field>\n      <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n        <mat-label>Account Detail Type</mat-label>\n        <app-searchable-selector\n          apiUrl=\"api/account-detail-type\"\n          formControlName=\"detail_type_id\"\n        >\n        </app-searchable-selector>\n        <mat-error *ngIf=\"isFieldValid('detail_type_id')\"\n          >{{ getErrorMessage('detail_type_id') }}\n        </mat-error>\n      </mat-form-field>\n      <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n        <input matInput placeholder=\"Title\" formControlName=\"title\" required />\n        <mat-error *ngIf=\"isFieldValid('title')\"\n          >{{ getErrorMessage('title') }}\n        </mat-error>\n      </mat-form-field>\n\n      <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n        <mat-label>Account Code</mat-label>\n        <input matInput placeholder=\"Account Code\" formControlName=\"code\" />\n      </mat-form-field>\n\n      <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n        <mat-label>Parent Account</mat-label>\n        <app-searchable-selector\n          formControlName=\"parent_id\"\n          apiUrl=\"api/accounts\"\n        ></app-searchable-selector>\n      </mat-form-field>\n\n      <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n        <input\n          matInput\n          placeholder=\"Description\"\n          formControlName=\"description\"\n          required\n        />\n        <mat-error *ngIf=\"isFieldValid('description')\"\n          >{{ getErrorMessage('description') }}\n        </mat-error>\n      </mat-form-field>\n      <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n        <input\n          matInput\n          placeholder=\"Initial Balance\"\n          formControlName=\"initial_balance\"\n        />\n        <mat-error *ngIf=\"isFieldValid('initial_balance')\"\n          >{{ getErrorMessage('initial_balance') }}\n        </mat-error>\n      </mat-form-field>\n      <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n        <input\n          matInput\n          placeholder=\"Current Balance\"\n          formControlName=\"current_balance\"\n        />\n        <mat-error *ngIf=\"isFieldValid('current_balance')\"\n          >{{ getErrorMessage('current_balance') }}\n        </mat-error>\n      </mat-form-field>\n      <div fxFlex=\"100%\" fxLayoutAlign=\"end\" fxLayoutGap=\"1rem\">\n        <button\n          [disabled]=\"isWorking\"\n          mat-button\n          class=\"mt-2\"\n          type=\"button\"\n          (click)=\"dialogRef.close()\"\n        >\n          Cancel\n        </button>\n        <button\n          [disabled]=\"isWorking\"\n          mat-raised-button\n          color=\"primary\"\n          class=\"mt-2\"\n          type=\"submit\"\n        >\n          Save\n        </button>\n      </div>\n    </div>\n  </form>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AccountFormComponent } from '../account-form/account-form.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ThemePalette } from '@angular/material/core';\n\n@Component({\n  selector: 'app-account-form-button',\n  templateUrl: './account-form-button.component.html',\n  styleUrls: ['./account-form-button.component.scss']\n})\nexport class AccountFormButtonComponent {\n  @Input() account: any;\n  @Input() color: ThemePalette;\n  @Output() saved = new EventEmitter();\n\n  constructor(private dialog: MatDialog) {}\n\n  /**\n   * Show the account form.\n   */\n  showForm() {\n    const dialogRef = this.dialog.open(AccountFormComponent, {\n      width: '600px',\n      data: {\n        details: this.account\n      }\n    });\n\n    dialogRef.afterClosed().subscribe((result) => {\n      if (result) {\n        this.saved.emit(result?.item);\n      }\n    });\n  }\n}\n","<mat-icon class=\"cursor-pointer\" [color]=\"color\" (click)=\"showForm()\">\n  {{ account ? 'edit' : 'add' }}\n</mat-icon>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { AccountService } from '../account.service';\n\n@Component({\n  selector: 'app-account-balance-calculate-button',\n  templateUrl: './account-balance-calculate-button.component.html',\n  styleUrls: ['./account-balance-calculate-button.component.scss']\n})\nexport class AccountBalanceCalculateButtonComponent {\n  @Input() account: any;\n  @Output() updated: EventEmitter<any> = new EventEmitter<any>();\n\n  isUpdating: boolean = false;\n\n  constructor(private accountService: AccountService) {}\n\n  /**\n   * Update the account balance.\n   */\n  update() {\n    this.isUpdating = true;\n    const params: any = { with: 'type,detailType' };\n    this.accountService.calculateBalance(this.account, params).subscribe({\n      next: (response: any): void => {\n        this.isUpdating = false;\n        this.account = response?.item;\n        this.updated.emit(response?.item);\n      },\n      error: () => (this.isUpdating = false)\n    });\n  }\n}\n","<span\n  matTooltip=\"Calculte Account Balance\"\n  class=\"material-symbols-outlined cursor-pointer\"\n  *ngIf=\"!isUpdating\"\n  (click)=\"update()\"\n>\n  sync\n</span>\n<mat-progress-spinner\n  mode=\"indeterminate\"\n  [diameter]=\"20\"\n  *ngIf=\"isUpdating\"\n></mat-progress-spinner>\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport {\n  TechlifyListComponent\n} from 'ngx-techlify-core';\nimport { Subscription } from 'rxjs';\nimport { AccountService } from '../account.service';\nimport { AccountFormService } from '../account-form.service';\nimport { PrintService } from '../../../@shared';\n\n@Component({\n  selector: 'app-account-list',\n  templateUrl: './account-list.component.html'\n})\nexport class AccountListComponent\n  extends TechlifyListComponent\n  implements OnInit, OnDestroy {\n  printSubscription!: Subscription;\n  isPrinting: boolean = false;\n\n  columnConfig = [\n    { label: '#', def: '#', isSelected: true, isEditable: true },\n    { label: 'Title', def: 'title', isSelected: true, isEditable: true },\n    { label: 'Type', def: 'type', isSelected: true, isEditable: true },\n    { label: 'Detail Type', def: 'detail_type', isSelected: true, isEditable: true },\n    { label: 'Initial Balance', def: 'initial_balance', isSelected: true, isEditable: true },\n    { label: 'Current Balance', def: 'current_balance', isSelected: true, isEditable: true },\n    { label: 'Actions', def: 'Actions', isSelected: true, isEditable: true }\n  ];\n\n  selectedColumns = this.columnConfig.filter(col => col.isSelected);\n\n  get displayedColumns(): string[] {\n    return this.selectedColumns.map(col => col.def);\n  }\n\n  constructor(\n    private fb: FormBuilder,\n    private accountService: AccountService,\n    private accountFormService: AccountFormService,\n    private printService: PrintService\n  ) {\n    super();\n    this.page = 1;\n    this.perPage = 25;\n    this.models = [];\n\n    this.filterForm = this.fb.group({\n      search: [''],\n      type_ids: [''],\n      detail_type_ids: [''],\n      sort_by: ['']\n    });\n  }\n\n  ngOnInit(): void {\n    this.printSubscription = this.printService\n      .getIsPrinting()\n      .subscribe((val: boolean) => {\n        this.isPrinting = val;\n      });\n\n    this.accountFormService.isListUpdated().subscribe((val: boolean) => {\n      if (val && !this.isWorking) this.reload();\n    });\n\n    this.listenFilterChanges();\n    this.patchFiltersFromRoute();\n    this.loadData();\n  }\n\n  override loadData() {\n    const filters = {\n      ...this.filterForm.value,\n      page: this.page,\n      perPage: this.perPage,\n      type_ids: this.filterForm.value.type_ids.toString(),\n      detail_type_ids: this.filterForm.value.detail_type_ids.toString()\n    };\n\n    this.isWorking = true;\n    this.accountService.index(filters).subscribe({\n      next: (res: any) => {\n        this.models = this.models.concat(res?.data);\n        this.lastPage = res.last_page;\n        this.isWorking = false;\n        this.accountFormService.listUpdated(false);\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  assignFilter(column: string, direction: string) {\n    if (column) {\n      this.filterForm.get('sort_by')?.setValue(`${column}|${direction}`);\n    }\n  }\n\n  onColumnsUpdated(columns: any[]) {\n    this.selectedColumns = columns.filter(col => col.isSelected);\n  }\n\n  ngOnDestroy(): void {\n    this.printSubscription?.unsubscribe();\n  }\n}\n","<mat-card class=\"mb-3\" *ngIf=\"!isPrinting\">\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n    <div class=\"d-flex justify-content-center align-items-center gap-2\">\n      <h2 class=\"mb-0\">Chart of Accounts</h2>\n      <ng-container *ngxPermissionsOnly=\"['accountingcommon_account.create']\">\n        <app-account-form-button\n          color=\"primary\"\n          *ngIf=\"!isPrinting\"\n        ></app-account-form-button>\n      </ng-container>\n      <app-print-button></app-print-button>\n      <app-column-selector\n        class=\"mt-1\"\n        mode=\"icon\"\n        matTooltip=\"Column Selector\"\n        [columnConfigs]=\"columnConfig\"\n        [(selectedColumns)]=\"selectedColumns\"\n      ></app-column-selector>\n    </div>\n    <form [formGroup]=\"filterForm\" fxLayout fxLayoutGap=\"0.5rem\">\n      <mat-form-field>\n        <input matInput placeholder=\"Search\" formControlName=\"search\" />\n      </mat-form-field>\n      <mat-form-field>\n        <mat-label>Type</mat-label>\n        <app-searchable-selector\n          apiUrl=\"api/account-types\"\n          formControlName=\"type_ids\"\n          titleField=\"title\"\n          [multiple]=\"true\"\n        >\n        </app-searchable-selector>\n      </mat-form-field>\n      <mat-form-field>\n        <mat-label>Detail Type</mat-label>\n        <app-searchable-selector\n          apiUrl=\"api/account-detail-type\"\n          formControlName=\"detail_type_ids\"\n          titleField=\"title\"\n          [multiple]=\"true\"\n        >\n        </app-searchable-selector>\n      </mat-form-field>\n    </form>\n  </mat-card-content>\n</mat-card>\n<mat-card>\n  <mat-card-content class=\"p-0\">\n    <table\n      mat-table\n      [dataSource]=\"models\"\n      class=\"w-100 table-hover\"\n      infiniteScroll\n      [infiniteScrollDistance]=\"2\"\n      [infiniteScrollThrottle]=\"50\"\n      (scrolled)=\"onScroll()\"\n      [fromRoot]=\"true\"\n      matSort\n      (matSortChange)=\"sortColumn($event)\"\n      matSortDisableClear=\"true\"\n      aria-describedby=\"Accounts list\"\n    >\n      <!-- # Column -->\n      <ng-container matColumnDef=\"#\">\n        <th mat-header-cell *matHeaderCellDef>#</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n      </ng-container>\n      <!--Title Column -->\n      <ng-container matColumnDef=\"title\">\n        <th mat-header-cell mat-sort-header *matHeaderCellDef>Title</th>\n        <td mat-cell *matCellDef=\"let element\">{{ element.title }}</td>\n      </ng-container>\n      <!-- Type Column -->\n      <ng-container matColumnDef=\"type\">\n        <th mat-header-cell mat-sort-header *matHeaderCellDef>Type</th>\n        <td mat-cell *matCellDef=\"let element\">{{ element.type?.title }}</td>\n      </ng-container>\n      <!-- Detail Type Column -->\n      <ng-container matColumnDef=\"detail_type\">\n        <th mat-header-cell mat-sort-header *matHeaderCellDef>Detail Type</th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element.detail_type?.title }}\n        </td>\n      </ng-container>\n      <!-- Initial Balance Column -->\n      <ng-container matColumnDef=\"initial_balance\">\n        <th mat-header-cell mat-sort-header *matHeaderCellDef>\n          Initial Balance\n        </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element.initial_balance | currency }}\n        </td>\n      </ng-container>\n      <!-- Current Balance Column -->\n      <ng-container matColumnDef=\"current_balance\">\n        <th mat-header-cell mat-sort-header *matHeaderCellDef>\n          Current Balance\n        </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element.current_balance | currency }}\n        </td>\n      </ng-container>\n      <!-- Actions Column -->\n      <ng-container matColumnDef=\"Actions\">\n        <th mat-header-cell *matHeaderCellDef>Actions</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">\n          <div *ngIf=\"!isPrinting\" class=\"text-secondary d-flex gap-2\">\n            <app-account-form-button\n              [account]=\"element\"\n              *ngxPermissionsOnly=\"['accountingcommon_account.update']\"\n            ></app-account-form-button>\n            <mat-icon\n              class=\"cursor-pointer\"\n              [routerLink]=\"[element?.id, 'view']\"\n              *ngxPermissionsOnly=\"['accountingcommon_account.read']\"\n            >\n              visibility\n            </mat-icon>\n            <app-account-balance-calculate-button\n              [account]=\"element\"\n              (updated)=\"reload()\"\n            ></app-account-balance-calculate-button>\n          </div>\n        </td>\n      </ng-container>\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n    </table>\n\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n","import { Component } from '@angular/core';\nimport { AccountFormService } from '../account-form.service';\n\n@Component({\n  selector: 'app-account-nav-bar',\n  templateUrl: './account-nav-bar.component.html'\n})\nexport class AccountNavBarComponent {\n  constructor(private accountFormService: AccountFormService) {}\n\n  /**\n   * Handle on account save event.\n   *\n   * @param account\n   */\n  onAccountSaved(account: any) {\n    this.accountFormService.listUpdated(true);\n  }\n}\n","<div>\n  <router-outlet></router-outlet>\n</div>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AccountService } from '../account.service';\nimport { AlertService } from 'ngx-techlify-core';\n\n@Component({\n  selector: 'app-account-delete-button',\n  templateUrl: './account-delete-button.component.html',\n  styleUrls: ['./account-delete-button.component.scss']\n})\nexport class AccountDeleteButtonComponent {\n  @Input() account: any;\n  @Output() deleted: EventEmitter<any> = new EventEmitter();\n  isDeleting: boolean = false;\n\n  constructor(\n    private matDialog: MatDialog,\n    private accountService: AccountService,\n    private alertService: AlertService\n  ) {}\n\n  /**\n   * Show delete dialog.\n   *\n   * @param templateRef\n   */\n  showDeleteDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, { width: '400px' });\n  }\n\n  /**\n   * Delete the account.\n   */\n  deleteAccount() {\n    this.isDeleting = true;\n    this.accountService.delete(this.account).subscribe({\n      next: () => {\n        this.isDeleting = false;\n        this.matDialog.closeAll();\n        this.alertService.addAlert('Account deleted successfully!', 'success');\n        this.deleted.emit();\n      },\n      error: () => {\n        this.isDeleting = false;\n      }\n    });\n  }\n}\n","<mat-icon\n  class=\"cursor-pointer text-secondary\"\n  (click)=\"showDeleteDialog(deleteTemplate)\"\n>\n  delete\n</mat-icon>\n\n<ng-template #deleteTemplate>\n  <h3 mat-dialog-title>Delete Account?</h3>\n  <div mat-dialog-content>\n    <p>Are you sure you want to delete the account?</p>\n  </div>\n  <div\n    mat-dialog-actions\n    class=\"d-flex gap-2 justify-content-end align-items-center\"\n  >\n    <button\n      [disabled]=\"isDeleting\"\n      mat-raised-button\n      color=\"warn\"\n      (click)=\"deleteAccount()\"\n    >\n      Delete\n    </button>\n    <button [disabled]=\"isDeleting\" mat-flat-button mat-dialog-close>\n      Cancel\n    </button>\n  </div>\n</ng-template>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { AccountService } from '../account.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { Location } from '@angular/common';\nimport { TransactionListComponent } from '../../payment/transaction-list/transaction-list/transaction-list.component';\n\n@Component({\n  selector: 'app-account-view-page',\n  templateUrl: './account-view-page.component.html',\n  styleUrls: ['./account-view-page.component.scss']\n})\nexport class AccountViewPageComponent implements OnInit {\n  id!: number;\n  isLoading: boolean = false;\n  account!: any;\n  @ViewChild(TransactionListComponent)\n  transactionList!: TransactionListComponent;\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private accountService: AccountService,\n    private location: Location\n  ) {\n    this.id = parseInt(this.activatedRoute.snapshot.params['id']);\n  }\n\n  ngOnInit(): void {\n    if (this.id) {\n      // load account details\n      this.loadAccount();\n    }\n  }\n\n  loadAccount() {\n    this.isLoading = true;\n    const params: any = {\n      with: 'type,parent'\n    };\n    this.accountService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.isLoading = false;\n        this.account = response?.item;\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n\n  onSaved(account: any) {\n    this.account = account;\n  }\n\n  onDeleted() {\n    this.location.back();\n  }\n\n  reload() {\n    this.loadAccount();\n    this.transactionList.reload();\n  }\n}\n","<div\n  *ngIf=\"account\"\n  class=\"d-flex flex-row justify-content-start align-items-start gap-3\"\n>\n  <mat-card class=\"p-0\" style=\"width: calc(30% - 1rem)\">\n    <mat-card-content class=\"p-3 mb-0\">\n      <div class=\"d-flex justify-content-start align-items-center gap-2\">\n        <strong>Information</strong>\n        <app-account-form-button\n          [account]=\"account\"\n          class=\"text-secondary\"\n          (saved)=\"onSaved($event)\"\n          *ngxPermissionsOnly=\"['accountingcommon_account.create']\"\n        ></app-account-form-button>\n        <app-account-delete-button\n          [account]=\"account\"\n          (deleted)=\"onDeleted()\"\n          *ngxPermissionsOnly=\"['accountingcommon_account.delete']\"\n        ></app-account-delete-button>\n      </div>\n    </mat-card-content>\n\n    <table\n      class=\"table table-bordered w-100\"\n      aria-describedby=\"Account Details\"\n    >\n      <tbody>\n        <tr>\n          <td>Title</td>\n          <td>{{ account?.title }}</td>\n        </tr>\n        <tr>\n          <td>Account Code</td>\n          <td>{{ account?.code }}</td>\n        </tr>\n        <tr>\n          <td>Type</td>\n          <td>{{ account?.type?.title }}</td>\n        </tr>\n        <tr>\n          <td>Parent</td>\n          <td>{{ account?.parent?.title }}</td>\n        </tr>\n        <tr>\n          <td>Initial Balance</td>\n          <td>{{ account?.initial_balance | currency }}</td>\n        </tr>\n        <tr>\n          <td>Current Balance</td>\n          <td>{{ account?.current_balance | currency }}</td>\n        </tr>\n        <tr>\n          <td>Description</td>\n          <td>{{ account?.description }}</td>\n        </tr>\n      </tbody>\n    </table>\n  </mat-card>\n\n  <mat-card style=\"width: calc(70% - 1rem)\">\n    <mat-card-content\n      class=\"p-3 mb-0 d-flex justify-content-start align-items-center gap-2\"\n    >\n      <strong>Transactions</strong>\n      <app-transaction-form-button\n        class=\"mt-1\"\n        [accountId]=\"account?.id\"\n        (saved)=\"reload()\"\n      ></app-transaction-form-button>\n    </mat-card-content>\n    <mat-card-content class=\"p-0\">\n      <app-transaction-list #transactionList [account]=\"account\"></app-transaction-list>\n    </mat-card-content>\n  </mat-card>\n</div>\n<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AuthenticationGuard } from 'ngx-techlify-core';\nimport { AccountListComponent } from './account-list/account-list.component';\nimport { AccountNavBarComponent } from './account-nav-bar/account-nav-bar.component';\nimport { AccountViewPageComponent } from './account-view-page/account-view-page.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: AccountNavBarComponent,\n    children: [\n      {\n        path: '',\n        component: AccountListComponent,\n        canLoad: [AuthenticationGuard]\n      },\n      {\n        path: ':id/view',\n        component: AccountViewPageComponent,\n        canLoad: [AuthenticationGuard]\n      },\n      {\n        path: '**',\n        redirectTo: '',\n        pathMatch: 'full',\n        canLoad: [AuthenticationGuard]\n      }\n    ]\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class AccountRoutingModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {AccountRoutingModule} from './account-routing.module';\nimport {AccountListComponent} from './account-list/account-list.component';\nimport {AccountNavBarComponent} from './account-nav-bar/account-nav-bar.component';\nimport {AccountFormComponent} from './account-form/account-form.component';\nimport {ColumnSelectorModule, SearchableSelectorModule} from 'ngx-techlify-core';\nimport {AccountFormButtonComponent} from './account-form-button/account-form-button.component';\nimport {\n  AccountBalanceCalculateButtonComponent\n} from './account-balance-calculate-button/account-balance-calculate-button.component';\nimport {AccountViewPageComponent} from './account-view-page/account-view-page.component';\nimport {AccountDeleteButtonComponent} from './account-delete-button/account-delete-button.component';\nimport {TransactionFormModule} from '../payment/transaction-form/transaction-form.module';\nimport {TransactionListModule} from '../payment/transaction-list/transaction-list.module';\nimport {PrintButtonModule, SharedModule} from '../../@shared';\n\n@NgModule({\n  declarations: [\n    AccountListComponent,\n    AccountNavBarComponent,\n    AccountFormComponent,\n    AccountFormButtonComponent,\n    AccountBalanceCalculateButtonComponent,\n    AccountViewPageComponent,\n    AccountDeleteButtonComponent\n  ],\n  exports: [\n    AccountFormComponent\n  ],\n    imports: [\n        CommonModule,\n        AccountRoutingModule,\n        SharedModule,\n        SearchableSelectorModule,\n        PrintButtonModule,\n        TransactionFormModule,\n        TransactionListModule,\n        ColumnSelectorModule\n    ]\n})\nexport class AccountModule {\n}\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { AccountFormComponent } from '../../account-form/account-form.component';\n\n@Component({\n  selector: 'app-account-selector',\n  templateUrl: './account-selector.component.html',\n  styleUrls: ['./account-selector.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => AccountSelectorComponent),\n      multi: true\n    }\n  ]\n})\nexport class AccountSelectorComponent implements ControlValueAccessor {\n  @Input() required: boolean = false;\n  @Input() showAddButton: boolean = false;\n  @Input() params: string = '';\n  @Input() label = 'Payment Account';\n  @Input() perPage: number = 25;\n  @Input() multiple = false;\n  @Input() hint!: string;\n\n\n  value: any;\n  onChange: any = () => {};\n  onTouch: any = () => {};\n\n  writeValue(value: any): void {\n    this.value = value;\n    this.onChange(value);\n    this.onTouch(value);\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  protected readonly AccountFormComponent = AccountFormComponent;\n}\n","<mat-form-field appearance=\"fill\" class=\"w-100\">\n  <mat-label>{{ label }}</mat-label>\n  <app-searchable-selector\n    [apiUrl]=\"'api/accounts?' + params\"\n    titleField=\"title\"\n    sortBy=\"title|asc\"\n    [required]=\"required\"\n    [(ngModel)]=\"value\"\n    #accountSelector=\"ngModel\"\n    name=\"accountSelector\"\n    [add]=\"showAddButton\"\n    [itemComponent]=\"AccountFormComponent\"\n    (ngModelChange)=\"onChange($event)\"\n    [addConfig]=\"{ width: '600px' }\"\n    [perPage]=\"perPage\"\n    [multiple]=\"multiple\"\n  >\n  </app-searchable-selector>\n  <mat-error *ngIf=\"accountSelector.invalid && accountSelector.touched\">\n    The {{ label }} field is required.\n  </mat-error>\n  <mat-hint *ngIf=\"hint\">{{ hint }}</mat-hint>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccountSelectorComponent } from './account-selector/account-selector.component';\nimport {MatFormFieldModule} from \"@angular/material/form-field\";\nimport {ReactiveFormsModule} from \"@angular/forms\";\nimport {SearchableSelectorModule} from \"ngx-techlify-core\";\nimport {SharedModule} from '../../../@shared';\n\n\n\n@NgModule({\n  declarations: [\n    AccountSelectorComponent\n  ],\n  exports: [\n    AccountSelectorComponent\n  ],\n  imports: [\n    CommonModule,\n    MatFormFieldModule,\n    ReactiveFormsModule,\n    SearchableSelectorModule,\n    SharedModule\n  ]\n})\nexport class AccountSelectorModule { }\n","export enum AccountTypeEnum {\n  BANK = 3\n}\n","import {Component, OnInit} from '@angular/core';\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {CurrencyPipe, NgForOf, NgIf} from \"@angular/common\";\nimport {MatDivider} from \"@angular/material/divider\";\nimport {RouterLink} from \"@angular/router\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {NgxPermissionsModule} from \"ngx-permissions\";\nimport {AccountService} from '../account.service';\nimport {AccountTypeEnum} from '../account-type.enum';\n\n@Component({\n  selector: 'app-accounts-list-compact',\n  standalone: true,\n  imports: [\n    MatCardContent,\n    MatCard,\n    NgForOf,\n    CurrencyPipe,\n    MatDivider,\n    RouterLink,\n    MatProgressBar,\n    NgIf,\n    NgxPermissionsModule\n  ],\n  templateUrl: './accounts-list-compact.component.html',\n  styleUrl: './accounts-list-compact.component.scss'\n})\nexport class AccountsListCompactComponent implements OnInit {\n  isLoading: boolean = false;\n  accounts: any[] = [];\n  constructor(\n    private accountService: AccountService\n  ) {}\n\n  ngOnInit(): void {\n    this.loadData();\n  }\n\n  loadData() {\n    const params: any = {\n      sort_by: 'updated_at|desc',\n      type_ids: AccountTypeEnum.BANK\n    }\n    this.isLoading = true;\n    this.accountService.index(params).subscribe({\n      next: (response: any) => {\n        this.accounts = response?.data;\n        this.isLoading = false;\n      }\n    });\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"mb-2\">\n    <div class=\"d-flex justify-content-start align-items-center gap-2\">\n      <h3 class=\"mb-0\">Bank Accounts</h3>\n      <a\n        class=\"text-decoration-none text-dark mt-2\"\n        [routerLink]=\"['/finance/accounts']\"\n        *ngxPermissionsOnly=\"['accountingcommon_account.read']\"\n      >\n        <span class=\"material-symbols-outlined\">\n          visibility\n        </span>\n      </a>\n    </div>\n  </mat-card-content>\n  <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n  <mat-divider></mat-divider>\n  <mat-card-content class=\"mt-2\" *ngIf=\"accounts!.length > 0\">\n    <div *ngFor=\"let account of accounts\" class=\"mb-2 pb-2\" style=\"border-bottom: 1px solid lightgray\">\n      <a class=\"mb-0 text-dark text-decoration-none\" [routerLink]=\"['/finance/accounts', account?.id, 'view']\">\n        {{ account?.title }}\n      </a>\n      <div class=\"d-flex justify-content-between align-items-start gap-2\">\n        <small class=\"text-secondary\">{{ account?.code }}</small>\n        <small class=\"text-secondary\">{{ account?.current_balance | currency }}</small>\n      </div>\n    </div>\n  </mat-card-content>\n</mat-card>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { EntityFileService } from 'ngx-techlify-core';\n\n@Component({\n  selector: 'app-file-upload-button',\n  standalone: true,\n  imports: [CommonModule, MatButtonModule, MatIconModule],\n  templateUrl: './file-upload-button.component.html',\n  styleUrls: ['./file-upload-button.component.scss']\n})\nexport class FileUploadButtonComponent  {\n  @Input() config!: {\n    fileId?: string | undefined;\n    multiple?: boolean | undefined;\n    accept?: string | undefined;\n  };\n  @Output() uploaded: EventEmitter<any[]> = new EventEmitter<any[]>();\n\n  readonly DEFAULT_FILE_ID = 'file-upload-button';\n  isUploading!: boolean;\n\n  constructor(private entityFileService: EntityFileService) {}\n\n  async onFileChange(event: any) {\n    if (event.target.files && event.target.files.length) {\n      const fileArray: File[] = Array.from(event.target.files);\n      const fileInput = document.getElementById(\n        this.config?.fileId ?? this.DEFAULT_FILE_ID\n      ) as HTMLInputElement;\n      fileInput.value = '';\n      this.isUploading = true;\n      const results = await this.uploadFiles(fileArray);\n      this.uploaded.emit(results);\n      this.isUploading = false;\n    }\n  }\n\n  selectFiles(event: any) {\n    event.preventDefault();\n    document\n      .getElementById(this.config?.fileId ?? this.DEFAULT_FILE_ID)\n      ?.click();\n  }\n\n  private async uploadFiles(files: File[]): Promise<any[]> {\n    const uploadPromises = files.map((file) =>\n      this.entityFileService.uploadEntityFile(file)\n    );\n    return await Promise.all(uploadPromises);\n  }\n}\n","<button\n  [disabled]=\"isUploading\"\n  mat-stroked-button\n  type=\"button\"\n  (click)=\"selectFiles($event)\"\n>\n  <mat-icon>attachment</mat-icon> Attach\n</button>\n\n<input\n  type=\"file\"\n  id=\"{{ config.fileId ?? DEFAULT_FILE_ID }}\"\n  [accept]=\"config.accept ?? '*'\"\n  (change)=\"onFileChange($event)\"\n  [multiple]=\"config.multiple ?? false\"\n  class=\"d-none\"\n/>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {NgIf} from \"@angular/common\";\nimport {MatIcon} from \"@angular/material/icon\";\n\n@Component({\n  selector: 'app-image-preview',\n  standalone: true,\n  imports: [\n    NgIf,\n    MatIcon\n  ],\n  templateUrl: './image-preview.component.html',\n  styleUrl: './image-preview.component.scss'\n})\nexport class ImagePreviewComponent {\n  @Input() path!: string;\n  @Input() height: number = 100;\n  @Output() removed: EventEmitter<any> = new EventEmitter<any>();\n}\n","<img\n  *ngIf=\"path\"\n  [src]=\"path\" [alt]=\"path\"\n  [style.height.px]=\"height\"\n  class=\"img-thumbnail\"\n>\n<mat-icon (click)=\"removed.emit()\" class=\"cursor-pointer\">close</mat-icon>\n","import { Injectable } from '@angular/core';\nimport {HttpService, TechlifyService} from \"ngx-techlify-core\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ClientService extends TechlifyService {\n\n  constructor(\n    protected httpService: HttpService\n  ) {\n    super(httpService, 'clients');\n  }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { MatCard, MatCardContent, MatCardTitle } from \"@angular/material/card\";\nimport { MatError, MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatButton } from \"@angular/material/button\";\nimport {\n  AlertService,\n  CurrentUserService,\n  FormValidatorService,\n  TechlifyFormComponent,\n  User\n} from \"ngx-techlify-core\";\nimport { FormBuilder, ReactiveFormsModule, Validators } from \"@angular/forms\";\nimport { Location, NgIf } from \"@angular/common\";\nimport { ClientService } from \"../client.service\";\nimport { FileUploadButtonComponent } from '../../@shared/file-upload-button/file-upload-button.component';\nimport { ImagePreviewComponent } from '../../@shared/image-preview/image-preview.component';\n\n@Component({\n  selector: 'app-company-information',\n  standalone: true,\n  imports: [\n    MatCardContent,\n    MatCard,\n    MatCardTitle,\n    MatFormField,\n    MatLabel,\n    MatInput,\n    MatButton,\n    ReactiveFormsModule,\n    FileUploadButtonComponent,\n    NgIf,\n    MatError,\n    ImagePreviewComponent,\n    ImagePreviewComponent\n  ],\n  templateUrl: './company-information.component.html',\n  styleUrl: './company-information.component.scss'\n})\nexport class CompanyInformationComponent extends TechlifyFormComponent implements OnInit {\n  user!: User;\n\n  constructor(\n    formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder,\n    private currentUserService: CurrentUserService,\n    private clientService: ClientService,\n    private location: Location\n  ) {\n    super(formValidatorService);\n\n    this.errorMessages = {\n      name: {\n        required: 'The name field is required.'\n      }\n    }\n\n    this.form = this.formBuilder.group({\n      id: [''],\n      name: ['', Validators.required],\n      email: [''],\n      phone: [''],\n      address: [''],\n      logo: [''],\n      letterhead_image: [''],\n      tin: ['']\n    });\n  }\n\n  ngOnInit() {\n    this.user = this.currentUserService.getUser();\n    let client = this.user?.client;\n    if (client) {\n      this.form.patchValue(\n        { ...client }\n      );\n    }\n  }\n\n  save() {\n    this.form.markAllAsTouched();\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please check the form for errors.', 'error');\n      return;\n    }\n\n    const data: any = { ...this.form.value };\n    this.isWorking = true;\n    this.clientService.update(data).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        // update user\n        this.currentUserService.getUserObservable(true).subscribe();\n        this.alertService.addAlert('The company information saved successfully!', 'success');\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  onFileUploaded(uploadedFile: any[], field: string) {\n    if (uploadedFile && uploadedFile.length > 0) {\n      this.form.get(field)?.patchValue(uploadedFile[0]?.item?.url);\n    }\n  }\n\n  redirectBack() {\n    this.location.back();\n  }\n}\n","<div class=\"d-flex justify-content-center align-items-center\">\n  <mat-card style=\"width: 50%\">\n    <mat-card-content>\n      <mat-card-title>Company Information</mat-card-title>\n    </mat-card-content>\n    <mat-card-content class=\"mt-3\">\n      <form\n        [formGroup]=\"form\"\n        class=\"d-flex flex-wrap justify-content-start align-items-center gap-2\"\n        (submit)=\"save()\"\n      >\n        <mat-form-field style=\"width: calc(100%)\">\n          <mat-label>Name</mat-label>\n          <input matInput formControlName=\"name\">\n          <mat-error *ngIf=\"isFieldValid('name')\">\n            {{ getErrorMessage('name') }}\n          </mat-error>\n        </mat-form-field>\n\n        <mat-form-field style=\"width: calc(50% - 0.5rem)\">\n          <mat-label>Email</mat-label>\n          <input matInput formControlName=\"email\">\n        </mat-form-field>\n\n        <mat-form-field style=\"width: calc(50%)\">\n          <mat-label>Phone</mat-label>\n          <input matInput formControlName=\"phone\">\n        </mat-form-field>\n\n        <mat-form-field style=\"width: calc(100%)\">\n          <mat-label>Address</mat-label>\n          <textarea matInput formControlName=\"address\" rows=\"3\"></textarea>\n        </mat-form-field>\n\n        <mat-form-field style=\"width: calc(100%)\">\n          <mat-label>TIN</mat-label>\n          <input matInput formControlName=\"tin\">\n        </mat-form-field>\n\n        <div style=\"width: calc(50% - 0.5rem)\">\n          <p>Logo</p>\n          <app-file-upload-button\n            *ngIf=\"!form?.value?.logo\"\n            [config]=\"{ fileId: 'client-logo-' + this.form.value?.id, accept: 'image/*'}\"\n            (uploaded)=\"onFileUploaded($event, 'logo')\"\n          ></app-file-upload-button>\n          <app-image-preview\n            *ngIf=\"form.value?.logo\"\n            [path]=\"form.value?.logo\"\n            (removed)=\"form.get('logo')?.setValue('')\"\n          ></app-image-preview>\n        </div>\n\n        <div style=\"width: calc(50% - 0.5rem)\">\n          <p>Letterhead Image</p>\n          <app-file-upload-button\n            *ngIf=\"!form.value?.letterhead_image\"\n            [config]=\"{ fileId: 'client-letterhead-' + this.form.value?.id, accept: 'image/*'}\"\n            (uploaded)=\"onFileUploaded($event, 'letterhead_image')\"\n          ></app-file-upload-button>\n          <app-image-preview\n            *ngIf=\"form.value?.letterhead_image\"\n            [path]=\"form.value?.letterhead_image\"\n            (removed)=\"form.get('letterhead_image')?.setValue('')\"\n          ></app-image-preview>\n        </div>\n\n        <div style=\"width: calc(100%)\" class=\"d-flex justify-content-end align-items-center gap-3\">\n          <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">\n            Save\n          </button>\n          <button [disabled]=\"isWorking\" mat-flat-button type=\"button\" (click)=\"redirectBack()\">\n            Cancel\n          </button>\n        </div>\n      </form>\n    </mat-card-content>\n  </mat-card>\n</div>\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class BalanceSheetService extends TechlifyService {\n  constructor(httpService: HttpService) {\n    super(httpService, 'balance-sheet');\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PayablesService extends TechlifyService {\n  constructor(protected httpService: HttpService) {\n    super(httpService, 'payables');\n  }\n\n  /**\n   * Get the payables summary.\n   *\n   * @param params\n   */\n  summary(params?: any): Observable<any> {\n    return this.httpService.get('api/payables-summary', { params });\n  }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'app-reports-layout',\n  templateUrl: './reports-layout.component.html',\n  styleUrls: ['./reports-layout.component.scss']\n})\nexport class ReportsLayoutComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<div>\n  <router-outlet></router-outlet>\n</div>\n","import { Component } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { RequestHelperService } from 'ngx-techlify-core';\nimport { Sort } from '@angular/material/sort';\nimport {ReceivablesService} from \"../receivables.service\";\n\n@Component({\n  selector: 'app-receivables-report',\n  templateUrl: './receivables-report.component.html',\n  styleUrls: ['./receivables-report.component.scss']\n})\nexport class ReceivablesReportComponent {\n  filterForm: FormGroup;\n  dataSource: MatTableDataSource<any> = new MatTableDataSource<any>();\n  displayedColumns: string[] = [\n    'no',\n    'customer',\n    'total_outstanding',\n    'one_month',\n    'two_month',\n    'three_month',\n    'over_three_months'\n  ];\n  isLoading: boolean = false;\n  isExporting: boolean = false;\n  totalOutstanding: number = 0;\n  totalOneMonthOutstanding: number = 0;\n  totalTwoMonthOutstanding: number = 0;\n  totalThreeMonthOutstanding: number = 0;\n  totalOver3MonthsOutstanding: number = 0;\n  filterConfig: any = {\n    duration: {\n      label: 'Date'\n    }\n  };\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private receivablesService: ReceivablesService,\n    private requestHelperService: RequestHelperService\n  ) {\n    this.filterForm = this.formBuilder.group({\n      invoice_status_ids: [[1, 2]],\n      customer_ids: [''],\n      sort_by: ['customer.name|asc'],\n      duration: [''],\n      date_from: [''],\n      date_to: [''],\n    });\n  }\n\n  /**\n   * Reset the table data and reload the summary.\n   */\n  reload() {\n    if (this.isLoading) return;\n    this.dataSource = new MatTableDataSource<any>();\n    this.totalOutstanding = 0;\n    this.totalOneMonthOutstanding = 0;\n    this.totalTwoMonthOutstanding = 0;\n    this.totalThreeMonthOutstanding = 0;\n    this.totalOver3MonthsOutstanding = 0;\n    this.loadData();\n  }\n\n  /**\n   * Load the invoice summary data.\n   *\n   * @private\n   */\n  private loadData() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value)\n    };\n    params.perPage = 25;\n    params.with = 'customer';\n\n    this.isLoading = true;\n    this.receivablesService.index(params).subscribe({\n      next: (response: any) => {\n        this.isLoading = false;\n        (response as []).forEach((invoice: any) => {\n          this.totalOutstanding += invoice?.total_outstanding;\n          this.totalOneMonthOutstanding += invoice?.overdue_1_30;\n          this.totalTwoMonthOutstanding += invoice?.overdue_31_60;\n          this.totalThreeMonthOutstanding += invoice?.overdue_61_90;\n          this.totalOver3MonthsOutstanding +=\n            invoice?.overdue_91_plus;\n        });\n        this.dataSource = new MatTableDataSource<any>(response);\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n\n  /**\n   * Handle sort change event.\n   *\n   * @param sort\n   */\n  onSortChange(sort: Sort) {\n    let { active, direction } = sort;\n    if (!direction) direction = 'asc';\n    if (!active) active = 'customer.name';\n\n    this.filterForm.get('sort_by')?.patchValue(active + '|' + direction);\n  }\n\n  /**\n   * Export the report in Excel.\n   */\n  export() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value)\n    };\n    params.with = 'customer';\n    this.isExporting = true;\n    this.receivablesService.export(params).subscribe({\n      next: (response: any) => {\n        this.isExporting = false;\n        window.open(response?.item?.file_link, '_blank');\n      },\n      error: () => (this.isExporting = false)\n    });\n  }\n}\n","<div class=\"d-flex flex-column gap-3\">\n  <mat-card>\n    <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n      <div class=\"d-flex flex-column gap-2\">\n        <div class=\"d-flex justify-content-start align-items-center gap-3\">\n          <h2 class=\"mb-0\">Receivables Report</h2>\n          <mat-icon (click)=\"export()\" class=\"cursor-pointer\">\n            file_download\n          </mat-icon>\n        </div>\n        <p *ngIf=\"filterForm.value?.date_from && filterForm.value?.date_to\">\n          from {{ filterForm.value?.date_from | date }} to\n          {{ filterForm.value?.date_to | date }}\n        </p>\n        <p *ngIf=\"!filterForm.value?.date_from && !filterForm.value?.date_to\">\n          All Dates\n        </p>\n      </div>\n\n      <app-techlify-filter\n        [filterForm]=\"filterForm\"\n        (filterUpdated)=\"reload()\"\n        [filterConfig]=\"filterConfig\"\n      ></app-techlify-filter>\n    </mat-card-content>\n  </mat-card>\n\n  <mat-card>\n    <mat-card-content class=\"p-0\">\n      <table\n        mat-table\n        [dataSource]=\"dataSource\"\n        class=\"w-100\"\n        aria-describedby=\"Receivables Report\"\n        matSort\n        (matSortChange)=\"onSortChange($event)\"\n        matSortActive=\"customer.name\"\n        matSortDirection=\"asc\"\n      >\n        <!-- # Column -->\n        <ng-container matColumnDef=\"no\">\n          <th mat-header-cell *matHeaderCellDef>#</th>\n          <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n          <td mat-footer-cell *matFooterCellDef></td>\n        </ng-container>\n\n        <!-- Customer Column -->\n        <ng-container matColumnDef=\"customer\">\n          <th mat-header-cell *matHeaderCellDef mat-sort-header=\"customer.name\">\n            Customer\n          </th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.customer?.name }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>Total</strong>\n          </td>\n        </ng-container>\n\n        <!-- Total Outstanding Column -->\n        <ng-container matColumnDef=\"total_outstanding\">\n          <th\n            mat-header-cell\n            *matHeaderCellDef\n            mat-sort-header=\"total_outstanding\"\n          >\n            Total Outstanding\n          </th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element.total_outstanding | currency }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>{{ totalOutstanding | currency }}</strong>\n          </td>\n        </ng-container>\n\n        <!-- One Month Column -->\n        <ng-container matColumnDef=\"one_month\">\n          <th\n            mat-header-cell\n            *matHeaderCellDef\n            mat-sort-header=\"overdue_1_30\"\n          >\n            1 Month\n          </th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.overdue_1_30 | currency }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>{{ totalOneMonthOutstanding | currency }}</strong>\n          </td>\n        </ng-container>\n\n        <!-- Two Month Column -->\n        <ng-container matColumnDef=\"two_month\">\n          <th\n            mat-header-cell\n            *matHeaderCellDef\n            mat-sort-header=\"overdue_31_60\"\n          >\n            2 Month\n          </th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.overdue_31_60 | currency }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>{{ totalTwoMonthOutstanding | currency }}</strong>\n          </td>\n        </ng-container>\n\n        <!-- Three Month Column -->\n        <ng-container matColumnDef=\"three_month\">\n          <th\n            mat-header-cell\n            *matHeaderCellDef\n            mat-sort-header=\"overdue_61_90\"\n          >\n            3 Month\n          </th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.overdue_61_90 | currency }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>{{ totalThreeMonthOutstanding | currency }}</strong>\n          </td>\n        </ng-container>\n\n        <!-- Over Three Month Column -->\n        <ng-container matColumnDef=\"over_three_months\">\n          <th\n            mat-header-cell\n            *matHeaderCellDef\n            mat-sort-header=\"overdue_91_plus\"\n          >\n            Over 3 Months\n          </th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.overdue_91_plus | currency }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>{{ totalOver3MonthsOutstanding | currency }}</strong>\n          </td>\n        </ng-container>\n\n        <tr\n          mat-header-row\n          *matHeaderRowDef=\"displayedColumns\"\n        ></tr>\n        <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n        <tr mat-footer-row *matFooterRowDef=\"displayedColumns\"></tr>\n      </table>\n\n      <mat-progress-bar\n        mode=\"indeterminate\"\n        *ngIf=\"isLoading\"\n      ></mat-progress-bar>\n    </mat-card-content>\n  </mat-card>\n</div>\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SupplierBalanceReportService extends TechlifyService {\n  constructor(protected httpService: HttpService) {\n    super(httpService, 'supplier-balance-report');\n  }\n\n  /**\n   * Export the supplier balance report in Excel.\n   *\n   * @param params\n   */\n  export(params?: any): Observable<any> {\n    return this.httpService.get('api/supplier-balance-report/export', {\n      params\n    });\n  }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { Timeline } from 'ngx-techlify-core';\nimport { SupplierBalanceReportService } from '../supplier-balance-report.service';\n\n@Component({\n  selector: 'app-supplier-balance-report-page',\n  templateUrl: './supplier-balance-report-page.component.html',\n  styleUrls: ['./supplier-balance-report-page.component.scss']\n})\nexport class SupplierBalanceReportPageComponent {\n  filterForm: FormGroup;\n  isLoading = false;\n  dataSource: any[] = [];\n  isExporting = false;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private supplierBalanceReportService: SupplierBalanceReportService\n  ) {\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.THIS_YEAR],\n      date_from: [''],\n      date_to: ['']\n    });\n  }\n\n  /**\n   * Export the report in Excel.\n   */\n  export() {\n    const params: any = {\n      ...this.filterForm.value\n    };\n    this.isExporting = true;\n    this.supplierBalanceReportService.export(params).subscribe({\n      next: (response: any) => {\n        this.isExporting = false;\n        window.open(response?.item?.file_link, '_blank');\n      },\n      error: () => (this.isExporting = false)\n    });\n  }\n  /**\n   * Reset table and reload data.\n   */\n  reload() {\n    this.dataSource = [];\n    this.loadData();\n  }\n\n  /**\n   * Load the supplier balance report.\n   */\n  loadData() {\n    this.isLoading = true;\n    const params: any = { ...this.filterForm.value };\n    this.supplierBalanceReportService.index(params).subscribe({\n      next: (response: any) => {\n        this.isLoading = false;\n        this.prepareData(response);\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n\n  /**\n   * Prepare data for table.\n   *\n   * @param data\n   * @private\n   */\n  private prepareData(data: any[]) {\n    let total: number = 0;\n    data.forEach((supplier: any, index: number) => {\n      let row: any = {\n        index: index + 1,\n        type: 'supplier',\n        company_name: supplier?.company_name,\n        total: parseFloat(supplier?.bills_sum_balance)\n      };\n      this.dataSource.push(row);\n      total += parseFloat(supplier?.bills_sum_balance);\n\n      (supplier?.bills as []).forEach((bill: any, index: number) => {\n        let billRow: any = {\n          index: index + 1,\n          type: 'bill',\n          bill_no: bill?.id,\n          bill_type: bill?.type?.title,\n          reference_no: bill?.reference_no,\n          date: bill?.date,\n          particulars: bill?.particulars,\n          amount: bill?.total,\n          balance: bill?.balance\n        };\n        this.dataSource.push(billRow);\n      });\n      let titleRow: any = {\n        type: 'title_row',\n        title: 'Total',\n        total: parseFloat(supplier?.bills_sum_balance)\n      };\n      this.dataSource.push(titleRow);\n    });\n    // add the overall total\n    let overallTotalRow: any = {\n      type: 'final_title_row',\n      title: 'Total',\n      total\n    };\n    this.dataSource.push(overallTotalRow);\n  }\n}\n","<div class=\"d-flex flex-column gap-3\">\n  <div class=\"d-flex justify-content-center align-items-center gap-3\">\n    <h2 class=\"mb-0\">Supplier Balance Detail Report</h2>\n    <button\n      [disabled]=\"isExporting\"\n      mat-raised-button\n      color=\"primary\"\n      (click)=\"export()\"\n    >\n      <mat-icon>file_download</mat-icon>\n      Export\n    </button>\n  </div>\n\n  <mat-card>\n    <mat-card-content>\n      <app-techlify-filter\n        [filterForm]=\"filterForm\"\n        (filterUpdated)=\"reload()\"\n      ></app-techlify-filter>\n    </mat-card-content>\n  </mat-card>\n\n  <mat-card>\n    <mat-card-content>\n      <table\n        class=\"table w-100 table-bordered\"\n        aria-describedby=\"Supplier Balance Report\"\n      >\n        <thead>\n          <tr>\n            <th scope=\"col\">#</th>\n            <th scope=\"col\">Supplier Name</th>\n            <th scope=\"col\">Bill #</th>\n            <th scope=\"col\">Type</th>\n            <th scope=\"col\">Reference #</th>\n            <th scope=\"col\">Date</th>\n            <th scope=\"col\">Particulars</th>\n            <th scope=\"col\">Amount</th>\n            <th scope=\"col\">Balance</th>\n            <th scope=\"col\">Total</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr *ngFor=\"let supplier of dataSource\">\n            <td *ngIf=\"supplier?.type === 'supplier'\">\n              {{ supplier?.type === 'supplier' ? supplier?.index : '' }}\n            </td>\n            <td *ngIf=\"supplier?.type === 'bill'\" colspan=\"2\"></td>\n            <td *ngIf=\"supplier?.type === 'supplier'\" colspan=\"8\">\n              {{ supplier?.company_name }}\n            </td>\n            <td *ngIf=\"supplier?.type === 'supplier'\">\n              {{ supplier?.total | currency }}\n            </td>\n            <td *ngIf=\"supplier?.type === 'bill'\">\n              {{ supplier?.bill_no }}\n            </td>\n            <td *ngIf=\"supplier?.type === 'bill'\">\n              {{ supplier?.bill_type }}\n            </td>\n            <td *ngIf=\"supplier?.type === 'bill'\">\n              {{ supplier?.reference_no }}\n            </td>\n            <td *ngIf=\"supplier?.type === 'bill'\">\n              {{ supplier?.date | date }}\n            </td>\n            <td *ngIf=\"supplier?.type === 'bill'\">\n              {{ supplier?.particulars }}\n            </td>\n            <td *ngIf=\"supplier?.type === 'bill'\">\n              {{ supplier?.amount | currency }}\n            </td>\n            <td *ngIf=\"supplier?.type === 'bill'\">\n              {{ supplier?.balance | currency }}\n            </td>\n            <td *ngIf=\"supplier?.type === 'title_row'\" colspan=\"7\"></td>\n            <th *ngIf=\"supplier?.type === 'title_row'\">\n              {{ supplier?.title }}\n            </th>\n            <th *ngIf=\"supplier?.type === 'title_row'\">\n              {{ supplier?.total | currency }}\n            </th>\n            <td *ngIf=\"supplier?.type === 'final_title_row'\" colspan=\"8\"></td>\n            <th *ngIf=\"supplier?.type === 'final_title_row'\">\n              {{ supplier?.title }}\n            </th>\n            <th *ngIf=\"supplier?.type === 'final_title_row'\">\n              {{ supplier?.total | currency }}\n            </th>\n          </tr>\n        </tbody>\n      </table>\n\n      <mat-progress-bar\n        *ngIf=\"isLoading\"\n        mode=\"indeterminate\"\n      ></mat-progress-bar>\n    </mat-card-content>\n  </mat-card>\n</div>\n","export enum ExpenseType {\n  TYPE_BILL = 1,\n  TYPE_EXPENSE = 2,\n  TYPE_CHECK = 3,\n  TYPE_PURCHASE_ORDER = 4\n}\n","import { Injectable } from '@angular/core';\nimport { HttpService } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ExpenseSummaryService {\n  constructor(private httpService: HttpService) {}\n\n  /**\n   * Get the expense aggregated data.\n   *\n   * @param params\n   */\n  aggregated(params?: any): Observable<any> {\n    return this.httpService.get('api/expenses-aggregated', { params });\n  }\n\n  /**\n   * Export the expense aggregated report.\n   *\n   * @param params\n   */\n  export(params?: any) {\n    return this.httpService.get('api/expenses-aggregated/export', { params });\n  }\n}\n","import { Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport {\n  TechlifyListComponent,\n  Timeline\n} from 'ngx-techlify-core';\nimport { Router } from '@angular/router';\nimport { finalize } from 'rxjs/operators';\nimport { ExpenseSummaryService } from '../expense-summary.service';\nimport { ExpenseType } from '../../expense-type.enum';\n\n@Component({\n  selector: 'app-expense-summary-report',\n  templateUrl: './expense-summary-report.component.html',\n  styleUrls: ['./expense-summary-report.component.scss']\n})\nexport class ExpenseSummaryReportComponent extends TechlifyListComponent {\n  filterConfig: any = {\n    search: {\n      placeholder: 'Search supplier, expense details'\n    },\n    payment_account_ids: {\n      label: 'Account',\n      apiUrl: 'api/accounts?type_ids=14'\n    }\n  };\n  displayedColumns: string[] = ['no', 'supplier', 'records', 'total'];\n  total: number = 0;\n  isExporting: boolean = false;\n  dataOptions: any[] = [\n    { value: ExpenseType.TYPE_BILL, label: 'Bills' },\n    { value: ExpenseType.TYPE_EXPENSE, label: 'Expenses' }\n  ];\n  groupByOptions: any[] = [\n    { value: 'payee_id', label: 'Supplier' },\n    { value: 'category_id', label: 'Category' }\n  ];\n  totalRecords: number = 0;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private expenseSummaryService: ExpenseSummaryService,\n    private router: Router\n  ) {\n    super();\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.THIS_YEAR],\n      date_from: [''],\n      date_to: [''],\n      search: [''],\n      payment_account_ids: [''],\n      expenseable_ids: [''],\n      groupBy: ['category_id'],\n      with: ['payee'],\n      type_ids: [[ExpenseType.TYPE_EXPENSE]]\n    });\n  }\n\n  private buildParams(): any {\n    const params: any = this.requestHelperService.convertToFormData({\n      ...this.filterForm.value\n    });\n    if (params?.expenseable_ids) {\n      params.expenseable_type = 'project';\n    }\n    return params;\n  }\n\n  override loadData(): void {\n    this.isWorking = true;\n    this.total = 0;\n    this.totalRecords = 0;\n    this.expenseSummaryService.aggregated(this.buildParams())\n      .pipe(finalize(() => (this.isWorking = false)))\n      .subscribe((response: any) => {\n        this.models = response;\n        this.models.forEach((model: any) => {\n          this.total += parseFloat(model?.total);\n          this.totalRecords += parseInt(model?.count);\n        });\n      });\n  }\n\n  export() {\n    this.isExporting = true;\n    this.expenseSummaryService.export(this.buildParams())\n      .pipe(finalize(() => (this.isExporting = false)))\n      .subscribe((response: any) => {\n        window.open(response?.item?.file_link, '_blank');\n      });\n  }\n\n  onRowClick(element: any) {\n    const {\n      duration,\n      date_from,\n      date_to,\n      payment_account_ids,\n      type_ids,\n      groupBy\n    } = this.filterForm.value;\n    const params: any = {\n      duration,\n      date_from,\n      date_to,\n      payment_account_ids: payment_account_ids.toString(),\n      type_ids: type_ids.toString()\n    };\n    if (groupBy === 'category_id') {\n      params.category_ids = element?.category_id;\n    } else {\n      params.payee_ids = element?.payee_id;\n    }\n    this.router.navigate(['/purchases/expenses'], { queryParams: params });\n  }\n}\n","<div class=\"d-flex flex-column gap-3 container\">\n  <mat-card>\n    <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n      <div class=\"d-flex align-items-center gap-2\">\n        <h3 class=\"mb-0\">Expense Summary Report</h3>\n        <app-techlify-icon name=\"export\" class=\"clickable\" matTooltip=\"Export\" *ngIf=\"!isExporting\"\n          (click)=\"export()\"></app-techlify-icon>\n      </div>\n\n      <form [formGroup]=\"filterForm\" class=\"d-flex flex-row gap-2\">\n        <app-techlify-filter [filterForm]=\"filterForm\" (filterUpdated)=\"reload()\"\n          [filterConfig]=\"filterConfig\"></app-techlify-filter>\n\n        <mat-form-field class=\"fl-sm\" *ngxPermissionsOnly=\"['project.read']\">\n          <mat-label>Project</mat-label>\n          <app-searchable-selector apiUrl=\"api/projects\" titleField=\"project_name\" formControlName=\"expenseable_ids\"\n            [multiple]=\"true\"></app-searchable-selector>\n        </mat-form-field>\n\n        <mat-form-field class=\"fl-sm\">\n          <mat-label>Data</mat-label>\n          <mat-select formControlName=\"type_ids\" multiple>\n            <mat-option *ngFor=\"let option of dataOptions\" [value]=\"option.value\">\n              {{ option.label }}\n            </mat-option>\n          </mat-select>\n        </mat-form-field>\n\n        <mat-form-field class=\"fl-sm\">\n          <mat-label>Group By</mat-label>\n          <mat-select formControlName=\"groupBy\">\n            <mat-option *ngFor=\"let option of groupByOptions\" [value]=\"option.value\">\n              {{ option.label }}\n            </mat-option>\n          </mat-select>\n        </mat-form-field>\n      </form>\n    </mat-card-content>\n  </mat-card>\n\n  <mat-card>\n    <mat-card-content class=\"p-0\">\n      <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Expenses Summary Report\">\n        <!-- # Column -->\n        <ng-container matColumnDef=\"no\">\n          <th mat-header-cell *matHeaderCellDef>#</th>\n          <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n          <td mat-footer-cell *matFooterCellDef></td>\n        </ng-container>\n\n        <!-- Supplier Column -->\n        <ng-container matColumnDef=\"supplier\">\n          <th mat-header-cell *matHeaderCellDef>\n            {{\n            filterForm.value?.groupBy === 'category_id'\n            ? 'Category'\n            : 'Supplier'\n            }}\n          </th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{\n            filterForm.value?.groupBy === 'category_id'\n            ? element?.category?.title\n            : element?.payee?.company_name\n            }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>Total</strong>\n          </td>\n        </ng-container>\n\n        <!-- Records Column -->\n        <ng-container matColumnDef=\"records\">\n          <th mat-header-cell *matHeaderCellDef>Records</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.count }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>{{ totalRecords }}</strong>\n          </td>\n        </ng-container>\n\n        <!-- Total Column -->\n        <ng-container matColumnDef=\"total\">\n          <th mat-header-cell *matHeaderCellDef>Total</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.total | currency }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>{{ total | currency }}</strong>\n          </td>\n        </ng-container>\n\n        <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n        <tr mat-row *matRowDef=\"let row; columns: displayedColumns; let element\" class=\"cursor-pointer\"\n          (click)=\"onRowClick(element)\"></tr>\n        <tr mat-footer-row *matFooterRowDef=\"displayedColumns\"></tr>\n      </table>\n\n      <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n    </mat-card-content>\n  </mat-card>\n</div>","import { Component, OnInit } from '@angular/core';\nimport {\n  TechlifyListComponent,\n  Timeline\n} from 'ngx-techlify-core';\nimport { FormBuilder } from '@angular/forms';\nimport { InvoiceSummaryService } from '../../invoice/invoice-summary.service';\nimport { SaleDocumentTypeEnum } from '../../invoice/sale-document-type-enum';\n\n@Component({\n  selector: 'app-income-by-customer-summary',\n  templateUrl: './income-by-customer-summary.component.html',\n  styleUrls: ['./income-by-customer-summary.component.scss']\n})\nexport class IncomeByCustomerSummaryComponent\n  extends TechlifyListComponent\n  implements OnInit {\n  isExporting: boolean = false;\n  filterConfig: any = {\n    search: {\n      placeholder: 'Search customer, invoice details'\n    },\n    payment_account_ids: {\n      apiUrl: 'api/accounts?type_ids=11'\n    }\n  };\n  subTotal: number = 0;\n  discountTotal: number = 0;\n  total: number = 0;\n  displayedColumns: string[] = [\n    'no',\n    'customer',\n    'sub_total',\n    'discount',\n    'total'\n  ];\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private invoiceSummaryService: InvoiceSummaryService,\n  ) {\n    super();\n    this.lastPage = 0;\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.THIS_YEAR],\n      date_from: [''],\n      date_to: [''],\n      search: [''],\n      payment_account_ids: [''],\n      customer_ids: [''],\n      with: ['customer'],\n      aggregate: ['sub_total,total,discount'],\n      invoiceable_ids: [''],\n      document_type_ids: [SaleDocumentTypeEnum.TYPE_INVOICE]\n    });\n  }\n\n  ngOnInit() {\n    this.listenFilterChanges();\n  }\n\n  /**\n   * Load income by customer summary data.\n   */\n  override loadData(): void {\n    this.subTotal = 0;\n    this.discountTotal = 0;\n    this.total = 0;\n\n    const params: any = this.requestHelperService.convertToFormData({\n      ...this.filterForm.value\n    });\n    if (params?.invoiceable_ids) {\n      params.invoiceable_type = 'project';\n    }\n    this.isWorking = true;\n    this.invoiceSummaryService.aggregated(params).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        this.models = response;\n        this.models.forEach((model: any) => {\n          this.subTotal += model.sub_total;\n          this.discountTotal += model.discount;\n          this.total += model.total;\n        });\n      },\n      error: () => {\n        this.isWorking = false;\n      }\n    });\n  }\n\n  /**\n   * Export report to Excel.\n   */\n  export() {\n    const params: any = this.requestHelperService.convertToFormData({\n      ...this.filterForm.value\n    });\n    if (params?.invoiceable_ids) {\n      params.invoiceable_type = 'project';\n    }\n    this.isExporting = true;\n    this.invoiceSummaryService.export(params).subscribe({\n      next: (response: any) => {\n        this.isExporting = false;\n        window.open(response?.item?.file_link, '_blank');\n      },\n      error: () => (this.isExporting = false)\n    });\n  }\n}\n","<div class=\"d-flex flex-column gap-3 container\">\n  <div class=\"d-flex justify-content-center align-items-center gap-3\">\n    <h2 class=\"mb-0\">Income By Customer Summary Report</h2>\n    <button mat-raised-button color=\"primary\" (click)=\"export()\" [disabled]=\"isExporting\">\n      <mat-icon>file_download</mat-icon>\n      Export\n    </button>\n  </div>\n\n  <mat-card>\n    <mat-card-content>\n      <form [formGroup]=\"filterForm\" class=\"d-flex gap-2\">\n        <app-techlify-filter\n          [filterForm]=\"filterForm\"\n          (filterUpdated)=\"reload()\"\n          [filterConfig]=\"filterConfig\"\n        ></app-techlify-filter>\n        <mat-form-field *ngxPermissionsOnly=\"['project.read']\">\n          <mat-label>Project</mat-label>\n          <app-searchable-selector\n            apiUrl=\"api/projects\"\n            titleField=\"project_name\"\n            formControlName=\"invoiceable_ids\"\n            [multiple]=\"true\"\n          ></app-searchable-selector>\n        </mat-form-field>\n      </form>\n    </mat-card-content>\n  </mat-card>\n\n  <mat-card class=\"p-0\">\n    <mat-card-content>\n      <table\n        mat-table\n        [dataSource]=\"models\"\n        class=\"w-100\"\n        aria-describedby=\"Income By Customer Summary\"\n      >\n        <!-- # Column -->\n        <ng-container matColumnDef=\"no\">\n          <th mat-header-cell *matHeaderCellDef>#</th>\n          <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n          <td mat-footer-cell *matFooterCellDef></td>\n        </ng-container>\n\n        <!-- Customer Column -->\n        <ng-container matColumnDef=\"customer\">\n          <th mat-header-cell *matHeaderCellDef>Customer</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.customer?.name }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>Total</strong>\n          </td>\n        </ng-container>\n\n        <!-- Income Column -->\n        <ng-container matColumnDef=\"sub_total\">\n          <th mat-header-cell *matHeaderCellDef>Income</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.sub_total | currency }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>{{ subTotal | currency }}</strong>\n          </td>\n        </ng-container>\n\n        <!-- Discount Column -->\n        <ng-container matColumnDef=\"discount\">\n          <th mat-header-cell *matHeaderCellDef>Discount</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.discount | currency }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>{{ discountTotal | currency }}</strong>\n          </td>\n        </ng-container>\n\n        <!-- Net Income Column -->\n        <ng-container matColumnDef=\"total\">\n          <th mat-header-cell *matHeaderCellDef>Net Income</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.total | currency }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>{{ total | currency }}</strong>\n          </td>\n        </ng-container>\n\n        <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n        <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n        <tr mat-footer-row *matFooterRowDef=\"displayedColumns\"></tr>\n      </table>\n\n      <mat-progress-bar\n        *ngIf=\"isWorking\"\n        mode=\"indeterminate\"\n      ></mat-progress-bar>\n    </mat-card-content>\n  </mat-card>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { CredentialsService } from 'ngx-techlify-core';\nimport { BalanceSheetService } from '../balance-sheet.service';\n\n@Component({\n  selector: 'app-balance-sheet',\n  templateUrl: './balance-sheet.component.html',\n  styleUrls: ['./balance-sheet.component.scss']\n})\nexport class BalanceSheetComponent implements OnInit {\n  currentDate: Date = new Date();\n  client!: any;\n  isWorking!: boolean;\n  balanceSheet: any;\n\n  constructor(\n    private credentialsService: CredentialsService,\n    private balanceSheetService: BalanceSheetService\n  ) {\n    this.client = this.credentialsService.credentials?.user?.client;\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n  }\n\n  loadData() {\n    this.isWorking = true;\n    this.balanceSheetService.index().subscribe({\n      next: (response: any) => {\n        this.balanceSheet = response;\n      },\n      complete: () => (this.isWorking = false)\n    });\n  }\n}\n","<div class=\"container d-flex flex-column gap-2\" *ngIf=\"client\">\n  <h2 class=\"mb-0 text-center\">\n    Statement of financial position of {{ client?.name }} at\n    {{ currentDate | date }}\n  </h2>\n  <mat-card class=\"p-0\" *ngIf=\"balanceSheet\">\n    <mat-card-content>\n      <table class=\"table table-bordered\" aria-describedby=\"Balance Sheet\">\n        <thead>\n          <tr>\n            <th scope=\"col\" colspan=\"2\">ASSETS</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr>\n            <th scope=\"row\" colspan=\"2\">Non-Current Assets</th>\n          </tr>\n          <tr>\n            <td>Plant & Machinery</td>\n            <td>\n              {{\n                balanceSheet?.non_current_assets?.plant_and_machinery | currency\n              }}\n            </td>\n          </tr>\n          <tr>\n            <td>Accumulated depreciation</td>\n            <td>\n              {{\n                balanceSheet?.non_current_assets?.accumulated_depreciation\n                  | currency\n              }}\n            </td>\n          </tr>\n          <tr>\n            <th scope=\"row\">Total Non-Current Assets</th>\n            <th scope=\"row\">\n              {{ balanceSheet?.non_current_assets?.total | currency }}\n            </th>\n          </tr>\n\n          <tr>\n            <th scope=\"row\" colspan=\"2\">Current Assets</th>\n          </tr>\n          <tr>\n            <td>Cash & cash equivalent</td>\n            <td>\n              {{\n                balanceSheet?.current_assets?.cash_and_cash_equivalent\n                  | currency\n              }}\n            </td>\n          </tr>\n          <tr>\n            <td>Account Receivables</td>\n            <td>\n              {{ balanceSheet?.current_assets?.account_receivables | currency }}\n            </td>\n          </tr>\n          <tr>\n            <th scope=\"row\">Total Current Assets</th>\n            <th scope=\"row\">\n              {{ balanceSheet?.current_assets?.total | currency }}\n            </th>\n          </tr>\n          <tr>\n            <th scope=\"row\">Total Assets</th>\n            <th scope=\"row\">\n              {{\n                balanceSheet?.current_assets?.total +\n                  balanceSheet?.non_current_assets?.total | currency\n              }}\n            </th>\n          </tr>\n\n          <tr>\n            <th scope=\"row\" colspan=\"2\">LIABILITIES AND EQUITY</th>\n          </tr>\n          <tr>\n            <th scope=\"row\" colspan=\"2\">Non-Current Liabilities</th>\n          </tr>\n          <tr>\n            <td>Long Term Liabilities</td>\n            <td>\n              {{\n                balanceSheet?.non_current_liabilities?.long_term_liabilities\n                  | currency\n              }}\n            </td>\n          </tr>\n          <tr>\n            <th scope=\"row\">Total Non-Current Liabilities</th>\n            <th scope=\"row\">\n              {{ balanceSheet?.non_current_liabilities?.total | currency }}\n            </th>\n          </tr>\n          <tr>\n            <th scope=\"row\" colspan=\"2\">Current Liabilities</th>\n          </tr>\n          <tr>\n            <td>Accounts Payable</td>\n            <td>\n              {{\n                balanceSheet?.current_liabilities?.accounts_payable | currency\n              }}\n            </td>\n          </tr>\n          <tr>\n            <td>Other Current Liabilities</td>\n            <td>\n              {{\n                balanceSheet?.current_liabilities?.other_current_liabilities\n                  | currency\n              }}\n            </td>\n          </tr>\n          <tr>\n            <th scope=\"row\">Total Current Liabilities</th>\n            <th scope=\"row\">\n              {{ balanceSheet?.current_liabilities?.total | currency }}\n            </th>\n          </tr>\n          <tr>\n            <th scope=\"row\" colspan=\"2\">Equity</th>\n          </tr>\n          <tr>\n            <td>Equity</td>\n            <td>\n              {{ balanceSheet?.equity?.equity | currency }}\n            </td>\n          </tr>\n          <tr>\n            <th scope=\"row\">Total Equity</th>\n            <th scope=\"row\">\n              {{ balanceSheet?.equity?.total | currency }}\n            </th>\n          </tr>\n          <tr>\n            <th scope=\"row\">Total Liabilities & Equity</th>\n            <th scope=\"row\">\n              {{\n                balanceSheet?.non_current_liabilities?.total +\n                  balanceSheet?.current_liabilities?.total +\n                  balanceSheet?.equity?.total | currency\n              }}\n            </th>\n          </tr>\n        </tbody>\n      </table>\n    </mat-card-content>\n  </mat-card>\n  <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { ReportsLayoutComponent } from './reports-layout/reports-layout.component';\nimport { ReceivablesReportComponent } from './receivables-report/receivables-report.component';\nimport { AuthenticationGuard } from 'ngx-techlify-core';\nimport { SupplierBalanceReportPageComponent } from './supplier-balance-report-page/supplier-balance-report-page.component';\nimport { ExpenseSummaryReportComponent } from './expense-summary-report/expense-summary-report.component';\nimport { IncomeByCustomerSummaryComponent } from './income-by-customer-summary/income-by-customer-summary.component';\nimport { BalanceSheetComponent } from './balance-sheet/balance-sheet.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: ReportsLayoutComponent,\n    children: [\n      {\n        path: 'balance-sheet',\n        component: BalanceSheetComponent\n      },\n      {\n        path: 'profit-and-loss',\n        loadChildren: () =>\n          import('./profit-and-loss/profit-and-loss.module').then(\n            (mod) => mod.ProfitAndLossModule\n          )\n      },\n      {\n        path: 'trial-balance',\n        loadChildren: () =>\n          import('./trial-balance-report/trial-balance-report.module').then(\n            (mod) => mod.TrialBalanceReportModule\n          )\n      },\n      {\n        path: 'income-by-customer-summary',\n        component: IncomeByCustomerSummaryComponent,\n        canLoad: [AuthenticationGuard]\n      },\n      {\n        path: 'expense-summary-report',\n        component: ExpenseSummaryReportComponent,\n        canLoad: [AuthenticationGuard]\n      },\n      {\n        path: 'supplier-balance-detail',\n        component: SupplierBalanceReportPageComponent,\n        canLoad: [AuthenticationGuard]\n      },\n      {\n        path: 'receivables',\n        component: ReceivablesReportComponent,\n        canLoad: [AuthenticationGuard]\n      },\n      {\n        path: '**',\n        redirectTo: 'receivables',\n        pathMatch: 'full'\n      }\n    ]\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class ReportsRoutingModule {}\n","import { Component, OnInit } from '@angular/core';\nimport { ReceivablesService } from '../receivables.service';\n\n@Component({\n  selector: 'app-receivables-number-widget',\n  templateUrl: './receivables-number-widget.component.html',\n  styleUrls: ['./receivables-number-widget.component.scss']\n})\nexport class ReceivablesNumberWidgetComponent implements OnInit {\n  isLoading: boolean = false;\n  totalReceivables!: number;\n  noOfInvoices!: number;\n  noOfCustomers!: number;\n  totalOverdueAmount!: number;\n\n  constructor(private receivablesService: ReceivablesService) {}\n\n  ngOnInit(): void {\n    // load the summary\n    this.loadSummary();\n  }\n\n  /**\n   * Load the receivables summary.\n   *\n   * @private\n   */\n  private loadSummary() {\n    const params: any = {\n      include:\n        'receivables_sum,receivables_invoices_count,receivables_customers_count,total_overdue_amount'\n    };\n    this.isLoading = true;\n    this.receivablesService.summary(params).subscribe({\n      next: (response: any) => {\n        this.totalReceivables = response?.receivables_sum;\n        this.noOfInvoices = response?.receivables_invoices_count;\n        this.noOfCustomers = response?.receivables_customers_count;\n        this.totalOverdueAmount = response?.total_overdue_amount\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex flex-column gap-2\">\n    <div class=\"d-flex justify-content-between align-items-center\">\n      <div class=\"d-flex justify-content-start gap-2\">\n        <span class=\"material-symbols-outlined\"> call_received </span>\n        <h3 class=\"mb-0\">Receivables</h3>\n      </div>\n      <a\n        class=\"text-decoration-none text-primary cursor-pointer\"\n        [routerLink]=\"['/finance/reports/receivables']\"\n        >View Report</a\n      >\n    </div>\n    <small class=\"text-secondary\">\n      Amount that you’re yet to receive from your customers.\n    </small>\n    <hr class=\"w-100 mt-0 mb-0\" />\n    <div class=\"d-flex flex-column gap-3\" *ngIf=\"!isLoading\">\n      <div class=\"d-flex justify-content-between align-items-center\">\n        <div class=\"d-flex justify-content-start align-items-center gap-1\">\n          <h2 class=\"mb-0\">{{ totalReceivables | currency }}</h2>\n          <small class=\"text-secondary\">Total</small>\n        </div>\n        <div class=\"d-flex justify-content-end gap-3\">\n          <div class=\"d-flex justify-content-start align-items-center gap-1\">\n            <h4 class=\"mb-0\">{{ noOfInvoices }}</h4>\n            <small class=\"text-secondary\">invoices</small>\n          </div>\n          <div class=\"d-flex justify-content-start align-items-center gap-1\">\n            <h4 class=\"mb-0\">{{ noOfCustomers }}</h4>\n            <small class=\"text-secondary\">customers</small>\n          </div>\n        </div>\n      </div>\n      <div\n        class=\"text-danger d-flex justify-content-start align-items-center gap-2 mt-2\"\n      >\n        <span class=\"material-symbols-outlined\">error</span>\n        <p class=\"mb-0\">Overdue</p>\n        <strong>{{ totalOverdueAmount | currency }}</strong>\n      </div>\n    </div>\n\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n","import { Component, OnInit } from '@angular/core';\nimport { ReceivablesService } from '../receivables.service';\nimport { PayablesService } from '../payables.service';\n\n@Component({\n  selector: 'app-payable-number-widget',\n  templateUrl: './payable-number-widget.component.html',\n  styleUrls: ['./payable-number-widget.component.scss']\n})\nexport class PayableNumberWidgetComponent implements OnInit {\n  isLoading: boolean = false;\n  totalPayables!: number;\n  noOfBills!: number;\n  noOfVendors!: number;\n\n  constructor(private payablesService: PayablesService) {}\n\n  ngOnInit(): void {\n    // load the summary\n    this.loadSummary();\n  }\n\n  /**\n   * Load the receivables summary.\n   *\n   * @private\n   */\n  private loadSummary() {\n    const params: any = {\n      include: 'payables_sum,bills_count,payable_suppliers_count'\n    };\n    this.isLoading = true;\n    this.payablesService.summary(params).subscribe({\n      next: (response: any) => {\n        this.totalPayables = response?.payables_sum;\n        this.noOfBills = response?.bills_count;\n        this.noOfVendors = response?.payable_suppliers_count;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex flex-column gap-2\">\n    <div class=\"d-flex justify-content-between align-items-center\">\n      <div class=\"d-flex justify-content-start gap-2\">\n        <span class=\"material-symbols-outlined\"> monetization_on </span>\n        <h3 class=\"mb-0\">Payables</h3>\n      </div>\n      <a\n        routerLink=\"/finance/reports/supplier-balance-detail\"\n        class=\"text-decoration-none text-primary cursor-pointer\"\n      >\n        View Report\n      </a>\n    </div>\n    <small class=\"text-secondary\">\n      Amount that you’re yet to pay to your vendors.\n    </small>\n    <hr class=\"w-100 mt-0 mb-0\" />\n    <div class=\"d-flex flex-column gap-3\" *ngIf=\"!isLoading\">\n      <div class=\"d-flex justify-content-between align-items-center\">\n        <div class=\"d-flex justify-content-start align-items-center gap-1\">\n          <h2 class=\"mb-0\">{{ totalPayables | currency }}</h2>\n          <small class=\"text-secondary\">Total</small>\n        </div>\n        <div class=\"d-flex justify-content-end gap-3\">\n          <div class=\"d-flex justify-content-start align-items-center gap-1\">\n            <h4 class=\"mb-0\">{{ noOfBills }}</h4>\n            <small class=\"text-secondary\">bills</small>\n          </div>\n          <div class=\"d-flex justify-content-start align-items-center gap-1\">\n            <h4 class=\"mb-0\">{{ noOfVendors }}</h4>\n            <small class=\"text-secondary\">vendors</small>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n","import { NgModule } from '@angular/core';\n\nimport { ReportsRoutingModule } from './reports-routing.module';\nimport { ReportsLayoutComponent } from './reports-layout/reports-layout.component';\nimport { ReceivablesReportComponent } from './receivables-report/receivables-report.component';\nimport { ReceivablesNumberWidgetComponent } from './receivables-number-widget/receivables-number-widget.component';\nimport { PayableNumberWidgetComponent } from './payable-number-widget/payable-number-widget.component';\nimport { SupplierBalanceReportPageComponent } from './supplier-balance-report-page/supplier-balance-report-page.component';\nimport {SearchableSelectorModule} from \"ngx-techlify-core\";\nimport { ExpenseSummaryReportComponent } from './expense-summary-report/expense-summary-report.component';\nimport { IncomeByCustomerSummaryComponent } from './income-by-customer-summary/income-by-customer-summary.component';\nimport { BalanceSheetComponent } from './balance-sheet/balance-sheet.component';\nimport { SharedModule } from '../../@shared/shared.module';\nimport {TechlifyFilterModule} from '../../@shared/techlify-filter/techlify-filter.module';\n\n@NgModule({\n  declarations: [\n    ReportsLayoutComponent,\n    ReceivablesReportComponent,\n    ReceivablesNumberWidgetComponent,\n    PayableNumberWidgetComponent,\n    SupplierBalanceReportPageComponent,\n    ExpenseSummaryReportComponent,\n    IncomeByCustomerSummaryComponent,\n    BalanceSheetComponent\n  ],\n  exports: [\n    ReceivablesNumberWidgetComponent,\n    PayableNumberWidgetComponent,\n    PayableNumberWidgetComponent\n  ],\n\timports: [\n\t\tReportsRoutingModule,\n\t\tSharedModule,\n\t\tTechlifyFilterModule,\n\t\tSearchableSelectorModule\n\t]\n})\nexport class ReportsModule {}\n","import { Injectable } from '@angular/core';\nimport {HttpService, TechlifyService} from \"ngx-techlify-core\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SalesSummaryService extends TechlifyService {\n\n  constructor(\n    httpService: HttpService\n  ) {\n    super(httpService, 'sales-summary')\n  }\n}\n","import {Component, OnInit} from '@angular/core';\nimport {CurrencyPipe, NgIf} from \"@angular/common\";\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {\n  MatCell,\n  MatCellDef,\n  MatColumnDef,\n  MatHeaderCell, MatHeaderCellDef,\n  MatHeaderRow,\n  MatHeaderRowDef,\n  MatRow, MatRowDef, MatTable\n} from \"@angular/material/table\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {TechlifyListComponent} from \"ngx-techlify-core\";\nimport {ExpenseSummaryService} from '../expense-summary.service';\n\n@Component({\n  selector: 'app-expense-by-category-report',\n  standalone: true,\n  imports: [\n    CurrencyPipe,\n    MatCard,\n    MatCardContent,\n    MatCell,\n    MatCellDef,\n    MatColumnDef,\n    MatHeaderCell,\n    MatHeaderRow,\n    MatHeaderRowDef,\n    MatProgressBar,\n    MatRow,\n    MatRowDef,\n    MatTable,\n    NgIf,\n    MatHeaderCellDef\n  ],\n  templateUrl: './expense-by-category-report.component.html',\n  styleUrl: './expense-by-category-report.component.scss'\n})\nexport class ExpenseByCategoryReportComponent extends TechlifyListComponent implements OnInit {\n  displayedColumns: string[] = [\n    'No',\n    'Category',\n    'Expense Sum',\n  ];\n\n  constructor(\n    private expenseSummaryService: ExpenseSummaryService\n  ) {\n    super();\n  }\n\n  override loadData(): void {\n    this.isWorking = true;\n    const params: any = {\n      groupBy: 'category_id',\n      with: 'category'\n    }\n    this.expenseSummaryService.aggregated(params).subscribe({\n      next: (response: any) => {\n        this.models = response;\n        this.isWorking = false;\n      },error: () => (this.isWorking = false)\n    });\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n  }\n\n}\n\n","<mat-card>\n  <mat-card-content>\n    <h3 class=\"mb-0\">Expense By Category</h3>\n  </mat-card-content>\n  <mat-card-content class=\"p-0\">\n    <table mat-table [dataSource]=\"models\" class=\"w-100\">\n      <!-- No Column -->\n      <ng-container matColumnDef=\"No\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i + 1 }} </td>\n      </ng-container>\n\n      <!-- Category Column -->\n      <ng-container matColumnDef=\"Category\">\n        <th mat-header-cell *matHeaderCellDef> Category </th>\n        <td mat-cell *matCellDef=\"let element\"> {{ element?.category?.title }} </td>\n      </ng-container>\n\n      <!-- Expense Sum Column -->\n      <ng-container matColumnDef=\"Expense Sum\">\n        <th mat-header-cell *matHeaderCellDef> Expense Sum </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.total | currency }}\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n\n","import { Component, OnInit } from '@angular/core';\nimport { CurrencyPipe, NgIf } from \"@angular/common\";\nimport { MatCard, MatCardContent } from \"@angular/material/card\";\nimport {\n  MatCell,\n  MatCellDef,\n  MatColumnDef,\n  MatHeaderCell, MatHeaderCellDef,\n  MatHeaderRow,\n  MatHeaderRowDef,\n  MatRow, MatRowDef, MatTable\n} from \"@angular/material/table\";\nimport { MatProgressBar } from \"@angular/material/progress-bar\";\nimport { TechlifyListComponent } from \"ngx-techlify-core\";\nimport { SupplierBalanceReportService } from \"../supplier-balance-report.service\";\n\n@Component({\n  selector: 'app-outstanding-bills-report',\n  standalone: true,\n  imports: [\n    CurrencyPipe,\n    MatCard,\n    MatCardContent,\n    MatCell,\n    MatCellDef,\n    MatColumnDef,\n    MatHeaderCell,\n    MatHeaderRow,\n    MatHeaderRowDef,\n    MatProgressBar,\n    MatRow,\n    MatRowDef,\n    MatTable,\n    NgIf,\n    MatHeaderCellDef\n  ],\n  templateUrl: './outstanding-bills-report.component.html',\n  styleUrl: './outstanding-bills-report.component.scss'\n})\nexport class OutstandingBillsReportComponent extends TechlifyListComponent implements OnInit {\n  displayedColumns: string[] = [\n    'No',\n    'Supplier',\n    'Amount',\n    'Balance',\n  ];\n\n  constructor(\n    private supplierBalanceReportService: SupplierBalanceReportService\n  ) {\n    super();\n  }\n\n  override loadData(): void {\n    this.isWorking = true;\n    this.supplierBalanceReportService.index().subscribe({\n      next: (response: any) => {\n        this.models = response;\n        this.isWorking = false;\n      }, error: () => (this.isWorking = false)\n    });\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n  }\n\n}\n","<mat-card>\n  <mat-card-content>\n    <h3 class=\"mb-0\">Outstanding Bills</h3>\n  </mat-card-content>\n  <mat-card-content class=\"p-0\">\n    <table mat-table [dataSource]=\"models\" class=\"w-100\">\n      <!-- No Column -->\n      <ng-container matColumnDef=\"No\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i + 1 }} </td>\n      </ng-container>\n\n      <!-- Supplier Column -->\n      <ng-container matColumnDef=\"Supplier\">\n        <th mat-header-cell *matHeaderCellDef> Supplier </th>\n        <td mat-cell *matCellDef=\"let element\"> {{ element?.company_name }} </td>\n      </ng-container>\n\n      <!-- Amount Column -->\n      <ng-container matColumnDef=\"Amount\">\n        <th mat-header-cell *matHeaderCellDef> Amount </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.bills_sum_total | currency }}\n        </td>\n      </ng-container>\n\n      <!-- Balance Column -->\n      <ng-container matColumnDef=\"Balance\">\n        <th mat-header-cell *matHeaderCellDef> Balance </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.bills_sum_balance | currency }}\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n\n","import {Component, Input, OnInit} from '@angular/core';\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {ChartType, GoogleChartsModule} from \"angular-google-charts\";\nimport {SalesSummaryService} from \"../sales-summary.service\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {NgIf} from \"@angular/common\";\n\n@Component({\n  selector: 'app-product-sales-pie-chart',\n  standalone: true,\n  imports: [\n    MatCard,\n    MatCardContent,\n    GoogleChartsModule,\n    MatProgressBar,\n    NgIf\n  ],\n  templateUrl: './product-sales-pie-chart.component.html',\n  styleUrl: './product-sales-pie-chart.component.scss'\n})\nexport class ProductSalesPieChartComponent implements  OnInit {\n  @Input() height: number = 400;\n  chart: any = {\n    title: 'Pie Chart',\n    type: ChartType.PieChart,\n    columns: ['Product', 'Sales Amount'],\n    data: [],\n    options: {}\n  };\n  isLoading: boolean = false;\n\n  constructor(\n    private salesSummaryService: SalesSummaryService\n  ) {\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n  }\n\n  private loadData() {\n    this.isLoading = true;\n    const params: any = {\n      group_by: 'product_id'\n    }\n    this.salesSummaryService.index(params).subscribe({\n      next: (response: any[]) => {\n        let data: any[] = [];\n        response?.forEach((item: any) => {\n          data.push([item?.product_name, item?.total_sales_amount]);\n        })\n        this.chart.data = data;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n}\n","<mat-card>\n  <mat-card-content>\n    <h3 class=\"mb-0\">Product</h3>\n  </mat-card-content>\n\n  <mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\" class=\"mt-2\"></mat-progress-bar>\n\n  <mat-card-content *ngIf=\"chart?.data?.length > 0\">\n    <google-chart\n      class=\"w-100\"\n      [height]=\"height\"\n      [type]=\"chart.type\"\n      [data]=\"chart.data\"\n      [columns]=\"chart.columns\"\n      [options]=\"chart.options\"\n    >\n    </google-chart>\n  </mat-card-content>\n</mat-card>\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\nimport {Observable} from \"rxjs\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ProfitAndLossService extends TechlifyService {\n  constructor(protected httpService: HttpService) {\n    super(httpService, 'profit-and-loss-report');\n  }\n\n  export(params?: any): Observable<any> {\n    return this.httpService.get('api/profit-and-loss-report/export', { params });\n  }\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'app-profit-and-loss-report-expense-list',\n  templateUrl: './profit-and-loss-report-expense-list.component.html',\n  styleUrls: ['./profit-and-loss-report-expense-list.component.scss']\n})\nexport class ProfitAndLossReportExpenseListComponent implements OnInit {\n  @Input() expenseAccounts: any;\n\n  constructor() {}\n\n  ngOnInit(): void {}\n\n  getTotal(item: any) {\n    let total = parseFloat(item.expense_sum_total ?? 0);\n    (item?.children as []).forEach((child: any) => {\n      total += parseFloat(child.expense_sum_total ?? 0);\n    });\n\n    return total;\n  }\n}\n","<ul style=\"list-style: none; padding-inline-start: 0; margin-left: 20px\">\n  <li *ngFor=\"let item of expenseAccounts\">\n    <div class=\"d-flex justify-content-between align-items-center gap-2 mb-1\">\n      <p class=\"mb-0\">\n        {{ item.title }}\n      </p>\n      <p class=\"mb-0\">{{ item?.expense_sum_total | currency }}</p>\n    </div>\n    <ng-container *ngIf=\"item.children && item.children.length > 0\">\n      <app-profit-and-loss-report-expense-list\n        [expenseAccounts]=\"item?.children\"\n      ></app-profit-and-loss-report-expense-list>\n    </ng-container>\n    <div\n      *ngIf=\"item.total > item.expense_sum_total\"\n      class=\"d-flex justify-content-between align-items-center gap-2 mb-1 border-bottom\"\n    >\n      <strong>Total {{ item?.title }}</strong>\n      <strong>{{ item.total | currency }}</strong>\n    </div>\n  </li>\n</ul>\n","import { Component, OnInit } from '@angular/core';\nimport { ProfitAndLossService } from '../profit-and-loss.service';\nimport {\n  TechlifyListComponent,\n  Timeline\n} from 'ngx-techlify-core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\n\n@Component({\n  selector: 'app-profit-and-loss-report',\n  templateUrl: './profit-and-loss-report.component.html',\n  styleUrls: ['./profit-and-loss-report.component.scss']\n})\nexport class ProfitAndLossReportComponent\n  extends TechlifyListComponent\n  implements OnInit {\n  incomes!: any;\n  expenses!: any;\n  netEarnings!: number;\n  isExporting!: boolean;\n\n  constructor(\n    private profitAndLossService: ProfitAndLossService,\n    private formBuilder: FormBuilder,\n  ) {\n    super();\n    this.lastPage = 0;\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.THIS_YEAR],\n      date_from: [''],\n      date_to: [''],\n      invoiceable_ids: ['']\n    });\n  }\n\n  ngOnInit(): void {\n    this.requestHelperService.updateFormWithQueryParams(this.filterForm, {\n      duration: { number: true },\n      invoiceable_ids: { multiple: true }\n    });\n\n    (this.filterForm as FormGroup).valueChanges.subscribe(() => {\n      this.requestHelperService.updateQueryParams({ ...this.filterForm.value });\n    });\n\n    this.listenFilterChanges();\n  }\n\n  override loadData() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value)\n    };\n    if (params?.invoiceable_ids) {\n      params.invoiceable_type = 'project';\n      params.expenseable_ids = params.invoiceable_ids;\n      params.expenseable_type = 'project';\n    }\n    this.incomes = null;\n    this.expenses = null;\n    this.netEarnings = 0;\n\n    this.isWorking = true;\n    this.profitAndLossService.index(params).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        this.incomes = response.incomes;\n        this.expenses = response.expenses;\n        this.netEarnings = response?.net_earnings;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  /**\n   * Export the report in Excel.\n   */\n  export() {\n    if (this.isExporting) {\n      return;\n    }\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value)\n    };\n    params.with = 'customer';\n    this.isExporting = true;\n    this.profitAndLossService.export(params).subscribe({\n      next: (response: any) => {\n        this.isExporting = false;\n        window.open(response?.item?.file_link, '_blank');\n      },\n      error: () => (this.isExporting = false)\n    });\n  }\n}\n","<div class=\"container d-flex flex-column gap-2\">\n  <div\n    class=\"d-flex flex-column justify-content-center align-items-center gap-2\"\n  >\n    <div class=\"d-flex gap-3 justify-content-center align-items-center\">\n      <h2 class=\"mb-0\">Statement of Profit & Loss</h2>\n      <app-print-button></app-print-button>\n      <mat-icon\n        class=\"cursor-pointer d-print-none\"\n        matTooltip=\"Export\"\n        (click)=\"export()\"\n      >\n        file_download\n      </mat-icon>\n    </div>\n    <p *ngIf=\"filterForm.value?.date_from && filterForm.value?.date_to\">\n      from {{ filterForm.value?.date_from | date }} to\n      {{ filterForm.value?.date_to | date }}\n    </p>\n    <p *ngIf=\"!filterForm.value?.date_from && !filterForm.value?.date_to\">\n      All Dates\n    </p>\n  </div>\n\n  <mat-card class=\"d-print-none\">\n    <mat-card-content>\n      <form [formGroup]=\"filterForm\" class=\"d-flex flex-row gap-2\">\n        <app-timeline-filter\n          formControlName=\"duration\"\n          [form]=\"filterForm\"\n          appearance=\"fill\"\n        ></app-timeline-filter>\n        <mat-form-field>\n          <mat-label>Project</mat-label>\n          <app-searchable-selector\n            apiUrl=\"api/projects\"\n            titleField=\"project_name\"\n            formControlName=\"invoiceable_ids\"\n            [multiple]=\"true\"\n          ></app-searchable-selector>\n        </mat-form-field>\n      </form>\n    </mat-card-content>\n  </mat-card>\n\n  <mat-card class=\"pl-0\">\n    <mat-card-content class=\"pl-2 mb-1\" *ngIf=\"incomes?.accounts?.length > 0\">\n      <strong>Income</strong>\n      <div\n        *ngFor=\"let incomeAccount of incomes?.accounts\"\n        class=\"pl-2 d-flex justify-content-between align-items-center gap-2 mb-2\"\n      >\n        <p class=\"mb-0\">{{ incomeAccount.income_account_title }}</p>\n        <p class=\"mb-0\">{{ incomeAccount.total_income | currency }}</p>\n      </div>\n      <div\n        *ngIf=\"incomes.total\"\n        class=\"d-flex justify-content-between align-items-center gap-2\"\n      >\n        <strong>Total Income</strong>\n        <strong>{{ incomes.total | currency }}</strong>\n      </div>\n      <div\n        *ngIf=\"incomes.total\"\n        class=\"d-flex justify-content-between align-items-center gap-2\"\n      >\n        <strong>Gross Profit</strong>\n        <strong>{{ incomes.total | currency }}</strong>\n      </div>\n    </mat-card-content>\n\n    <mat-card-content *ngIf=\"expenses?.accounts?.length > 0\" class=\"mb-1\">\n      <strong class=\"pl-2 pb-1\">Expenses</strong>\n      <app-profit-and-loss-report-expense-list\n        style=\"list-style: none\"\n        [expenseAccounts]=\"expenses?.accounts\"\n      ></app-profit-and-loss-report-expense-list>\n      <div\n        *ngIf=\"expenses.total\"\n        class=\"pl-2 d-flex justify-content-between align-items-center gap-2\"\n      >\n        <strong>Total Expenses</strong>\n        <strong>{{ expenses.total | currency }}</strong>\n      </div>\n    </mat-card-content>\n\n    <mat-card-content>\n      <div\n        *ngIf=\"netEarnings\"\n        class=\"pl-2 d-flex justify-content-between align-items-center gap-2\"\n      >\n        <strong class=\"text-uppercase\">Net Earnings</strong>\n        <strong>{{ netEarnings | currency }}</strong>\n      </div>\n    </mat-card-content>\n\n    <mat-progress-bar\n      class=\"pl-3\"\n      *ngIf=\"isWorking\"\n      mode=\"indeterminate\"\n    ></mat-progress-bar>\n  </mat-card>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { ProfitAndLossReportComponent } from './profit-and-loss-report/profit-and-loss-report.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: ProfitAndLossReportComponent\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class ProfitAndLossRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ProfitAndLossRoutingModule } from './profit-and-loss-routing.module';\nimport { ProfitAndLossReportComponent } from './profit-and-loss-report/profit-and-loss-report.component';\nimport {MaterialModule, SearchableSelectorModule, TimelineFilterModule} from 'ngx-techlify-core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ProfitAndLossReportExpenseListComponent } from './profit-and-loss-report-expense-list/profit-and-loss-report-expense-list.component';\nimport {PrintButtonModule} from '../../../@shared';\n\n@NgModule({\n  declarations: [ProfitAndLossReportComponent, ProfitAndLossReportExpenseListComponent],\n\timports: [\n\t\tCommonModule,\n\t\tProfitAndLossRoutingModule,\n\t\tMaterialModule,\n\t\tTimelineFilterModule,\n\t\tReactiveFormsModule,\n\t\tSearchableSelectorModule,\n\t\tPrintButtonModule\n\t]\n})\nexport class ProfitAndLossModule {}\n","import { Component, OnInit } from '@angular/core';\nimport {\n  MatCell, MatCellDef,\n  MatColumnDef,\n  MatHeaderCell,\n  MatHeaderCellDef,\n  MatHeaderRow, MatHeaderRowDef,\n  MatRow, MatRowDef,\n  MatTable\n} from \"@angular/material/table\";\nimport { TechlifyListComponent } from \"ngx-techlify-core\";\nimport { CurrencyPipe, NgIf } from \"@angular/common\";\nimport { MatProgressBar } from \"@angular/material/progress-bar\";\nimport { MatCard, MatCardContent } from \"@angular/material/card\";\nimport { RouterLink } from \"@angular/router\";\nimport { MatSort, MatSortHeader, Sort } from \"@angular/material/sort\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { InvoiceSummaryService } from '../../invoice/invoice-summary.service';\n\n@Component({\n  selector: 'app-top-customers-report',\n  standalone: true,\n  imports: [\n    MatTable,\n    MatColumnDef,\n    MatHeaderCell,\n    MatCell,\n    MatHeaderRow,\n    MatRow,\n    MatHeaderCellDef,\n    MatCellDef,\n    MatHeaderRowDef,\n    MatRowDef,\n    CurrencyPipe,\n    MatProgressBar,\n    NgIf,\n    MatCard,\n    MatCardContent,\n    RouterLink,\n    MatSort,\n    MatSortHeader,\n    MatIcon\n  ],\n  templateUrl: './top-customers-report.component.html',\n  styleUrl: './top-customers-report.component.scss'\n})\nexport class TopCustomersReportComponent extends TechlifyListComponent implements OnInit {\n  displayedColumns: string[] = [\n    'No',\n    'Name',\n    'Sales Sum',\n    'Payments',\n    'Balance'\n  ];\n  sortBy = 'customers.name|asc'\n\n  constructor(\n    private invoiceSummaryService: InvoiceSummaryService\n  ) {\n    super();\n    this.lastPage = 0;\n    this.perPage = 50000;\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n  }\n\n  override loadData() {\n    const params: any = {\n      groupBy: 'customer_id',\n      with: 'customer',\n      aggregate: 'total,paid,balance',\n      sort_by: this.sortBy,\n      page: this.page,\n      perPage: this.perPage,\n    }\n    this.isWorking = true;\n    this.invoiceSummaryService.aggregated(params).subscribe({\n      next: (response: any[]) => {\n        this.models = this.models?.concat(response);\n        this.isWorking = false;\n      },\n      error: () => (this.isWorking = false)\n    })\n  }\n\n  onSortChange(sort: Sort) {\n    let { active, direction } = sort;\n    if (!direction) {\n      active = 'customers.name';\n      direction = 'asc';\n    }\n    this.sortBy = active + '|' + direction;\n\n    this.reload();\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n    <h3 class=\"mb-0\">Top Customers</h3>\n    <mat-icon routerLink=\"/sales/customers\" class=\"cursor-pointer\">visibility</mat-icon>\n  </mat-card-content>\n  <mat-card-content class=\"p-0\">\n    <table mat-table [dataSource]=\"models\" class=\"w-100\" matSort (matSortChange)=\"onSortChange($event)\">\n      <!-- No Column -->\n      <ng-container matColumnDef=\"No\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i + 1 }} </td>\n      </ng-container>\n\n      <!-- Name Column -->\n      <ng-container matColumnDef=\"Name\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"customers.name\"> Name </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <a class=\"text-dark\" [routerLink]=\"['/sales/customers', element?.customer?.id, 'view']\">\n            {{ element?.customer?.name }}\n          </a>\n        </td>\n      </ng-container>\n\n      <!-- Sales Sum Column -->\n      <ng-container matColumnDef=\"Sales Sum\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"total\"> Sales Sum </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.total | currency }}\n        </td>\n      </ng-container>\n\n      <!-- Payments Column -->\n      <ng-container matColumnDef=\"Payments\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"paid\"> Payments </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.paid | currency }}\n        </td>\n      </ng-container>\n\n      <!-- Balance Column -->\n      <ng-container matColumnDef=\"Balance\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"balance\"> Balance </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.balance | currency }}\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n\n","import { Component, OnInit } from '@angular/core';\nimport { TechlifyListComponent, Timeline } from 'ngx-techlify-core';\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\nimport { debounceTime } from \"rxjs/operators\";\nimport { distinctUntilChanged } from \"rxjs\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { AccountService } from '../../../account/account.service';\n\n@Component({\n  selector: 'app-trial-balance-report',\n  templateUrl: './trial-balance-report.component.html',\n  styleUrls: ['./trial-balance-report.component.scss']\n})\nexport class TrialBalanceReportComponent\n  extends TechlifyListComponent\n  implements OnInit {\n  constructor(\n    private accountService: AccountService,\n    private formBuilder: FormBuilder,\n    private activatedRoute: ActivatedRoute\n  ) {\n    super();\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.THIS_YEAR],\n      date_from: [''],\n      date_to: ['']\n    });\n  }\n\n  displayedColumns: string[] = ['no', 'title', 'code', 'debit', 'credit'];\n  totalCredits = 0;\n  totalDebits: number = 0;\n\n  ngOnInit(): void {\n    this.updateFormWithQueryParams();\n    this.subscribeToFormChanges();\n    this.subscribeToRouteChanges();\n  }\n\n  override loadData() {\n    this.isWorking = true;\n    const params: any = {\n      page: this.page,\n      perPage: this.perPage,\n      ...this.requestHelperService.convertToFormData(this.filterForm.value)\n    };\n    this.accountService.trialBalance(params).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        this.totalCredits = 0;\n        this.totalDebits = 0;\n\n        this.models = this.models?.concat(response?.data);\n        for (const account of this.models) {\n          this.totalDebits += parseFloat(\n            account?.debit_transactions_sum_amount ?? 0\n          );\n          this.totalCredits += parseFloat(\n            account?.credit_transactions_sum_amount ?? 0\n          );\n        }\n        this.lastPage = response?.last_page;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  private updateFormWithQueryParams(): void {\n    this.requestHelperService.updateFormWithQueryParams(\n      this.filterForm,\n      {}\n    );\n  }\n\n  private subscribeToFormChanges(): void {\n    (this.filterForm as FormGroup).valueChanges.pipe(\n      debounceTime(800)\n    ).subscribe({\n      next: () => {\n        this.requestHelperService.updateQueryParams(\n          this.requestHelperService.convertToFormData(this.filterForm.value)\n        );\n      }\n    });\n  }\n\n  private subscribeToRouteChanges(): void {\n    this.activatedRoute.queryParams\n      .pipe(debounceTime(500),\n        distinctUntilChanged())\n      .subscribe(() => {\n        this.reload();\n      });\n  }\n}\n","<div class=\"container d-flex flex-column gap-2\">\n  <div class=\"text-center\">\n    <h2 class=\"mb-0\">Trial Balance</h2>\n    <p *ngIf=\"filterForm.value?.date_from && filterForm.value?.date_to\">\n      from {{ filterForm.value?.date_from | date }} to\n      {{ filterForm.value?.date_to | date }}\n    </p>\n    <p *ngIf=\"!filterForm.value?.date_from && !filterForm.value?.date_to\">\n      All Dates\n    </p>\n  </div>\n  <mat-card class=\"d-print-none\">\n    <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n      <form\n        [formGroup]=\"filterForm\"\n        class=\"d-flex justify-content-end align-items-center gap-3\"\n      >\n        <app-timeline-filter\n          formControlName=\"duration\"\n          [form]=\"filterForm\"\n        ></app-timeline-filter>\n      </form>\n    </mat-card-content>\n  </mat-card>\n\n  <mat-card class=\"p-0\">\n    <mat-card-content>\n      <table\n        mat-table\n        [dataSource]=\"models\"\n        class=\"w-100\"\n        aria-describedby=\"Trial Balance\"\n        infiniteScroll\n        [infiniteScrollDistance]=\"2\"\n        [infiniteScrollThrottle]=\"50\"\n        (scrolled)=\"onScroll()\"\n        [fromRoot]=\"true\"\n      >\n        <!-- # Column -->\n        <ng-container matColumnDef=\"no\">\n          <th mat-header-cell *matHeaderCellDef>No.</th>\n          <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n          <td mat-footer-cell *matFooterCellDef></td>\n        </ng-container>\n\n        <!-- Account Name Column -->\n        <ng-container matColumnDef=\"title\">\n          <th mat-header-cell *matHeaderCellDef>Account Name</th>\n          <td mat-cell *matCellDef=\"let element\">{{ element?.title }}</td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>Total</strong>\n          </td>\n        </ng-container>\n\n        <!-- Account # Column -->\n        <ng-container matColumnDef=\"code\">\n          <th mat-header-cell *matHeaderCellDef>Account #</th>\n          <td mat-cell *matCellDef=\"let element\">{{ element?.code }}</td>\n          <td mat-footer-cell *matFooterCellDef></td>\n        </ng-container>\n\n        <!-- Debit Column -->\n        <ng-container matColumnDef=\"debit\">\n          <th mat-header-cell *matHeaderCellDef>Debit</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.debit_transactions_sum_amount ?? 0 | currency }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong> {{ totalDebits | currency }} </strong>\n          </td>\n        </ng-container>\n\n        <!-- Credit Column -->\n        <ng-container matColumnDef=\"credit\">\n          <th mat-header-cell *matHeaderCellDef>Credit</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.credit_transactions_sum_amount ?? 0 | currency }}\n          </td>\n          <td mat-footer-cell *matFooterCellDef>\n            <strong>{{ totalCredits | currency }}</strong>\n          </td>\n        </ng-container>\n\n        <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n        <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n        <tr mat-footer-row *matFooterRowDef=\"displayedColumns\"></tr>\n      </table>\n      <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n    </mat-card-content>\n  </mat-card>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { TrialBalanceReportComponent } from './trial-balance-report/trial-balance-report.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: TrialBalanceReportComponent\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class TrialBalanceReportRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TrialBalanceReportRoutingModule } from './trial-balance-report-routing.module';\nimport { TrialBalanceReportComponent } from './trial-balance-report/trial-balance-report.component';\nimport {MatButtonModule} from \"@angular/material/button\";\nimport {InfiniteScrollModule} from \"ngx-infinite-scroll\";\nimport {MaterialModule, TimelineFilterModule} from \"ngx-techlify-core\";\nimport {ReactiveFormsModule} from \"@angular/forms\";\n\n\n@NgModule({\n  declarations: [\n    TrialBalanceReportComponent\n  ],\n  imports: [\n    CommonModule,\n    TrialBalanceReportRoutingModule,\n    MatButtonModule,\n    MaterialModule,\n    InfiniteScrollModule,\n    TimelineFilterModule,\n    ReactiveFormsModule\n  ]\n})\nexport class TrialBalanceReportModule { }\n","import { Component, OnInit } from '@angular/core';\nimport { CurrencyPipe, NgIf } from \"@angular/common\";\nimport { MatCard, MatCardContent } from \"@angular/material/card\";\nimport {\n  MatCell,\n  MatCellDef,\n  MatColumnDef,\n  MatHeaderCell, MatHeaderCellDef,\n  MatHeaderRow,\n  MatHeaderRowDef,\n  MatRow, MatRowDef, MatTable\n} from \"@angular/material/table\";\nimport { MatProgressBar } from \"@angular/material/progress-bar\";\nimport { TechlifyListComponent } from \"ngx-techlify-core\";\nimport { ExpenseSummaryService } from '../expense-summary.service';\n\n@Component({\n  selector: 'app-top-suppliers-report',\n  standalone: true,\n  imports: [\n    CurrencyPipe,\n    MatCard,\n    MatCardContent,\n    MatCell,\n    MatCellDef,\n    MatColumnDef,\n    MatHeaderCell,\n    MatHeaderRow,\n    MatHeaderRowDef,\n    MatProgressBar,\n    MatRow,\n    MatRowDef,\n    MatTable,\n    NgIf,\n    MatHeaderCellDef\n  ],\n  templateUrl: './top-suppliers-report.component.html',\n  styleUrl: './top-suppliers-report.component.scss'\n})\nexport class TopSuppliersReportComponent extends TechlifyListComponent implements OnInit {\n  displayedColumns: string[] = [\n    'No',\n    'Supplier',\n    'Expense Sum',\n  ];\n\n  constructor(\n    private expenseSummaryService: ExpenseSummaryService\n  ) {\n    super();\n  }\n\n  override loadData(): void {\n    this.isWorking = true;\n    const params: any = {\n      groupBy: 'payee_id',\n      with: 'payee'\n    }\n    this.expenseSummaryService.aggregated(params).subscribe({\n      next: (response: any) => {\n        this.models = response;\n        this.isWorking = false;\n      }, error: () => (this.isWorking = false)\n    });\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n  }\n\n}\n","<mat-card>\n  <mat-card-content>\n    <h3 class=\"mb-0\">Top Suppliers</h3>\n  </mat-card-content>\n  <mat-card-content class=\"p-0\">\n    <table mat-table [dataSource]=\"models\" class=\"w-100\">\n      <!-- No Column -->\n      <ng-container matColumnDef=\"No\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i + 1 }} </td>\n      </ng-container>\n\n      <!-- Supplier Column -->\n      <ng-container matColumnDef=\"Supplier\">\n        <th mat-header-cell *matHeaderCellDef> Supplier </th>\n        <td mat-cell *matCellDef=\"let element\"> {{ element?.payee?.company_name }} </td>\n      </ng-container>\n\n      <!-- Expense Sum Column -->\n      <ng-container matColumnDef=\"Expense Sum\">\n        <th mat-header-cell *matHeaderCellDef> Expense Sum </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.total | currency }}\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n\n","import { Injectable } from '@angular/core';\nimport {Timeline} from \"ngx-techlify-core\";\nimport moment from \"moment/moment\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DateService {\n\n  constructor() { }\n\n  calculatePreviousTimeline(currentValue: number) {\n    const previewLabels = {\n      [Timeline.TODAY]: 'Yesterday',\n      [Timeline.YESTERDAY]: 'Day Before Yesterday',\n      [Timeline.THIS_WEEK]: 'Last Week',\n      [Timeline.LAST_WEEK]: 'Week Before Last',\n      [Timeline.THIS_MONTH]: 'Last Month',\n      [Timeline.LAST_MONTH]: 'Month Before Last',\n      [Timeline.THIS_QUARTER]: 'Last Quarter',\n      [Timeline.LAST_QUARTER]: 'Quarter Before Last',\n      [Timeline.THIS_YEAR]: 'Last Year',\n      [Timeline.LAST_YEAR]: 'Year Before Last',\n      [Timeline.TOMMOROW]: 'Today',\n      [Timeline.NEXT_WEEK]: 'This Week',\n      [Timeline.NEXT_MONTH]: 'This Month'\n    };\n\n    const now = moment();\n    let date_from: string = '';\n    let date_to: string = '';\n    let label: string = previewLabels[currentValue] || 'All';\n\n    switch (currentValue) {\n      case Timeline.TODAY: {\n        const preview = now.subtract(1, 'day');\n        date_from = preview.startOf('day').toISOString();\n        date_to = preview.endOf('day').toISOString();\n        break;\n      }\n      case Timeline.YESTERDAY: {\n        const preview = now.subtract(2, 'days');\n        date_from = preview.startOf('day').toISOString();\n        date_to = preview.endOf('day').toISOString();\n        break;\n      }\n      case Timeline.THIS_WEEK: {\n        const preview = now.subtract(1, 'week');\n        date_from = preview.startOf('isoWeek').toISOString();\n        date_to = preview.endOf('isoWeek').toISOString();\n        break;\n      }\n      case Timeline.LAST_WEEK: {\n        const preview = now.subtract(2, 'weeks');\n        date_from = preview.startOf('isoWeek').toISOString();\n        date_to = preview.endOf('isoWeek').toISOString();\n        break;\n      }\n      case Timeline.THIS_MONTH: {\n        const preview = now.subtract(1, 'month');\n        date_from = preview.startOf('month').toISOString();\n        date_to = preview.endOf('month').toISOString();\n        break;\n      }\n      case Timeline.LAST_MONTH: {\n        const preview = now.subtract(2, 'months');\n        date_from = preview.startOf('month').toISOString();\n        date_to = preview.endOf('month').toISOString();\n        break;\n      }\n      case Timeline.THIS_QUARTER: {\n        const preview = now.subtract(1, 'quarter');\n        date_from = preview.startOf('quarter').toISOString();\n        date_to = preview.endOf('quarter').toISOString();\n        break;\n      }\n      case Timeline.LAST_QUARTER: {\n        const preview = now.subtract(2, 'quarters');\n        date_from = preview.startOf('quarter').toISOString();\n        date_to = preview.endOf('quarter').toISOString();\n        break;\n      }\n      case Timeline.THIS_YEAR: {\n        const preview = now.subtract(1, 'year');\n        date_from = preview.startOf('year').toISOString();\n        date_to = preview.endOf('year').toISOString();\n        break;\n      }\n      case Timeline.LAST_YEAR: {\n        const preview = now.subtract(2, 'years');\n        date_from = preview.startOf('year').toISOString();\n        date_to = preview.endOf('year').toISOString();\n        break;\n      }\n      case Timeline.TOMMOROW: {\n        const preview = now.add(1, 'day');\n        date_from = preview.startOf('day').toISOString();\n        date_to = preview.endOf('day').toISOString();\n        break;\n      }\n      case Timeline.NEXT_WEEK: {\n        const preview = now.add(1, 'week');\n        date_from = preview.startOf('isoWeek').toISOString();\n        date_to = preview.endOf('isoWeek').toISOString();\n        break;\n      }\n      case Timeline.NEXT_MONTH: {\n        const preview = now.add(1, 'month');\n        date_from = preview.startOf('month').toISOString();\n        date_to = preview.endOf('month').toISOString();\n        break;\n      }\n      default: {\n        date_from = '';\n        date_to = '';\n        label = 'All';\n        break;\n      }\n    }\n\n    return { date_from, date_to, label };\n  }\n}\n","import { Component } from '@angular/core';\nimport {CurrencyPipe, NgIf} from \"@angular/common\";\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {FormBuilder, FormGroup, ReactiveFormsModule} from \"@angular/forms\";\nimport {RequestHelperService, Timeline, TimelineFilterModule, TimelineValue} from \"ngx-techlify-core\";\nimport {debounceTime, forkJoin, Observable} from \"rxjs\";\nimport moment from \"moment\";\nimport {RouterLink} from \"@angular/router\";\nimport {SharedModule} from '../../../@shared';\nimport {ProfitAndLossService} from '../profit-and-loss/profit-and-loss.service';\nimport {DateService} from '../../../@shared/date.service';\n\n@Component({\n  selector: 'app-profit-and-loss-summary',\n  standalone: true,\n  imports: [\n    CurrencyPipe,\n    MatCard,\n    MatCardContent,\n    MatProgressBar,\n    NgIf,\n    ReactiveFormsModule,\n    SharedModule,\n    TimelineFilterModule,\n    RouterLink\n  ],\n  templateUrl: './profit-and-loss-summary.component.html',\n  styleUrl: './profit-and-loss-summary.component.scss'\n})\nexport class ProfitAndLossSummaryComponent {\n  filterForm: FormGroup;\n  isLoading: boolean = false;\n  netProfit: number = 0;\n  incomeTotal: number = 0;\n  expenseTotal: number = 0;\n  incomePercentage = 0;\n  expensePercentage = 0;\n  previousTimelineData!: any;\n  prevNetProfit: number = 0;\n  netProfitChangeResult!: any;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private profitAndLossService: ProfitAndLossService,\n    private requestHelperService: RequestHelperService,\n    private dateService: DateService\n  ) {\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.THIS_YEAR],\n      date_from: [''],\n      date_to: ['']\n    })\n  }\n\n  ngOnInit(): void {\n    this.filterForm.valueChanges.pipe(\n      debounceTime(500)\n    ).subscribe({\n      next: () => this.loadData()\n    })\n  }\n\n  loadData() {\n    this.isLoading  = true;\n    this.netProfitChangeResult = null;\n    let currentTimelineRequest: Observable<any> = this.currentTimelineRequest();\n    let previousTimelineRequest: Observable<any> = this.previousTimelineRequest();\n    forkJoin([currentTimelineRequest, previousTimelineRequest]).subscribe({\n      next: (data: any[]) => {\n        this.isLoading = false;\n\n        const current: any = data[0];\n        const previous: any = data[1];\n        // Calculate for current timeline\n        this.netProfit = current?.net_earnings;\n        this.incomeTotal = current?.incomes?.total;\n        this.expenseTotal = current?.expenses?.total;\n        const currentTotal = this.incomeTotal + this.expenseTotal;\n        this.incomePercentage = this.incomeTotal * 100 / currentTotal;\n        this.expensePercentage = this.expenseTotal * 100 / currentTotal;\n        // Calculate for previous timeline\n        this.prevNetProfit = previous?.net_earnings;\n\n        // Calculate percentage change in net profit\n        const netProfitChange: any = this.calculatePercentageChange(this.netProfit, this.prevNetProfit);\n\n        // Create the result object\n        this.netProfitChangeResult = {\n          changeInPercentage: netProfitChange.percentage,\n          direction: netProfitChange.direction\n        };\n      }\n    });\n  }\n\n  calculatePercentageChange(currentValue: number, previousValue: number): { percentage: string, direction: string } {\n    if (previousValue === 0) {\n      return {\n        percentage: currentValue === 0 ? '0.0' : '100.0',\n        direction: currentValue === 0 ? '' : 'up'\n      };\n    }\n    // Calculate change in value\n    const change = currentValue - previousValue;\n    // Determine percentage change\n    const percentage = change / previousValue * 100;\n    // Determine direction\n    const direction = (currentValue > previousValue) ? 'up' : 'down';\n    return {\n      percentage: Math.abs(percentage).toFixed(1),\n      direction\n    };\n  }\n\n\n  onDurationChange(timelineValue: TimelineValue) {\n    let { date_to, date_from } = timelineValue;\n    this.filterForm.patchValue({\n      date_from: date_from ? moment(date_from).format('YYYY-MM-DD') : '',\n      date_to: date_to ? moment(date_to).format('YYYY-MM-DD') : ''\n    });\n\n    const currentDuration = this.filterForm.value.duration;\n    if (currentDuration != Timeline.CUSTOM || currentDuration != Timeline.ALL) {\n      const previousData: any = this.dateService.calculatePreviousTimeline(currentDuration);\n      this.previousTimelineData = {\n        ...previousData,\n        date_from: date_from ? moment(previousData?.date_from).format('YYYY-MM-DD') : '',\n        date_to: date_to ? moment(previousData?.date_to).format('YYYY-MM-DD') : ''\n      }\n    }\n  }\n\n  private currentTimelineRequest() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value)\n    }\n    return this.profitAndLossService.index(params);\n  }\n\n  private previousTimelineRequest() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.previousTimelineData)\n    }\n    return this.profitAndLossService.index(params);\n  }\n}\n","<mat-card>\n  <mat-card-content>\n    <form [formGroup]=\"filterForm\" class=\"d-flex justify-content-between align-items-start gap-3\">\n      <div class=\"d-flex flex-column gap-1\">\n        <div class=\"d-flex justify-content-start align-items-center gap-2\">\n          <h3 class=\"mb-0\">Profit & Loss</h3>\n          <a class=\"text-decoration-none text-dark mt-2\" [routerLink]=\"['/finance/reports/profit-and-loss']\">\n            <span class=\"material-symbols-outlined\">\n              visibility\n            </span>\n          </a>\n        </div>\n\n        <div *ngIf=\"netProfit\">\n          <small class=\"text-secondary\">Amount</small>\n          <h3 class=\"mb-0 fw-bold\">{{ netProfit | currency }}</h3>\n        </div>\n      </div>\n      <app-timeline-filter\n        labelText=\"Period\"\n        formControlName=\"duration\"\n        appearance=\"fill\"\n        [form]=\"filterForm\"\n        (selectionChange)=\"onDurationChange($event)\"\n        [showClearButton]=\"true\"\n      ></app-timeline-filter>\n    </form>\n    <div *ngIf=\"netProfitChangeResult\" class=\"d-flex justify-content-start align-items-center gap-1\">\n      <small\n        class=\"d-flex align-items-center\"\n        [class.text-success]=\"netProfitChangeResult.direction === 'up'\"\n        [class.text-danger]=\"netProfitChangeResult.direction === 'down'\"\n        matTooltip=\"{{ prevNetProfit | currency }}\"\n      >\n        <span class=\"material-symbols-outlined\">\n          {{ netProfitChangeResult.direction === 'up' ? 'trending_up' : 'trending_down' }}\n        </span>\n        <span>{{ netProfitChangeResult.changeInPercentage }}%</span>\n      </small>\n      <small>from {{ previousTimelineData?.label }}</small>\n    </div>\n  </mat-card-content>\n  <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n  <mat-card-content *ngIf=\"!isLoading\" class=\"mt-3\">\n    <div class=\"mb-2\">\n      <div class=\"progress\">\n        <div class=\"progress-bar bg-info\" role=\"progressbar\" [style.width]=\"incomePercentage + '%'\"\n             aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n      </div>\n      <div class=\"mt-1\">\n        <p class=\"mb-0\">{{ incomeTotal | currency }}</p>\n        <small class=\"text-secondary\">Income</small>\n      </div>\n    </div>\n\n    <div>\n      <div class=\"progress\">\n        <div class=\"progress-bar bg-warning\" role=\"progressbar\" [style.width]=\"expensePercentage + '%'\"\n             aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n      </div>\n      <div class=\"mt-1\">\n        <p class=\"mb-0\">{{ expenseTotal | currency }}</p>\n        <small class=\"text-secondary\">Expense</small>\n      </div>\n    </div>\n  </mat-card-content>\n</mat-card>\n","import {Injectable} from '@angular/core';\nimport {HttpService, TechlifyService} from 'ngx-techlify-core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ChequeService extends TechlifyService {\n\n  constructor(\n    protected httpService: HttpService\n  ) {\n    super(httpService, 'cheques');\n  }\n}\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\nimport {AlertService, MaterialModule, SearchableSelectorModule} from 'ngx-techlify-core';\nimport {debounceTime} from 'rxjs';\nimport {ChequeService} from '../cheque.service';\n\n@Component({\n  selector: 'app-cheque-status-selector',\n  standalone: true,\n  imports: [CommonModule, MaterialModule, SearchableSelectorModule, ReactiveFormsModule],\n  templateUrl: './cheque-status-selector.component.html',\n  styleUrls: ['./cheque-status-selector.component.scss']\n})\nexport class ChequeStatusSelectorComponent implements OnInit {\n  @Input() model: any;\n  @Input() showLabel: boolean = false;\n  @Input() fullWidth: boolean = false;\n  @Output() updated: EventEmitter<any> = new EventEmitter<any>();\n\n  formControl: FormControl = new FormControl();\n  isUpdating: boolean = false;\n\n  constructor(\n    private service: ChequeService,\n    private alertService: AlertService\n  ) {\n  }\n\n  updateStatus() {\n    const data: any = {\n      ...this.model,\n      status_id: this.formControl.value\n    };\n    const params: any = {\n      with: 'payment.paymentInvoices.invoice.customer,status'\n    };\n    this.isUpdating = true;\n    this.service.update(data, params).subscribe({\n      next: (response: any) => {\n        this.isUpdating = false;\n        this.model = response?.item;\n        this.alertService.addAlert(\n          `Cheque status updated to ${this.model?.status?.title}.`,\n          'success'\n        );\n        this.updated.emit(response?.item);\n      },\n      error: () => (this.isUpdating = false)\n    });\n  }\n\n  ngOnInit(): void {\n    // set the task status to selector\n    this.formControl.setValue(this.model?.status_id);\n    // listen for status change and update the task status\n    this.formControl.valueChanges.pipe(debounceTime(800)).subscribe({\n      next: () => this.updateStatus()\n    });\n  }\n}\n","<mat-form-field class=\"form-field-sm\" [class.w-100]=\"fullWidth\">\n  <mat-label *ngIf=\"showLabel\">Status</mat-label>\n  <app-searchable-selector\n    [formControl]=\"formControl\"\n    apiUrl=\"api/cheque-statuses\"\n    [enableSearch]=\"false\"\n    [cache]=\"true\"\n  ></app-searchable-selector>\n</mat-form-field>\n","import { Component, OnInit } from '@angular/core';\nimport {\n  SearchableSelectorModule,\n  TechlifyListComponent,\n  TimelineFilterModule\n} from 'ngx-techlify-core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\nimport { MatSort, MatSortHeader, Sort } from '@angular/material/sort';\nimport { CurrencyPipe, DatePipe, NgForOf, NgIf } from '@angular/common';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { MatCard, MatCardContent } from '@angular/material/card';\nimport {\n  MatCell,\n  MatCellDef,\n  MatColumnDef,\n  MatHeaderCell,\n  MatHeaderCellDef,\n  MatHeaderRow,\n  MatHeaderRowDef,\n  MatRow,\n  MatRowDef,\n  MatTable\n} from '@angular/material/table';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { ChequeService } from '../cheque.service';\nimport { ChequeStatusSelectorComponent } from '../cheque-status-selector/cheque-status-selector.component';\n\n@Component({\n  selector: 'app-cheque-list',\n  standalone: true,\n  imports: [\n    DatePipe,\n    InfiniteScrollDirective,\n    MatCard,\n    MatCardContent,\n    MatCell,\n    MatCellDef,\n    MatColumnDef,\n    MatFormField,\n    MatHeaderCell,\n    MatHeaderRow,\n    MatHeaderRowDef,\n    MatLabel,\n    MatProgressBar,\n    MatRow,\n    MatRowDef,\n    MatSort,\n    MatSortHeader,\n    MatTable,\n    NgIf,\n    ReactiveFormsModule,\n    SearchableSelectorModule,\n    MatHeaderCellDef,\n    TimelineFilterModule,\n    NgForOf,\n    RouterLink,\n    CurrencyPipe,\n    ChequeStatusSelectorComponent\n  ],\n  templateUrl: './cheque-list.component.html',\n  styleUrl: './cheque-list.component.scss'\n})\nexport class ChequeListComponent extends TechlifyListComponent implements OnInit {\n  displayedColumns: string[] = [\n    '#',\n    'Paid On',\n    'Customer',\n    'Amount',\n    'Cheque #',\n    'Invoice #',\n    'Memo',\n    'Status',\n  ]\n\n  constructor(\n    protected override service: ChequeService,\n    private formBuilder: FormBuilder,\n    private activatedRoute: ActivatedRoute,\n  ) {\n    super();\n    this.lastPage = 0;\n\n    this.filterForm = this.formBuilder.group({\n      status_ids: [''],\n      paid_on_duration: [''],\n      paid_on_date_from: [''],\n      paid_on_date_to: [''],\n      sort_by: ['id|desc'],\n    });\n  }\n\n  ngOnInit() {\n    this.requestHelperService.updateFormWithQueryParams(\n      this.filterForm,\n      {\n        status_ids: { multiple: true },\n        paid_on_duration: { number: true },\n      }\n    );\n\n    (this.filterForm as FormGroup).valueChanges.pipe(\n      debounceTime(800)\n    ).subscribe({\n      next: () => {\n        this.requestHelperService.updateQueryParams(\n          this.requestHelperService.convertToFormData(this.filterForm.value)\n        );\n      }\n    });\n\n    // listen for route change\n    this.activatedRoute.queryParams\n      .pipe(debounceTime(500), distinctUntilChanged())\n      .subscribe((val: any) => {\n        this.reload();\n      });\n  }\n\n  override loadData(): void {\n    if (this.isWorking) {\n      return;\n    }\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value),\n      with: 'payment.paymentInvoices.invoice.customer',\n      page: this.page,\n      perPage: this.perPage,\n    }\n    this.isWorking = true;\n    this.service.index(params).subscribe({\n      next: (response: any) => {\n        this.models = this.models?.concat(response?.data);\n        this.lastPage = response?.last_page;\n        this.isWorking = false;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  onSortChange(sort: Sort) {\n    let { active, direction } = sort;\n    if (!active) active = 'id';\n    if (!direction) direction = 'desc';\n\n    this.filterForm.get('sort_by')?.setValue(active + '|' + direction);\n  }\n\n  getCustomerNames(payment: any) {\n    const customerSet = new Set();\n\n    return (payment?.payment_invoices || []).map((paymentInvoice: any) => {\n      return paymentInvoice?.invoice?.customer;\n    }).filter((customer: any) => {\n      if (customer && !customerSet.has(customer.id)) {\n        customerSet.add(customer.id);\n        return true;\n      }\n      return false;\n    });\n  }\n\n  getInvoices(payment: any) {\n    const invoiceSet = new Set();\n\n    return (payment?.payment_invoices || []).map((paymentInvoice: any) => {\n      return paymentInvoice?.invoice;\n    }).filter((invoice: any) => {\n      if (invoice && !invoiceSet.has(invoice.id)) {\n        invoiceSet.add(invoice.id);\n        return true;\n      }\n      return false;\n    });\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n    <div class=\"d-flex justify-content-start align-items-center gap-3\">\n      <strong>Cheques</strong>\n    </div>\n    <form class=\"d-flex justify-content-end align-items-center gap-2\" [formGroup]=\"filterForm\" (submit)=\"reload()\">\n      <app-timeline-filter formControlName=\"paid_on_duration\" labelText=\"Paid On\" [form]=\"filterForm\"\n        dateTo=\"paid_on_date_from\" dateFrom=\"paid_on_date_to\"></app-timeline-filter>\n\n      <mat-form-field>\n        <mat-label>Status</mat-label>\n        <app-searchable-selector formControlName=\"status_ids\" apiUrl=\"api/cheque-statuses\" [multiple]=\"true\"\n          [enableSearch]=\"false\"></app-searchable-selector>\n      </mat-form-field>\n    </form>\n  </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-3\">\n  <mat-card-content class=\"p-0\">\n    <table #table mat-table [dataSource]=\"models\" class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n      [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort\n      (matSortChange)=\"onSortChange($event)\">\n\n      <ng-container matColumnDef=\"#\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Paid On\">\n        <th mat-header-cell mat-sort-header=\"payment.date\" *matHeaderCellDef> Paid On </th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.payment?.date | date }}</td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Amount\">\n        <th mat-header-cell mat-sort-header=\"payment.amount\" *matHeaderCellDef> Amount </th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.payment?.amount | currency }}</td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Customer\">\n        <th mat-header-cell mat-sort-header=\"customer.name\" *matHeaderCellDef> Customer </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <ng-container *ngIf=\"getCustomerNames(element?.payment).length > 0\">\n            <ng-container *ngFor=\"let customer of getCustomerNames(element?.payment); let last = last\">\n              <a class=\"text-dark\" [routerLink]=\"['/sales/customers', customer?.id, 'view']\">\n                {{ customer?.name }}\n              </a>\n              <span *ngIf=\"!last\">, </span>\n            </ng-container>\n          </ng-container>\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Cheque #\">\n        <th mat-header-cell *matHeaderCellDef> Cheque # </th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.cheque_number }}</td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Invoice #\">\n        <th mat-header-cell *matHeaderCellDef> Invoice # </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <ng-container *ngIf=\"getInvoices(element?.payment).length > 0\">\n            <ng-container *ngFor=\"let invoice of getInvoices(element?.payment); let last = last\">\n              <a class=\"text-dark\" [routerLink]=\"['/sales/invoices', invoice?.id, 'view']\">\n                # {{ invoice?.number }}\n              </a>\n              <span *ngIf=\"!last\">, </span>\n            </ng-container>\n          </ng-container>\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Memo\">\n        <th mat-header-cell *matHeaderCellDef> Memo </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">\n          {{ element?.payment?.memo }}\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Status\">\n        <th mat-header-cell *matHeaderCellDef> Status </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">\n          <app-cheque-status-selector [model]=\"element\"\n            (updated)=\"modelsUpdatedById($event)\"></app-cheque-status-selector>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n    <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ChequeListComponent} from './cheque-list/cheque-list.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: ChequeListComponent\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class ChequeRoutingModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ChequeRoutingModule } from './cheque-routing.module';\n\n\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule,\n    ChequeRoutingModule\n  ]\n})\nexport class ChequeModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpService } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ExpenseSummaryService {\n  constructor(private httpService: HttpService) {}\n\n  /**\n   * Get the expense aggregated data.\n   *\n   * @param params\n   */\n  aggregated(params?: any): Observable<any> {\n    return this.httpService.get('api/expenses-aggregated', { params });\n  }\n\n  /**\n   * Export the expense aggregated report.\n   *\n   * @param params\n   */\n  export(params?: any) {\n    return this.httpService.get('api/expenses-aggregated/export', { params });\n  }\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {ChartType, GoogleChartsModule} from \"angular-google-charts\";\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {AlertService, RequestHelperService, Timeline, TimelineFilterModule, TimelineValue} from \"ngx-techlify-core\";\nimport {FormBuilder, FormGroup, ReactiveFormsModule} from \"@angular/forms\";\nimport {debounceTime} from \"rxjs\";\nimport {ExpenseSummaryService} from \"../expense-summary.service\";\nimport moment from \"moment/moment\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {NgIf} from \"@angular/common\";\n\n@Component({\n  selector: 'app-expense-line-chart',\n  standalone: true,\n  imports: [\n    GoogleChartsModule,\n    MatCard,\n    MatCardContent,\n    TimelineFilterModule,\n    ReactiveFormsModule,\n    MatProgressBar,\n    NgIf\n  ],\n  templateUrl: './expense-line-chart.component.html',\n  styleUrl: './expense-line-chart.component.scss'\n})\nexport class ExpenseLineChartComponent implements OnInit {\n  @Input() height: number = 400;\n  filterForm!: FormGroup\n  chart: any = {\n    title: 'Expenses',\n    type: ChartType.Line,\n    columns: [\n      'Period',\n      'Amount'\n    ],\n    data: [],\n    options: {\n      legend: {\n        position: 'none'\n      }\n    }\n  };\n  isLoading: boolean = false;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private expenseSummaryService: ExpenseSummaryService,\n    private requestHelperService: RequestHelperService,\n    private alertService: AlertService\n  ) {\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.THIS_YEAR],\n      date_from: [''],\n      date_to: [''],\n      groupBy: 'period'\n    })\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n    this.filterForm.valueChanges.pipe(\n      debounceTime(500)\n    ).subscribe({\n      next: () => this.loadData()\n    })\n  }\n\n  private loadData() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value)\n    }\n\n    if (!params.date_from || !params.date_to) {\n      return;\n    }\n    this.isLoading = true;\n    this.expenseSummaryService.aggregated(params).subscribe({\n      next: (response: any[]) => {\n        let data: any[] = [];\n        response?.forEach((item: any) => {\n          data.push([item?.period, item.total]);\n        });\n        this.chart.data = data;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    })\n  }\n}\n","<mat-card>\n  <mat-card-content>\n    <form [formGroup]=\"filterForm\" class=\"d-flex justify-content-between gap-3\">\n      <h3 class=\"mb-0\">Expenses</h3>\n      <app-timeline-filter\n        formControlName=\"duration\"\n        appearance=\"fill\"\n        [form]=\"filterForm\"\n        [showClearButton]=\"true\"\n      ></app-timeline-filter>\n    </form>\n  </mat-card-content>\n  <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n  <mat-card-content *ngIf=\"chart.data?.length > 0\">\n    <google-chart\n      class=\"w-100\"\n      [height]=\"height\"\n      [title]=\"chart.title\"\n      [type]=\"chart.type\"\n      [data]=\"chart.data\"\n      [columns]=\"chart.columns\"\n      [options]=\"chart.options\"\n    >\n    </google-chart>\n  </mat-card-content>\n</mat-card>\n\n","import { Component } from '@angular/core';\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {MatButton} from \"@angular/material/button\";\nimport {MatIcon} from \"@angular/material/icon\";\nimport {RouterLink} from \"@angular/router\";\nimport {NgxPermissionsModule} from \"ngx-permissions\";\nimport {ExpenseLineChartComponent} from '../../expense/expense-line-chart/expense-line-chart.component';\nimport {\n  OutstandingBillsReportComponent\n} from '../../sale/reports/outstanding-bills-report/outstanding-bills-report.component';\nimport { TopSuppliersReportComponent } from '../../sale/reports/top-suppliers-report/top-suppliers-report.component';\nimport {\n  ExpenseByCategoryReportComponent\n} from '../../sale/reports/expense-by-category-report/expense-by-category-report.component';\n\n@Component({\n  selector: 'app-purchase-dashboard',\n  standalone: true,\n\timports: [\n\t\tMatCardContent,\n\t\tMatCard,\n\t\tExpenseLineChartComponent,\n\t\tMatButton,\n\t\tMatIcon,\n\t\tRouterLink,\n\t\tOutstandingBillsReportComponent,\n\t\tTopSuppliersReportComponent,\n\t\tExpenseByCategoryReportComponent,\n\t\tNgxPermissionsModule\n\t],\n  templateUrl: './purchase-dashboard.component.html',\n  styleUrl: './purchase-dashboard.component.scss'\n})\nexport class PurchaseDashboardComponent {\n\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-start align-items-center gap-2\">\n    <span class=\"material-symbols-outlined\">local_mall</span>\n    <h2 class=\"mb-0\">Purchases</h2>\n\n    <button *ngxPermissionsOnly=\"['expense.create']\"\n            mat-stroked-button [routerLink]=\"['/purchases/expenses/create']\">\n      <mat-icon>add</mat-icon>\n      Expense\n    </button>\n\n    <button *ngxPermissionsOnly=\"['bill.create']\"\n            mat-stroked-button [routerLink]=\"['/purchases/bills/create']\" [queryParams]=\"{ type: 'bill' }\">\n      <mat-icon>add</mat-icon>\n      Bill\n    </button>\n  </mat-card-content>\n</mat-card>\n\n<div class=\"d-flex justify-content-start align-items-start gap-3 flex-wrap mt-3\">\n  <div style=\"width: calc(50% - 1rem)\" class=\"d-flex flex-column justify-content-start gap-3\">\n    <app-expense-line-chart\n      *ngxPermissionsOnly=\"['expense_summary_report.read']\"\n    ></app-expense-line-chart>\n    <app-top-suppliers-report\n      *ngxPermissionsOnly=\"['supplier_balance_report.read']\"\n    ></app-top-suppliers-report>\n  </div>\n  <div style=\"width: calc(50%)\" class=\"d-flex flex-column justify-content-start gap-3\">\n    <app-outstanding-bills-report\n      *ngxPermissionsOnly=\"['bill.read']\"\n    ></app-outstanding-bills-report>\n    <app-expense-by-category-report\n      *ngxPermissionsOnly=\"['expense_summary_report.read']\"\n    ></app-expense-by-category-report>\n  </div>\n</div>\n","import { Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport {\n  TechlifyListComponent,\n  Timeline\n} from 'ngx-techlify-core';\nimport { PaymentService } from '../../sale/payment/payment.service';\n\n@Component({\n  selector: 'app-purchase-payments-list-page',\n  templateUrl: './purchase-payments-list-page.component.html',\n  styleUrls: ['./purchase-payments-list-page.component.scss']\n})\nexport class PurchasePaymentsListPageComponent extends TechlifyListComponent {\n  filterConfig: any = {\n    duration: {\n      label: 'Date'\n    },\n    search: {\n      placeholder: 'Search payment memo'\n    }\n  };\n  displayedColumns: string[] = [\n    'no',\n    'date',\n    'amount',\n    'memo',\n    'bills',\n    'creator',\n    'actions'\n  ];\n  isLoading: boolean = false;\n  private currentPage: number = 1;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private paymentService: PaymentService,\n  ) {\n    super();\n    this.lastPage = 0;\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.THIS_MONTH],\n      date_from: [''],\n      date_to: [''],\n      search: [''],\n      supplier_ids: [''],\n      transaction_type: ['debit'],\n      sort_by: ['date|desc']\n    });\n  }\n\n  override loadData() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value),\n      perPage: this.perPage,\n      with: 'paymentExpenses.expense.payee,creator',\n      page: this.currentPage\n    };\n    this.isLoading = true;\n    this.paymentService.index(params).subscribe({\n      next: (response: any) => {\n        this.lastPage = response?.last_page;\n        this.models = this.models?.concat(response?.data);\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n}\n","<div class=\"d-flex flex-column gap-3\">\n  <mat-card>\n    <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n      <div class=\"d-flex justify-content-center align-items-center gap-2\">\n        <mat-icon class=\"material-icons\">payments</mat-icon>\n        <h2 class=\"m-0\">Purchase Payments</h2>\n        <mat-icon\n          *ngxPermissionsOnly=\"['purchase_payment.create']\"\n          [routerLink]=\"['create']\" color=\"primary\" class=\"cursor-pointer\">\n          add\n        </mat-icon>\n      </div>\n      <app-techlify-filter\n        [filterForm]=\"filterForm\"\n        [filterConfig]=\"filterConfig\"\n        (filterUpdated)=\"reload()\"\n      ></app-techlify-filter>\n    </mat-card-content>\n  </mat-card>\n  <mat-card class=\"w-100\">\n    <mat-card-content class=\"p-0\">\n      <table\n        mat-table\n        [dataSource]=\"models\"\n        class=\"w-100\"\n        aria-describedby=\"Payments\"\n        infiniteScroll\n        [infiniteScrollDistance]=\"2\"\n        [infiniteScrollThrottle]=\"50\"\n        (scrolled)=\"onScroll()\"\n        [fromRoot]=\"true\"\n      >\n        <!-- # Column -->\n        <ng-container matColumnDef=\"no\">\n          <th mat-header-cell *matHeaderCellDef>#</th>\n          <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n        </ng-container>\n\n        <!-- Date Column -->\n        <ng-container matColumnDef=\"date\">\n          <th mat-header-cell *matHeaderCellDef>Date</th>\n          <td mat-cell *matCellDef=\"let element\">{{ element?.date | date }}</td>\n        </ng-container>\n\n        <!-- Amount Column -->\n        <ng-container matColumnDef=\"amount\">\n          <th mat-header-cell *matHeaderCellDef>Amount</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.amount | currency }}\n          </td>\n        </ng-container>\n\n        <!-- Memo Column -->\n        <ng-container matColumnDef=\"memo\">\n          <th mat-header-cell *matHeaderCellDef>Memo</th>\n          <td mat-cell *matCellDef=\"let element\">{{ element?.memo }}</td>\n        </ng-container>\n\n        <!-- Bills Column -->\n        <ng-container matColumnDef=\"bills\">\n          <th mat-header-cell *matHeaderCellDef>Bills</th>\n          <td mat-cell *matCellDef=\"let element\">\n            <ul>\n              <li\n                class=\"mb-0\"\n                *ngFor=\"let paymentExpense of element?.payment_expenses\"\n              >\n                #{{ paymentExpense?.expense?.id }} -\n                {{ paymentExpense?.expense?.date | date }} -\n                {{ paymentExpense?.expense?.payee?.company_name }} -\n                {{ paymentExpense?.expense?.paid | currency }} /\n                {{ paymentExpense?.expense?.total | currency }}\n              </li>\n            </ul>\n          </td>\n        </ng-container>\n\n        <!-- Creator Column -->\n        <ng-container matColumnDef=\"creator\">\n          <th mat-header-cell *matHeaderCellDef>Creator</th>\n          <td mat-cell *matCellDef=\"let element\">\n            <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n            <small class=\"text-secondary\">\n              {{ element?.created_at | date }}\n            </small>\n          </td>\n        </ng-container>\n\n        <!-- Actions Column -->\n        <ng-container matColumnDef=\"actions\">\n          <th mat-header-cell *matHeaderCellDef>Actions</th>\n          <td mat-cell *matCellDef=\"let element\">\n            <div class=\"d-flex justify-content-start align-items-center gap-2\">\n              <ng-container\n                *ngxPermissionsOnly=\"['purchase_payment.update']\"\n              >\n                <mat-icon\n                  *ngIf=\"element?.payment_expenses?.length > 0\"\n                  class=\"text-secondary cursor-pointer\"\n                  [routerLink]=\"[element?.id, 'edit']\"\n                >\n                  edit\n                </mat-icon>\n              </ng-container>\n              <app-payment-void-button\n                [payment]=\"element\"\n                (voided)=\"reload()\"\n              ></app-payment-void-button>\n              <a [routerLink]=\"[element?.id, 'view']\" class=\"text-decoration-none text-dark\">\n                <mat-icon>visibility</mat-icon>\n              </a>\n            </div>\n          </td>\n        </ng-container>\n\n        <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n        <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n      </table>\n\n      <mat-progress-bar\n        mode=\"indeterminate\"\n        *ngIf=\"isLoading\"\n      ></mat-progress-bar>\n    </mat-card-content>\n  </mat-card>\n</div>\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ExpenseService extends TechlifyService {\n  constructor(protected httpService: HttpService) {\n    super(httpService, 'expenses');\n  }\n\n  /**\n   * Send a request to get the export file.\n   *\n   * @param params\n   */\n  export(params: any): Observable<any> {\n    return this.httpService.get('api/expenses/export', { params });\n  }\n\n  /**\n   * Multi delete the expenses.\n   *\n   * @param data\n   * @param params\n   */\n  multiDelete(data: any, params?: any): Observable<any> {\n    return this.httpService.post('api/expenses/multi-delete', data, { params });\n  }\n\n  multiUpdate(data: any, params?: any): Observable<any> {\n    return this.httpService.put('api/expenses/multi-update', data, { params });\n  }\n\n  void(expense: any, params?: any): Observable<any> {\n    return this.httpService.put(\n      `api/expenses/${expense?.id}/void`,\n      {},\n      { params }\n    );\n  }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n  AlertService,\n  FormValidatorService,\n  RequestHelperService,\n  Timeline,\n  TimelineValue\n} from 'ngx-techlify-core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { debounceTime, Observable } from 'rxjs';\nimport moment from 'moment';\nimport {ActivatedRoute} from \"@angular/router\";\nimport {ExpenseService} from '../../expense/expense.service';\nimport {PaymentService} from '../../sale/payment/payment.service';\nimport { PaymentMethodTypeEnum } from '../../sale/payment/payment-method-type.enum';\n\nconst errorMessages: any = {\n  account_id: {\n    required: 'The payment account field is required.'\n  },\n  payment_method_id: {\n    required: 'The payment method field is required.'\n  },\n  date: {\n    required: 'The date field is required.'\n  }\n};\n\n@Component({\n  selector: 'app-bill-payment-form',\n  templateUrl: './bill-payment-form.component.html',\n  styleUrls: ['./bill-payment-form.component.scss']\n})\nexport class BillPaymentFormComponent implements OnInit {\n  @Input() payment: any;\n  @Output() saved = new EventEmitter();\n  @Output() cancelled = new EventEmitter();\n  form: FormGroup;\n  filterForm: FormGroup;\n  displayedColumns: string[] = [\n    'select',\n    'payee',\n    'reference_no',\n    'due_date',\n    'amount',\n    'paid',\n    'open_balance',\n    'payment'\n  ];\n  dataSource = new MatTableDataSource<any>();\n  selection = new SelectionModel<any>(true, []);\n  isLoading: boolean = false;\n  isSaving: boolean = false;\n  billId!: number;\n\n  constructor(\n    private formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder,\n    private expenseService: ExpenseService,\n    private requestHelperService: RequestHelperService,\n    private alertService: AlertService,\n    private paymentService: PaymentService,\n    private activatedRoute: ActivatedRoute\n  ) {\n    // crate a basic payment info form\n    this.form = this.formBuilder.group({\n      id: [''],\n      account_id: [''],\n      transaction_type: ['debit'],\n      payment_method_id: [''],\n      date: [new Date()],\n      reference_no: [''],\n      amount: [0],\n      memo: [''],\n      cheque_number: [''],\n    });\n    // create a form for bill filters\n    this.filterForm = this.formBuilder.group({\n      payee_ids: [''],\n      search: [''],\n      duration: [Timeline.THIS_MONTH],\n      date_from: [''],\n      date_to: [''],\n      include_ids: [''],\n    });\n\n    this.billId = parseInt(this.activatedRoute.snapshot.queryParams['bill_id']);\n  }\n\n  ngOnInit() {\n    if (this.payment) {\n      let data: any = { ...this.payment };\n      data.date = new Date(this.payment.date);\n      this.form.patchValue(data);\n    }\n\n    if (this.billId) {\n      const data = {\n        include_ids: this.billId,\n        duration: Timeline.ALL\n      }\n      this.filterForm.patchValue(data);\n    }\n\n    // reload the bills on filter change.\n    this.filterForm.valueChanges\n      .pipe(debounceTime(800))\n      .subscribe(() => this.reload());\n    // update the total payments on selection change\n    this.selection.changed.subscribe(() => this.updatePaymentsTotal());\n  }\n\n  /** Method to evaluate form fields*/\n  isFieldValid(field: string) {\n    return this.formValidatorService.isFieldValid(field, this.form);\n  }\n\n  /** Method to find error in form fields*/\n  getErrorMessage(field: string) {\n    return this.formValidatorService.getErrorMessage(\n      field,\n      this.form,\n      errorMessages\n    );\n  }\n\n  /**\n   * Reset the field.\n   *\n   * @param field\n   */\n  resetField(field: string) {\n    this.filterForm.get(field)?.setValue('');\n  }\n\n  /** Whether the number of selected elements matches the total number of rows. */\n  isAllSelected() {\n    const numSelected = this.selection.selected.length;\n    const numRows = this.dataSource.data.length;\n    return numSelected === numRows;\n  }\n\n  /** Selects all rows if they are not all selected; otherwise clear selection. */\n  toggleAllRows() {\n    if (this.isAllSelected()) {\n      this.selection.clear();\n      return;\n    }\n\n    this.selection.select(...this.dataSource.data);\n  }\n\n  /** The label for the checkbox on the passed row */\n  checkboxLabel(row?: any): string {\n    if (!row) {\n      return `${this.isAllSelected() ? 'deselect' : 'select'} all`;\n    }\n    return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row ${\n      row.position + 1\n    }`;\n  }\n\n  /**\n   * Load bills.\n   *\n   * @private\n   */\n  private loadData() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value),\n      status_ids: '1,2',\n      with: 'payee,paymentExpenses',\n      perPage: 50000\n    };\n    this.isLoading = true;\n    this.expenseService.index(params).subscribe({\n      next: (response: any) => {\n        this.isLoading = false;\n        this.prepareData(response);\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n\n  /**\n   * Handle on duration change event.\n   *\n   * @param timelineValue\n   */\n  onDurationChange(timelineValue: TimelineValue) {\n    let { date_to, date_from } = timelineValue;\n    this.filterForm.patchValue({\n      date_from: date_from ? moment(date_from).format('YYYY-MM-DD') : '',\n      date_to: date_to ? moment(date_to).format('YYYY-MM-DD') : ''\n    });\n  }\n\n  /**\n   * Reset the bills data and reload.\n   *\n   * @private\n   */\n  private reload() {\n    this.selection.clear();\n    this.dataSource = new MatTableDataSource();\n    this.loadData();\n  }\n\n  /**\n   * Update the total payment on payment value change.\n   *\n   * @param event\n   */\n  onPaymentChange(event: any) {\n    this.updatePaymentsTotal();\n  }\n\n  /**\n   * Update the total payment.\n   *\n   * @private\n   */\n  private updatePaymentsTotal() {\n    let total = 0;\n    this.selection.selected.forEach((item: any) => {\n      if (!item.payment || Number.isNaN(item.payment)) return;\n      total += Number.parseFloat(item.payment);\n    });\n    this.form.get('amount')?.setValue(total);\n  }\n\n  /**\n   * Save the purchase payment.\n   */\n  save() {\n    this.form.markAllAsTouched();\n    if (this.form.invalid) {\n      this.alertService.addAlert(\n        'Please check the form for the errors.',\n        'error'\n      );\n      return;\n    }\n    const data: any = {\n      ...this.requestHelperService.convertToFormData(this.form.value),\n      bills: this.selection.selected\n    };\n    this.isSaving = true;\n    let request: Observable<any> = this.paymentService.store(data);\n    if (this.payment?.id) {\n      request = this.paymentService.update(data);\n    }\n    request.subscribe({\n      next: (response: any) => {\n        this.isSaving = false;\n        this.saved.emit(response?.item);\n        this.alertService.addAlert('Payment saved successfully!', 'success');\n      },\n      error: () => (this.isSaving = false)\n    });\n  }\n\n  /**\n   * Prepare the bills table.\n   *\n   * @param response\n   * @private\n   */\n  private prepareData(response: any) {\n    const data: any[] = response?.data;\n    data.forEach((item: any) => {\n      item.payment = item?.balance;\n    });\n\n    (this.payment?.payment_expenses as [])?.forEach((item: any) => {\n      const index: number = data.findIndex(\n        (expense: any) => expense.id === item.expense_id\n      );\n      if (index != -1) {\n        // the expense is found in the bills\n        data[index].payment = item.amount;\n        data[index].paid = data[index].paid - item.amount;\n        data[index].balance = data[index].balance + item.amount;\n        this.selection.select(data[index]);\n      } else {\n        // the bill was paid and not exists in pending bills\n        // add to the list\n        let expense = { ...item.expense };\n        expense.payment = item.amount;\n        expense.paid = expense.paid - item.amount;\n        expense.balance = expense.balance + item.amount;\n        data.unshift(expense);\n        this.selection.select(expense);\n      }\n    });\n\n    this.dataSource = new MatTableDataSource(data);\n\n    if (this.billId) {\n      this.toggleAllRows();\n    }\n  }\n\n  protected readonly PaymentMethodTypeEnum = PaymentMethodTypeEnum;\n}\n","<div class=\"d-flex flex-column gap-3\">\n  <h2 class=\"text-center text-dark mb-0\">Pay Bills</h2>\n  <small\n    class=\"text-center text-secondary font-italic\"\n    style=\"margin-top: -17px\"\n  >\n    Use this form to record payment for outstanding bills\n  </small>\n\n  <form [formGroup]=\"form\" class=\"d-flex justify-content-start align-items-center gap-3\">\n    <mat-form-field appearance=\"fill\">\n      <mat-label>Payment Account</mat-label>\n      <app-searchable-selector\n        formControlName=\"account_id\"\n        apiUrl=\"api/accounts\"\n        titleField=\"title\"\n        sortBy=\"title|asc\"\n        required\n      >\n      </app-searchable-selector>\n      <mat-error *ngIf=\"isFieldValid('account_id')\">\n        {{ getErrorMessage('account_id') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\">\n      <mat-label>Payment Method</mat-label>\n      <app-searchable-selector\n        apiUrl=\"api/payment-methods\"\n        formControlName=\"payment_method_id\"\n        required\n      >\n      </app-searchable-selector>\n      <mat-error *ngIf=\"isFieldValid('payment_method_id')\">\n        {{ getErrorMessage('payment_method_id') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\" *ngIf=\"form.value?.payment_method_id === PaymentMethodTypeEnum.CHEQUE\">\n      <mat-label>Cheque Number</mat-label>\n      <input\n        matInput\n        formControlName=\"cheque_number\"\n        placeholder=\"Cheque Number\"\n      />\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\">\n      <mat-label>Date</mat-label>\n      <input\n        formControlName=\"date\"\n        matInput\n        required\n        (focus)=\"datePicker.open()\"\n        [matDatepicker]=\"datePicker\"\n      />\n      <mat-datepicker #datePicker></mat-datepicker>\n      <mat-error *ngIf=\"isFieldValid('date')\">\n        {{ getErrorMessage('date') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\">\n      <mat-label>Reference No</mat-label>\n      <input\n        formControlName=\"reference_no\"\n        matInput\n        placeholder=\"Reference No\"\n      />\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\">\n      <mat-label>Memo</mat-label>\n      <textarea formControlName=\"memo\" matInput placeholder=\"Memo\"></textarea>\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\">\n      <mat-label>Amount</mat-label>\n      <input formControlName=\"amount\" matInput placeholder=\"Amount\" readonly />\n    </mat-form-field>\n  </form>\n\n  <mat-card>\n    <mat-card-content>\n      <form (submit)=\"save()\" [formGroup]=\"filterForm\" class=\"d-flex gap-3\">\n        <mat-form-field appearance=\"fill\" *ngxPermissionsOnly=\"['supplier.read']\">\n          <mat-label>Payee</mat-label>\n          <app-searchable-selector\n            formControlName=\"payee_ids\"\n            apiUrl=\"api/suppliers\"\n            titleField=\"company_name\"\n            sortBy=\"company_name|asc\"\n            [multiple]=\"true\"\n          >\n          </app-searchable-selector>\n          <button\n            *ngIf=\"filterForm.value?.payee_ids\"\n            mat-icon-button\n            matSuffix\n            (click)=\"resetField('payee_ids')\"\n          >\n            <mat-icon>close</mat-icon>\n          </button>\n        </mat-form-field>\n\n        <mat-form-field appearance=\"fill\">\n          <mat-label>Search</mat-label>\n          <input\n            type=\"text\"\n            matInput\n            placeholder=\"Search outstanding bills\"\n            formControlName=\"search\"\n          />\n          <button\n            *ngIf=\"filterForm.value?.search\"\n            mat-icon-button\n            matSuffix\n            (click)=\"resetField('search')\"\n          >\n            <mat-icon>close</mat-icon>\n          </button>\n        </mat-form-field>\n\n        <app-timeline-filter\n          labelText=\"Due Date\"\n          appearance=\"fill\"\n          formControlName=\"duration\"\n          (selectionChange)=\"onDurationChange($event)\"\n          [showClearButton]=\"true\"\n        ></app-timeline-filter>\n      </form>\n    </mat-card-content>\n\n    <mat-card-content>\n      <table\n        mat-table\n        [dataSource]=\"dataSource\"\n        class=\"w-100\"\n        aria-describedby=\"Bills\"\n      >\n        <!-- Checkbox Column -->\n        <ng-container matColumnDef=\"select\">\n          <th mat-header-cell *matHeaderCellDef>\n            <mat-checkbox\n              (change)=\"$event ? toggleAllRows() : null\"\n              [checked]=\"selection.hasValue() && isAllSelected()\"\n              [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n              [aria-label]=\"checkboxLabel()\"\n            >\n            </mat-checkbox>\n          </th>\n          <td mat-cell *matCellDef=\"let row\">\n            <mat-checkbox\n              (click)=\"$event.stopPropagation()\"\n              (change)=\"$event ? selection.toggle(row) : null\"\n              [checked]=\"selection.isSelected(row)\"\n              [aria-label]=\"checkboxLabel(row)\"\n            >\n            </mat-checkbox>\n          </td>\n        </ng-container>\n\n        <!-- Payee Column -->\n        <ng-container matColumnDef=\"payee\">\n          <th mat-header-cell *matHeaderCellDef>Payee</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.payee?.company_name }}\n          </td>\n        </ng-container>\n\n        <!-- Reference No Column -->\n        <ng-container matColumnDef=\"reference_no\">\n          <th mat-header-cell *matHeaderCellDef>Reference No</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.reference_no }}\n          </td>\n        </ng-container>\n\n        <!-- Due date Column -->\n        <ng-container matColumnDef=\"due_date\">\n          <th mat-header-cell *matHeaderCellDef>Due Date</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.date | date }}\n          </td>\n        </ng-container>\n\n        <!-- Amount Column -->\n        <ng-container matColumnDef=\"amount\">\n          <th mat-header-cell *matHeaderCellDef>Amount</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.total | currency }}\n          </td>\n        </ng-container>\n\n        <!-- Paid Column -->\n        <ng-container matColumnDef=\"paid\">\n          <th mat-header-cell *matHeaderCellDef>Paid</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element.paid | currency }}\n          </td>\n        </ng-container>\n\n        <!-- Open Balance Column -->\n        <ng-container matColumnDef=\"open_balance\">\n          <th mat-header-cell *matHeaderCellDef>Open Balance</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.balance | currency }}\n          </td>\n        </ng-container>\n\n        <!-- Payment Column -->\n        <ng-container matColumnDef=\"payment\">\n          <th mat-header-cell *matHeaderCellDef>Payment</th>\n          <td mat-cell *matCellDef=\"let element\">\n            <mat-form-field appearance=\"fill\" class=\"font-xs\">\n              <mat-label>Payment</mat-label>\n              <input\n                type=\"text\"\n                matInput\n                placeholder=\"Payment\"\n                [(ngModel)]=\"element.payment\"\n                (ngModelChange)=\"onPaymentChange($event)\"\n              />\n            </mat-form-field>\n          </td>\n        </ng-container>\n\n        <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n        <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n      </table>\n\n      <mat-progress-bar\n        mode=\"indeterminate\"\n        *ngIf=\"isLoading\"\n      ></mat-progress-bar>\n    </mat-card-content>\n  </mat-card>\n\n  <div class=\"d-flex justify-content-end align-items-center gap-3 mt-3\">\n    <button\n      [disabled]=\"isSaving\"\n      (click)=\"save()\"\n      type=\"button\"\n      mat-raised-button\n      color=\"primary\"\n    >\n      Save\n    </button>\n    <button\n      (click)=\"cancelled.emit()\"\n      [disabled]=\"isSaving\"\n      type=\"button\"\n      mat-flat-button\n    >\n      Cancel\n    </button>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { ActivatedRoute } from '@angular/router';\nimport {PaymentService} from '../../sale/payment/payment.service';\n\n@Component({\n  selector: 'app-purchase-payments-form-page',\n  templateUrl: './purchase-payments-form-page.component.html',\n  styleUrls: ['./purchase-payments-form-page.component.scss']\n})\nexport class PurchasePaymentsFormPageComponent implements OnInit {\n  id: number;\n  isLoading!: boolean;\n  payment: any;\n\n  constructor(\n    private location: Location,\n    private activatedRoute: ActivatedRoute,\n    private paymentService: PaymentService\n  ) {\n    this.id = this.activatedRoute.snapshot.params['id'];\n  }\n\n  ngOnInit(): void {\n    if (this.id) {\n      this.loadPayment();\n    }\n  }\n\n  /**\n   * Redirect back to last page.\n   */\n  redirectBack() {\n    this.location.back();\n  }\n\n  private loadPayment() {\n    const params: any = {\n      with: 'paymentExpenses.expense.payee'\n    };\n    this.isLoading = true;\n    this.paymentService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.isLoading = false;\n        this.payment = response?.item;\n      },\n      error: () => {\n        this.isLoading = false;\n      }\n    });\n  }\n}\n","<div class=\"d-flex justify-content-start gap-3\">\n  <app-bill-payment-form\n    style=\"width: calc(100% - 300px)\"\n    *ngIf=\"!isLoading\"\n    [payment]=\"payment\"\n    (saved)=\"redirectBack()\"\n    (cancelled)=\"redirectBack()\"\n  ></app-bill-payment-form>\n\n  <div style=\"width: calc(300px - 1rem)\">\n    <app-entity-files-view-all viewMode=\"timeline\" *ngIf=\"payment?.id && !isLoading\" [entityId]=\"payment?.id\"\n                               entityType=\"PurchasePayment\" fileDropperHeight=\"250px\" title=\"Document\">\n    </app-entity-files-view-all>\n  </div>\n</div>\n\n<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n","export enum ExpenseStatusEnum {\n  STATUS_RECEIVED = 1,\n  STATUS_PARTIAL_PAID = 2,\n  STATUS_PAID = 3,\n  STATUS_CANCELLED = 4\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AlertService } from 'ngx-techlify-core';\nimport { ExpenseService } from '../../expense.service';\nimport { ExpenseStatusEnum } from '../../expense-status.enum';\n\n@Component({\n  selector: 'app-expense-void-button',\n  templateUrl: './expense-void-button.component.html',\n  styleUrls: ['./expense-void-button.component.scss']\n})\nexport class ExpenseVoidButtonComponent {\n  @Input() expense: any;\n  @Input() documentType: string = 'expense';\n  @Output() voided = new EventEmitter();\n  isWorking: boolean = false;\n\n  constructor(\n    public matDialog: MatDialog,\n    private expenseService: ExpenseService,\n    private alertService: AlertService\n  ) {}\n\n  showConfirmDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef);\n  }\n\n  /**\n   * Void the payment.\n   */\n  void() {\n    this.isWorking = true;\n    this.expenseService.void(this.expense).subscribe({\n      next: () => {\n        this.alertService.addAlert(\n          `${this.documentType} voided successfully!`,\n          'success'\n        );\n        this.isWorking = false;\n        this.matDialog.closeAll();\n        this.voided.emit();\n      },\n      error: () => {\n        this.isWorking = false;\n      }\n    });\n  }\n\n  protected readonly ExpenseStatusEnum = ExpenseStatusEnum;\n}\n","<span\n  *ngIf=\"expense?.status_id !== ExpenseStatusEnum.STATUS_CANCELLED\"\n  (click)=\"showConfirmDialog(expenseVoidDialog)\"\n  class=\"material-symbols-outlined cursor-pointer text-secondary\"\n  [matTooltip]=\"'Void ' + documentType\"\n>\n  block\n</span>\n\n<ng-template #expenseVoidDialog>\n  <h3 mat-dialog-title>Void {{ documentType }}</h3>\n  <div mat-dialog-content>\n    <p>Are you sure you want to void the {{ documentType }}?</p>\n  </div>\n  <div\n    mat-dialog-actions\n    class=\"d-flex flex-row justify-content-end align-items-center gap-2\"\n  >\n    <button [disabled]=\"isWorking\" mat-flat-button mat-dialog-close>\n      Cancel\n    </button>\n    <button\n      [disabled]=\"isWorking\"\n      mat-raised-button\n      color=\"warn\"\n      (click)=\"void()\"\n    >\n      Void {{ documentType }}\n    </button>\n  </div>\n</ng-template>\n","import { Injectable } from '@angular/core';\nimport {HttpService, TechlifyService} from \"ngx-techlify-core\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ExpenseProcessingStatusService extends TechlifyService {\n\n  constructor(\n    httpService: HttpService\n  ) {\n    super(httpService, 'expense-processing-statuses');\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {HttpService, TechlifyService} from \"ngx-techlify-core\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ExpenseProcessingStatusUpdateService extends TechlifyService {\n\n  constructor(\n    httpService: HttpService\n  ) {\n    super(httpService, 'expense-processing-status-updates');\n  }\n}\n","import {Component, EventEmitter, forwardRef, Input, OnInit, Output} from '@angular/core';\nimport {ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {MatError, MatFormField, MatFormFieldAppearance, MatLabel} from \"@angular/material/form-field\";\nimport {NgForOf, NgIf} from \"@angular/common\";\nimport {AlertService, SearchableSelectorModule} from \"ngx-techlify-core\";\nimport {MatOption, MatSelect} from \"@angular/material/select\";\nimport {ExpenseProcessingStatusService} from \"../expense-processing-status.service\";\nimport {NgxPermissionsModule} from \"ngx-permissions\";\nimport {ExpenseProcessingStatusUpdateService} from \"../expense-processing-status-update.service\";\n\n@Component({\n  selector: 'app-bill-processing-status-updater',\n  standalone: true,\n  imports: [\n    MatError,\n    MatFormField,\n    MatLabel,\n    NgIf,\n    SearchableSelectorModule,\n    FormsModule,\n    MatSelect,\n    MatOption,\n    NgForOf,\n    NgxPermissionsModule\n  ],\n  templateUrl: './bill-processing-status-updater.component.html',\n  styleUrl: './bill-processing-status-updater.component.scss',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => BillProcessingStatusUpdaterComponent),\n      multi: true\n    }\n  ]\n})\nexport class BillProcessingStatusUpdaterComponent implements ControlValueAccessor, OnInit {\n  @Input() label = 'Status';\n  @Input() appearance: MatFormFieldAppearance = 'fill';\n  @Input() required: boolean = false;\n  @Input() showAddButton: boolean = false;\n  @Input() multiple: boolean = false;\n  @Input() expense!: any;\n\n  @Output() updated: EventEmitter<any> = new EventEmitter<any>();\n\n  value: any;\n  options: any[] = [];\n\n  constructor(\n    private expenseProcessingStatusService: ExpenseProcessingStatusService,\n    private expenseProcessingStatusUpdateService: ExpenseProcessingStatusUpdateService,\n    private alertService: AlertService\n  ) {}\n\n  ngOnInit(): void {\n    this.loadData();\n    if (this.expense) {\n      this.value = this.expense?.last_processing_status_update?.new_status_id ?? 1\n    }\n  }\n\n  onChange: any = (val: number) => {\n    if (this.expense) {\n      this.createProcessingStatusUpdate(val)\n    }\n  };\n\n  onTouch: any = () => {\n  };\n\n  writeValue(value: any): void {\n    this.value = value;\n    this.onChange(value);\n    this.onTouch(value);\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  private loadData() {\n    this.expenseProcessingStatusService.index({}, true).subscribe({\n      next: (response: any) => {\n        this.options = response?.data;\n      }\n    })\n  }\n\n  private createProcessingStatusUpdate(newStatusId: number) {\n    const data: any = {\n      processing_status_id: newStatusId,\n      expense_id: this.expense?.id,\n    }\n    this.expenseProcessingStatusUpdateService.store(data).subscribe({\n      next: (response: any) => {\n        this.updated.emit(response?.item);\n        this.alertService.addAlert('Processing status update saved successfully!', 'success');\n      }\n    });\n  }\n}\n","<mat-form-field [appearance]=\"appearance\" class=\"w-100\">\n  <mat-label>{{ label }}</mat-label>\n  <mat-select\n    [required]=\"required\"\n    [(ngModel)]=\"value\"\n    #statusSelector=\"ngModel\"\n    name=\"statusSelector\"\n    (ngModelChange)=\"onChange($event)\"\n    [ngModelOptions]=\"{ standalone: true }\"\n    [multiple]=\"multiple\"\n  >\n    <ng-container *ngFor=\"let option of options\">\n      <mat-option [value]=\"option.id\" *ngxPermissionsOnly=\"option.permission\">\n        {{ option.title }}\n      </mat-option>\n    </ng-container>\n  </mat-select>\n  <mat-error *ngIf=\"statusSelector.invalid && statusSelector.touched\">\n    The status field is required.\n  </mat-error>\n</mat-form-field>\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { FormBuilder, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButton } from \"@angular/material/button\";\nimport { MatCard, MatCardContent } from \"@angular/material/card\";\nimport { NgIf } from \"@angular/common\";\nimport { NgxPermissionsModule } from \"ngx-permissions\";\nimport { MatDialog, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from \"@angular/material/dialog\";\nimport { SelectionModel } from \"@angular/cdk/collections\";\nimport {\n  AlertService,\n  FormValidatorService,\n  SearchableSelectorModule,\n  TechlifyFormComponent\n} from \"ngx-techlify-core\";\nimport { ExpenseService } from \"../expense.service\";\nimport { MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport {\n  BillProcessingStatusUpdaterComponent\n} from \"../../bills/bill-processing-updates/bill-processing-status-updater/bill-processing-status-updater.component\";\nimport { AccountSelectorModule } from '../../sale/account/account-selector/account-selector.module';\n\n@Component({\n  selector: 'app-expense-multi-select-form',\n  standalone: true,\n  imports: [\n    FormsModule,\n    MatButton,\n    MatCard,\n    MatCardContent,\n    NgIf,\n    NgxPermissionsModule,\n    ReactiveFormsModule,\n    MatDialogActions,\n    MatDialogClose,\n    MatDialogContent,\n    MatDialogTitle,\n    MatFormField,\n    SearchableSelectorModule,\n    AccountSelectorModule,\n    BillProcessingStatusUpdaterComponent,\n    MatLabel\n  ],\n  templateUrl: './expense-multi-select-form.component.html',\n  styleUrl: './expense-multi-select-form.component.scss'\n})\nexport class ExpenseMultiSelectFormComponent extends TechlifyFormComponent {\n  @Input() selection!: SelectionModel<any>;\n  @Input() type!: string;\n  @Output() deleted: EventEmitter<any> = new EventEmitter<any>();\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n\n  constructor(\n    private matDialog: MatDialog,\n    private expenseService: ExpenseService,\n    formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder\n  ) {\n    super(formValidatorService);\n    this.form = this.formBuilder.group({\n      payment_account_id: [''],\n      processing_status_id: [''],\n      status_id: ['']\n    });\n  }\n\n  showDeleteConfirmDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, { width: '400px' });\n  }\n\n  deleteSelectedExpenses() {\n    const expenseIDs = this.prepareExpenseIds();\n\n    if (!expenseIDs) return;\n\n    const data: any = {\n      expense_ids: expenseIDs\n    };\n    this.isWorking = true;\n    this.expenseService.multiDelete(data).subscribe({\n      next: () => {\n        this.isWorking = false;\n        this.selection.clear();\n        this.alertService.addAlert(\n          'The expenses deleted successfully!',\n          'success'\n        );\n        this.matDialog.closeAll();\n        this.deleted.emit();\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  save() {\n    const expenseIds = this.prepareExpenseIds();\n    if (!expenseIds) return;\n    this.isWorking = true;\n    const data: any = {\n      expense_ids: expenseIds,\n      ...this.form.value,\n    }\n    this.expenseService.multiUpdate(data).subscribe({\n      next: () => {\n        this.isWorking = false;\n        this.selection.clear();\n        this.alertService.addAlert(\n          'The expenses updated successfully!',\n          'success'\n        );\n        this.matDialog.closeAll();\n        this.saved.emit();\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n\n  private prepareExpenseIds() {\n    const expenseIDs: number[] = this.selection.selected.map(\n      (expense: any) => expense.id\n    );\n    if (expenseIDs?.length <= 0) {\n      this.alertService.addAlert('Please select at least one record.', 'error');\n      this.matDialog.closeAll();\n      return;\n    }\n\n    return expenseIDs;\n  }\n}\n","<mat-card *ngIf=\"!selection.isEmpty()\">\n  <mat-card-content>\n    <strong class=\"text-primary\">\n      {{ selection.selected.length }} {{ type }}(s) Selected\n    </strong>\n\n    <form\n      [formGroup]=\"form\"\n      class=\"mt-3 d-flex justify-content-start flex-column gap-1\"\n      (submit)=\"save()\"\n    >\n      <app-account-selector\n        formControlName=\"payment_account_id\"\n        [showAddButton]=\"true\"\n        params=\"bank_or_cash_account=true\"\n        [perPage]=\"1000\"\n        style=\"width: calc(100%)\"\n      ></app-account-selector>\n\n      <app-bill-processing-status-updater\n        *ngIf=\"type === 'bill'\"\n        formControlName=\"processing_status_id\"\n        label=\"Processing Status\"\n      ></app-bill-processing-status-updater>\n\n      <mat-form-field>\n        <mat-label>Status</mat-label>\n        <app-searchable-selector\n          formControlName=\"status_id\"\n          apiUrl=\"api/expense-statuses\"\n          [enableSearch]=\"false\"\n        ></app-searchable-selector>\n      </mat-form-field>\n\n      <div class=\"d-flex justify-content-end align-items-center gap-2 mt-3\">\n        <button\n          (click)=\"showDeleteConfirmDialog(deleteConfirmDialog)\"\n          type=\"button\"\n          mat-raised-button\n          color=\"warn\"\n          *ngxPermissionsOnly=\"['expense.delete', 'bill.delete']\"\n          [disabled]=\"isWorking\"\n        >\n          Delete Selected\n        </button>\n        <button\n          type=\"submit\"\n          mat-raised-button\n          color=\"primary\"\n          *ngxPermissionsOnly=\"['expense.update', 'bill.update']\"\n          [disabled]=\"isWorking\"\n        >\n          Update\n        </button>\n      </div>\n    </form>\n\n  </mat-card-content>\n</mat-card>\n\n<ng-template #deleteConfirmDialog>\n  <h3 mat-dialog-title>Delete Selected Expenses</h3>\n  <div mat-dialog-content>\n    <p>Are you sure, you want to delete the selected expenses?</p>\n  </div>\n  <div class=\"d-flex justify-content-end gap-2\" mat-dialog-actions>\n    <button\n      [disabled]=\"isWorking\"\n      mat-flat-button\n      mat-dialog-close\n      type=\"button\"\n    >\n      Cancel\n    </button>\n    <button\n      [disabled]=\"isWorking\"\n      mat-raised-button\n      color=\"warn\"\n      type=\"button\"\n      (click)=\"deleteSelectedExpenses()\"\n    >\n      Delete\n    </button>\n  </div>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { RequestHelperService } from 'ngx-techlify-core';\nimport { ExpenseService } from '../expense.service';\nimport { Sort } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { SelectionModel } from '@angular/cdk/collections';\n\n@Component({\n  selector: 'app-expense-list-table',\n  templateUrl: './expense-list-table.component.html',\n  styleUrls: ['./expense-list-table.component.scss']\n})\nexport class ExpenseListTableComponent implements OnInit {\n  @Input() filterForm!: FormGroup;\n  @Input() type: string = 'expense';\n  @Input() importId!: number;\n  @Input() showActions = true;\n\n  displayedColumns: string[] = [\n    'id',\n    'date',\n    'payee',\n    'paid',\n    'payment_account',\n    'particulars',\n    'status',\n    'processing',\n    'actions',\n    'select'\n  ];\n  dataSource = new MatTableDataSource();\n  isLoading: boolean = false;\n  totalItems!: number;\n  currentPage: number = 1;\n  perPage: number = 25;\n  selection = new SelectionModel<any>(true, []);\n\n  constructor(\n    private requestHelperService: RequestHelperService,\n    private expenseService: ExpenseService,\n  ) {}\n\n  ngOnInit(): void {\n    if (this.importId) {\n      // to select all the records in import\n      this.perPage = 50000;\n    }\n\n    if (this.type === 'bill') {\n      this.displayedColumns.splice(1, 0, 'bill_no');\n    } else {\n      // remove processing column from expenses\n      const index: number = this.displayedColumns.findIndex((col: string) => col === 'processing')\n      this.displayedColumns.splice(index, 1);\n    }\n\n    if (!this.showActions) {\n      this.displayedColumns = this.displayedColumns.filter(col => col !== 'actions' && col !== 'select');\n    }\n  }\n\n  /**\n   * Load the data from api.\n   */\n  public loadData() {\n    const params: any = {\n      with: 'payee,account,paymentMethod,status,lastProcessingStatusUpdate',\n      page: this.currentPage,\n      perPage: this.perPage,\n      ...this.requestHelperService.convertToFormData(this.filterForm.value)\n    };\n    if (this.importId) {\n      params.import_id = this.importId;\n    }\n    this.isLoading = true;\n    this.expenseService.index(params).subscribe({\n      next: (response?: any) => {\n        this.dataSource = new MatTableDataSource(\n          this.dataSource?.data?.concat(response?.data)\n        );\n        this.totalItems = response?.total;\n        this.isLoading = false;\n        // Select all the rows if importId is passed\n        if (this.importId) {\n          this.toggleAllRows();\n        }\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n\n  isAllSelected() {\n    const numSelected = this.selection.selected.length;\n    const numRows = this.dataSource.data.length;\n    return numSelected == numRows;\n  }\n\n  toggleAllRows() {\n    this.isAllSelected()\n      ? this.selection.clear()\n      : this.dataSource.data.forEach((row) => this.selection.select(row));\n  }\n\n  /**\n   * Handle on sort change event.\n   * @param sort\n   */\n  onSortChange(sort: Sort) {\n    if (sort.direction) {\n      this.filterForm\n        .get('sort_by')\n        ?.setValue(`${sort.active}|${sort.direction}`);\n    } else {\n      this.filterForm.get('sort_by')?.setValue(`date|desc`);\n    }\n  }\n\n  /**\n   * Handle on scroll event.\n   */\n  onScroll() {\n    if (this.totalItems > this.dataSource.data.length && !this.isLoading) {\n      this.currentPage += 1;\n      this.loadData();\n    }\n  }\n\n  /**\n   * Reset and reload the data from api.\n   */\n  reload() {\n    this.dataSource = new MatTableDataSource();\n    this.currentPage = 1;\n\n    this.loadData();\n  }\n\n  onProcessingStatusUpdated(update: any, index: number) {\n    const data: any[] = this.dataSource.data;\n    data[index].last_processing_status_update = update;\n    this.dataSource = new MatTableDataSource(data);\n  }\n\n  onUpdated() {\n    this.selection.clear();\n    this.reload();\n  }\n}\n","<div class=\"d-flex justify-content-start gap-2\">\n  <div class=\"table-container\" [style.max-width]=\"selection.isEmpty() ? '100%' : '80%'\">\n    <table\n      mat-table\n      [dataSource]=\"dataSource\"\n      matSort\n      (matSortChange)=\"onSortChange($event)\"\n      class=\"w-100\"\n      aria-describedby=\"Expense List\"\n      infiniteScroll\n      [infiniteScrollDistance]=\"2\"\n      [infiniteScrollThrottle]=\"50\"\n      (scrolled)=\"onScroll()\"\n      [fromRoot]=\"true\"\n    >\n      <ng-container matColumnDef=\"id\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"id\">#</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"bill_no\">\n        <th mat-header-cell *matHeaderCellDef>Bill #</th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.id }}</td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"date\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"date\">Date</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-0\">\n            {{ element?.date | date }}\n          </p>\n          <small *ngIf=\"element?.reference_no\" class=\"text-secondary\"> Ref #: {{ element?.reference_no }}</small>\n        </td>\n      </ng-container>\n      <ng-container matColumnDef=\"payee\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"payee\">Payee</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <div>\n            {{ element.payee?.company_name }}\n          </div>\n        </td>\n      </ng-container>\n      <ng-container matColumnDef=\"total\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"total\">Total</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-0\">\n            {{ element?.total | currency }}\n          </p>\n          <small class=\"text-secondary\" *ngIf=\"element?.payment_method\">\n            {{ element?.payment_method?.title }}\n          </small>\n        </td>\n      </ng-container>\n      <ng-container matColumnDef=\"paid\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"paid\">Paid</th>\n        <td mat-cell *matCellDef=\"let element\" style=\"min-width: 150px\">\n          <p class=\"mb-0\">\n            {{ element?.paid | currency }} / {{ element?.total | currency }}\n          </p>\n          <small class=\"text-secondary\" *ngIf=\"element?.payment_method\">\n            {{ element?.payment_method?.title }}\n          </small>\n        </td>\n      </ng-container>\n      <ng-container matColumnDef=\"payment_account\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"payment_account\">\n          Payment Account\n        </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <span\n            *ngIf=\"element?.account?.title\"\n            class=\"status-pill status-pill-sm status-light-warn\"\n          >\n            {{ element?.account?.title }}\n          </span>\n        </td>\n      </ng-container>\n      <ng-container matColumnDef=\"particulars\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"particulars\">\n          Particulars\n        </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <div>\n            {{ element?.particulars }}\n          </div>\n        </td>\n      </ng-container>\n      <ng-container matColumnDef=\"status\">\n        <th mat-header-cell *matHeaderCellDef>Status</th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.status?.title }}\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"processing\">\n        <th mat-header-cell *matHeaderCellDef>Processing</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">\n          <div style=\"max-width: 150px\">\n            <app-bill-processing-status-updater\n              [expense]=\"element\"\n              (updated)=\"onProcessingStatusUpdated($event, i)\"\n            ></app-bill-processing-status-updater>\n          </div>\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"actions\">\n        <th mat-header-cell *matHeaderCellDef>Actions</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <div\n            class=\"d-flex flex-row justify-content-start align-items-center gap-2\"\n          >\n            <mat-icon\n              class=\"cursor-pointer text-secondary\"\n              [routerLink]=\"['/purchases/expenses/', element?.id, 'edit']\"\n              [queryParams]=\"{ type }\"\n              *ngxPermissionsOnly=\"['expense.update', 'bill.update']\"\n            >\n              edit\n            </mat-icon>\n            <mat-icon\n              class=\"cursor-pointer text-secondary\"\n              [routerLink]=\"['/purchases/expenses/', element?.id, 'view']\"\n              *ngxPermissionsOnly=\"['expense.read', 'bill.read']\"\n            >\n              remove_red_eye\n            </mat-icon>\n\n            <app-expense-void-button\n              [documentType]=\"type\"\n              class=\"mt-1\"\n              [expense]=\"element\"\n              (voided)=\"reload()\"\n            ></app-expense-void-button>\n          </div>\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"select\">\n        <th mat-header-cell *matHeaderCellDef>\n          <mat-checkbox\n            color=\"primary\"\n            (change)=\"$event ? toggleAllRows() : null\"\n            [checked]=\"selection.hasValue() && isAllSelected()\"\n            [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n          >\n          </mat-checkbox>\n        </th>\n        <td mat-cell *matCellDef=\"let row\">\n          <mat-checkbox\n            color=\"primary\"\n            (click)=\"$event.stopPropagation()\"\n            (change)=\"$event ? selection.toggle(row) : null\"\n            [checked]=\"selection.isSelected(row)\"\n          >\n          </mat-checkbox>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n    </table>\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n  </div>\n\n  <app-expense-multi-select-form\n    [selection]=\"selection\"\n    [type]=\"type\"\n    (deleted)=\"onUpdated()\"\n    (saved)=\"onUpdated()\"\n    class=\"w-100\" *ngIf=\"!selection.isEmpty()\" style=\"max-width: 20%\"\n  ></app-expense-multi-select-form>\n</div>\n\n","export enum ExpenseType {\n  TYPE_BILL = 1,\n  TYPE_EXPENSE = 2,\n  TYPE_CHECK = 3,\n  TYPE_PURCHASE_ORDER = 4\n}\n","import {Component, Input, OnInit, ViewChild} from '@angular/core';\nimport { ExpenseListTableComponent } from '../../expense/expense-list-table/expense-list-table.component';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Timeline } from 'ngx-techlify-core';\nimport { ExpenseType } from '../../expense/expense-type.enum';\nimport { ExpenseStatusEnum } from '../../expense/expense-status.enum';\nimport {ExpenseProcessingStatusService} from \"../bill-processing-updates/expense-processing-status.service\";\n\n@Component({\n  selector: 'app-bills-list-page',\n  templateUrl: './bills-list-page.component.html',\n  styleUrls: ['./bills-list-page.component.scss']\n})\nexport class BillsListPageComponent implements OnInit {\n  @Input() showFilters = true;\n  @Input() showActions = true;\n  @Input() purchasePaymentId!: number;\n  @Input() statusIds: number[] = [\n    ExpenseStatusEnum.STATUS_RECEIVED,\n    ExpenseStatusEnum.STATUS_PARTIAL_PAID,\n    ExpenseStatusEnum.STATUS_CANCELLED\n  ];\n\n  @ViewChild(ExpenseListTableComponent) expenseListTableComponent!: ExpenseListTableComponent;\n\n  filterForm: FormGroup;\n  filterConfig: any = {\n    search: { placeholder: 'Search Reference No, Particulars, etc.' },\n    duration: { label: 'Select Timeline' },\n    status_ids: { multiple: true },\n  };\n\n  constructor(\n    private formBuilder: FormBuilder,\n    public dialog: MatDialog,\n    private expenseProcessingStatusService: ExpenseProcessingStatusService\n  ) {\n    this.filterForm = this.formBuilder.group({\n      search: [''],\n      sort_by: ['date|desc'],\n      duration: [this.showFilters ? Timeline.ALL : Timeline.THIS_WEEK],\n      date_from: [''],\n      date_to: [''],\n      payment_method_ids: [''],\n      payment_account_ids: [''],\n      status_ids: [\n        this.statusIds\n      ],\n      type_ids: [ExpenseType.TYPE_BILL],\n      purchase_payment_ids: [''],\n    });\n  }\n\n  ngOnInit(): void {\n    if (this.purchasePaymentId) {\n      this.filterForm.get('purchase_payment_ids')?.setValue(this.purchasePaymentId, { emitEvent: false });\n    }\n    if (this.statusIds) {\n      this.filterForm.get('status_ids')?.setValue(this.statusIds, { emitEvent: false });\n    }\n    if (!this.showFilters) {\n      setTimeout(() => {\n        this.expenseListTableComponent.reload();\n      })\n    }\n    this.cacheExpenseProcessingStatuses();\n  }\n\n  /**\n   * Handle the filter change event.\n   *\n   * @param value\n   */\n  onFilterUpdated(value: any) {\n    this.expenseListTableComponent.reload();\n  }\n\n  cacheExpenseProcessingStatuses() {\n    this.expenseProcessingStatusService.index({}, true).subscribe({\n      next: (response: any) => {},\n    });\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n    <div class=\"d-flex justify-content-center align-items-center gap-3\">\n      <h2 class=\"mb-0\">Bills</h2>\n      <ng-container *ngIf=\"showActions\">\n        <mat-icon color=\"primary\" class=\"cursor-pointer\" routerLink=\"/finance/bills/create\"\n                  [queryParams]=\"{ type: 'bill' }\" *ngxPermissionsOnly=\"['bill.create']\">\n          add\n        </mat-icon>\n      </ng-container>\n    </div>\n    <form [formGroup]=\"filterForm\" class=\"d-flex justify-content-start align-items-center gap-2\" *ngIf=\"showFilters\">\n      <app-techlify-filter [filterForm]=\"filterForm\" [filterConfig]=\"filterConfig\"\n                           (filterUpdated)=\"onFilterUpdated($event)\"\n      ></app-techlify-filter>\n    </form>\n  </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-2\">\n  <mat-card-content class=\"p-0\">\n    <app-expense-list-table #expenseListTableComponent [filterForm]=\"filterForm\" [showActions]=\"showActions\"\n                            type=\"bill\"></app-expense-list-table>\n  </mat-card-content>\n</mat-card>\n","import {Component, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {PaymentService} from '../../sale/payment/payment.service';\nimport {FormBuilder, FormGroup} from '@angular/forms';\nimport {Timeline} from 'ngx-techlify-core';\n\n@Component({\n  selector: 'app-purchase-payment-view',\n  templateUrl: './purchase-payment-view.component.html',\n  styleUrl: './purchase-payment-view.component.css'\n})\nexport class PurchasePaymentViewComponent implements OnInit {\n  id!: number;\n  payment: any;\n  isLoading = false;\n  filterForm: FormGroup;\n\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private paymentService: PaymentService,\n    private formBuilder: FormBuilder\n  ) {\n    this.id = parseInt(this.activatedRoute.snapshot.params['id']);\n\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.ALL],\n      date_from: [''],\n      date_to: [''],\n    });\n  }\n\n  ngOnInit() {\n    if (this.id) {\n      this.loadPayment();\n    }\n  }\n\n  private loadPayment() {\n    const params: any = {\n      with: 'paymentExpenses.expense.payee'\n    };\n    this.isLoading = true;\n    this.paymentService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.isLoading = false;\n        this.payment = response?.item;\n      },\n      error: () => {\n        this.isLoading = false;\n      }\n    });\n  }\n\n}\n","<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n\n<div class=\"d-flex justify-content-start align-items-start gap-3 mt-3\" *ngIf=\"payment\">\n  <div style=\"width: calc(300px)\" class=\"d-flex flex-column gap-3\">\n    <app-payment-information-card [payment]=\"payment\"></app-payment-information-card>\n    <app-entity-files-view-all viewMode=\"timeline\" *ngIf=\"payment?.id\" [entityId]=\"payment?.id\"\n                               entityType=\"PurchasePayment\" fileDropperHeight=\"250px\" title=\"Document\">\n    </app-entity-files-view-all>\n  </div>\n\n  <div style=\"width: calc(100% - 300px - 1rem)\" class=\"d-flex flex-column gap-2\">\n    <app-bills-list-page [showFilters]=\"false\" [showActions]=\"false\" [purchasePaymentId]=\"payment?.id\"\n                         [statusIds]=\"[]\"></app-bills-list-page>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport {PurchaseDashboardComponent} from \"./purchase-dashboard/purchase-dashboard.component\";\nimport {\n  PurchasePaymentsListPageComponent\n} from './purchase-payments-list-page/purchase-payments-list-page.component';\nimport {\n  PurchasePaymentsFormPageComponent\n} from './purchase-payments-form-page/purchase-payments-form-page.component';\nimport {PurchasePaymentViewComponent} from './purchase-payment-view/purchase-payment-view.component';\n\nconst routes: Routes = [\n  {\n    path: 'payments/:id/view',\n    component: PurchasePaymentViewComponent\n  },\n  {\n    path: 'payments/:id/edit',\n    component: PurchasePaymentsFormPageComponent\n  },\n  {\n    path: 'payments/create',\n    component: PurchasePaymentsFormPageComponent\n  },\n  {\n    path: 'payment-vouchers',\n    loadChildren: () => import('./payment-voucher/payment-voucher.module').then(mod => mod.PaymentVoucherModule)\n  },\n  {\n    path: 'suppliers',\n    loadChildren: () => import('techlify-inventory-common').then(mod => mod.SupplierModule)\n  },\n  {\n    path: 'bills',\n    loadChildren: () => import('../bills/bills.module').then(mod => mod.BillsModule)\n  },\n  {\n    path: 'expenses',\n    loadChildren: () => import('../expense/expense.module').then(mod => mod.ExpenseModule)\n  },\n  {\n    path: 'payments',\n    component: PurchasePaymentsListPageComponent\n  },\n  {\n    path: 'dashboard',\n    component: PurchaseDashboardComponent\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class PurchaseRoutingModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ExpenseLineItemService extends TechlifyService {\n  constructor(protected httpService: HttpService) {\n    super(httpService, 'expense-line-items');\n  }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Expense } from '../expense.model';\nimport { ExpenseLineItem } from '../expense-line-item.model';\nimport { ExpenseLineItemService } from '../expense-line-item.service';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup } from '@angular/forms';\nimport { BehaviorSubject, Observable, Subject, switchMap, takeUntil, tap } from 'rxjs';\n\n@Component({\n  selector: 'app-expense-line-item-listing',\n  templateUrl: './expense-line-item-listing.component.html',\n  styleUrls: ['./expense-line-item-listing.component.scss']\n})\nexport class ExpenseLineItemListingComponent implements OnInit, OnDestroy {\n\n  @Input() expense: Expense | undefined;\n\n  rows!: FormArray;\n  form!: FormGroup;\n  dataSource = new BehaviorSubject<AbstractControl[]>([]);\n  expenseLineItems: ExpenseLineItem[] = [];\n  private unsubscribe = new Subject<void>()\n\n  displayedColumns: string[] = [\n    'id',\n    'category_id',\n    'description',\n    'quantity',\n    'amount',\n    'actions'\n  ];\n\n  constructor(\n    private expenseLineItemService: ExpenseLineItemService,\n    private fb: FormBuilder\n  ) {\n    this.rows = this.fb.array([]);\n    this.form = this.fb.group({ 'expenseLineItems': this.rows });\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribe.next();\n  }\n\n  loadData(): void {\n    if (this.expense) {\n      this.rows.clear();\n      this.expenseLineItemService.index({\n        expense_id: this.expense?.id\n      }).subscribe((data: any) => {\n        this.expenseLineItems = [...(<ExpenseLineItem[]>data.data)];\n        this.expenseLineItems.forEach((item: ExpenseLineItem) => {\n          this.addItem(item);\n        })\n      });\n    }\n  }\n\n  addItem(item?: ExpenseLineItem, noUpdate?: boolean): void {\n    let formGroup: FormGroup = this.fb.group({\n      expense_id: [this.expense ? this.expense?.id : 0],\n      category_id: [item && item.category_id ? item?.category_id : 0],\n      description: [item && item.description ? item.description : \"\"],\n      quantity: [item && item.quantity ? item.quantity : 0],\n      amount: [item && item.amount ? item.amount : 0],\n      id: [item && item.id ? item.id : undefined],\n      /*creator_id: [item && item.creator_id ? item.creator_id : undefined],\n      client_id: [item && item.client_id ? item.client_id : undefined],\n      created_at: undefined,\n      updated_at: undefined,*/\n    });\n\n    formGroup.valueChanges.pipe(\n      switchMap(\n        (formValue) => {\n          if (formValue.category_id && formValue.description && formValue.amount) {\n            if (formValue.id) {\n              return this.expenseLineItemService.update(formValue);\n            } else {\n              this.expenseLineItemService.store(formValue).subscribe(() => {\n                this.loadData();\n              });\n            }\n          }\n          return new Observable();\n        }),//*/\n      takeUntil(this.unsubscribe)\n    )\n      .subscribe();\n\n    this.rows.push(\n      formGroup\n    );\n\n    if (!noUpdate) { this.updateView(); }\n  }\n\n  removeItem(index: number): void {\n    let item = this.rows.at(index).value;\n\n    let formValue = item;\n\n    if (formValue.id) {\n      this.expenseLineItemService.delete(item).subscribe();\n    }\n    this.rows.removeAt(index);\n    this.updateView();\n  }\n\n  updateView() {\n    this.dataSource.next(this.rows.controls);\n  }\n}\n","<div class=\"expense-line-item-form h-100\">\n    <form [formGroup]=\"form\">\n        <table mat-table [dataSource]=\"dataSource\" formArrayName=\"expenseLineItems\" class=\"mat-elevation-z8\" matSort>\n            <!--- Note that these columns can be defined in any order.\n                The actual rendered columns are set as a property on the row definition\" -->\n\n            <!-- Position Column -->\n\n            <ng-container matColumnDef=\"id\">\n                <th mat-header-cell *matHeaderCellDef mat-sort-header=\"id\">#</th>\n                <td mat-cell *matCellDef=\"let element; let index = index\" [formGroupName]=\"index\">{{ element.id }}</td>\n            </ng-container>\n            <ng-container matColumnDef=\"category_id\">\n                <th mat-header-cell *matHeaderCellDef mat-sort-header=\"category_id\">\n                    Expense Category\n                </th>\n                <td mat-cell *matCellDef=\"let element; let index = index\" [formGroupName]=\"index\">\n                    <mat-form-field\n                        appearance=\"fill\"\n                        floatLabel=\"always\"\n                    >\n                        <app-searchable-selector matInput formControlName=\"category_id\" apiUrl=\"api/expense-categories\"\n                            titleField=\"name\" sortBy=\"name|asc\">\n                        </app-searchable-selector>\n                    </mat-form-field>\n                </td>\n            </ng-container>\n            <ng-container matColumnDef=\"description\">\n                <th mat-header-cell *matHeaderCellDef mat-sort-header=\"description\">\n                    Description\n                </th>\n                <td mat-cell *matCellDef=\"let element; let index = index\" [formGroupName]=\"index\">\n                    <mat-form-field\n                        class=\"col-offset-2 offset-sm-2\"\n                        appearance=\"fill\"\n                        floatLabel=\"always\"\n                    >\n                        <input type=\"text\" matInput formControlName=\"description\" placeholder=\"description\">\n                    </mat-form-field>\n                </td>\n            </ng-container>\n            <ng-container matColumnDef=\"quantity\">\n                <th mat-header-cell *matHeaderCellDef mat-sort-header=\"quantity\">\n                    Quantity\n                </th>\n                <td mat-cell *matCellDef=\"let element; let index = index\" [formGroupName]=\"index\">\n                    <mat-form-field\n                        class=\"col-offset-2 offset-sm-2\"\n                        appearance=\"fill\"\n                        floatLabel=\"always\"\n                    >\n                        <input type=\"number\" matInput formControlName=\"quantity\" placeholder=\"Quantity\">\n                    </mat-form-field>\n                </td>\n            </ng-container>\n            <ng-container matColumnDef=\"amount\">\n                <th mat-header-cell *matHeaderCellDef mat-sort-header=\"amount\">\n                    Amount\n                </th>\n                <td mat-cell *matCellDef=\"let element; let index = index\" [formGroupName]=\"index\">\n                    <mat-form-field\n                        class=\"col-offset-2 offset-sm-2\"\n                        appearance=\"fill\"\n                        floatLabel=\"always\"\n                    >\n                        <input type=\"number\" matInput formControlName=\"amount\" placeholder=\"Amount\">\n                    </mat-form-field>\n                </td>\n            </ng-container>\n            <ng-container matColumnDef=\"actions\">\n                <th mat-header-cell *matHeaderCellDef>\n                </th>\n                <td mat-cell *matCellDef=\"let element; let index = index\" [formGroupName]=\"index\">\n                    <div>\n                        <button mat-icon-button aria-label=\"Delete Icon\" (click)=\"removeItem(index)\">\n                            <mat-icon aria-hidden=\"false\" aria-label=\"delete\">delete</mat-icon>\n                        </button>\n                    </div>\n                </td>\n            </ng-container>\n\n            <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n            <tr mat-row *matRowDef=\"let row; let i = index; columns: displayedColumns\"></tr>\n        </table>\n        <div>\n            <button type=\"button\" (click)=\"addItem()\">\n                <mat-icon>plus</mat-icon>\n                Add\n            </button>\n            <button type=\"button\">\n                <mat-icon>clear</mat-icon>\n                Clear\n            </button>\n        </div>\n    </form>\n</div>\n","import { Component, Output, EventEmitter, Inject } from '@angular/core';\nimport {\n  DataManager,\n  FormValidatorService,\n  AlertService,\n  ErrorHandlerService\n} from 'ngx-techlify-core';\n\nimport {\n  FormGroup,\n  FormBuilder,\n  Validators,\n  FormControl\n} from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { NgxSpinnerService } from 'ngx-spinner';\nimport { Expense } from '../expense.model';\nimport { ExpenseService } from '../expense.service';\n\nconst errorMessages: any = {\n  reference: {\n    required: 'Reference is required'\n  },\n  payee: {\n    address: 'Payee is required'\n  }\n};\n\n/**\n * Controller that add a new expense\n *\n * @author Floyd Kisson\n * @since 20210722\n */\n@Component({\n  selector: 'app-expense-form-dialog',\n  templateUrl: './expense-form-dialog.component.html',\n  styleUrls: ['./expense-form-dialog.component.scss']\n})\nexport class ExpenseFormDialogComponent {\n  @Output() saved = new EventEmitter<Expense>();\n\n  expenseForm: FormGroup;\n  isWorking = false;\n  isUpdate: boolean = false;\n  expense: Expense | undefined;\n\n  constructor(\n    private formValidatorService: FormValidatorService,\n    private expenseService: ExpenseService,\n    private alertService: AlertService,\n    private errorService: ErrorHandlerService,\n    private spinnerService: NgxSpinnerService,\n    private fb: FormBuilder,\n    public dialogRef: MatDialogRef<ExpenseFormDialogComponent>,\n    @Inject(MAT_DIALOG_DATA) public data: any\n  ) {\n    this.expenseForm = this.fb.group({\n      id: [''],\n      reference_no: [''],\n      date: [''],\n      payee_id: [''],\n      payeePerson: [''],\n      total: [''],\n      payment_account_id: [''],\n      payment_method_id: [''],\n      particulars: ['']\n    });\n  }\n\n  async save() {\n    this.spinnerService.show();\n    if (!this.expenseForm.valid) {\n      this.alertService.addAlert('Please Fill All Required Fields', 'warn');\n      this.expenseForm.markAllAsTouched();\n      return;\n    }\n\n    let stockIntake = this.expenseForm.value;\n\n    try {\n      this.spinnerService.show();\n      this.isWorking = true;\n      let result = this.isUpdate\n        ? this.expenseService.update(stockIntake)\n        : this.expenseService.store(stockIntake);\n      result.subscribe(() => {\n        this.close();\n      });\n    } catch (error) {\n      this.errorService.handleError(error);\n    } finally {\n      this.isWorking = false;\n      this.spinnerService.hide();\n    }\n  }\n\n  close() {\n    this.saved.emit();\n  }\n\n  /** Method to evaluate form fields*/\n  isFieldValid(field: string) {\n    return this.formValidatorService.isFieldValid(field, this.expenseForm);\n  }\n\n  /** Method to find error in form fields*/\n  getErrorMessage(field: string) {\n    return this.formValidatorService.getErrorMessage(\n      field,\n      this.expenseForm,\n      errorMessages\n    );\n  }\n\n  public setData(expense: Expense) {\n    this.expense = expense;\n    this.expenseForm.patchValue(expense);\n\n    this.isUpdate = true;\n  }\n}\n","<div id=\"expense-add-form\">\n  <form\n    class=\"form-horizontal form-medium form-centered form-bordered\"\n    [formGroup]=\"expenseForm\"\n    (ngSubmit)=\"save()\"\n  >\n    <h2 class=\"form-title text-center\">\n      <span *ngIf=\"!expenseForm.get('id')?.value\">Add</span>\n      <span *ngIf=\"expenseForm.get('id')?.value\">Edit</span>\n      Expense\n    </h2>\n\n    <hr />\n\n    <div fxLayout=\"row\">\n      <div id=\"left-column\" fxFlex=\"80\">\n        <app-expense-line-item-listing [expense]=\"expense\"></app-expense-line-item-listing>\n      </div>\n      <div id=\"right-column\" fxFlex=\"20\">\n        <div>\n          <div>\n            <mat-form-field\n              class=\"col-offset-2 offset-sm-2\"\n              appearance=\"fill\"\n              floatLabel=\"always\"\n            >\n              <mat-label>Payee</mat-label>\n              <app-searchable-selector\n                formControlName=\"payee_id\"\n                apiUrl=\"api/people\"\n                titleField=\"name\"\n                sortBy=\"name|asc\"\n              >\n              </app-searchable-selector>\n              <mat-error *ngIf=\"isFieldValid('payee_id')\">{{\n                getErrorMessage('payee_id')\n              }}</mat-error>\n            </mat-form-field>\n          </div>\n          <div>\n            <mat-form-field\n              class=\"col-offset-2 offset-sm-2\"\n              appearance=\"fill\"\n              floatLabel=\"always\"\n            >\n              <mat-label>Payment Account</mat-label>\n              <app-searchable-selector\n                formControlName=\"payment_account_id\"\n                apiUrl=\"api/accounts\"\n                titleField=\"title\"\n                sortBy=\"title|asc\"\n              >\n              </app-searchable-selector>\n              <mat-error *ngIf=\"isFieldValid('payment_account_id')\">{{\n                getErrorMessage('payment_account_id')\n              }}</mat-error>\n            </mat-form-field>\n          </div>\n          <div>\n            <mat-form-field\n              class=\"col-offset-2 offset-sm-2\"\n              appearance=\"fill\"\n              floatLabel=\"always\"\n            >\n              <mat-label>Payment Method</mat-label>\n              <app-searchable-selector\n                formControlName=\"payment_method_id\"\n                apiUrl=\"api/payment-methods\"\n                titleField=\"title\"\n                sortBy=\"title|asc\"\n              >\n              </app-searchable-selector>\n              <mat-error *ngIf=\"isFieldValid('payment_method_id')\">{{\n                getErrorMessage('payment_method_id')\n              }}</mat-error>\n            </mat-form-field>\n          </div>\n          <div>\n            <mat-form-field\n              class=\"col-offset-2 offset-sm-2\"\n              appearance=\"fill\"\n              floatLabel=\"always\"\n            >\n              <mat-label>Date</mat-label>\n              <input\n                matInput\n                formControlName=\"date\"\n                placeholder=\"Date\"\n                type=\"date\"\n                autocomplete=\"off\"\n                required\n              />\n              <mat-error *ngIf=\"isFieldValid('date')\">{{\n                getErrorMessage('date')\n              }}</mat-error>\n            </mat-form-field>\n          </div>\n          <div>\n            <mat-form-field\n              class=\"col-offset-2 offset-sm-2\"\n              appearance=\"fill\"\n              floatLabel=\"always\"\n            >\n              <mat-label>Reference Number</mat-label>\n              <input\n                matInput\n                formControlName=\"reference_no\"\n                placeholder=\"Reference Number\"\n                type=\"text\"\n                autocomplete=\"off\"\n                required\n              />\n              <mat-error *ngIf=\"isFieldValid('reference_no')\">{{\n                getErrorMessage('reference_no')\n              }}</mat-error>\n            </mat-form-field>\n          </div>\n          <div>\n            <mat-form-field\n              class=\"col-offset-2 offset-sm-2\"\n              appearance=\"fill\"\n              floatLabel=\"always\"\n            >\n              <mat-label>Particulars</mat-label>\n              <input\n                matInput\n                formControlName=\"particulars\"\n                placeholder=\"Particulars\"\n                type=\"text\"\n                autocomplete=\"off\"\n                required\n              />\n              <mat-error *ngIf=\"isFieldValid('particulars')\">{{\n                getErrorMessage('particulars')\n              }}</mat-error>\n            </mat-form-field>\n          </div>\n          <div>\n            <div class=\"form-group row\">\n              <div class=\"col-sm-12 text-center\">\n                <button\n                  class=\"btn btn-lg btn-primary border border-secondary\"\n                  mat-flat-button\n                  type=\"button\"\n                  (click)=\"close()\"\n                  [disabled]=\"isWorking\"\n                >\n                  Cancel\n                </button>\n                <button\n                  class=\"btn btn-lg btn-primary\"\n                  type=\"submit\"\n                  mat-raised-button\n                  [disabled]=\"isWorking\"\n                >\n                  Save\n                </button>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </form>\n</div>\n","import { Component, ViewChild } from '@angular/core';\nimport { FormGroup, FormBuilder } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ExpenseListTableComponent } from '../expense-list-table/expense-list-table.component';\nimport { RequestHelperService, Timeline } from 'ngx-techlify-core';\nimport { ExpenseType } from '../expense-type.enum';\nimport { ExpenseService } from '../expense.service';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n  selector: 'app-expense-listing',\n  templateUrl: './expense-listing.component.html',\n  styleUrls: ['./expense-listing.component.scss']\n})\nexport class ExpenseListingComponent {\n  @ViewChild(ExpenseListTableComponent)\n  expenseListTableComponent!: ExpenseListTableComponent;\n\n  filterForm: FormGroup;\n  filterConfig: any = {\n    search: { placeholder: 'Search Reference No, Particulars, etc.' },\n    duration: { label: 'Select Timeline' }\n  };\n  isExporting!: boolean;\n  importId!: number;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    public dialog: MatDialog,\n    private expenseService: ExpenseService,\n    private requestHelperService: RequestHelperService,\n    private activatedRoute: ActivatedRoute\n  ) {\n    if (this.activatedRoute.snapshot.params?.['import_id']) {\n      this.importId = parseInt(\n        this.activatedRoute.snapshot.params?.['import_id']\n      );\n    }\n\n    this.filterForm = this.formBuilder.group({\n      search: [''],\n      sort_by: ['date|desc'],\n      duration: [Timeline.THIS_WEEK],\n      date_from: [''],\n      date_to: [''],\n      payment_method_ids: [''],\n      payment_account_ids: [''],\n      type_ids: [ExpenseType.TYPE_EXPENSE],\n      category_ids: [''],\n      payee_ids: ['']\n    });\n  }\n\n  /**\n   * Handle the filter change event.\n   *\n   * @param value\n   */\n  onFilterUpdated(value: any) {\n    this.expenseListTableComponent.reload();\n  }\n\n  /**\n   * Export the expense list in Excel format.\n   */\n  export() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value)\n    };\n    params.perPage = 50000;\n    params.with = 'customer';\n    this.isExporting = true;\n    this.expenseService.export(params).subscribe({\n      next: (response: any) => {\n        this.isExporting = false;\n        window.open(response?.item?.file_link, '_blank');\n      },\n      error: () => (this.isExporting = false)\n    });\n  }\n}\n","<mat-card class=\"mb-3\">\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n    <div class=\"d-flex justify-content-center align-items-center gap-2\">\n      <h2 class=\"mb-0\">Expenses</h2>\n      <mat-icon *ngxPermissionsOnly=\"['expense.create']\" color=\"primary\" class=\"cursor-pointer\"\n                routerLink=\"create\">\n        add\n      </mat-icon>\n      <mat-icon routerLink=\"import\" *ngxPermissionsOnly=\"['expense.create']\"\n                class=\"cursor-pointer\">\n        upload\n      </mat-icon>\n      <i (click)=\"export()\" *ngxPermissionsOnly=\"['expense.export']\"\n         class=\"cursor-pointer fas fa-file-excel\"></i>\n    </div>\n    <app-techlify-filter\n      [filterForm]=\"filterForm\"\n      [filterConfig]=\"filterConfig\"\n      (filterUpdated)=\"onFilterUpdated($event)\"\n    ></app-techlify-filter>\n  </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-2\">\n  <mat-card-content class=\"p-0\">\n    <app-expense-list-table\n      #expenseListTableComponent\n      [filterForm]=\"filterForm\"\n      [importId]=\"importId\"\n    ></app-expense-list-table>\n  </mat-card-content>\n</mat-card>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { MatCard, MatCardContent } from \"@angular/material/card\";\nimport { TechlifyListComponent } from \"ngx-techlify-core\";\nimport {\n  MatCell,\n  MatCellDef,\n  MatColumnDef,\n  MatHeaderCell,\n  MatHeaderCellDef, MatHeaderRow,\n  MatHeaderRowDef, MatRow, MatRowDef,\n  MatTable\n} from \"@angular/material/table\";\nimport { CurrencyPipe, DatePipe } from \"@angular/common\";\nimport { MatDivider } from \"@angular/material/divider\";\n\n@Component({\n  selector: 'app-expense-line-items',\n  standalone: true,\n  imports: [\n    MatCard,\n    MatCardContent,\n    MatTable,\n    MatColumnDef,\n    MatHeaderCell,\n    MatCell,\n    MatHeaderCellDef,\n    MatCellDef,\n    MatHeaderRowDef,\n    MatRowDef,\n    MatRow,\n    MatHeaderRow,\n    CurrencyPipe,\n    DatePipe,\n    MatDivider\n  ],\n  templateUrl: './expense-line-items.component.html',\n  styleUrl: './expense-line-items.component.scss'\n})\nexport class ExpenseLineItemsComponent extends TechlifyListComponent implements OnInit {\n  @Input() expense!: any;\n  displayedColumns: string[] = ['#', 'Category', 'Amount', 'Description', 'Created By'];\n\n  constructor() {\n    super();\n    this.lastPage = 0;\n  }\n\n  ngOnInit(): void {\n    if (this.expense) {\n      this.loadData();\n    }\n  }\n\n  override loadData(): void {\n    this.models = this.expense?.line_items;\n  }\n}\n","<mat-card>\n  <mat-card-content>\n    <h3 class=\"mb-0\">Line Items</h3>\n  </mat-card-content>\n  <mat-card-content class=\"p-0\">\n    <table mat-table [dataSource]=\"models\" class=\"w-100\">\n\n      <ng-container matColumnDef=\"#\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let element; let i = index;\"> {{ i + 1}} </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Category\">\n        <th mat-header-cell *matHeaderCellDef> Category </th>\n        <td mat-cell *matCellDef=\"let element\"> {{ element?.category?.title }} </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Amount\">\n        <th mat-header-cell *matHeaderCellDef> Amount </th>\n        <td mat-cell *matCellDef=\"let element\"> {{ element?.amount | currency }} </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Description\">\n        <th mat-header-cell *matHeaderCellDef> Description </th>\n        <td mat-cell *matCellDef=\"let element\"> {{ element?.description }} </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Created By\">\n        <th mat-header-cell *matHeaderCellDef> Created By </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-0\">{{ element?.creator?.name }} </p>\n          <small class=\"text-secondary\">{{ element?.created_at | date }}</small>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n  </mat-card-content>\n  <mat-divider></mat-divider>\n  <mat-card-content class=\"pt-3\">\n    <strong>Total : {{ expense?.total | currency }}</strong>\n  </mat-card-content>\n</mat-card>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef\n} from '@angular/core';\nimport { ExpenseService } from '../expense.service';\nimport {MatDialog, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle} from '@angular/material/dialog';\nimport {MatIcon} from \"@angular/material/icon\";\nimport {MatButton} from \"@angular/material/button\";\n\n@Component({\n  selector: 'app-expense-delete-button',\n  templateUrl: './expense-delete-button.component.html',\n  styleUrls: ['./expense-delete-button.component.scss'],\n  imports: [\n    MatIcon,\n    MatDialogTitle,\n    MatDialogContent,\n    MatDialogActions,\n    MatButton,\n    MatDialogClose\n  ],\n  standalone: true\n})\nexport class ExpenseDeleteButtonComponent {\n  @Input() expense: any;\n  @Output() deleted: EventEmitter<any> = new EventEmitter<any>();\n  isDeleting: boolean = false;\n\n  constructor(\n    private expenseService: ExpenseService,\n    private matDialog: MatDialog\n  ) {}\n\n  /**\n   * Delete the expense record.\n   */\n  deleteExpense() {\n    this.isDeleting = true;\n    this.expenseService.delete(this.expense).subscribe({\n      next: () => {\n        this.isDeleting = false;\n        this.deleted.emit();\n      },\n      error: () => (this.isDeleting = false)\n    });\n  }\n\n  showConfirmDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef);\n  }\n}\n","<mat-icon\n  (click)=\"showConfirmDialog(deleteExpenseTemplate)\"\n  class=\"cursor-pointer text-secondary\"\n>\n  delete\n</mat-icon>\n\n<ng-template #deleteExpenseTemplate>\n  <h3 mat-dialog-title>Delete Expense</h3>\n  <div mat-dialog-content>\n    <p>Are you sure you want to delete the expense?</p>\n    <p>All the associated purchase payment records will be deleted as well.</p>\n  </div>\n  <div mat-dialog-actions class=\"d-flex justify-content-end align-items-center gap-2\">\n    <button\n      [disabled]=\"isDeleting\"\n      mat-flat-button\n      type=\"button\"\n      mat-dialog-close\n    >\n      Cancel\n    </button>\n    <button\n      [disabled]=\"isDeleting\"\n      mat-raised-button\n      color=\"warn\"\n      type=\"button\"\n      (click)=\"deleteExpense()\"\n    >\n      Delete\n    </button>\n  </div>\n</ng-template>\n","import {Component, Input} from '@angular/core';\nimport {DatePipe, Location, NgIf} from \"@angular/common\";\nimport {MatAnchor} from \"@angular/material/button\";\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {MatIcon} from \"@angular/material/icon\";\nimport {NgxPermissionsModule} from \"ngx-permissions\";\nimport {RouterLink} from \"@angular/router\";\nimport {ExpenseDeleteButtonComponent} from \"../expense-delete-button/expense-delete-button.component\";\nimport {AlertService} from \"ngx-techlify-core\";\n\n@Component({\n  selector: 'app-expense-information',\n  standalone: true,\n  imports: [\n    DatePipe,\n    MatAnchor,\n    MatCard,\n    MatCardContent,\n    MatIcon,\n    NgIf,\n    NgxPermissionsModule,\n    RouterLink,\n    ExpenseDeleteButtonComponent\n  ],\n  templateUrl: './expense-information.component.html',\n  styleUrl: './expense-information.component.scss'\n})\nexport class ExpenseInformationComponent {\n  @Input() expense: any;\n  @Input() showActions = true;\n\n  constructor(\n    private alertService: AlertService,\n    private location: Location\n  ) {\n  }\n\n  onDelete() {\n    this.alertService.addAlert('Expense deleted successfully!', 'success');\n    this.location.back();\n  }\n\n}\n","<mat-card style=\"width: calc(100%)\">\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n    <div class=\"d-flex justify-content-start align-items-center gap-2\">\n      <h3 class=\"mb-0 text-capitalize\">{{ expense?.type?.title }} # {{ expense?.id }}</h3>\n      <div class=\"d-flex justify-content-start align-items-center gap-2\" *ngIf=\"showActions\">\n        <mat-icon\n          [routerLink]=\"['../edit']\"\n          class=\"cursor-pointer text-secondary\"\n          [queryParams]=\"{ type: expense?.type?.title?.toLowerCase() }\"\n          *ngxPermissionsOnly=\"['expense.update', 'bill.update']\"\n        >\n          edit\n        </mat-icon>\n        <app-expense-delete-button\n          [expense]=\"expense\" (deleted)=\"onDelete()\"\n          *ngxPermissionsOnly=\"['expense.delete', 'bill.delete']\"\n        ></app-expense-delete-button>\n        <a class=\"text-decoration-none\"\n           routerLink=\"/purchases/payments/create\"\n           [queryParams]=\"{ bill_id: expense?.id }\"\n           mat-stroked-button color=\"primary\"\n           *ngxPermissionsOnly=\"['purchase_payment.create']\"\n        >\n          <mat-icon>add</mat-icon>\n          Payment\n        </a>\n        <a class=\"text-decoration-none\"\n           routerLink=\"/purchases/payment-vouchers/create\"\n           [queryParams]=\"{ bill_id: expense?.id }\"\n           mat-stroked-button color=\"primary\"\n           *ngxPermissionsOnly=\"['payment_voucher.create']\"\n        >\n          <mat-icon>add</mat-icon>\n          Payment Voucher\n        </a>\n      </div>\n    </div>\n    <div class=\"d-flex justify-content-end align-items-start gap-3\">\n      <div *ngIf=\"expense?.payee\" class=\"d-flex flex-column gap-1\">\n        <small class=\"text-secondary\">Payee</small>\n        <strong>{{ expense?.payee?.company_name }}</strong>\n      </div>\n      <div *ngIf=\"expense?.payment_method\" class=\"d-flex flex-column gap-1\">\n        <small class=\"text-secondary\">Payment Method</small>\n        <p class=\"mb-0\">{{ expense?.payment_method?.title }}</p>\n      </div>\n      <div *ngIf=\"expense?.reference_no\" class=\"d-flex flex-column gap-1\">\n        <small class=\"text-secondary\">Reference No.</small>\n        <p class=\"mb-0\">{{ expense?.reference_no }}</p>\n      </div>\n      <div *ngIf=\"expense?.account\" class=\"d-flex flex-column gap-1\">\n        <small class=\"text-secondary\">Payment Account</small>\n        <p class=\"mb-0\">{{ expense?.account?.title }}</p>\n      </div>\n      <div *ngIf=\"expense?.particulars\" class=\"d-flex flex-column gap-1\">\n        <small class=\"text-secondary\">Particulars</small>\n        <p class=\"mb-0\">{{ expense?.particulars }}</p>\n      </div>\n      <div *ngIf=\"expense?.creator\" class=\"d-flex flex-column gap-1\">\n        <small class=\"text-secondary\">Created by {{ expense?.creator?.name }}</small>\n        <p class=\"mb-0\">{{ expense?.created_at | date }}</p>\n      </div>\n    </div>\n  </mat-card-content>\n</mat-card>\n","import { Component } from '@angular/core';\nimport { ExpenseService } from '../expense.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { ExpenseType } from \"../expense-type.enum\";\nimport { TechlifyTaggerTagFormConfigModel } from \"ngx-techlify-core\";\n\n@Component({\n  selector: 'app-expense-view',\n  templateUrl: './expense-view.component.html',\n  styleUrls: ['./expense-view.component.scss']\n})\nexport class ExpenseViewComponent {\n  expense!: any;\n  isWorking: boolean = false;\n  id!: number;\n  techlifyTagConfig: TechlifyTaggerTagFormConfigModel = new TechlifyTaggerTagFormConfigModel();\n\n  constructor(\n    private expenseService: ExpenseService,\n    private activatedRoute: ActivatedRoute,\n  ) {\n    this.activatedRoute.params.subscribe((params: any) => {\n      if (params.id) {\n        this.id = parseInt(params.id);\n        // load expense data\n        this.loadData();\n      }\n    });\n  }\n\n\n  protected readonly ExpenseType = ExpenseType;\n\n  private loadData() {\n    const params: any = {\n      with: 'lineItems.category,lineItems.creator,payee,type,paymentMethod,account,creator'\n    };\n    this.isWorking = true;\n    this.expenseService\n      .show(this.id, params)\n      .subscribe({\n        next: (response: any) => {\n          this.isWorking = false;\n          this.expense = response;\n        },\n        error: () => (this.isWorking = false)\n      });\n  }\n}\n","<mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n\n<div *ngIf=\"expense\" class=\"d-flex flex-wrap gap-2\">\n  <app-expense-information\n    class=\"w-100\"\n    [expense]=\"expense\"\n  ></app-expense-information>\n\n  <app-expense-line-items\n    [expense]=\"expense\"\n    style=\"width: calc(50% - 0.5rem)\"\n  ></app-expense-line-items>\n\n  <app-entity-files-view-all\n    style=\"width: calc(50%)\"\n    [entityId]=\"expense?.id\"\n    entityType=\"expense\"\n    [useTechlifyTags]=\"true\"\n    [techlifyTagCategories]=\"['expense']\"\n    [techlifyTagConfig]=\"techlifyTagConfig\"\n  ></app-entity-files-view-all>\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'app-expense-layout',\n  templateUrl: './expense-layout.component.html'\n})\nexport class ExpenseLayoutComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<div>\n  <router-outlet></router-outlet>\n</div>\n","import { Injectable } from '@angular/core';\nimport {HttpService, TechlifyService} from \"ngx-techlify-core\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TaxService extends TechlifyService {\n\n  constructor(public httpService: HttpService) {\n    super(httpService, 'taxes');\n  }\n}\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {MatButton} from \"@angular/material/button\";\nimport {MatDialog, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle} from \"@angular/material/dialog\";\nimport {EntityFileService} from \"ngx-techlify-core\";\n\n@Component({\n  selector: 'app-expense-file-delete-button',\n  standalone: true,\n  imports: [\n    MatButton,\n    MatDialogActions,\n    MatDialogClose,\n    MatDialogContent,\n    MatDialogTitle\n  ],\n  templateUrl: './expense-file-delete-button.component.html',\n  styleUrl: './expense-file-delete-button.component.scss'\n})\nexport class ExpenseFileDeleteButtonComponent {\n  @Input() entityFile!: any;\n  @Output() deleted: EventEmitter<any> = new EventEmitter<any>();\n  isDeleting: boolean = false;\n\n  constructor(\n    private entityFileService: EntityFileService,\n    private matDialog: MatDialog\n  ) {}\n\n  /**\n   * Delete the expense record.\n   */\n  deleteRecord() {\n    this.isDeleting = true;\n    this.entityFileService.delete(this.entityFile).subscribe({\n      next: () => {\n        this.isDeleting = false;\n        this.deleted.emit();\n        this.matDialog.closeAll();\n      },\n      error: () => (this.isDeleting = false)\n    });\n  }\n\n  showConfirmDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef);\n  }\n}\n","<span\n  class=\"material-symbols-outlined cursor-pointer\"\n  (click)=\"showConfirmDialog(templateRef)\"\n>\n  delete\n</span>\n\n<ng-template #templateRef>\n  <h3 mat-dialog-title>Delete Expense</h3>\n  <div mat-dialog-content>\n    <p>Are you sure you want to delete the file?</p>\n    <code>{{ entityFile?.title }}</code>\n  </div>\n  <div mat-dialog-actions class=\"d-flex justify-content-end align-items-center gap-2\">\n    <button\n      [disabled]=\"isDeleting\"\n      mat-flat-button\n      type=\"button\"\n      mat-dialog-close\n    >\n      Cancel\n    </button>\n    <button\n      [disabled]=\"isDeleting\"\n      mat-raised-button\n      color=\"warn\"\n      type=\"button\"\n      (click)=\"deleteRecord()\"\n    >\n      Delete\n    </button>\n  </div>\n</ng-template>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {ExpenseFileDeleteButtonComponent} from \"../expense-file-delete-button/expense-file-delete-button.component\";\n\n@Component({\n  selector: 'app-expense-file-item',\n  standalone: true,\n  imports: [\n    ExpenseFileDeleteButtonComponent\n  ],\n  templateUrl: './expense-file-item.component.html',\n  styleUrl: './expense-file-item.component.scss'\n})\nexport class ExpenseFileItemComponent {\n  @Input() entityFile!: any;\n  @Output() deleted: EventEmitter<any> = new EventEmitter<any>();\n\n  onDeleted() {\n    this.deleted.emit();\n  }\n}\n","<div class=\"d-flex justify-content-between align-items-center\">\n  <p class=\"mb-0\">{{ entityFile?.title }}</p>\n  <div class=\"d-flex justify-content-end align-items-center gap-1\">\n    <a [href]=\"entityFile?.url\" target=\"_blank\" class=\"text-decoration-none text-secondary\">\n      <span class=\"material-symbols-outlined\">visibility</span>\n    </a>\n\n    <app-expense-file-delete-button\n      [entityFile]=\"entityFile\"\n      (deleted)=\"onDeleted()\"\n    ></app-expense-file-delete-button>\n  </div>\n</div>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {EntityFileService, FileDropperConfig, FileDropperModule} from \"ngx-techlify-core\";\nimport {NgForOf, NgIf} from \"@angular/common\";\nimport {ExpenseFileItemComponent} from \"../expense-file-item/expense-file-item.component\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\n\n@Component({\n  selector: 'app-expense-files',\n  standalone: true,\n  imports: [\n    FileDropperModule,\n    NgForOf,\n    ExpenseFileItemComponent,\n    MatProgressBar,\n    NgIf\n  ],\n  templateUrl: './expense-files.component.html',\n  styleUrl: './expense-files.component.scss'\n})\nexport class ExpenseFilesComponent implements OnInit {\n  @Input() expense!: any;\n  fileDropperConfig: FileDropperConfig = {\n    acceptFile: \"*\",\n    containerId: \"file-container\",\n    multiple: true,\n    fileId: 'expense-file'\n  }\n  isUploading!: boolean;\n  uploadedFiles: any[] = [];\n  fileList: any[] = [];\n\n  constructor(\n    private entityFileService: EntityFileService\n  ) {}\n\n  ngOnInit(): void {\n    this.uploadedFiles = this.expense?.entity_files ?? []\n  }\n\n  async onFileChange(files: File[]) {\n    this.fileList = files;\n    if (this.fileList.length) {\n      const fileInput = document.getElementById(\n        this.fileDropperConfig?.fileId\n      ) as HTMLInputElement;\n      fileInput.value = '';\n      this.isUploading = true;\n      const results = await this.uploadFiles(this.fileList);\n      this.uploadedFiles = this.uploadedFiles.concat(results.map((file: any) => file?.item));\n      this.isUploading = false;\n      this.fileList = [];\n    }\n  }\n\n  private async uploadFiles(files: File[]): Promise<any[]> {\n    const uploadPromises = files.map((file) => {\n      const params: any = {\n        entity_id: this.expense?.id,\n        entity_type: 'expense'\n      }\n\n      return this.entityFileService.uploadEntityFile(file, params);\n    });\n    return await Promise.all(uploadPromises);\n  }\n\n  onFileDeleted(index: number) {\n    this.uploadedFiles.splice(index, 1);\n  }\n}\n","<div id=\"file-container\" class=\"d-flex justify-content-center align-items-center \">\n  <app-file-dropper\n    class=\"w-100 text-center\"\n    [config]=\"fileDropperConfig\"\n    (fileChanged)=\"onFileChange($event)\"\n    [fileArray]=\"fileList\"\n  ></app-file-dropper>\n</div>\n\n<mat-progress-bar class=\"my-2\" mode=\"indeterminate\" *ngIf=\"isUploading\"></mat-progress-bar>\n\n<ol class=\"mt-3 text-secondary\">\n  <li *ngFor=\"let entityFile of uploadedFiles; let i = index\">\n    <app-expense-file-item\n      [entityFile]=\"entityFile\"\n      (deleted)=\"onFileDeleted(i)\"\n    ></app-expense-file-item>N\n  </li>\n</ol>\n","import {Component, EventEmitter, forwardRef, OnInit, Output} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {MatIcon} from \"@angular/material/icon\";\nimport {MatIconButton} from \"@angular/material/button\";\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\nimport {TaxService} from \"../tax.service\";\nimport {NgForOf, NgIf} from \"@angular/common\";\n\n@Component({\n  selector: 'app-tax-selector',\n  standalone: true,\n  imports: [\n    MatIcon,\n    MatIconButton,\n    MatMenuTrigger,\n    MatMenu,\n    MatMenuItem,\n    NgForOf,\n    NgIf\n  ],\n  templateUrl: './tax-selector.component.html',\n  styleUrl: './tax-selector.component.scss',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TaxSelectorComponent),\n      multi: true,\n    }\n  ]\n})\nexport class TaxSelectorComponent implements ControlValueAccessor, OnInit {\n  taxes: any[] = [];\n  selectedTax: FormControl = new FormControl();\n  value: any;\n  @Output() selected: EventEmitter<any> = new EventEmitter<any>();\n\n  onChange: any = (value: any) => {};\n  onTouch: any = (value: boolean) => {};\n\n  constructor(private taxService: TaxService) {\n  }\n\n  ngOnInit(): void {\n    this.taxService.index({}, true).subscribe({\n      next: (response: any) => {\n        this.taxes = response?.data;\n        if (this.value) {\n          this.selectedTax.setValue(\n            this.taxes.find((item: any) => item.id === this.value)\n          );\n        }\n      }\n    });\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  writeValue(val: any): void {\n    this.value = val;\n  }\n\n  onSelectionChange(tax: any) {\n    this.selectedTax.setValue(tax);\n    this.selected.emit(tax);\n    this.onTouch(true);\n    this.onChange(tax?.id);\n  }\n\n  onSelectionRemoved() {\n    this.selected.emit('');\n    this.selectedTax.setValue('');\n    this.onChange('');\n  }\n}\n","<button *ngIf=\"!selectedTax.value\" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"menu\">\n  <mat-icon>percent</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\">\n  <button mat-menu-item *ngFor=\"let tax of taxes\" (click)=\"onSelectionChange(tax)\">\n    {{ tax?.title }}\n  </button>\n</mat-menu>\n\n<div\n  class=\"d-flex justify-content-start align-items-center gap-2\"\n  *ngIf=\"selectedTax?.value\"\n>\n  <p class=\"mb-0\">{{ selectedTax.value?.title }}</p>\n  <span class=\"cursor-pointer material-symbols-outlined\" (click)=\"onSelectionRemoved()\">\n    delete\n  </span>\n</div>\n","import {Component, forwardRef, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {CurrencyPipe, NgIf} from \"@angular/common\";\nimport {TaxTypeEnum} from \"../tax-type.enum\";\n\n@Component({\n  selector: 'app-tax-amount',\n  standalone: true,\n  imports: [\n    CurrencyPipe,\n    NgIf\n  ],\n  templateUrl: './tax-amount.component.html',\n  styleUrl: './tax-amount.component.scss',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TaxAmountComponent),\n      multi: true,\n    }\n  ]\n})\nexport class TaxAmountComponent implements ControlValueAccessor, OnChanges {\n  @Input() taxes!: any[];\n  @Input() amount!: number;\n  value: number = 0;\n\n\n  ngOnChanges(): void {\n    this.onChange(this.updateTaxAmount());\n  }\n\n  onChange: any = (value: number) => {};\n  onTouch: any = (value: boolean) => {};\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  writeValue(val: number): void {\n    this.value = val;\n  }\n\n  private updateTaxAmount() {\n    this.value = 0;\n    if (this.amount && this.taxes) {\n      (this.taxes as [])?.forEach((tax: any) => {\n        if (tax.type_id === TaxTypeEnum.TYPE_AMOUNT) {\n          this.value += tax?.value;\n        } else {\n          this.value += (this.amount * tax?.value / 100);\n        }\n      });\n    }\n    this.onChange(this.value);\n\n    return this.value;\n  }\n}\n","<p class=\"mb-0\" *ngIf=\"value > 0\">{{ value | currency }}</p>\n","import { Component, Output, EventEmitter, OnInit, Input } from '@angular/core';\nimport {FormValidatorService, AlertService} from 'ngx-techlify-core';\n\nimport {FormGroup, FormBuilder, Validators, FormArray, AbstractControl} from '@angular/forms';\nimport { Expense } from '../expense.model';\nimport { ExpenseService } from '../expense.service';\nimport moment from 'moment';\nimport {TaxService} from '../../sale/tax/tax.service';\nimport { PaymentMethodTypeEnum } from '../../sale/payment/payment-method-type.enum';\n\nconst errorMessages: any = {\n  payee_id: {\n    required: 'The payee field is required.'\n  },\n  payment_account_id: {\n    required: 'The payment account field is required.'\n  },\n  payment_method_id: {\n    required: 'The payment method field is required.'\n  },\n  date: {\n    required: 'The date field is required.'\n  }\n};\n\n/**\n * Controller that add a new expense\n *\n * @author Floyd Kisson\n * @since 20210722\n */\n@Component({\n  selector: 'app-expense-form',\n  templateUrl: './expense-form.component.html',\n  styleUrls: ['./expense-form.component.scss']\n})\nexport class ExpenseFormComponent implements OnInit {\n  @Input() expense: any;\n  @Input() type: string = 'expense';\n  @Input() expenseableType: string = 'project';\n  @Input() expenseableId!: number;\n  @Output() saved = new EventEmitter<Expense>();\n  @Output() cancelled = new EventEmitter();\n\n  form: FormGroup;\n  isSaving = false;\n  totalAmount: number = 0;\n  taxes!: any[];\n\n  constructor(\n    private formValidatorService: FormValidatorService,\n    private expenseService: ExpenseService,\n    private alertService: AlertService,\n    private formBuilder: FormBuilder,\n    private taxService: TaxService\n  ) {\n    this.form = this.formBuilder.group({\n      id: [''],\n      payee_id: ['', Validators.compose([Validators.required])],\n      payment_account_id: ['', Validators.compose([Validators.required])],\n      payment_method_id: ['', Validators.compose([Validators.required])],\n      date: ['', Validators.compose([Validators.required])],\n      reference_no: [''],\n      cheque_number: [''],\n      particulars: [''],\n      expenseable_type: ['project'],\n      expenseable_id: [''],\n      line_items: new FormArray([]),\n      type: ['expense'],\n    });\n  }\n\n  ngOnInit() {\n    this.cacheTaxes();\n\n    if (this.type) {\n      this.form.patchValue({ type: this.type }, { emitEvent: false });\n    }\n    if (this.expenseableId) {\n      this.form.patchValue(\n        {\n          expenseable_type: this.expenseableType,\n          expenseable_id: this.expenseableId\n        },\n        { emitEvent: false }\n      );\n    }\n\n    // remove the validations on payment fields if type is bill\n    if (this.type === 'bill') {\n      this.form.get('payee_id')?.clearValidators();\n      this.form.get('payee_id')?.updateValueAndValidity();\n      this.form.get('payment_account_id')?.clearValidators();\n      this.form.get('payment_account_id')?.updateValueAndValidity();\n      this.form.get('payment_method_id')?.clearValidators();\n      this.form.get('payment_method_id')?.updateValueAndValidity();\n    }\n\n    // listen for form changes and update the total amount.\n    this.form.valueChanges.subscribe((val: any) => {\n      this.calculateTotalAmount();\n    });\n    if (this.expense?.id) {\n      const {\n        id,\n        payee_id,\n        payment_account_id,\n        payment_method_id,\n        date,\n        reference_no,\n        particulars,\n        expenseable_type,\n        expenseable_id,\n        line_items,\n        cheque_number\n      } = this.expense;\n      // set expense data to form\n      this.form.patchValue({\n        id,\n        payee_id,\n        payment_account_id,\n        payment_method_id,\n        date: new Date(date),\n        reference_no,\n        particulars,\n        expenseable_type,\n        expenseable_id,\n        cheque_number\n      });\n      (line_items as []).forEach((item: any) => {\n        this.addLineItem({ ...item });\n      });\n    } else {\n      // create expense\n      this.createExpense();\n      // add a one line item initially.\n      this.addLineItem();\n    }\n  }\n\n  /**\n   * Get the line items.\n   */\n  get lineItems() {\n    return this.form.controls['line_items'] as FormArray;\n  }\n\n  /**\n   * Update category price on category selection change.\n   *\n   * @param category\n   * @param index\n   */\n  onCategorySelectionChange(category: any, index: number) {\n    const data: any = this.lineItems.value[index];\n    this.lineItems.controls[index].patchValue(data);\n  }\n\n  /**\n   * Clear all the line items from invoice.\n   */\n  clearAllLineItems() {\n    this.lineItems.clear();\n  }\n\n  /**\n   * Add or update line item to list.\n   *\n   * @param data\n   */\n  addLineItem(data?: any) {\n    if (data?.index >= 0) {\n      this.lineItems.at(data.index).patchValue(data);\n    } else {\n      let lineItemForm = this.formBuilder.group({\n        id: [data?.id],\n        category_id: [data?.category_id, Validators.required],\n        description: [data?.description],\n        amount: [data?.amount, Validators.required],\n        tax_id: [data?.tax_id],\n        tax_amount: [data?.tax_amount],\n        taxes: [data?.tax ? [data?.tax] : []],\n        total: [data?.total]\n      });\n      this.lineItems.push(lineItemForm);\n    }\n  }\n\n  /**\n   * Remove line item from list.\n   *\n   * @param index\n   */\n  deleteLineItem(index: number) {\n    this.lineItems.removeAt(index);\n  }\n\n  /**\n   * Save the expense with line items.\n   */\n  save(resetForm?: boolean) {\n    this.form.markAllAsTouched();\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please fill all required fields.', 'warn');\n      return;\n    }\n\n    let data = { ...this.form.value };\n    if (data?.date) {\n      data.date = moment(data.date).format('YYYY-MM-DD');\n    }\n    data.total = this.totalAmount;\n    data.with = 'entityFiles';\n\n    this.isSaving = true;\n    let request = this.expenseService.update(data);\n    request.subscribe({\n      next: (expense) => {\n        this.isSaving = false;\n        this.alertService.addAlert(\n          `The ${this.type} saved successfully!`,\n          'success'\n        );\n        if (resetForm) {\n          this.form.reset();\n          this.form.markAsPristine();\n        } else {\n          this.saved.emit(expense);\n        }\n      },\n      error: () => (this.isSaving = false)\n    });\n  }\n\n  /**\n   * On cancel redirect back to the last location.\n   */\n  cancel() {\n    this.cancelled.emit();\n  }\n\n  /** Method to evaluate form fields*/\n  isFieldValid(field: string) {\n    return this.formValidatorService.isFieldValid(field, this.form);\n  }\n\n  /** Method to find error in form fields*/\n  getErrorMessage(field: string) {\n    return this.formValidatorService.getErrorMessage(\n      field,\n      this.form,\n      errorMessages\n    );\n  }\n\n  /**\n   * Calculate the total amount.\n   *\n   * @private\n   */\n  private calculateTotalAmount() {\n    this.totalAmount = 0;\n    (this.lineItems.value as []).forEach((item: any) => {\n      this.totalAmount += item?.total;\n    });\n  }\n\n  protected readonly PaymentMethodTypeEnum = PaymentMethodTypeEnum;\n\n  private createExpense() {\n    const data: any = {\n      ...this.form.value,\n      date: moment(new Date()).format('YYYY-MM-DD'),\n      payment_method_id: PaymentMethodTypeEnum.CASH,\n      with: 'entityFiles',\n    }\n    this.isSaving = true;\n    this.expenseService.store(data).subscribe({\n      next: (response: any) => {\n        this.expense = response;\n        this.form.patchValue({\n          ...this.expense,\n          date: new Date(this.expense?.date),\n        });\n        this.isSaving = false;\n      },\n      error: () => (this.isSaving = false)\n    });\n  }\n\n  private cacheTaxes() {\n    this.taxService.index({}, true).subscribe({\n      next: (response: any) => {\n        this.taxes = response?.data;\n      }\n    });\n  }\n\n  onTaxSelected(tax: any, lineItemForm: AbstractControl<any>) {\n    let taxes: any[] = [];\n    if (tax) {\n      taxes.push(tax);\n    }\n    lineItemForm?.get('taxes')?.setValue(taxes);\n  }\n\n  getLineItemTotal(lineItemForm: AbstractControl<any>) {\n    const value = lineItemForm.value;\n    let total = 0;\n    if (value?.amount) {\n      total += value?.amount;\n    }\n\n    if (value?.tax_amount) {\n      total += value.tax_amount;\n    }\n\n    lineItemForm.get('total')?.setValue(total);\n\n    return total\n  }\n}\n","<form\n  class=\"d-flex flex-row justify-content-start gap-3\"\n  [formGroup]=\"form\"\n  (ngSubmit)=\"save()\"\n>\n  <mat-card style=\"width: calc(75% - 1rem)\">\n    <mat-card-content>\n      <div class=\"d-flex justify-content-start align-items-center gap-2\">\n        <strong class=\"mb-0 text-dark text-capitalize\">{{ type }} Line Items</strong>\n        <mat-icon\n          class=\"material-symbols-outlined cursor-pointer\"\n          color=\"primary\"\n          (click)=\"addLineItem()\"\n        >\n          add\n        </mat-icon>\n      </div>\n\n      <table class=\"table flex-grow-1 w-100 mt-2\" aria-describedby=\"Line Items\">\n        <thead>\n          <tr>\n            <th scope=\"col\">#</th>\n            <th scope=\"col\">Category</th>\n            <th scope=\"col\">Description</th>\n            <th scope=\"col\">Amount</th>\n            <th scope=\"col\">Tax</th>\n            <th scope=\"col\">Total</th>\n          </tr>\n        </thead>\n        <tbody formArrayName=\"line_items\">\n          <ng-container\n            *ngFor=\"let lineItemForm of lineItems.controls; let i = index\"\n          >\n            <tr [formGroupName]=\"i\">\n              <th scope=\"row\" style=\"padding-top: 15px !important\">\n                <span style=\"max-width: 50px\">\n                  {{ i + 1 }}\n                </span>\n              </th>\n              <td>\n                <app-account-selector\n                  label=\"Category\"\n                  formControlName=\"category_id\"\n                  [showAddButton]=\"true\"\n                  (selectionchange)=\"onCategorySelectionChange($event, i)\"\n                  [perPage]=\"1000\"\n                ></app-account-selector>\n              </td>\n              <td>\n                <mat-form-field\n                  class=\"mat-form-field-sm w-100\"\n                  appearance=\"fill\"\n                >\n                  <mat-label>Description</mat-label>\n                  <input matInput type=\"text\" formControlName=\"description\" />\n                </mat-form-field>\n              </td>\n              <td style=\"max-width: 150px\">\n                <div class=\"d-flex flex-row align-items-center gap-1\">\n                  <mat-form-field\n                    class=\"mat-form-field-sm w-100\"\n                    appearance=\"fill\"\n                  >\n                    <mat-label>Amount</mat-label>\n                    <input\n                      type=\"number\"\n                      min=\"0\"\n                      matInput\n                      formControlName=\"amount\"\n                      required\n                    />\n                    <mat-error\n                      *ngIf=\"\n                        lineItemForm.get('amount')?.invalid &&\n                        lineItemForm.get('amount')?.touched\n                      \"\n                    >\n                      The amount field is required.\n                    </mat-error>\n                  </mat-form-field>\n\n                  <mat-icon\n                    (click)=\"deleteLineItem(i)\"\n                    class=\"material-symbols-outlined cursor-pointer\"\n                    style=\"margin-bottom: 20px\"\n                  >\n                    cancel\n                  </mat-icon>\n                </div>\n              </td>\n              <td>\n                <div class=\"d-flex flex-column justify-content-start gap-1\">\n                  <app-tax-selector\n                    formControlName=\"tax_id\"\n                    (selected)=\"onTaxSelected($event, lineItemForm)\"\n                  ></app-tax-selector>\n                  <app-tax-amount\n                    class=\"text-secondary\"\n                    formControlName=\"tax_amount\"\n                    [taxes]=\"lineItemForm.value?.taxes\"\n                    [amount]=\"lineItemForm.value?.amount\"\n                  ></app-tax-amount>\n                </div>\n              </td>\n              <td>{{ getLineItemTotal(lineItemForm) | currency }}</td>\n            </tr>\n          </ng-container>\n        </tbody>\n        <tfoot>\n          <tr>\n            <th scope=\"col\" colspan=\"4\"></th>\n            <th scope=\"col\">Total</th>\n            <th scope=\"col\">{{ totalAmount | currency }}</th>\n          </tr>\n        </tfoot>\n      </table>\n\n      <div\n        class=\"w-100 d-flex flex-row justify-content-end align-items-center gap-2\"\n      >\n        <mat-icon\n          class=\"material-symbol-outlined cursor-pointer\"\n          (click)=\"addLineItem()\"\n        >\n          add\n        </mat-icon>\n        <button\n          class=\"text-uppercase btn-xs\"\n          mat-flat-button\n          type=\"button\"\n          (click)=\"clearAllLineItems()\"\n        >\n          <mat-icon class=\"material-symbol-outlined\">block</mat-icon>\n          Clear All\n        </button>\n      </div>\n    </mat-card-content>\n  </mat-card>\n  <div class=\"d-flex flex-row flex-wrap gap-1\" style=\"width: calc(25%)\">\n    <div\n      class=\"text-dark d-flex flex-row justify-content-start align-items-center gap-2 mb-2\"\n    >\n      <mat-icon class=\"material-symbol-outlined\"> campaign </mat-icon>\n      <strong class=\"text-capitalize\">{{ type }} Information</strong>\n    </div>\n\n    <app-payee-selector\n      formControlName=\"payee_id\"\n      [showAddButton]=\"true\"\n      [required]=\"true\"\n      style=\"width: calc(100%)\"\n    ></app-payee-selector>\n\n    <app-account-selector\n      formControlName=\"payment_account_id\"\n      *ngIf=\"type === 'expense'\"\n      [showAddButton]=\"true\"\n      params=\"bank_or_cash_account=true\"\n      [perPage]=\"1000\"\n      [required]=\"true\"\n      style=\"width: calc(100%)\"\n    ></app-account-selector>\n\n    <mat-form-field *ngxPermissionsOnly=\"['project.read']\" appearance=\"fill\" style=\"width: calc(100%)\">\n      <mat-label>Project</mat-label>\n      <app-searchable-selector\n        [disabled]=\"!!expenseableId\"\n        formControlName=\"expenseable_id\"\n        apiUrl=\"api/projects\"\n        titleField=\"project_name\"\n        sortBy=\"project_name|asc\"\n      >\n      </app-searchable-selector>\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\" style=\"width: calc(50% - 0.25rem)\">\n      <mat-label>Date</mat-label>\n      <input\n        matInput\n        formControlName=\"date\"\n        placeholder=\"Date\"\n        autocomplete=\"off\"\n        required\n        [matDatepicker]=\"datePicker\"\n        (focus)=\"datePicker.open()\"\n      />\n      <mat-datepicker #datePicker></mat-datepicker>\n      <mat-error *ngIf=\"isFieldValid('date')\">\n        {{ getErrorMessage('date') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\" *ngIf=\"type === 'expense'\" style=\"width: calc(50%)\">\n      <mat-label>Payment Method</mat-label>\n      <app-searchable-selector\n        formControlName=\"payment_method_id\"\n        apiUrl=\"api/payment-methods\"\n        titleField=\"title\"\n        sortBy=\"title|asc\"\n        [required]=\"type === 'expense'\"\n      >\n      </app-searchable-selector>\n      <mat-error *ngIf=\"isFieldValid('payment_method_id')\">\n        {{ getErrorMessage('payment_method_id') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field\n      appearance=\"fill\"\n      *ngIf=\"form.value?.payment_method_id === PaymentMethodTypeEnum.CHEQUE\"\n      style=\"width: calc(100%)\"\n    >\n      <mat-label>Cheque Number</mat-label>\n      <input\n        matInput\n        formControlName=\"cheque_number\"\n        placeholder=\"Cheque Number\"\n      />\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\" style=\"width: calc(100%)\">\n      <mat-label>Reference Number</mat-label>\n      <input\n        matInput\n        formControlName=\"reference_no\"\n        placeholder=\"Reference Number\"\n        type=\"text\"\n        autocomplete=\"off\"\n      />\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\" style=\"width: calc(100%)\">\n      <mat-label>Particulars</mat-label>\n      <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n    </mat-form-field>\n\n    <div class=\"d-flex flex-row justify-content-end align-items-center gap-2\">\n      <button\n        color=\"primary\"\n        type=\"submit\"\n        mat-raised-button\n        [disabled]=\"isSaving\"\n      >\n        Save\n      </button>\n      <button\n        color=\"primary\"\n        type=\"button\"\n        mat-stroked-button\n        [disabled]=\"isSaving\"\n        (click)=\"save(true)\"\n      >\n        Save & New\n      </button>\n      <button\n        mat-flat-button\n        type=\"button\"\n        (click)=\"cancel()\"\n        [disabled]=\"isSaving\"\n      >\n        Cancel\n      </button>\n    </div>\n\n    <app-expense-files\n      *ngIf=\"expense?.id\"\n      [expense]=\"expense\"\n      class=\"mt-3\"\n      style=\"width: calc(100%)\"\n    ></app-expense-files>\n  </div>\n</form>\n","import { Component, OnInit } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { ActivatedRoute } from '@angular/router';\nimport { ExpenseService } from '../expense.service';\n\n@Component({\n  selector: 'app-expense-form-page',\n  templateUrl: './expense-form-page.component.html',\n  styleUrls: ['./expense-form-page.component.scss']\n})\nexport class ExpenseFormPageComponent implements OnInit {\n  id: number;\n  expense: any;\n  isLoading: boolean = false;\n  type: string = 'expense';\n  expenseableType = 'project';\n  expenseableId: number;\n\n  constructor(\n    private location: Location,\n    private activatedRoute: ActivatedRoute,\n    private expenseService: ExpenseService\n  ) {\n    this.id = this.activatedRoute.snapshot?.params['id'];\n    this.type = this.activatedRoute.snapshot.queryParams['type'] ?? 'expense';\n    this.expenseableType =\n      this.activatedRoute.snapshot.queryParams['expenseableType'] || 'project';\n    this.expenseableId = parseInt(\n      this.activatedRoute.snapshot.queryParams['expenseableId']\n    );\n  }\n\n  ngOnInit() {\n    if (this.id) {\n      this.loadData();\n    }\n  }\n\n  /**\n   * Load model data.\n   */\n  loadData() {\n    // load model data.\n    const params: any = {\n      with: 'lineItems.tax,entityFiles'\n    };\n    this.isLoading = true;\n    this.expenseService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.expense = response;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    });\n  }\n\n  /**\n   * Redirect back to last page.\n   */\n  redirectBack() {\n    this.location.back();\n  }\n}\n","<app-expense-form\n  *ngIf=\"!isLoading\"\n  [type]=\"type\"\n  (saved)=\"redirectBack()\"\n  (cancelled)=\"redirectBack()\"\n  [expense]=\"expense\"\n  [expenseableType]=\"expenseableType\"\n  [expenseableId]=\"expenseableId\"\n></app-expense-form>\n\n<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n","import { Component } from '@angular/core';\nimport { ImportCsvConfig } from 'ngx-techlify-core';\n\n@Component({\n  selector: 'app-expense-import-page',\n  templateUrl: './expense-import-page.component.html',\n  styleUrls: ['./expense-import-page.component.scss']\n})\nexport class ExpenseImportPageComponent {\n  importConfig: ImportCsvConfig = {\n    apiUrl: 'api/expenses/import',\n    title: 'Expenses',\n    importType: 'expense',\n    properties: [\n      {\n        label: 'Payee',\n        value: 'payee',\n        type: 'text'\n      },\n      {\n        label: 'Payment Account',\n        value: 'payment_account',\n        type: 'text'\n      },\n      {\n        label: 'Payment Method',\n        value: 'payment_method',\n        type: 'text'\n      },\n      {\n        label: 'Date',\n        value: 'date',\n        type: 'date'\n      },\n      {\n        label: 'Reference No.',\n        value: 'reference_no',\n        type: 'text'\n      },\n      {\n        label: 'Category',\n        value: 'category',\n        type: 'text'\n      },\n      {\n        label: 'Project',\n        value: 'project',\n        type: 'text'\n      },\n      {\n        label: 'Description',\n        value: 'description',\n        type: 'text'\n      },\n      {\n        label: 'Amount',\n        value: 'amount',\n        type: 'number'\n      }\n    ],\n    sampleFile: {\n      name: 'Expenses Import',\n      path: 'assets/expense/expense-import-sample.csv'\n    },\n    importHistory: {\n      isEnabled: true,\n      type: 'expense',\n      apiUrl: 'api/import-histories'\n    },\n    viewRouterLink: '/purchases/expenses/'\n  };\n  constructor() {}\n}\n","<app-import-csv [config]=\"importConfig\"></app-import-csv>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { ExpenseListingComponent } from './expense-listing/expense-listing.component';\nimport { ExpenseViewComponent } from './expense-view/expense-view.component';\nimport { ExpenseLayoutComponent } from './expense-layout/expense-layout.component';\nimport { ExpenseFormPageComponent } from './expense-form-page/expense-form-page.component';\nimport { ExpenseImportPageComponent } from './expense-import-page/expense-import-page.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: ExpenseLayoutComponent,\n    children: [\n      {\n        path: ':id/view',\n        component: ExpenseViewComponent\n      },\n      {\n        path: ':id/edit',\n        component: ExpenseFormPageComponent\n      },\n      {\n        path: 'import',\n        component: ExpenseImportPageComponent\n      },\n      {\n        path: 'create',\n        component: ExpenseFormPageComponent\n      },\n      {\n        path: '',\n        component: ExpenseListingComponent\n      }\n    ]\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class ExpenseRoutingModule {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormControl,\n  NG_VALUE_ACCESSOR\n} from '@angular/forms';\nimport {MatFormFieldAppearance} from \"@angular/material/form-field\";\nimport {AccountService} from '../../../sale/account/account.service';\n\n@Component({\n  selector: 'app-expense-category-selector',\n  templateUrl: './expense-category-selector.component.html',\n  styleUrls: ['./expense-category-selector.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: ExpenseCategorySelectorComponent\n    }\n  ]\n})\nexport class ExpenseCategorySelectorComponent\n  implements OnInit, ControlValueAccessor\n{\n  @Input() label: string = 'Expense Category';\n  @Input() multiple: boolean = false;\n  @Input() showLabel: boolean = true;\n  @Input() appearance!: MatFormFieldAppearance;\n\n  selectedOption = new FormControl();\n  touched = false;\n  disabled = false;\n\n  onChange = (value: any) => {};\n  onTouched = () => {};\n\n  constructor(private accountService: AccountService) {}\n\n  ngOnInit(): void {\n    this.selectedOption.valueChanges.subscribe((value: any) => {\n      this.onChange(value);\n      this.onTouched();\n    });\n  }\n\n  writeValue(obj: any[]): void {\n    this.selectedOption.setValue(obj);\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n}\n","<mat-form-field class=\"w-100\" [appearance]=\"appearance\">\n  <mat-label>{{ label }}</mat-label>\n  <app-searchable-selector\n    apiUrl=\"api/accounts?type_ids=14\"\n    [formControl]=\"selectedOption\"\n  ></app-searchable-selector>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ExpenseCategorySelectorComponent } from './expense-category-selector/expense-category-selector.component';\nimport {MatFormFieldModule} from \"@angular/material/form-field\";\nimport {SearchableSelectorModule} from \"ngx-techlify-core\";\nimport {ReactiveFormsModule} from \"@angular/forms\";\n\n\n\n@NgModule({\n  declarations: [\n    ExpenseCategorySelectorComponent\n  ],\n  exports: [\n    ExpenseCategorySelectorComponent\n  ],\n  imports: [\n    CommonModule,\n    MatFormFieldModule,\n    SearchableSelectorModule,\n    ReactiveFormsModule\n  ]\n})\nexport class ExpenseCategorySelectorModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ExpenseVoidButtonComponent } from './expense-void-button/expense-void-button.component';\nimport {MaterialModule} from \"ngx-techlify-core\";\n\n\n\n@NgModule({\n  declarations: [\n    ExpenseVoidButtonComponent\n  ],\n  exports: [\n    ExpenseVoidButtonComponent\n  ],\n  imports: [\n    CommonModule,\n    MaterialModule\n  ]\n})\nexport class ExpenseWidgetsModule { }\n","import { NgModule } from '@angular/core';\nimport { FileDragdropUploaderModule, ImportCsvModule } from 'ngx-techlify-core';\nimport { ExpenseFormDialogComponent } from './expense-form-dialog/expense-form-dialog.component';\nimport { ExpenseLineItemListingComponent } from './expense-line-item-listing/expense-line-item-listing.component';\nimport { ExpenseListingComponent } from './expense-listing/expense-listing.component';\nimport { ExpenseRoutingModule } from './expense-routing.module';\nimport { ExpenseFormComponent } from './expense-form/expense-form.component';\nimport { ExpenseViewComponent } from './expense-view/expense-view.component';\nimport { ExpenseListTableComponent } from './expense-list-table/expense-list-table.component';\nimport { ExpenseLayoutComponent } from './expense-layout/expense-layout.component';\nimport { ExpenseFormPageComponent } from './expense-form-page/expense-form-page.component';\nimport { ExpenseCategorySelectorModule } from './expense-category-selector/expense-category-selector.module';\nimport { ExpenseImportPageComponent } from './expense-import-page/expense-import-page.component';\nimport {ExpenseWidgetsModule} from \"./expense-widgets/expense-widgets.module\";\nimport {ExpenseLineItemsComponent} from \"./expense-line-items/expense-line-items.component\";\nimport { ExpenseFilesComponent } from './expense-files/expense-files/expense-files.component';\nimport {ExpenseMultiSelectFormComponent} from \"./expense-multi-select-form/expense-multi-select-form.component\";\nimport {ExpenseInformationComponent} from \"./expense-information/expense-information.component\";\nimport { SharedModule } from '../@shared';\nimport {AccountSelectorModule} from '../sale/account/account-selector/account-selector.module';\nimport {\n  BillProcessingStatusUpdaterComponent\n} from '../bills/bill-processing-updates/bill-processing-status-updater/bill-processing-status-updater.component';\nimport {TaxSelectorComponent} from '../sale/tax/tax-selector/tax-selector.component';\nimport {TaxAmountComponent} from '../sale/tax/tax-amount/tax-amount.component';\nimport {PayeeSelectorModule} from 'techlify-inventory-common';\n\n@NgModule({\n  declarations: [\n    ExpenseListingComponent,\n    ExpenseViewComponent,\n    ExpenseFormDialogComponent,\n    ExpenseFormComponent,\n    ExpenseLineItemListingComponent,\n    ExpenseListTableComponent,\n    ExpenseLayoutComponent,\n    ExpenseFormPageComponent,\n    ExpenseImportPageComponent\n  ],\n  imports: [\n    SharedModule,\n    ExpenseRoutingModule,\n    ExpenseCategorySelectorModule,\n    ImportCsvModule,\n    AccountSelectorModule,\n    ExpenseWidgetsModule,\n    FileDragdropUploaderModule,\n    BillProcessingStatusUpdaterComponent,\n    ExpenseFilesComponent,\n    ExpenseLineItemsComponent,\n    ExpenseMultiSelectFormComponent,\n    TaxSelectorComponent,\n    TaxAmountComponent,\n    ExpenseInformationComponent,\n    PayeeSelectorModule\n  ],\n  exports: [ExpenseListTableComponent]\n})\nexport class ExpenseModule {}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'app-bills-layout',\n  templateUrl: './bills-layout.component.html',\n  styleUrls: ['./bills-layout.component.scss']\n})\nexport class BillsLayoutComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<div>\n  <router-outlet></router-outlet>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { BillsLayoutComponent } from './bills-layout/bills-layout.component';\nimport { BillsListPageComponent } from './bills-list-page/bills-list-page.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: BillsLayoutComponent,\n    children: [\n      {\n        path: '',\n        component: BillsListPageComponent,\n      }\n    ]\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class BillsRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BillsRoutingModule } from './bills-routing.module';\nimport { BillsLayoutComponent } from './bills-layout/bills-layout.component';\nimport {MatIconModule} from \"@angular/material/icon\";\nimport { BillsListPageComponent } from './bills-list-page/bills-list-page.component';\nimport {ExpenseModule} from \"../expense/expense.module\";\nimport {MatCardModule} from \"@angular/material/card\";\nimport {MatButtonModule} from \"@angular/material/button\";\nimport {NgxPermissionsModule} from \"ngx-permissions\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {ReactiveFormsModule} from \"@angular/forms\";\nimport {TechlifyFilterModule} from '../@shared/techlify-filter/techlify-filter.module';\n\n\n@NgModule({\n    declarations: [\n        BillsLayoutComponent,\n        BillsListPageComponent\n    ],\n    exports: [\n        BillsListPageComponent\n    ],\n    imports: [\n        CommonModule,\n        BillsRoutingModule,\n        MatIconModule,\n        ExpenseModule,\n        MatCardModule,\n        TechlifyFilterModule,\n        MatButtonModule,\n        NgxPermissionsModule,\n        MatProgressBar,\n        ReactiveFormsModule\n    ]\n})\nexport class BillsModule { }\n","import {NgModule} from '@angular/core';\n\nimport {PurchaseRoutingModule} from './purchase-routing.module';\nimport {BillPaymentFormComponent} from './bill-payment-form/bill-payment-form.component';\nimport {PurchasePaymentsListPageComponent} from './purchase-payments-list-page/purchase-payments-list-page.component';\nimport {SharedModule} from '../@shared';\nimport {PaymentVoidModule} from '../sale/payment/payment-void/payment-void.module';\nimport {PurchasePaymentsFormPageComponent} from './purchase-payments-form-page/purchase-payments-form-page.component';\nimport { PurchasePaymentViewComponent } from './purchase-payment-view/purchase-payment-view.component';\nimport {PaymentInformationCardComponent} from './payment-information-card/payment-information-card.component';\nimport {ExpenseModule} from '../expense/expense.module';\nimport {BillsModule} from '../bills/bills.module';\n\n\n@NgModule({\n  declarations: [\n    BillPaymentFormComponent,\n    PurchasePaymentsListPageComponent,\n    PurchasePaymentsFormPageComponent,\n    PurchasePaymentViewComponent\n  ],\n  imports: [\n    SharedModule,\n    PurchaseRoutingModule,\n    PaymentVoidModule,\n    PaymentInformationCardComponent,\n    ExpenseModule,\n    BillsModule\n  ]\n})\nexport class PurchaseModule { }\n","import {Component, Input, OnInit} from '@angular/core';\nimport {CurrencyPipe, NgIf} from \"@angular/common\";\nimport {FormBuilder, FormGroup, FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {ChartType, GoogleChartsModule} from \"angular-google-charts\";\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {AlertService, RequestHelperService, Timeline, TimelineFilterModule} from \"ngx-techlify-core\";\nimport {debounceTime} from \"rxjs\";\nimport {RouterLink} from \"@angular/router\";\nimport {ExpenseSummaryService} from '../../../expense/expense-summary.service';\n\n@Component({\n  selector: 'app-expense-summary-chart',\n  standalone: true,\n  imports: [\n    CurrencyPipe,\n    FormsModule,\n    GoogleChartsModule,\n    MatCard,\n    MatCardContent,\n    MatProgressBar,\n    NgIf,\n    ReactiveFormsModule,\n    TimelineFilterModule,\n    RouterLink\n  ],\n  templateUrl: './expense-summary-chart.component.html',\n  styleUrl: './expense-summary-chart.component.scss',\n  providers: [\n    CurrencyPipe\n  ]\n})\nexport class ExpenseSummaryChartComponent implements OnInit {\n  @Input() height: number = 400;\n  filterForm!: FormGroup\n  chart: any = {\n    title: 'Expenses',\n    type: ChartType.PieChart,\n    columns: [\n      'Category',\n      'Amount'\n    ],\n    data: [],\n    options: {\n      options: {\n        pieHole: 0.4\n      }\n    }\n  };\n  isLoading: boolean = false;\n  totalExpenseAmount: number = 0;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private expenseSummaryService: ExpenseSummaryService,\n    private requestHelperService: RequestHelperService,\n    private alertService: AlertService,\n    private currencyPipe: CurrencyPipe\n  ) {\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.THIS_YEAR],\n      date_from: [''],\n      date_to: [''],\n      groupBy: 'category_id'\n    })\n  }\n\n  ngOnInit(): void {\n    this.filterForm.valueChanges.pipe(\n      debounceTime(500)\n    ).subscribe({\n      next: () => this.loadData()\n    });\n  }\n\n  loadData() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value),\n    }\n\n    if (!params.date_from || !params.date_to) {\n      return;\n    }\n    this.isLoading = true;\n    this.expenseSummaryService.aggregated(params).subscribe({\n      next: (response: any[]) => {\n        let data: any[] = [];\n        this.totalExpenseAmount = 0;\n        response?.forEach((item: any) => {\n          this.totalExpenseAmount += parseFloat(item?.total);\n          data.push([item?.category?.title + ' : ' + this.currencyPipe.transform(item.total), parseFloat(item.total)]);\n        });\n        this.chart.data = data;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    })\n  }\n}\n","<mat-card>\n  <mat-card-content>\n    <form [formGroup]=\"filterForm\" class=\"mb-3 d-flex justify-content-between align-items-start gap-3\">\n      <div class=\"d-flex flex-column gap-1\">\n        <div class=\"d-flex justify-content-start align-items-center gap-2\">\n\n          <h3 class=\"mb-0\">Expenses</h3>\n          <span\n            class=\"material-symbols-outlined cursor-pointer\"\n            (click)=\"loadData()\"\n          >cached</span>\n          <a class=\"text-decoration-none text-dark mt-2\" [routerLink]=\"['/finance/reports/expense-summary-report']\">\n            <span class=\"material-symbols-outlined\">\n              visibility\n            </span>\n          </a>\n        </div>\n\n        <div *ngIf=\"totalExpenseAmount\">\n          <small class=\"text-secondary\">Amount</small>\n          <h3 class=\"mb-0 fw-bold\">{{ totalExpenseAmount | currency }}</h3>\n        </div>\n      </div>\n      <app-timeline-filter\n        labelText=\"\"\n        formControlName=\"duration\"\n        appearance=\"fill\"\n        [form]=\"filterForm\"\n        [showClearButton]=\"true\"\n      ></app-timeline-filter>\n    </form>\n  </mat-card-content>\n  <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n  <mat-card-content *ngIf=\"chart.data?.length > 0\">\n    <google-chart\n      class=\"w-100\"\n      [height]=\"height\"\n      [title]=\"chart.title\"\n      [type]=\"chart.type\"\n      [data]=\"chart.data\"\n      [columns]=\"chart.columns\"\n      [options]=\"chart.options\"\n    >\n    </google-chart>\n  </mat-card-content>\n</mat-card>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {CurrencyPipe, NgIf} from \"@angular/common\";\nimport {FormBuilder, FormGroup, FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {ChartType, GoogleChartsModule} from \"angular-google-charts\";\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {RequestHelperService, Timeline, TimelineFilterModule} from \"ngx-techlify-core\";\nimport {debounceTime} from \"rxjs\";\nimport {RouterLink} from \"@angular/router\";\nimport {PayablesService} from '../../../sale/reports/payables.service';\n\n@Component({\n  selector: 'app-accounts-payable-summary-chart',\n  standalone: true,\n  imports: [\n    CurrencyPipe,\n    FormsModule,\n    GoogleChartsModule,\n    MatCard,\n    MatCardContent,\n    MatProgressBar,\n    NgIf,\n    ReactiveFormsModule,\n    TimelineFilterModule,\n    RouterLink\n  ],\n  templateUrl: './accounts-payable-summary-chart.component.html',\n  styleUrl: './accounts-payable-summary-chart.component.scss',\n  providers: [CurrencyPipe]\n})\nexport class AccountsPayableSummaryChartComponent implements OnInit {\n  @Input() height: number = 400;\n  filterForm!: FormGroup\n  chart: any = {\n    title: 'Account Payables',\n    type: ChartType.PieChart,\n    columns: [\n      'Period',\n      'Amount'\n    ],\n    data: [],\n    options: {\n      pieHole: 0.4\n    }\n  };\n  isLoading: boolean = false;\n  totalPayables: number = 0;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private payablesService: PayablesService,\n    private requestHelperService: RequestHelperService,\n    private currencyPipe: CurrencyPipe\n  ) {\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.THIS_YEAR],\n      date_from: [''],\n      date_to: [''],\n      include: 'payable_1_to_7_days,payable_8_to_14_days,payables_sum,overdue_payables_sum'\n    })\n  }\n\n  ngOnInit(): void {\n    this.loadData();\n    this.filterForm.valueChanges.pipe(\n      debounceTime(500)\n    ).subscribe({\n      next: () => this.loadData()\n    })\n  }\n\n  loadData() {\n    const params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value),\n    }\n    this.isLoading = true;\n    this.payablesService.summary(params).subscribe({\n      next: (response: any) => {\n        let data: any[] = [];\n        data.push(['Current : ' + this.currencyPipe.transform(response?.overdue_payables_sum), parseFloat(response?.overdue_payables_sum)]);\n        data.push(['1 to 7 Days : ' + this.currencyPipe.transform(response?.payable_1_to_7_days), parseFloat(response?.payable_1_to_7_days)]);\n        data.push(['8 to 14 Days : ' + this.currencyPipe.transform(response?.payable_8_to_14_days), parseFloat(response?.payable_8_to_14_days)]);\n        this.totalPayables = response?.payables_sum\n        this.chart.data = data;\n        this.isLoading = false;\n      },\n      error: () => (this.isLoading = false)\n    })\n  }\n}\n\n","<mat-card>\n  <mat-card-content>\n    <form [formGroup]=\"filterForm\" class=\"mb-3 d-flex justify-content-between align-items-start gap-3\">\n      <div class=\"d-flex flex-column gap-1\">\n        <div class=\"d-flex justify-content-start align-items-center gap-2\">\n\n          <h3 class=\"mb-0\">Account Payables</h3>\n          <span\n            class=\"material-symbols-outlined cursor-pointer\"\n            (click)=\"loadData()\"\n          >cached</span>\n          <a class=\"text-decoration-none text-dark mt-2\" [routerLink]=\"['/finance/reports/supplier-balance-detail']\">\n            <span class=\"material-symbols-outlined\">\n              visibility\n            </span>\n          </a>\n        </div>\n\n        <div *ngIf=\"totalPayables\">\n          <small class=\"text-secondary\">Amount</small>\n          <h3 class=\"mb-0 fw-bold\">{{ totalPayables | currency }}</h3>\n        </div>\n      </div>\n      <app-timeline-filter\n        labelText=\"\"\n        formControlName=\"duration\"\n        appearance=\"fill\"\n        [form]=\"filterForm\"\n        [showClearButton]=\"true\"\n      ></app-timeline-filter>\n    </form>\n  </mat-card-content>\n  <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n  <mat-card-content *ngIf=\"chart.data?.length > 0\">\n    <google-chart\n      class=\"w-100\"\n      [height]=\"height\"\n      [title]=\"chart.title\"\n      [type]=\"chart.type\"\n      [data]=\"chart.data\"\n      [columns]=\"chart.columns\"\n      [options]=\"chart.options\"\n    >\n    </google-chart>\n  </mat-card-content>\n</mat-card>\n","import { Component, OnInit } from '@angular/core';\nimport {TechlifyListComponent} from \"ngx-techlify-core\";\nimport {PaymentService} from '../../../sale/payment/payment.service';\n\n@Component({\n  selector: 'app-recent-purchase-payments-widget',\n  templateUrl: './recent-purchase-payments-widget.component.html',\n  styleUrls: ['./recent-purchase-payments-widget.component.scss']\n})\nexport class RecentPurchasePaymentsWidgetComponent extends TechlifyListComponent implements OnInit {\n  displayedColumns: string[] = ['no', 'memo', 'supplier', 'project', 'paid'];\n\n  constructor(private paymentService: PaymentService) {\n    super();\n    this.lastPage = 0;\n  }\n\n  ngOnInit(): void {\n    // load recent purchase payments\n    this.loadData();\n  }\n\n  /**\n   * Load recent purchase payments.\n   *\n   * @private\n   */\n  override loadData() {\n    const params: any = {\n      sort_by: 'date|desc',\n      with: 'paymentExpenses.expense.payee,paymentExpenses.expense.expenseable',\n      transaction_type: 'debit',\n      page: this.page,\n      perPage: this.perPage\n    };\n    this.isWorking = true;\n    this.paymentService.index(params).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        this.models = this.models.concat(response?.data);\n        this.lastPage = response?.last_page;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n}\n","<mat-card style=\"height: 400px; overflow-y: scroll\">\n  <mat-card-content class=\"mb-0\">\n    <h3 class=\"mb-0\">Recent Purchase Payments</h3>\n  </mat-card-content>\n  <mat-card-content class=\"p-0\">\n    <table\n      mat-table\n      [dataSource]=\"models\"\n      class=\"w-100\"\n      aria-describedby=\"Recent Purchase Payments\"\n      infiniteScroll\n      [infiniteScrollDistance]=\"2\"\n      [infiniteScrollThrottle]=\"50\"\n      (scrolled)=\"onScroll()\"\n    >\n      <!-- # Column -->\n      <ng-container matColumnDef=\"no\">\n        <th mat-header-cell *matHeaderCellDef>#</th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n      </ng-container>\n\n      <!-- Memo Column -->\n      <ng-container matColumnDef=\"memo\">\n        <th mat-header-cell *matHeaderCellDef>Memo</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-1\">{{ element?.memo }}</p>\n        </td>\n      </ng-container>\n\n      <!-- Supplier Column -->\n      <ng-container matColumnDef=\"supplier\">\n        <th mat-header-cell *matHeaderCellDef>Supplier</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <ul *ngIf=\"element?.payment_expenses?.length > 0\">\n            <li *ngFor=\"let paymentExpense of element?.payment_expenses\">\n              {{ paymentExpense?.expense?.payee?.company_name }}\n            </li>\n          </ul>\n        </td>\n      </ng-container>\n\n      <!-- Project Column -->\n      <ng-container matColumnDef=\"project\">\n        <th mat-header-cell *matHeaderCellDef>Project</th>\n        <td mat-cell *matCellDef=\"let element\">\n          <ul *ngIf=\"element?.payment_expenses?.length > 0\">\n            <li *ngFor=\"let paymentExpense of element?.payment_expenses\">\n              <a\n                class=\"text-dark\"\n                [routerLink]=\"[\n                  '/projects',\n                  paymentExpense?.expense?.expenseable?.id,\n                  'view',\n                  'expenses'\n                ]\"\n              >\n                {{ paymentExpense?.expense?.expenseable?.project_name }}\n              </a>\n            </li>\n          </ul>\n        </td>\n      </ng-container>\n\n      <!-- Paid Column -->\n      <ng-container matColumnDef=\"paid\">\n        <th mat-header-cell *matHeaderCellDef>Paid</th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.amount | currency }}\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n    </table>\n\n    <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RecentPurchasePaymentsWidgetComponent } from './recent-purchase-payments-widget/recent-purchase-payments-widget.component';\nimport {MatCardModule} from \"@angular/material/card\";\nimport {MatProgressBarModule} from \"@angular/material/progress-bar\";\nimport {MatTableModule} from \"@angular/material/table\";\nimport {RouterLink} from \"@angular/router\";\nimport {InfiniteScrollDirective} from \"ngx-infinite-scroll\";\n\n\n\n@NgModule({\n  declarations: [\n    RecentPurchasePaymentsWidgetComponent\n  ],\n  exports: [\n    RecentPurchasePaymentsWidgetComponent\n  ],\n\timports: [\n\t\tCommonModule,\n\t\tMatCardModule,\n\t\tMatProgressBarModule,\n\t\tMatTableModule,\n\t\tRouterLink,\n\t\tInfiniteScrollDirective\n\t]\n})\nexport class RecentPurchasePaymentsWidgetModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class JournalEntryService extends TechlifyService {\n  constructor(httpService: HttpService) {\n    super(httpService, 'journal-entries');\n  }\n}\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {MatDialog, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle} from \"@angular/material/dialog\";\nimport {AlertService} from \"ngx-techlify-core\";\nimport {MatButton} from \"@angular/material/button\";\nimport {MatIcon} from \"@angular/material/icon\";\nimport {JournalEntryService} from \"../journal-entry.service\";\n\n@Component({\n  selector: 'app-journal-entry-delete-button',\n  standalone: true,\n  imports: [\n    MatButton,\n    MatDialogActions,\n    MatDialogClose,\n    MatDialogContent,\n    MatDialogTitle,\n    MatIcon\n  ],\n  templateUrl: './journal-entry-delete-button.component.html',\n  styleUrl: './journal-entry-delete-button.component.scss'\n})\nexport class JournalEntryDeleteButtonComponent {\n  @Input() model: any;\n  @Output() deleted: EventEmitter<any> = new EventEmitter();\n  isDeleting: boolean = false;\n\n  constructor(\n    private matDialog: MatDialog,\n    private service: JournalEntryService,\n    private alertService: AlertService\n  ) {}\n\n  /**\n   * Show delete dialog.\n   *\n   * @param templateRef\n   */\n  showDeleteDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, { width: '400px' });\n  }\n\n  /**\n   * Delete the account.\n   */\n  delete() {\n    this.isDeleting = true;\n    this.service.delete(this.model).subscribe({\n      next: () => {\n        this.isDeleting = false;\n        this.matDialog.closeAll();\n        this.alertService.addAlert('Journal entry deleted successfully!', 'success');\n        this.deleted.emit();\n      },\n      error: () => {\n        this.isDeleting = false;\n      }\n    });\n  }\n}\n","<mat-icon\n  class=\"cursor-pointer text-secondary\"\n  (click)=\"showDeleteDialog(deleteTemplate)\"\n>\n  delete\n</mat-icon>\n\n<ng-template #deleteTemplate>\n  <h3 mat-dialog-title>Delete Journal Entry?</h3>\n  <div mat-dialog-content>\n    <p>Are you sure you want to delete the journal entry?</p>\n  </div>\n  <div\n    mat-dialog-actions\n    class=\"d-flex gap-2 justify-content-end align-items-center\"\n  >\n    <button\n      [disabled]=\"isDeleting\"\n      mat-raised-button\n      color=\"warn\"\n      (click)=\"delete()\"\n    >\n      Delete\n    </button>\n    <button [disabled]=\"isDeleting\" mat-flat-button mat-dialog-close>\n      Cancel\n    </button>\n  </div>\n</ng-template>\n","import { Component, OnInit } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport {\n  TechlifyListComponent,\n  Timeline\n} from \"ngx-techlify-core\";\nimport { RouterLinkWithHref } from \"@angular/router\";\nimport { JournalEntryService } from \"../journal-entry.service\";\nimport { FormBuilder } from \"@angular/forms\";\nimport { MatProgressBar } from \"@angular/material/progress-bar\";\nimport { JournalEntryDeleteButtonComponent } from \"../journal-entry-delete-button/journal-entry-delete-button.component\";\nimport { SharedModule } from '../../@shared';\n\n@Component({\n  selector: 'app-journal-list',\n  standalone: true,\n  imports: [\n    CommonModule,\n    RouterLinkWithHref,\n    MatProgressBar,\n    SharedModule,\n    JournalEntryDeleteButtonComponent\n  ],\n  providers: [DatePipe],\n  templateUrl: './journal-list.component.html',\n  styleUrls: ['./journal-list.component.scss']\n})\nexport class JournalListComponent extends TechlifyListComponent implements OnInit {\n  displayedColumns: string[] = [\n    'No',\n    'Date',\n    'Journal #',\n    'Transaction',\n    'Description',\n    'Creator',\n    'Actions',\n  ];\n\n  constructor(\n    protected override service: JournalEntryService,\n    private formBuilder: FormBuilder,\n    private datePipe: DatePipe\n  ) {\n    super();\n\n    this.filterFormConfiguration = {};\n\n    this.filterForm = this.formBuilder.group({\n      duration: [Timeline.ALL],\n      date_from: [''],\n      date_to: [''],\n      sort_by: ['created_at|desc'],\n      with: ['creator'],\n      withCount: ['transactions']\n    });\n  }\n\n  ngOnInit(): void {\n    this.patchFiltersFromRoute();\n    this.listenFilterChanges();\n  }\n\n  override loadData(): void {\n    this.isWorking = true;\n    const filters = this.filterForm.value;\n    filters.page = this.page;\n    filters.perPage = this.perPage;\n    filters.date_from = this.datePipe.transform(filters.date_from, 'yyyy-MM-dd') ?? '';\n    filters.date_to = this.datePipe.transform(filters.date_to, 'yyyy-MM-dd') ?? '';\n\n    super.loadData(filters);\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n    <div class=\"d-flex justify-content-start align-items-center gap-2\">\n      <h2 class=\"mb-0\">Journals</h2>\n      <a routerLink=\"create\" class=\"text-decoration-none text-dark\">\n        <span class=\"material-symbols-outlined\"> add </span>\n      </a>\n    </div>\n    <form [formGroup]=\"filterForm\">\n      <app-timeline-filter appearance=\"fill\" labelText=\"Date\" formControlName=\"duration\" [form]=\"filterForm\"\n        [showClearButton]=\"true\"></app-timeline-filter>\n    </form>\n  </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-3\">\n  <mat-card-content class=\"p-0\">\n    <table mat-table [dataSource]=\"models\" class=\"w-100\" matSort (matSortChange)=\"sortColumn($event)\" infiniteScroll\n      [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\">\n\n      <!-- No Column -->\n      <ng-container matColumnDef=\"No\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i + 1 }} </td>\n      </ng-container>\n\n      <!-- Date Column -->\n      <ng-container matColumnDef=\"Date\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"date\"> Date </th>\n        <td mat-cell *matCellDef=\"let element\"> {{ element?.date | date }} </td>\n      </ng-container>\n\n      <!-- Journal # Column -->\n      <ng-container matColumnDef=\"Journal #\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"journal_no\"> Journal # </th>\n        <td mat-cell *matCellDef=\"let element\"> {{element?.journal_no}} </td>\n      </ng-container>\n\n      <!-- Transaction Column -->\n      <ng-container matColumnDef=\"Transaction\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"transactions_count\"> Transaction </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.transactions_count }}\n        </td>\n      </ng-container>\n\n      <!-- Description Column -->\n      <ng-container matColumnDef=\"Description\">\n        <th mat-header-cell *matHeaderCellDef> Description </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.description }}\n        </td>\n      </ng-container>\n\n      <!-- Creator Column -->\n      <ng-container matColumnDef=\"Creator\">\n        <th mat-header-cell *matHeaderCellDef> Creator </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-1\">{{ element?.creator?.name }}</p>\n          <small class=\"text-secondary\">{{ element?.created_at | date }}</small>\n        </td>\n      </ng-container>\n\n      <!-- Actions Column -->\n      <ng-container matColumnDef=\"Actions\">\n        <th mat-header-cell *matHeaderCellDef> Actions </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <div class=\"d-flex justify-content-start align-items-center gap-2\">\n            <a [routerLink]=\"[element?.id, 'edit']\" class=\"text-decoration-none text-dark\">\n              <span class=\"material-symbols-outlined\">\n                edit\n              </span>\n            </a>\n\n            <app-journal-entry-delete-button [model]=\"element\"\n              (deleted)=\"modelsDeletedById($event)\"></app-journal-entry-delete-button>\n          </div>\n        </td>\n      </ng-container>\n\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n    <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>","import { Component, OnInit } from '@angular/core';\nimport { CommonModule, Location } from '@angular/common';\nimport {\n  AlertService,\n  FormValidatorService,\n  MaterialModule,\n  SearchableSelectorModule,\n  TechlifyFormComponent\n} from 'ngx-techlify-core';\nimport {\n  FormArray,\n  FormBuilder,\n  ReactiveFormsModule,\n  Validators\n} from '@angular/forms';\nimport { JournalEntryService } from '../journal-entry.service';\nimport moment from 'moment';\nimport { ActivatedRoute } from \"@angular/router\";\nimport { MatProgressBar } from \"@angular/material/progress-bar\";\n\n@Component({\n  selector: 'app-journal-form',\n  standalone: true,\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    MaterialModule,\n    SearchableSelectorModule,\n    MatProgressBar\n  ],\n  templateUrl: './journal-form.component.html',\n  styleUrls: ['./journal-form.component.scss']\n})\nexport class JournalFormComponent\n  extends TechlifyFormComponent\n  implements OnInit {\n  id!: number;\n  journalEntry!: any;\n  totalDebit = 0;\n  totalCredit = 0;\n  isSaving!: boolean;\n  isLoading!: boolean;\n\n  constructor(\n    formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder,\n    private journalEntryService: JournalEntryService,\n    public location: Location,\n    private activatedRoute: ActivatedRoute\n  ) {\n    super(formValidatorService);\n\n    this.errorMessages = {\n      date: {\n        required: 'The date field is required.'\n      },\n      journal_no: {\n        required: 'The journal no field is required.'\n      }\n    };\n\n    this.form = this.formBuilder.group({\n      id: [''],\n      date: [new Date(), Validators.required],\n      journal_no: ['', Validators.required],\n      entries: new FormArray([]),\n      description: ['']\n    });\n  }\n\n  ngOnInit() {\n    this.id = parseInt(this.activatedRoute.snapshot.params['id']);\n\n    this.entries.valueChanges.subscribe(() => this.calculateSums());\n\n    if (this.id) {\n      this.loadData();\n    } else {\n      for (let i = 0; i < 3; i++) {\n        this.addEntry();\n      }\n    }\n  }\n\n  get entries(): FormArray {\n    return this.form.get('entries') as FormArray;\n  }\n\n  addEntry(transaction?: any): void {\n    this.entries.push(\n      this.formBuilder.group({\n        id: [transaction?.id ?? ''],\n        account_id: [transaction?.account_id ?? '', Validators.required],\n        debit: [transaction?.type === 'debit' ? transaction?.amount : ''],\n        credit: [transaction?.type === 'credit' ? transaction?.amount : ''],\n        description: [transaction?.description ?? '']\n      })\n    );\n  }\n\n  removeEntry(index: number): void {\n    this.entries.removeAt(index);\n    this.calculateSums();\n  }\n\n  save() {\n    this.form.markAllAsTouched();\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please check the form for errors.', 'error');\n      return;\n    }\n    const data: any = { ...this.form.value };\n    if (data?.date) {\n      data.date = moment(data.date).format('YYYY-MM-DD');\n    }\n    data.total_credit = this.totalCredit;\n    data.total_debit = this.totalDebit;\n\n    this.isSaving = true;\n    let request = this.journalEntryService.store(data);\n    if (data?.id) {\n      request = this.journalEntryService.update(data);\n    }\n    request.subscribe({\n      next: (response: any) => {\n        this.isSaving = false;\n        this.alertService.addAlert(\n          'Journal entry saved successfully!',\n          'success'\n        );\n        this.location.back();\n      },\n      error: () => (this.isSaving = false)\n    });\n  }\n\n  calculateSums(): void {\n    this.totalDebit = 0;\n    this.totalCredit = 0;\n    this.entries.controls.forEach((entry) => {\n      const debit = entry.get('debit')?.value || 0;\n      const credit = entry.get('credit')?.value || 0;\n      this.totalDebit += debit;\n      this.totalCredit += credit;\n    });\n  }\n\n  private loadData() {\n    this.isLoading = true;\n    const params: any = {\n      with: 'transactions'\n    }\n    this.journalEntryService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.journalEntry = response?.item;\n        this.isLoading = false;\n\n        this.setFormData();\n      },\n      error: () => {\n        this.isLoading = false;\n      }\n    })\n  }\n\n  private setFormData() {\n    const data: any = { ...this.journalEntry };\n\n    if (data?.date) {\n      data.date = new Date(data?.date);\n    }\n    this.form.patchValue(data);\n\n    (this.journalEntry?.transactions as [])?.forEach((transaction: any) => {\n      this.addEntry(transaction);\n    });\n  }\n}\n","<div class=\"d-flex justify-content-center mb-3\" *ngIf=\"!isLoading\">\n  <h2 class=\"mb-0\">\n    Journal Entry\n    {{\n      form.get('journal_no')?.value\n        ? ' no. ' + form.get('journal_no')?.value\n        : ''\n    }}\n  </h2>\n</div>\n<mat-card *ngIf=\"!isLoading\">\n  <mat-card-content>\n    <form [formGroup]=\"form\" (submit)=\"save()\">\n      <div class=\"d-flex align-items-start justify-content-start gap-3\">\n        <mat-form-field appearance=\"outline\">\n          <mat-label>Journal Date</mat-label>\n          <input\n            formControlName=\"date\"\n            matInput\n            [matDatepicker]=\"picker\"\n            (focus)=\"picker.open()\"\n          />\n          <mat-datepicker #picker></mat-datepicker>\n          <mat-error *ngIf=\"isFieldValid('date')\">\n            {{ getErrorMessage('date') }}\n          </mat-error>\n        </mat-form-field>\n\n        <mat-form-field appearance=\"outline\">\n          <mat-label>Journal No.</mat-label>\n          <input\n            formControlName=\"journal_no\"\n            matInput\n            type=\"text\"\n            placeholder=\"Journal No.\"\n          />\n          <mat-error *ngIf=\"isFieldValid('date')\">\n            {{ getErrorMessage('date') }}\n          </mat-error>\n        </mat-form-field>\n\n        <mat-form-field appearance=\"outline\">\n          <mat-label>Description</mat-label>\n          <textarea rows=\"3\" matInput formControlName=\"description\"></textarea>\n        </mat-form-field>\n      </div>\n\n      <table class=\"table mt-3\">\n        <thead>\n          <tr>\n            <th scope=\"col\">#</th>\n            <th scope=\"col\">Account</th>\n            <th scope=\"col\">Debit</th>\n            <th scope=\"col\">Credit</th>\n            <th scope=\"col\">Description</th>\n            <th scope=\"col\">Actions</th>\n          </tr>\n        </thead>\n        <tbody formArrayName=\"entries\">\n          <tr\n            *ngFor=\"let entry of entries.controls; let i = index\"\n            [formGroupName]=\"i\"\n          >\n            <td>\n              <p class=\"mt-4\">{{ i + 1 }}</p>\n            </td>\n            <td>\n              <mat-form-field appearance=\"outline\">\n                <mat-label>Account *</mat-label>\n                <app-searchable-selector\n                  apiUrl=\"api/accounts\"\n                  formControlName=\"account_id\"\n                  [perPage]=\"50000\"\n                ></app-searchable-selector>\n              </mat-form-field>\n            </td>\n            <td>\n              <mat-form-field appearance=\"outline\">\n                <mat-label>Debit</mat-label>\n                <input formControlName=\"debit\" matInput type=\"number\" />\n              </mat-form-field>\n            </td>\n            <td>\n              <mat-form-field appearance=\"outline\">\n                <mat-label>Credit</mat-label>\n                <input formControlName=\"credit\" matInput type=\"number\" />\n                <mat-error\n                  *ngIf=\"\n                    entry.get('credit')?.touched &&\n                    !entry.get('debit')?.value &&\n                    !entry.get('credit')?.value\n                  \"\n                >\n                  Credit is required if Debit is not provided\n                </mat-error>\n              </mat-form-field>\n            </td>\n            <td>\n              <mat-form-field appearance=\"outline\">\n                <mat-label>Description</mat-label>\n                <input formControlName=\"description\" matInput type=\"text\" />\n              </mat-form-field>\n            </td>\n            <td>\n              <mat-icon class=\"cursor-pointer\" (click)=\"removeEntry(i)\">\n                delete\n              </mat-icon>\n            </td>\n          </tr>\n          <tr>\n            <th scope=\"col\" colspan=\"2\">\n              <p class=\"mb-0 text-right\" style=\"margin-right: 72px\">Total</p>\n            </th>\n            <th scope=\"col\">{{ totalDebit | currency }}</th>\n            <th scope=\"col\">{{ totalCredit | currency }}</th>\n            <td colspan=\"2\"></td>\n          </tr>\n        </tbody>\n      </table>\n\n      <div class=\"d-flex justify-content-between align-items-center gap-2\">\n        <button\n          [disabled]=\"isSaving\"\n          type=\"button\"\n          mat-raised-button\n          color=\"primary\"\n          (click)=\"addEntry()\"\n        >\n          Add Entry\n        </button>\n        <div class=\"d-flex justify-content-end align-items-center gap-2\">\n          <button\n            [disabled]=\"isSaving\"\n            type=\"submit\"\n            mat-raised-button\n            color=\"primary\"\n          >\n            Save\n          </button>\n          <button [disabled]=\"isSaving\" type=\"button\" mat-flat-button (click)=\"location.back()\">\n            Cancel\n          </button>\n        </div>\n      </div>\n    </form>\n  </mat-card-content>\n</mat-card>\n\n<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { JournalListComponent } from './journal-list/journal-list.component';\nimport { JournalFormComponent } from './journal-form/journal-form.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: JournalListComponent\n  },\n  {\n    path: 'create',\n    component: JournalFormComponent\n  },\n  {\n    path: ':id/edit',\n    component: JournalFormComponent\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class JournalRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { JournalRoutingModule } from './journal-routing.module';\n\n@NgModule({\n  declarations: [],\n  imports: [CommonModule, JournalRoutingModule]\n})\nexport class JournalModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n  FormValidatorService,\n  SearchableSelectorModule,\n  TechlifyFormComponent\n} from \"ngx-techlify-core\";\nimport { FormBuilder, ReactiveFormsModule, Validators } from \"@angular/forms\";\nimport { MatError, MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { NgIf } from \"@angular/common\";\nimport { MatButton } from \"@angular/material/button\";\nimport { TaxService } from \"../tax.service\";\nimport { MatCheckbox } from '@angular/material/checkbox';\n\n@Component({\n  selector: 'app-tax-form',\n  standalone: true,\n  imports: [\n    ReactiveFormsModule,\n    MatFormField,\n    MatLabel,\n    MatInput,\n    MatError,\n    NgIf,\n    SearchableSelectorModule,\n    MatButton,\n    MatCheckbox\n  ],\n  templateUrl: './tax-form.component.html',\n  styleUrl: './tax-form.component.scss'\n})\nexport class TaxFormComponent extends TechlifyFormComponent implements OnInit {\n  @Input() tax!: any;\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n  @Output() cancelled: EventEmitter<any> = new EventEmitter<any>();\n\n  isSaving!: boolean;\n  constructor(\n    formValidatorService: FormValidatorService,\n    private formBuilder: FormBuilder,\n    private taxService: TaxService\n  ) {\n    super(formValidatorService);\n    this.errorMessages = {\n      name: {\n        required: 'The name field is required.'\n      },\n      tax_agency: {\n        required: 'The tax agency field is required.'\n      },\n      sale_rate: {\n        required: 'The sale rate field is required.'\n      },\n      purchase_rate: {\n        required: 'The purchase rate field is required.'\n      }\n    }\n\n    this.form = this.formBuilder.group({\n      id: [''],\n      name: ['', Validators.required],\n      description: [''],\n      tax_agency: ['', Validators.required],\n      business_id: [''],\n      is_sale_tax: [''],\n      sale_rate: [''],\n      is_purchase_tax: [''],\n      purchase_rate: [''],\n      is_purchase_tax_reclaimable: [false],\n    });\n  }\n\n  ngOnInit() {\n    if (this.tax) {\n      const data: any = { ...this.tax };\n      if (data?.sale_rate) {\n        data.is_sale_tax = true;\n      }\n      if (data?.purchase_rate) {\n        data.is_purchase_tax = true;\n      }\n      this.form.patchValue(data);\n    }\n\n    this.form.get('is_sale_tax')?.valueChanges.subscribe((checked: boolean) => {\n      const control = this.form.get('sale_rate');\n      if (checked) {\n        control?.setValidators([Validators.required]);\n      } else {\n        control?.clearValidators();\n      }\n      control?.updateValueAndValidity();\n    });\n\n    this.form.get('is_purchase_tax')?.valueChanges.subscribe((checked: boolean) => {\n      const control = this.form.get('purchase_rate');\n      if (checked) {\n        control?.setValidators([Validators.required]);\n      } else {\n        this.form.get('is_purchase_tax_reclaimable')?.setValue(false);\n        control?.clearValidators();\n      }\n      control?.updateValueAndValidity();\n    });\n  }\n\n  save() {\n    this.form.markAllAsTouched();\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please check the form for errors.', 'error');\n      return;\n    }\n    const data: any = this.form.value;\n    const params: any = {\n      with: 'creator'\n    }\n    this.isSaving = true;\n    let request = this.taxService.store(data, params);\n    if (data?.id) {\n      request = this.taxService.update(data, params);\n    }\n    request.subscribe({\n      next: (response: any) => {\n        this.isSaving = false;\n        this.saved.emit(response?.item);\n        this.alertService.addAlert('The tax saved successfully!', 'success');\n      },\n      error: () => (this.isSaving = false)\n    });\n  }\n}\n","<form [formGroup]=\"form\" (submit)=\"save()\" class=\"d-flex flex-column gap-1\">\n  <mat-form-field>\n    <mat-label>Name</mat-label>\n    <input type=\"text\" matInput formControlName=\"name\" placeholder=\"Name\">\n    <mat-error *ngIf=\"isFieldValid('name')\">\n      {{ getErrorMessage('name') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Description</mat-label>\n    <textarea matInput formControlName=\"description\" placeholder=\"Description\"></textarea>\n    <mat-error *ngIf=\"isFieldValid('description')\">\n      {{ getErrorMessage('description') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Tax Agency</mat-label>\n    <input type=\"text\" matInput formControlName=\"tax_agency\" placeholder=\"Tax Agency\">\n    <mat-error *ngIf=\"isFieldValid('tax_agency')\">\n      {{ getErrorMessage('tax_agency') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field>\n    <mat-label>Business ID</mat-label>\n    <input type=\"text\" matInput formControlName=\"business_id\" placeholder=\"Business ID\">\n  </mat-form-field>\n\n  <mat-checkbox formControlName=\"is_sale_tax\">Is Sale Tax</mat-checkbox>\n\n  <mat-form-field *ngIf=\"form.value?.is_sale_tax\">\n    <mat-label>Sale Rate</mat-label>\n    <input type=\"number\" matInput formControlName=\"sale_rate\" placeholder=\"Sale Rate\">\n    <mat-error *ngIf=\"isFieldValid('sale_rate')\">\n      {{ getErrorMessage('sale_rate') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-checkbox formControlName=\"is_purchase_tax\">Is Purchase Tax</mat-checkbox>\n\n  <mat-form-field *ngIf=\"form.value?.is_purchase_tax\">\n    <mat-label>Purchase Rate</mat-label>\n    <input type=\"number\" matInput formControlName=\"purchase_rate\" placeholder=\"Purchase Rate\">\n    <mat-error *ngIf=\"isFieldValid('purchase_rate')\">\n      {{ getErrorMessage('purchase_rate') }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-checkbox *ngIf=\"form.value?.is_purchase_tax\" formControlName=\"is_purchase_tax_reclaimable\">\n    Is Purchase Tax Reclaimable\n  </mat-checkbox>\n\n  <div class=\"d-flex justify-content-end align-items-center gap-2\">\n    <button [disabled]=\"isSaving\" type=\"submit\" mat-raised-button color=\"primary\">\n      Save\n    </button>\n    <button (click)=\"cancelled.emit()\" [disabled]=\"isSaving\" type=\"button\" mat-flat-button>\n      Cancel\n    </button>\n  </div>\n</form>\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {MatDialog, MatDialogContent, MatDialogTitle} from \"@angular/material/dialog\";\nimport {TaxFormComponent} from \"../tax-form/tax-form.component\";\n\n@Component({\n  selector: 'app-tax-form-button',\n  standalone: true,\n\timports: [\n\t\tMatDialogContent,\n\t\tMatDialogTitle,\n\t\tTaxFormComponent\n\t],\n  templateUrl: './tax-form-button.component.html',\n  styleUrl: './tax-form-button.component.scss'\n})\nexport class TaxFormButtonComponent {\n  @Input() tax!: any;\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n\n  constructor(public matDialog: MatDialog) {\n  }\n\n  showForm(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, { width: '400px' });\n  }\n\n  onSaved(tax: any) {\n    this.matDialog.closeAll();\n    this.saved.emit(tax);\n  }\n}\n","<span\n  class=\"material-symbols-outlined cursor-pointer\"\n  (click)=\"showForm(taxFormTemplate)\"\n>\n  {{ tax ? 'edit' : 'add' }}\n</span>\n\n<ng-template #taxFormTemplate>\n  <h3 mat-dialog-title>{{ tax ? 'Edit' : 'Create' }} Tax</h3>\n  <app-tax-form\n    mat-dialog-content\n    [tax]=\"tax\"\n    (saved)=\"onSaved($event)\"\n    (cancelled)=\"matDialog.closeAll()\"\n  ></app-tax-form>\n</ng-template>\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {MatDialog, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle} from \"@angular/material/dialog\";\nimport {MatIcon} from \"@angular/material/icon\";\nimport {MatButton} from \"@angular/material/button\";\nimport {TaxService} from \"../tax.service\";\n\n@Component({\n  selector: 'app-tax-delete-button',\n  standalone: true,\n  imports: [\n    MatIcon,\n    MatDialogTitle,\n    MatDialogContent,\n    MatDialogActions,\n    MatButton,\n    MatDialogClose\n  ],\n  templateUrl: './tax-delete-button.component.html',\n  styleUrl: './tax-delete-button.component.scss'\n})\nexport class TaxDeleteButtonComponent {\n  @Input() tax: any;\n  @Output() deleted: EventEmitter<any> = new EventEmitter<any>();\n  isDeleting: boolean = false;\n\n  constructor(\n    private taxService: TaxService,\n    private matDialog: MatDialog\n  ) {}\n\n  delete() {\n    this.isDeleting = true;\n    this.taxService.delete(this.tax).subscribe({\n      next: () => {\n        this.isDeleting = false;\n        this.matDialog.closeAll();\n        this.deleted.emit();\n      },\n      error: () => (this.isDeleting = false)\n    });\n  }\n\n  showConfirmDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef);\n  }\n}\n","<span\n  (click)=\"showConfirmDialog(deleteConfirmTemplate)\"\n  class=\"cursor-pointer material-symbols-outlined\"\n>\n  delete\n</span>\n\n<ng-template #deleteConfirmTemplate>\n  <h3 mat-dialog-title>Delete Tax</h3>\n  <div mat-dialog-content>\n    <p>Are you sure you want to delete the tax?</p>\n  </div>\n  <div mat-dialog-actions class=\"d-flex justify-content-end align-items-center gap-2\">\n    <button\n      [disabled]=\"isDeleting\"\n      mat-flat-button\n      type=\"button\"\n      mat-dialog-close\n    >\n      Cancel\n    </button>\n    <button\n      [disabled]=\"isDeleting\"\n      mat-raised-button\n      color=\"warn\"\n      type=\"button\"\n      (click)=\"delete()\"\n    >\n      Delete\n    </button>\n  </div>\n</ng-template>\n","import { Component, OnInit } from '@angular/core';\nimport { SearchableSelectorModule, TechlifyListComponent } from \"ngx-techlify-core\";\nimport { DatePipe, NgIf } from \"@angular/common\";\nimport { InfiniteScrollDirective } from \"ngx-infinite-scroll\";\nimport { TaxService } from \"../tax.service\";\nimport { FormBuilder, ReactiveFormsModule } from \"@angular/forms\";\nimport { TaxFormComponent } from \"../tax-form/tax-form.component\";\nimport { TaxFormButtonComponent } from \"../tax-form-button/tax-form-button.component\";\nimport { TaxDeleteButtonComponent } from \"../tax-delete-button/tax-delete-button.component\";\nimport { MaterialModule } from '../../../@shared/material.module';\n\n@Component({\n  selector: 'app-tax-list',\n  standalone: true,\n  imports: [\n    DatePipe,\n    InfiniteScrollDirective,\n    NgIf,\n    ReactiveFormsModule,\n    SearchableSelectorModule,\n    TaxFormComponent,\n    TaxFormButtonComponent,\n    TaxDeleteButtonComponent,\n    MaterialModule\n  ],\n  templateUrl: './tax-list.component.html',\n  styleUrl: './tax-list.component.scss'\n})\nexport class TaxListComponent extends TechlifyListComponent implements OnInit {\n  displayedColumns: string[] = [\n    '#',\n    'Name',\n    'Description',\n    'Agency',\n    'Sale Rate',\n    'Purchase Rate',\n    'Creator',\n    'Actions',\n  ]\n\n  constructor(\n    protected override service: TaxService,\n    private formBuilder: FormBuilder,\n  ) {\n    super();\n\n    this.filterFormConfiguration = {\n      type_ids: { multiple: true },\n    }\n\n    this.filterForm = this.formBuilder.group({\n      type_ids: [''],\n      search: [''],\n      with: ['creator'],\n      sort_by: ['id|desc'],\n    });\n  }\n\n  ngOnInit() {\n    this.patchFiltersFromRoute();\n    this.listenFilterChanges();\n    this.loadData();\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n    <div class=\"d-flex justify-content-start align-items-center gap-3\">\n      <strong>Taxes</strong>\n      <app-tax-form-button (saved)=\"modelCreated($event)\"></app-tax-form-button>\n    </div>\n    <form class=\"d-flex justify-content-end align-items-center gap-2\" [formGroup]=\"filterForm\" (submit)=\"reload()\">\n      <mat-form-field>\n        <mat-label>Search</mat-label>\n        <input type=\"text\" placeholder=\"Search\" matInput formControlName=\"search\">\n      </mat-form-field>\n    </form>\n  </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-2\">\n  <mat-card-content class=\"p-0\">\n    <table #table mat-table [dataSource]=\"models\" class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n      [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort\n      (matSortChange)=\"sortColumn($event)\">\n\n      <ng-container matColumnDef=\"#\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Name\">\n        <th mat-header-cell mat-sort-header=\"name\" *matHeaderCellDef> Name </th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.name }}</td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Description\">\n        <th mat-header-cell *matHeaderCellDef> Description </th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.description }}</td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Agency\">\n        <th mat-header-cell *matHeaderCellDef> Agency </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p *ngIf=\"element?.tax_agency\" class=\"mb-0\">{{ element?.tax_agency }}</p>\n          <small class=\"text-secondary\" *ngIf=\"element?.business_id\">{{ element?.business_id }}</small>\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Sale Rate\">\n        <th mat-header-cell *matHeaderCellDef> Sale Rate </th>\n        <td mat-cell *matCellDef=\"let element\">{{ element?.sale_rate }}</td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Purchase Rate\">\n        <th mat-header-cell *matHeaderCellDef> Purchase Rate </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p *ngIf=\"element?.purchase_rate\" class=\"mb-0\">{{ element?.purchase_rate }}</p>\n          <span class=\"badge bg-dark\" *ngIf=\"element?.is_purchase_tax_reclaimable\">\n            Reclaimable\n          </span>\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Creator\">\n        <th mat-header-cell *matHeaderCellDef> Creator </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n          <small class=\"text-secondary\">{{ element?.created_at | date }}</small>\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Actions\">\n        <th mat-header-cell *matHeaderCellDef> Actions </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">\n          <div class=\"d-flex justify-content-start align-items-center gap-2\">\n            <app-tax-form-button [tax]=\"element\" (saved)=\"modelsUpdatedById($event)\"></app-tax-form-button>\n            <app-tax-delete-button [tax]=\"element\" (deleted)=\"modelsDeletedById($event)\"></app-tax-delete-button>\n          </div>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n    <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport {TaxListComponent} from \"./tax-list/tax-list.component\";\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: TaxListComponent\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class TaxRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TaxRoutingModule } from './tax-routing.module';\n\n\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule,\n    TaxRoutingModule\n  ]\n})\nexport class TaxModule { }\n","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {InvoiceListPageComponent} from '../invoice';\nimport {SaleDocumentTypeEnum} from '../invoice/sale-document-type-enum';\nimport {InvoiceFormPageComponent} from '../invoice/invoice-form-page/invoice-form-page.component';\nimport {InvoiceReceiptPageComponent} from '../invoice/invoice-receipt-page/invoice-receipt-page.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: InvoiceListPageComponent,\n    data: { documentType: SaleDocumentTypeEnum.TYPE_QUOTATION }\n  },\n  {\n    path: 'create',\n    component: InvoiceFormPageComponent,\n    data: { documentType: SaleDocumentTypeEnum.TYPE_QUOTATION }\n  },\n  {\n    path: ':id/edit',\n    component: InvoiceFormPageComponent,\n    data: { documentType: SaleDocumentTypeEnum.TYPE_QUOTATION }\n  },\n  {\n    path: ':id/view',\n    component: InvoiceReceiptPageComponent,\n    data: { documentType: SaleDocumentTypeEnum.TYPE_QUOTATION }\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class QuotationRoutingModule {}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {QuotationRoutingModule} from './quotation-routing.module';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatIconModule} from '@angular/material/icon';\nimport {InvoiceFormModule} from '../invoice/invoice-form/invoice-form.module';\n\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule,\n    QuotationRoutingModule,\n    MatButtonModule,\n    MatIconModule,\n    InvoiceFormModule\n  ]\n})\nexport class QuotationModule {}\n","export enum PaymentVoucherStatusEnum {\n  STATUS_PENDING = 1,\n  STATUS_APPROVE = 2,\n  STATUS_REJECT = 3,\n  STATUS_PAID = 4\n}\n","import { Injectable } from '@angular/core';\nimport {HttpService, TechlifyService} from \"ngx-techlify-core\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PaymentVoucherService extends TechlifyService {\n\n  constructor(\n    httpService: HttpService\n  ) {\n    super(httpService, 'payment-vouchers');\n  }\n\n  updateStatus(paymentVoucher: any, statusId: number, params?: any) {\n    return this.http.put(\n      `api/payment-vouchers/${paymentVoucher?.id}/update-status`,\n      { status_id: statusId },\n      { params }\n    );\n  }\n}\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {MatTooltip} from \"@angular/material/tooltip\";\nimport {MatDialog, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle} from \"@angular/material/dialog\";\nimport {MatButton} from \"@angular/material/button\";\nimport {PaymentVoucherService} from \"../payment-voucher.service\";\nimport {PaymentVoucherStatusEnum} from \"../payment-voucher-status.enum\";\nimport {AlertService} from \"ngx-techlify-core\";\n\n@Component({\n  selector: 'app-payment-voucher-status-update-button',\n  standalone: true,\n  imports: [\n    MatTooltip,\n    MatDialogTitle,\n    MatDialogContent,\n    MatDialogActions,\n    MatButton,\n    MatDialogClose\n  ],\n  templateUrl: './payment-voucher-status-update-button.component.html',\n  styleUrl: './payment-voucher-status-update-button.component.scss'\n})\nexport class PaymentVoucherStatusUpdateButtonComponent {\n  @Input() paymentVoucher!: any;\n  @Input() action: 'approve' | 'reject' | 'paid' = 'approve';\n  @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n\n  isSaving!: boolean;\n\n  constructor(\n    private matDialog: MatDialog,\n    private paymentVoucherService: PaymentVoucherService,\n    private alertService: AlertService\n  ) {}\n\n\n  getIcon(): string {\n    switch (this.action) {\n      case 'approve':\n        return 'check';\n      case 'reject':\n        return 'close';\n      case 'paid':\n        return 'done_all';\n    }\n  }\n\n  showDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, { width: '500px' });\n  }\n\n  updateStatus() {\n    this.isSaving = true;\n    const params: any = {\n      with: 'paymentAccount',\n    }\n\n    this.paymentVoucherService.updateStatus(this.paymentVoucher, this.getStatusId(), params)\n      .subscribe({\n        next: (response: any) => {\n          this.isSaving = false;\n          this.matDialog.closeAll();\n          this.saved.emit(response?.item);\n          this.alertService.addAlert(\n            `The payment voucher status updated to ${this.action}.`,\n            'success'\n          );\n        },\n        error: () => (this.isSaving = false)\n      });\n  }\n\n  getStatusId(): number {\n    switch (this.action) {\n      case 'approve':\n        return PaymentVoucherStatusEnum.STATUS_APPROVE;\n      case 'reject':\n        return PaymentVoucherStatusEnum.STATUS_REJECT;\n      case 'paid':\n        return PaymentVoucherStatusEnum.STATUS_PAID;\n    }\n  }\n}\n","<span\n  class=\"material-symbols-outlined cursor-pointer\"\n  [matTooltip]=\"action\"\n  (click)=\"showDialog(updateStatusConfirmDialog)\"\n>\n  {{ getIcon() }}\n</span>\n\n<ng-template #updateStatusConfirmDialog>\n  <h3 mat-dialog-title class=\"text-capitalize\">Update Payment Voucher</h3>\n  <div mat-dialog-content>\n    <p>Are you sure, you want to update the payment voucher status to {{action}}?</p>\n  </div>\n  <div mat-dialog-actions class=\"d-flex justify-content-end align-items-center gap-2\">\n    <button\n      (click)=\"updateStatus()\"\n      mat-raised-button color=\"primary\" type=\"button\" class=\"text-capitalize\"\n      [disabled]=\"isSaving\"\n    >\n      {{action}}\n    </button>\n    <button [disabled]=\"isSaving\" mat-flat-button mat-dialog-close type=\"button\">Cancel</button>\n  </div>\n</ng-template>\n","import { Component, ViewChild } from '@angular/core';\nimport { MatCard, MatCardContent } from \"@angular/material/card\";\nimport {\n  RequestHelperService,\n  TechlifyListComponent,\n  TimelineFilterModule\n} from \"ngx-techlify-core\";\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { CurrencyPipe, DatePipe, NgIf } from \"@angular/common\";\nimport { InfiniteScrollDirective } from \"ngx-infinite-scroll\";\nimport {\n  MatCell,\n  MatCellDef,\n  MatColumnDef,\n  MatHeaderCell, MatHeaderCellDef,\n  MatHeaderRow,\n  MatHeaderRowDef,\n  MatRow, MatRowDef, MatTable\n} from \"@angular/material/table\";\nimport { MatProgressBar } from \"@angular/material/progress-bar\";\nimport { MatSort, MatSortHeader } from \"@angular/material/sort\";\nimport { debounceTime, distinctUntilChanged } from \"rxjs\";\nimport { ActivatedRoute, RouterLink } from \"@angular/router\";\nimport { PaymentVoucherService } from \"../payment-voucher.service\";\nimport {\n  PaymentVoucherStatusUpdateButtonComponent\n} from \"../payment-voucher-status-update-button/payment-voucher-status-update-button.component\";\nimport { PaymentVoucherStatusEnum } from \"../payment-voucher-status.enum\";\nimport { NgxPermissionsModule } from \"ngx-permissions\";\nimport { AccountSelectorModule } from '../../../sale/account/account-selector/account-selector.module';\n\n@Component({\n  selector: 'app-payment-voucher-list',\n  standalone: true,\n  imports: [\n    MatCard,\n    MatCardContent,\n    TimelineFilterModule,\n    ReactiveFormsModule,\n    MatFormField,\n    MatInput,\n    MatLabel,\n    AccountSelectorModule,\n    DatePipe,\n    InfiniteScrollDirective,\n    MatCell,\n    MatCellDef,\n    MatColumnDef,\n    MatHeaderCell,\n    MatHeaderRow,\n    MatHeaderRowDef,\n    MatProgressBar,\n    MatRow,\n    MatRowDef,\n    MatSort,\n    MatTable,\n    NgIf,\n    MatHeaderCellDef,\n    CurrencyPipe,\n    RouterLink,\n    MatSortHeader,\n    PaymentVoucherStatusUpdateButtonComponent,\n    NgxPermissionsModule\n  ],\n  templateUrl: './payment-voucher-list.component.html',\n  styleUrl: './payment-voucher-list.component.scss'\n})\nexport class PaymentVoucherListComponent extends TechlifyListComponent {\n  @ViewChild('table') table!: MatTable<any>;\n  displayedColumns: string[] = [\n    'No',\n    'Date',\n    'Payee',\n    'Payment Account',\n    'Total',\n    'Actions',\n  ];\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private activatedRoute: ActivatedRoute,\n    private paymentVoucherService: PaymentVoucherService\n  ) {\n    super();\n    this.lastPage = 0;\n    this.filterForm = this.formBuilder.group({\n      duration: [''],\n      date_from: [''],\n      date_to: [''],\n      search: [''],\n      payment_account_ids: [''],\n      sort_by: ['date|desc'],\n    });\n\n    this.requestHelperService.updateFormWithQueryParams(\n      this.filterForm,\n      {\n        payment_account_ids: { multiple: true },\n      }\n    );\n\n    (this.filterForm as FormGroup).valueChanges.pipe(\n      debounceTime(800)\n    ).subscribe({\n      next: () => {\n        this.requestHelperService.updateQueryParams(\n          this.requestHelperService.convertToFormData(this.filterForm.value)\n        );\n      }\n    });\n\n    // listen for route change\n    this.activatedRoute.queryParams\n      .pipe(debounceTime(500), distinctUntilChanged())\n      .subscribe((val: any) => {\n        this.reload();\n      });\n  }\n\n  override loadData(): void {\n    if (this.isWorking) {\n      return;\n    }\n\n    this.isWorking = true;\n    const params: any = {\n      page: this.page,\n      perPage: this.perPage,\n      ...this.requestHelperService.convertToFormData(this.filterForm.value),\n      with: 'paymentAccount',\n    }\n    this.paymentVoucherService.index(params).subscribe({\n      next: (response: any) => {\n        this.isWorking = false;\n        this.models = this.models?.concat(response?.data);\n        this.lastPage = response?.last_page;\n      },\n      error: () => (this.isWorking = false)\n\n    });\n  }\n  protected readonly PaymentVoucherStatusEnum = PaymentVoucherStatusEnum;\n\n  onStatusUpdated(paymentVoucher: any, index: number) {\n    this.models[index] = paymentVoucher;\n    this.table.renderRows();\n  }\n}\n","<mat-card>\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n    <div class=\"d-flex justify-content-start align-items-center gap-2\">\n      <strong class=\"mb-0\">Payment Vouchers</strong>\n      <a class=\"text-primary\" [routerLink]=\"['create']\">\n        <span class=\"material-symbols-outlined\">\n          add\n        </span>\n      </a>\n    </div>\n    <form\n      [formGroup]=\"filterForm\"\n      (submit)=\"reload()\" class=\"d-flex justify-content-end align-items-center gap-2\"\n    >\n      <app-timeline-filter\n        labelText=\"Period\"\n        formControlName=\"duration\"\n        [form]=\"filterForm\"\n      ></app-timeline-filter>\n\n      <mat-form-field>\n        <mat-label>Search</mat-label>\n        <input type=\"text\" matInput formControlName=\"search\" placeholder=\"Search vouchers\">\n      </mat-form-field>\n\n      <app-account-selector\n        formControlName=\"payment_account_ids\"\n        label=\"Payment Account\"\n        [multiple]=\"true\"\n      ></app-account-selector>\n    </form>\n  </mat-card-content>\n</mat-card>\n\n\n<mat-card class=\"mt-3\">\n  <mat-card-content class=\"p-0\">\n    <table\n      #table\n      mat-table [dataSource]=\"models\" class=\"w-100\"\n      infiniteScroll\n      [infiniteScrollDistance]=\"2\"\n      [infiniteScrollThrottle]=\"50\"\n      (scrolled)=\"onScroll()\"\n      [fromRoot]=\"true\"\n      matSort\n      (matSortChange)=\"sortColumn($event)\"\n    >\n      <ng-container matColumnDef=\"No\">\n        <th mat-header-cell *matHeaderCellDef> # </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i + 1 }} </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Date\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"date\"> Date </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <p class=\"mb-1\"> {{ element?.date | date }} </p>\n          <small class=\"text-secondary\" *ngIf=\"element?.voucher_no\">\n            Voucher #: {{ element?.voucher_no }}\n          </small>\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Payee\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"payee\"> Payee </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.payee }}\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Payment Account\">\n        <th mat-header-cell *matHeaderCellDef mat-sort-header=\"payment_account\"> Payment Account </th>\n        <td mat-cell *matCellDef=\"let element\">\n          <a\n            class=\"text-dark\"\n            [routerLink]=\"['/finance/accounts', element?.payment_account_id, 'view']\"\n          >\n            {{ element?.payment_account?.title }}\n          </a>\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Total\">\n        <th mat-header-cell *matHeaderCellDef> Total </th>\n        <td mat-cell *matCellDef=\"let element\">\n          {{ element?.total | currency }}\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"Actions\">\n        <th mat-header-cell *matHeaderCellDef> Actions </th>\n        <td mat-cell *matCellDef=\"let element; let i = index\">\n          <div class=\"d-flex justify-content-start align-items-center gap-2\">\n            <ng-container *ngIf=\"element?.status_id != PaymentVoucherStatusEnum.STATUS_PAID\">\n              <a\n                *ngxPermissionsOnly=\"['payment_voucher.update']\"\n                class=\"text-secondary text-decoration-none\"\n                [routerLink]=\"[element?.id, 'edit']\"\n              >\n                <span\n                  class=\"material-symbols-outlined cursor-pointer\"\n                >\n                  edit\n                </span>\n              </a>\n            </ng-container>\n            <a\n              *ngxPermissionsOnly=\"['payment_voucher.read']\"\n              class=\"text-secondary text-decoration-none\"\n              [routerLink]=\"[element?.id, 'view']\"\n            >\n                <span\n                  class=\"material-symbols-outlined cursor-pointer\"\n                >\n                  visibility\n                </span>\n            </a>\n            <a\n              *ngxPermissionsOnly=\"['payment_voucher.read']\"\n              class=\"text-secondary text-decoration-none\"\n              [routerLink]=\"[element?.id, 'print']\"\n            >\n                <span\n                  class=\"material-symbols-outlined cursor-pointer\"\n                >\n                  print\n                </span>\n            </a>\n            <ng-container *ngxPermissionsOnly=\"['payment_voucher.approve']\">\n              <app-payment-voucher-status-update-button\n                [paymentVoucher]=\"element\"\n                (saved)=\"onStatusUpdated($event, i)\"\n                action=\"approve\"\n                *ngIf=\"element?.status_id === PaymentVoucherStatusEnum.STATUS_PENDING\"\n              ></app-payment-voucher-status-update-button>\n            </ng-container>\n\n            <ng-container *ngxPermissionsOnly=\"['payment_voucher.reject']\">\n              <app-payment-voucher-status-update-button\n                [paymentVoucher]=\"element\"\n                (saved)=\"onStatusUpdated($event, i)\"\n                action=\"reject\"\n                *ngIf=\"element?.status_id === PaymentVoucherStatusEnum.STATUS_PENDING\"\n              ></app-payment-voucher-status-update-button>\n            </ng-container>\n\n            <ng-container *ngxPermissionsOnly=\"['payment_voucher.paid']\">\n              <app-payment-voucher-status-update-button\n                [paymentVoucher]=\"element\"\n                (saved)=\"onStatusUpdated($event, i)\"\n                action=\"paid\"\n                *ngIf=\"element?.status_id === PaymentVoucherStatusEnum.STATUS_APPROVE\"\n              ></app-payment-voucher-status-update-button>\n            </ng-container>\n          </div>\n        </td>\n      </ng-container>\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n      <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n    </table>\n    <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n  </mat-card-content>\n</mat-card>\n","import { Pipe, PipeTransform } from '@angular/core';\n// @ts-ignore\nimport * as convertor from 'number-to-words';\n\n@Pipe({\n  name: 'numberToWords',\n  standalone: true\n})\nexport class NumberToWordsPipe implements PipeTransform {\n\n  transform(value: number): string {\n    return `${convertor.toWords(Math.floor(value))} dollars and ${convertor.toWords(Math.round((value % 1) * 100))} cents`;\n  }\n}\n","import {Component, Input} from '@angular/core';\nimport {CurrencyPipe, NgForOf, NgIf} from \"@angular/common\";\nimport {NumberToWordsPipe} from '../../../@shared/pipes/number-to-words.pipe';\n\n@Component({\n  selector: 'app-payment-voucher-line-items',\n  standalone: true,\n  imports: [\n    CurrencyPipe,\n    NgForOf,\n    NumberToWordsPipe,\n    NgIf\n  ],\n  templateUrl: './payment-voucher-line-items.component.html',\n  styleUrl: './payment-voucher-line-items.component.scss'\n})\nexport class PaymentVoucherLineItemsComponent {\n  @Input() paymentVoucher!: any;\n}\n","<table *ngIf=\"paymentVoucher\" class=\"table w-100 table-bordered bg-transparent mb-0\">\n  <thead>\n  <tr>\n    <th scope=\"col\">#</th>\n    <th scope=\"col\">CATEGORY</th>\n    <th scope=\"col\">PARTICULARS</th>\n    <th scope=\"col\">AMOUNT</th>\n  </tr>\n  </thead>\n  <tbody>\n  <tr *ngFor=\"let lineItem of paymentVoucher?.line_items; let i = index;\">\n    <th scope=\"row\">{{ i + 1 }}</th>\n    <td>{{ lineItem?.category?.title }}</td>\n    <td>{{ lineItem?.particulars }}</td>\n    <td>{{ lineItem?.amount | currency }}</td>\n  </tr>\n  </tbody>\n  <tfoot>\n  <tr>\n    <th scope=\"col\" colspan=\"2\"></th>\n    <th scope=\"col\">TOTAL</th>\n    <th scope=\"col\">{{ paymentVoucher?.total | currency }}</th>\n  </tr>\n  <tr>\n    <th scope=\"col\" colspan=\"2\"></th>\n    <th scope=\"col\">TOTAL AMOUNT IN WORDS</th>\n    <th scope=\"col\" class=\"text-uppercase\">{{paymentVoucher?.total | numberToWords }}</th>\n  </tr>\n  </tfoot>\n</table>\n","import {Component, OnInit} from '@angular/core';\nimport {CredentialsService} from \"ngx-techlify-core\";\nimport {PaymentVoucherService} from \"../payment-voucher.service\";\nimport {ActivatedRoute, RouterLink} from \"@angular/router\";\nimport {DatePipe, NgIf} from \"@angular/common\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {PaymentVoucherLineItemsComponent} from \"../payment-voucher-line-items/payment-voucher-line-items.component\";\nimport {\n  CompanyInfoDisplayComponent\n} from '../../../company-information/company-info-display/company-info-display.component';\nimport {PrintButtonModule} from '../../../@shared';\n\n@Component({\n  selector: 'app-payment-voucher-print',\n  standalone: true,\n  imports: [\n    CompanyInfoDisplayComponent,\n    NgIf,\n    MatProgressBar,\n    DatePipe,\n    RouterLink,\n    PrintButtonModule,\n    PaymentVoucherLineItemsComponent\n  ],\n  templateUrl: './payment-voucher-print.component.html',\n  styleUrl: './payment-voucher-print.component.scss'\n})\nexport class PaymentVoucherPrintComponent implements OnInit {\n  client!: any;\n  id!: number;\n  isWorking!: boolean;\n  paymentVoucher!: any;\n\n  constructor(\n    private credentialsService: CredentialsService,\n    private paymentVoucherService: PaymentVoucherService,\n    private activatedRoute: ActivatedRoute\n  ) {\n    this.id = parseInt(this.activatedRoute.snapshot.params['id']);\n    this.client = this.credentialsService.credentials?.user?.client;\n  }\n\n  ngOnInit() {\n    if (this.id) {\n      this.loadData();\n    }\n  }\n\n  private loadData() {\n    const params: any = {\n      with: 'paymentAccount,lineItems.category,approver'\n    }\n    this.isWorking = true;\n    this.paymentVoucherService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.paymentVoucher = response?.item;\n        this.isWorking = false;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n}\n","<div *ngIf=\"paymentVoucher\" class=\"container d-flex flex-column justify-content-center align-items-center gap-3\">\n  <div class=\"d-flex justify-content-between align-items-center w-100\">\n    <span></span>\n    <strong class=\"text-uppercase\">Payment Voucher</strong>\n    <app-print-button></app-print-button>\n  </div>\n  <div class=\"w-100\">\n    <div class=\"mb-3\">\n      <app-company-info-display\n        [client]=\"client\"\n      ></app-company-info-display>\n    </div>\n\n    <div class=\"mt-3 mb-0 d-flex justify-content-between align-items-start\">\n      <div class=\"d-flex justify-content-start align-items-center gap-2\">\n        <p class=\"text-uppercase\">No.</p>\n        <p class=\"text-secondary\">{{ paymentVoucher?.voucher_no }}</p>\n      </div>\n      <div class=\"d-flex justify-content-start align-items-center gap-2\">\n        <p class=\"text-uppercase\">Date:</p>\n        <p class=\"text-secondary\">{{ paymentVoucher?.date | date }}</p>\n      </div>\n    </div>\n    <div class=\"d-flex flex-column\">\n      <div class=\"d-flex justify-content-start align-items-center gap-2\">\n        <p class=\"text-uppercase\">Payee:</p>\n        <p class=\"text-secondary\">{{ paymentVoucher?.payee }}</p>\n      </div>\n      <div class=\"d-flex justify-content-start align-items-center gap-2\">\n        <p class=\"text-uppercase\">Payment Account:</p>\n        <a class=\"text-secondary text-decoration-none mb-2\"\n           [routerLink]=\"['/finance/accounts/', paymentVoucher?.payment_account_id, 'view']\">\n          {{ paymentVoucher?.payment_account?.title }}\n        </a>\n      </div>\n    </div>\n\n    <div class=\"mt-3 mb-3\">\n      <app-payment-voucher-line-items\n        [paymentVoucher]=\"paymentVoucher\"\n      ></app-payment-voucher-line-items>\n    </div>\n    <div class=\"mt-3 d-flex flex-column gap-3\">\n      <div class=\"d-flex justify-content-start align-items-center gap-2\">\n        <p class=\"text-uppercase\">Approved By:</p>\n        <p class=\"text-secondary\">{{ paymentVoucher?.approver?.name ?? '____________________' }}</p>\n      </div>\n      <div class=\"d-flex justify-content-start align-items-center gap-2\">\n        <p class=\"text-uppercase\">Received By:</p>\n        <p class=\"text-secondary\">{{ paymentVoucher?.receiver ?? '____________________' }}</p>\n      </div>\n    </div>\n  </div>\n</div>\n\n<mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {MatDialog, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle} from \"@angular/material/dialog\";\nimport {MatButton} from \"@angular/material/button\";\nimport {PaymentVoucherService} from \"../payment-voucher.service\";\nimport {MatIcon} from \"@angular/material/icon\";\n\n@Component({\n  selector: 'app-payment-voucher-delete-button',\n  standalone: true,\n  imports: [\n    MatDialogTitle,\n    MatDialogContent,\n    MatDialogActions,\n    MatButton,\n    MatDialogClose,\n    MatIcon\n  ],\n  templateUrl: './payment-voucher-delete-button.component.html',\n  styleUrl: './payment-voucher-delete-button.component.scss'\n})\nexport class PaymentVoucherDeleteButtonComponent {\n  @Input() model: any;\n  @Output() deleted: EventEmitter<any> = new EventEmitter<any>();\n  isDeleting: boolean = false;\n\n  constructor(\n    private paymentVoucherService: PaymentVoucherService,\n    private matDialog: MatDialog\n  ) {}\n\n  /**\n   * Delete the expense record.\n   */\n  deleteModel() {\n    this.isDeleting = true;\n    this.paymentVoucherService.delete(this.model).subscribe({\n      next: () => {\n        this.isDeleting = false;\n        this.deleted.emit();\n      },\n      error: () => (this.isDeleting = false)\n    });\n  }\n\n  showConfirmDialog(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef);\n  }\n}\n","<mat-icon\n  (click)=\"showConfirmDialog(deleteConfirmTemplate)\"\n  class=\"cursor-pointer text-secondary\"\n>\n  delete\n</mat-icon>\n\n<ng-template #deleteConfirmTemplate>\n  <h3 mat-dialog-title>Delete Voucher</h3>\n  <div mat-dialog-content>\n    <p>Are you sure you want to delete the payment voucher?</p>\n  </div>\n  <div mat-dialog-actions class=\"d-flex justify-content-end align-items-center gap-2\">\n    <button\n      [disabled]=\"isDeleting\"\n      mat-flat-button\n      type=\"button\"\n      mat-dialog-close\n    >\n      Cancel\n    </button>\n    <button\n      [disabled]=\"isDeleting\"\n      mat-raised-button\n      color=\"warn\"\n      type=\"button\"\n      (click)=\"deleteModel()\"\n    >\n      Delete\n    </button>\n  </div>\n</ng-template>\n","import {Component, Input} from '@angular/core';\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {CurrencyPipe, DatePipe, Location, NgIf} from \"@angular/common\";\nimport {MatDivider} from \"@angular/material/divider\";\nimport {NgxPermissionsModule} from \"ngx-permissions\";\nimport {RouterLink} from \"@angular/router\";\nimport {\n  PaymentVoucherDeleteButtonComponent\n} from \"../payment-voucher-delete-button/payment-voucher-delete-button.component\";\nimport {PaymentVoucherStatusEnum} from \"../payment-voucher-status.enum\";\n\n@Component({\n  selector: 'app-payment-voucher-information-card',\n  standalone: true,\n  imports: [\n    MatCard,\n    MatCardContent,\n    CurrencyPipe,\n    DatePipe,\n    MatDivider,\n    NgIf,\n    NgxPermissionsModule,\n    RouterLink,\n    PaymentVoucherDeleteButtonComponent\n  ],\n  templateUrl: './payment-voucher-information-card.component.html',\n  styleUrl: './payment-voucher-information-card.component.scss'\n})\nexport class PaymentVoucherInformationCardComponent {\n  @Input() paymentVoucher!: any;\n\n  constructor(private location: Location) {\n  }\n\n  redirectBack() {\n    this.location.back();\n  }\n\n  protected readonly PaymentVoucherStatusEnum = PaymentVoucherStatusEnum;\n}\n","<mat-card *ngIf=\"paymentVoucher\">\n  <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n    <h3 class=\"mb-2 fw-bold\">Information</h3>\n    <div class=\"d-flex justify-content-end align-items-center gap-2\">\n      <ng-container *ngIf=\"paymentVoucher?.status_id != PaymentVoucherStatusEnum.STATUS_PAID\">\n        <a\n          *ngxPermissionsOnly=\"['payment_voucher.update']\"\n          class=\"text-secondary text-decoration-none\"\n          [routerLink]=\"['/purchases/payment-vouchers', paymentVoucher?.id, 'edit']\"\n        >\n        <span\n          class=\"material-symbols-outlined cursor-pointer\"\n        >\n          edit\n        </span>\n        </a>\n      </ng-container>\n      <app-payment-voucher-delete-button\n        [model]=\"paymentVoucher\"\n        (deleted)=\"redirectBack()\"\n      ></app-payment-voucher-delete-button>\n    </div>\n  </mat-card-content>\n  <mat-divider></mat-divider>\n  <mat-card-content class=\"mt-2 d-flex flex-column justify-content-start gap-2\">\n    <div class=\"d-flex flex-column justify-content-start\">\n      <small class=\"text-secondary\">No.</small>\n      <p class=\"mb-0\">{{ paymentVoucher?.voucher_no }}</p>\n    </div>\n\n    <div class=\"d-flex flex-column justify-content-start\">\n      <small class=\"text-secondary\">Date</small>\n      <p class=\"mb-0\">{{ paymentVoucher?.date | date }}</p>\n    </div>\n\n    <div class=\"d-flex flex-column justify-content-start\">\n      <small class=\"text-secondary\">Payee</small>\n      <p class=\"mb-0\">{{ paymentVoucher?.payee }}</p>\n    </div>\n\n    <div *ngIf=\"paymentVoucher?.payment_account\" class=\"d-flex flex-column justify-content-start\">\n      <small class=\"text-secondary\">Payment Account</small>\n      <p class=\"mb-0\">{{ paymentVoucher?.payment_account?.title }}</p>\n    </div>\n\n    <div class=\"d-flex flex-column justify-content-start\">\n      <small class=\"text-secondary\">Status</small>\n      <p class=\"mb-0\">{{ paymentVoucher?.status?.title }}</p>\n    </div>\n\n    <div class=\"d-flex flex-column justify-content-start\">\n      <small class=\"text-secondary\">Total</small>\n      <p class=\"mb-0\">{{ paymentVoucher?.total | currency }}</p>\n    </div>\n\n    <div class=\"d-flex flex-column justify-content-start\">\n      <small class=\"text-secondary\">Creator</small>\n      <p class=\"mb-0\">{{ paymentVoucher?.creator?.name }} <small>({{ paymentVoucher?.created_at | date }})</small></p>\n    </div>\n\n    <div *ngIf=\"paymentVoucher?.approver\" class=\"d-flex flex-column justify-content-start\">\n      <small class=\"text-secondary\">Approver</small>\n      <p class=\"mb-0\">{{ paymentVoucher?.approver?.name }} <small>({{ paymentVoucher?.approved_at | date }})</small></p>\n    </div>\n\n    <div *ngIf=\"paymentVoucher?.receiver\" class=\"d-flex flex-column justify-content-start\">\n      <small class=\"text-secondary\">Receiver</small>\n      <p class=\"mb-0\">{{ paymentVoucher?.receiver }}</p>\n    </div>\n\n    <div *ngIf=\"paymentVoucher?.memo\" class=\"d-flex flex-column justify-content-start\">\n      <small class=\"text-secondary\">Memo</small>\n      <p class=\"mb-0\">{{ paymentVoucher?.memo }}</p>\n    </div>\n\n  </mat-card-content>\n</mat-card>\n","import { Component } from '@angular/core';\nimport {PaymentVoucherService} from \"../payment-voucher.service\";\nimport {ActivatedRoute} from \"@angular/router\";\nimport {NgIf} from \"@angular/common\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {\n  PaymentVoucherInformationCardComponent\n} from \"../payment-voucher-information-card/payment-voucher-information-card.component\";\nimport {MatDivider} from \"@angular/material/divider\";\nimport {PaymentVoucherLineItemsComponent} from \"../payment-voucher-line-items/payment-voucher-line-items.component\";\n\n@Component({\n  selector: 'app-payment-voucher-view',\n  standalone: true,\n  imports: [\n    NgIf,\n    MatProgressBar,\n    MatCard,\n    MatCardContent,\n    PaymentVoucherInformationCardComponent,\n    MatDivider,\n    PaymentVoucherLineItemsComponent\n  ],\n  templateUrl: './payment-voucher-view.component.html',\n  styleUrl: './payment-voucher-view.component.scss'\n})\nexport class PaymentVoucherViewComponent {\n  id!: number;\n  isWorking!: boolean;\n  paymentVoucher!: any;\n\n  constructor(\n    private paymentVoucherService: PaymentVoucherService,\n    private activatedRoute: ActivatedRoute\n  ) {\n    this.id = parseInt(this.activatedRoute.snapshot.params['id']);\n  }\n\n\n  ngOnInit() {\n    if (this.id) {\n      this.loadData();\n    }\n  }\n\n  private loadData() {\n    const params: any = {\n      with: 'paymentAccount,lineItems.category,approver,status,creator'\n    }\n    this.isWorking = true;\n    this.paymentVoucherService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.paymentVoucher = response?.item;\n        this.isWorking = false;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n}\n","<div *ngIf=\"paymentVoucher\" class=\"d-flex flex-wrap justify-content-start align-items-start gap-3\">\n  <mat-card class=\"w-100\">\n    <mat-card-content>\n      <strong>Payment Voucher # {{ paymentVoucher?.voucher_no }} for {{ paymentVoucher?.payee }}</strong>\n    </mat-card-content>\n  </mat-card>\n\n  <app-payment-voucher-information-card\n    [paymentVoucher]=\"paymentVoucher\"\n    style=\"width: 300px\"\n  ></app-payment-voucher-information-card>\n\n  <mat-card style=\"width: calc(100% - 300px - 1rem)\">\n    <mat-card-content>\n      <h3 class=\"mb-2 fw-bold\">Line Items</h3>\n    </mat-card-content>\n    <mat-divider></mat-divider>\n    <mat-card-content class=\"p-0\">\n      <app-payment-voucher-line-items\n        [paymentVoucher]=\"paymentVoucher\"\n      ></app-payment-voucher-line-items>\n    </mat-card-content>\n  </mat-card>\n</div>\n\n<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n","import { Component, Input } from '@angular/core';\nimport { CurrencyPipe, Location, NgForOf, NgIf } from \"@angular/common\";\nimport { MatButton } from \"@angular/material/button\";\nimport { MatCard, MatCardContent } from \"@angular/material/card\";\nimport { MatDatepicker, MatDatepickerInput } from \"@angular/material/datepicker\";\nimport { MatError, MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { MatInput } from \"@angular/material/input\";\nimport { NgxPermissionsModule } from \"ngx-permissions\";\nimport { FormArray, FormBuilder, ReactiveFormsModule, Validators } from \"@angular/forms\";\nimport {\n  AlertService,\n  FormValidatorService,\n  SearchableSelectorModule,\n  TechlifyFormComponent\n} from \"ngx-techlify-core\";\nimport moment from \"moment/moment\";\nimport { PaymentVoucherService } from \"../payment-voucher.service\";\nimport { AccountSelectorModule } from '../../../sale/account/account-selector/account-selector.module';\nimport { SharedModule } from '../../../@shared';\nimport { ExpenseService } from '../../../expense/expense.service';\n\n@Component({\n  selector: 'app-payment-voucher-form',\n  standalone: true,\n  imports: [\n    AccountSelectorModule,\n    CurrencyPipe,\n    MatButton,\n    MatCard,\n    MatCardContent,\n    MatDatepicker,\n    MatDatepickerInput,\n    MatError,\n    MatFormField,\n    MatIcon,\n    MatInput,\n    MatLabel,\n    NgForOf,\n    NgIf,\n    NgxPermissionsModule,\n    ReactiveFormsModule,\n    SearchableSelectorModule,\n    SharedModule\n  ],\n  templateUrl: './payment-voucher-form.component.html',\n  styleUrl: './payment-voucher-form.component.scss'\n})\nexport class PaymentVoucherFormComponent extends TechlifyFormComponent {\n  @Input() paymentVoucher: any;\n  @Input() billId!: number;\n\n  isSaving = false;\n  totalAmount: number = 0;\n\n  constructor(\n    formValidatorService: FormValidatorService,\n    private paymentVoucherService: PaymentVoucherService,\n    private formBuilder: FormBuilder,\n    private location: Location,\n    private expenseService: ExpenseService\n  ) {\n    super(formValidatorService);\n    this.errorMessages = {\n      payee: {\n        required: 'The payee field is required.'\n      },\n      payment_account_id: {\n        required: 'The payment account field is required.'\n      },\n      date: {\n        required: 'The date field is required.'\n      }\n    };\n\n    this.form = this.formBuilder.group({\n      id: [''],\n      voucher_no: [''],\n      date: [new Date(), Validators.compose([Validators.required])],\n      payee: ['', Validators.compose([Validators.required])],\n      payment_account_id: ['', Validators.compose([Validators.required])],\n      memo: [''],\n      line_items: new FormArray([]),\n      payable_type: [''],\n      payable_id: [''],\n    });\n  }\n\n  ngOnInit() {\n    // listen for form changes and update the total amount.\n    this.form.valueChanges.subscribe(() => {\n      this.calculateTotalAmount();\n    });\n    if (this.paymentVoucher?.id) {\n      const { id, payee, payment_account_id, date, voucher_no, line_items, memo } = this.paymentVoucher;\n      // set expense data to form\n      this.form.patchValue({ id, payee, payment_account_id, date: new Date(date), voucher_no, memo });\n      (line_items as []).forEach((item: any) => {\n        this.addLineItem({ ...item });\n      });\n    } else {\n      if (this.billId) {\n        this.form.patchValue({ payable_type: 'bill', payable_id: this.billId });\n        this.loadBill();\n      } else {\n        // add a one line item initially.\n        this.addLineItem();\n      }\n    }\n  }\n\n  /**\n   * Get the line items.\n   */\n  get lineItems() {\n    return this.form.controls['line_items'] as FormArray;\n  }\n\n  /**\n   * Update category price on category selection change.\n   *\n   * @param category\n   * @param index\n   */\n  onCategorySelectionChange(category: any, index: number) {\n    const data: any = this.lineItems.value[index];\n    this.lineItems.controls[index].patchValue(data);\n  }\n\n  /**\n   * Clear all the line items from invoice.\n   */\n  clearAllLineItems() {\n    this.lineItems.clear();\n  }\n\n  /**\n   * Add or update line item to list.\n   *\n   * @param data\n   */\n  addLineItem(data?: any) {\n    if (data?.index >= 0) {\n      this.lineItems.at(data.index).patchValue(data);\n    } else {\n      let lineItemForm = this.formBuilder.group({\n        id: [data?.id],\n        category_id: [data?.category_id],\n        particulars: [data?.particulars, Validators.required],\n        amount: [data?.amount, Validators.required]\n      });\n      this.lineItems.push(lineItemForm);\n    }\n  }\n\n  /**\n   * Remove line item from list.\n   *\n   * @param index\n   */\n  deleteLineItem(index: number) {\n    this.lineItems.removeAt(index);\n  }\n\n  /**\n   * Save the expense with line items.\n   */\n  save(resetForm?: boolean) {\n    this.form.markAllAsTouched();\n    if (this.form.invalid) {\n      this.alertService.addAlert('Please fill all required fields.', 'warn');\n      return;\n    }\n\n    let data = { ...this.form.value };\n    if (data?.date) {\n      data.date = moment(data.date).format('YYYY-MM-DD');\n    }\n    data.total = this.totalAmount;\n\n    this.isSaving = true;\n    let request = this.paymentVoucherService.store(data);\n    if (data?.id) {\n      request = this.paymentVoucherService.update(data);\n    }\n    request.subscribe({\n      next: () => {\n        this.isSaving = false;\n        this.alertService.addAlert(\n          'The payment voucher saved successfully!',\n          'success'\n        );\n        if (resetForm) {\n          this.form.reset();\n          this.form.markAsPristine();\n        } else {\n          this.location.back();\n        }\n      },\n      error: () => (this.isSaving = false)\n    });\n  }\n\n  /**\n   * On cancel redirect back to the last location.\n   */\n  cancel() {\n    this.location.back();\n  }\n\n  /**\n   * Calculate the total amount.\n   *\n   * @private\n   */\n  private calculateTotalAmount() {\n    this.totalAmount = 0;\n    (this.lineItems.value as []).forEach((item: any) => {\n      this.totalAmount += item?.amount;\n    });\n  }\n\n  private loadBill() {\n    const params: any = {\n      with: 'payee,lineItems.category'\n    }\n    this.expenseService.show(this.billId, params).subscribe({\n      next: (response: any) => {\n        this.form.patchValue({\n          date: response?.date ? new Date(response?.date) : new Date(),\n          payee: response?.payee?.company_name,\n          payment_account_id: response?.payment_account_id,\n          memo: response?.reference_no\n        });\n\n        (response?.line_items as []).forEach((lineItem: any) => {\n          this.addLineItem(\n            {\n              category_id: lineItem?.category_id,\n              particulars: lineItem?.description,\n              amount: lineItem?.amount\n            }\n          );\n        });\n      },\n      error: () => { }\n    });\n  }\n}\n","<form\n  class=\"d-flex flex-row justify-content-start align-items-start gap-3\"\n  [formGroup]=\"form\"\n  (ngSubmit)=\"save()\"\n>\n  <mat-card style=\"width: calc(75% - 1rem)\">\n    <mat-card-content>\n      <div class=\"d-flex justify-content-start align-items-center gap-2\">\n        <strong class=\"mb-0 text-dark text-capitalize\">Voucher Line Items</strong>\n        <mat-icon\n          class=\"material-symbols-outlined cursor-pointer\"\n          color=\"primary\"\n          (click)=\"addLineItem()\"\n        >\n          add\n        </mat-icon>\n      </div>\n\n      <table class=\"table flex-grow-1 w-100 mt-2\" aria-describedby=\"Line Items\">\n        <thead>\n        <tr>\n          <th scope=\"col\">#</th>\n          <th scope=\"col\">Category</th>\n          <th scope=\"col\">Particulars</th>\n          <th scope=\"col\">Amount</th>\n        </tr>\n        </thead>\n        <tbody formArrayName=\"line_items\">\n        <ng-container\n          *ngFor=\"let lineItemForm of lineItems.controls; let i = index\"\n        >\n          <tr [formGroupName]=\"i\">\n            <th scope=\"row\" style=\"padding-top: 15px !important\">\n                <span style=\"max-width: 50px\">\n                  {{ i + 1 }}\n                </span>\n            </th>\n            <td>\n              <app-account-selector\n                label=\"Category\"\n                formControlName=\"category_id\"\n                [showAddButton]=\"true\"\n                (selectionchange)=\"onCategorySelectionChange($event, i)\"\n                [perPage]=\"1000\"\n              ></app-account-selector>\n            </td>\n            <td>\n              <mat-form-field\n                class=\"mat-form-field-sm w-100\"\n                appearance=\"fill\"\n              >\n                <mat-label>Particulars</mat-label>\n                <input matInput type=\"text\" formControlName=\"particulars\" />\n                <mat-error\n                  *ngIf=\"\n                          lineItemForm.get('particulars')?.invalid &&\n                          lineItemForm.get('particulars')?.touched\n                        \"\n                >\n                  The particulars field is required.\n                </mat-error>\n              </mat-form-field>\n            </td>\n            <td>\n              <div class=\"d-flex flex-row align-items-center gap-1\">\n                <mat-form-field\n                  class=\"mat-form-field-sm w-100\"\n                  appearance=\"fill\"\n                >\n                  <mat-label>Amount</mat-label>\n                  <input\n                    type=\"number\"\n                    min=\"0\"\n                    matInput\n                    formControlName=\"amount\"\n                    required\n                  />\n                  <mat-error\n                    *ngIf=\"\n                        lineItemForm.get('amount')?.invalid &&\n                        lineItemForm.get('amount')?.touched\n                      \"\n                  >\n                    The amount field is required.\n                  </mat-error>\n                </mat-form-field>\n\n                <mat-icon\n                  (click)=\"deleteLineItem(i)\"\n                  class=\"material-symbols-outlined cursor-pointer\"\n                  style=\"margin-bottom: 20px\"\n                >\n                  cancel\n                </mat-icon>\n              </div>\n            </td>\n          </tr>\n        </ng-container>\n        </tbody>\n        <tfoot>\n        <tr>\n          <th scope=\"col\" colspan=\"2\"></th>\n          <th scope=\"col\">Total</th>\n          <th scope=\"col\">{{ totalAmount | currency }}</th>\n        </tr>\n        </tfoot>\n      </table>\n\n      <div\n        class=\"w-100 d-flex flex-row justify-content-end align-items-center gap-2\"\n      >\n        <mat-icon\n          class=\"material-symbol-outlined cursor-pointer\"\n          (click)=\"addLineItem()\"\n        >\n          add\n        </mat-icon>\n        <button\n          class=\"text-uppercase btn-xs\"\n          mat-flat-button\n          type=\"button\"\n          (click)=\"clearAllLineItems()\"\n        >\n          <mat-icon class=\"material-symbol-outlined\">block</mat-icon>\n          Clear All\n        </button>\n      </div>\n    </mat-card-content>\n  </mat-card>\n  <div class=\"d-flex flex-row flex-wrap gap-1\" style=\"width: calc(25%)\">\n    <div\n      class=\"text-dark d-flex flex-row justify-content-start align-items-center gap-2 mb-2\"\n    >\n      <mat-icon class=\"material-symbol-outlined\"> campaign </mat-icon>\n      <strong class=\"text-capitalize\">Voucher Information</strong>\n    </div>\n\n    <mat-form-field\n      appearance=\"fill\"\n      class=\"w-100\"\n    >\n      <mat-label>Voucher No.</mat-label>\n      <input\n        matInput\n        formControlName=\"voucher_no\"\n        placeholder=\"Voucher No.\"\n      />\n    </mat-form-field>\n\n    <mat-form-field appearance=\"fill\" class=\"w-100\">\n      <mat-label>Date</mat-label>\n      <input\n        matInput\n        formControlName=\"date\"\n        placeholder=\"Date\"\n        autocomplete=\"off\"\n        [matDatepicker]=\"datePicker\"\n        (focus)=\"datePicker.open()\"\n      />\n      <mat-datepicker #datePicker></mat-datepicker>\n      <mat-error *ngIf=\"isFieldValid('date')\">\n        {{ getErrorMessage('date') }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field\n      appearance=\"fill\"\n      class=\"w-100\"\n    >\n      <mat-label>Payee</mat-label>\n      <input\n        matInput\n        formControlName=\"payee\"\n        placeholder=\"Payee\"\n      />\n      <mat-hint>Who is receiving the cash?</mat-hint>\n      <mat-error *ngIf=\"isFieldValid('payee')\">\n        {{ getErrorMessage('payee') }}\n      </mat-error>\n    </mat-form-field>\n\n    <app-account-selector\n      formControlName=\"payment_account_id\"\n      [showAddButton]=\"true\"\n      params=\"bank_or_cash_account=true\"\n      [perPage]=\"1000\"\n      [required]=\"true\"\n      class=\"w-100\"\n      hint=\"Which account is the cash coming from?\"\n    ></app-account-selector>\n\n    <mat-form-field\n      appearance=\"fill\"\n      class=\"w-100\"\n    >\n      <mat-label>Memo</mat-label>\n      <textarea\n        rows=\"3\"\n        matInput\n        formControlName=\"memo\"\n        placeholder=\"Memo\"\n      ></textarea>\n    </mat-form-field>\n\n    <div class=\"d-flex flex-row justify-content-end align-items-center gap-2\">\n      <button\n        color=\"primary\"\n        type=\"submit\"\n        mat-raised-button\n        [disabled]=\"isSaving\"\n      >\n        Save\n      </button>\n      <button\n        mat-flat-button\n        type=\"button\"\n        (click)=\"cancel()\"\n        [disabled]=\"isSaving\"\n      >\n        Cancel\n      </button>\n    </div>\n  </div>\n</form>\n","import { Component } from '@angular/core';\nimport {PaymentVoucherFormComponent} from \"../payment-voucher-form/payment-voucher-form.component\";\nimport {NgIf} from \"@angular/common\";\nimport {MatProgressBar} from \"@angular/material/progress-bar\";\nimport {PaymentVoucherService} from \"../payment-voucher.service\";\nimport {ActivatedRoute} from \"@angular/router\";\n\n@Component({\n  selector: 'app-payment-voucher-form-page',\n  standalone: true,\n  imports: [\n    PaymentVoucherFormComponent,\n    NgIf,\n    MatProgressBar\n  ],\n  templateUrl: './payment-voucher-form-page.component.html',\n  styleUrl: './payment-voucher-form-page.component.scss'\n})\nexport class PaymentVoucherFormPageComponent {\n  id!: number;\n  paymentVoucher!: any;\n  isWorking: boolean = false;\n  billId!: number;\n\n  constructor(\n    private paymentVoucherService: PaymentVoucherService,\n    private activatedRoute: ActivatedRoute\n  ) {\n    this.id = parseInt(this.activatedRoute.snapshot.params['id']);\n    this.billId = parseInt(this.activatedRoute.snapshot.queryParams['bill_id']);\n  }\n\n\n  ngOnInit() {\n    if (this.id) {\n      this.loadData();\n    }\n  }\n\n  private loadData() {\n    const params: any = {\n      with: 'paymentAccount,lineItems.category,approver,status,creator'\n    }\n    this.isWorking = true;\n    this.paymentVoucherService.show(this.id, params).subscribe({\n      next: (response: any) => {\n        this.paymentVoucher = response?.item;\n        this.isWorking = false;\n      },\n      error: () => (this.isWorking = false)\n    });\n  }\n}\n","<app-payment-voucher-form\n  *ngIf=\"!isWorking\"\n  [paymentVoucher]=\"paymentVoucher\"\n  [billId]=\"billId\"\n></app-payment-voucher-form>\n\n<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport {PaymentVoucherListComponent} from \"./payment-voucher-list/payment-voucher-list.component\";\nimport {PaymentVoucherPrintComponent} from \"./payment-voucher-print/payment-voucher-print.component\";\nimport {PaymentVoucherViewComponent} from \"./payment-voucher-view/payment-voucher-view.component\";\nimport {PaymentVoucherFormPageComponent} from \"./payment-voucher-form-page/payment-voucher-form-page.component\";\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: PaymentVoucherListComponent\n  },\n  {\n    path: 'create',\n    component: PaymentVoucherFormPageComponent\n  },\n  {\n    path: ':id/print',\n    component:  PaymentVoucherPrintComponent\n  },\n  {\n    path: ':id/view',\n    component:  PaymentVoucherViewComponent\n  },\n  {\n    path: ':id/edit',\n    component:  PaymentVoucherFormPageComponent\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class PaymentVoucherRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PaymentVoucherRoutingModule } from './payment-voucher-routing.module';\n\n\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule,\n    PaymentVoucherRoutingModule\n  ]\n})\nexport class PaymentVoucherModule { }\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {FormBuilder, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\nimport moment from 'moment';\nimport {AlertService, FormValidatorService, MaterialModule, SearchableSelectorModule} from 'ngx-techlify-core';\nimport {Observable} from 'rxjs';\nimport {DatePipe, NgIf} from '@angular/common';\nimport {ProductFormService, ProductService} from 'techlify-inventory-common';\nimport {FlexModule} from '@angular/flex-layout';\n\nconst initial_quantity: number = 0;\nconst reorder_point: number = 10;\n\nconst errorMessages: any = {\n  type_id: {\n    required: 'Please Enter Type',\n  },\n  name: {\n    required: 'Please Enter Name',\n  },\n  sale_price: {\n    required: 'Please Enter Sales Price',\n  },\n  minimum_price: {\n    required: 'Please Enter Minimum Price',\n  },\n  reorder_point: {\n    required: 'Please Enter Reorder Point',\n  },\n};\n\n@Component({\n  selector: 'accounting-product-form',\n  templateUrl: './product-form.component.html',\n  standalone: true,\n  imports: [\n    MaterialModule,\n    ReactiveFormsModule,\n    FlexModule,\n    NgIf,\n    SearchableSelectorModule,\n  ]\n})\nexport class ProductFormComponent implements OnInit {\n  public productForm: FormGroup;\n  public isWorking: boolean = false;\n  public isUpdate: boolean = false;\n  @Output() saved: EventEmitter<any> = new EventEmitter();\n  @Output() cancelled: EventEmitter<any> = new EventEmitter();\n  @Input() product: any;\n  @Input() displayedFormFields: any[] = [\n    'name',\n    'product type',\n    'sku',\n    'description',\n    'product measure',\n    'reorder point',\n    'initial quantity',\n    'initial quantity date',\n    'sales price',\n    'minimum price',\n    'maximum price',\n    'income account',\n    'expense account',\n    'sales tax',\n  ];\n\n  @Input() displayedFormSections: any[] = [\n    'basic information',\n    'inventory information',\n    'sales information',\n    'accounts information',\n  ];\n\n  constructor(\n    private productService: ProductService,\n    private fb: FormBuilder,\n    private formValidatorService: FormValidatorService,\n    private alertService: AlertService,\n    private datePipe: DatePipe,\n    private productFormService: ProductFormService\n  ) {\n    this.productForm = this.fb.group({\n      id: [''],\n      type_id: [1, Validators.compose([Validators.required])],\n      sku: [''],\n      name: ['', Validators.compose([Validators.required])],\n      initial_quantity: [initial_quantity],\n      initial_quantity_date: [moment().format()],\n      reorder_point: [reorder_point, Validators.compose([Validators.required])],\n      description: [''],\n      sale_price: [0, Validators.compose([Validators.required])],\n      income_account_id: [''],\n      expense_account_id: [''],\n      measure_id: [1],\n      minimum_price: ['', Validators.compose([Validators.required])],\n      maximum_price: [''],\n      condition_type_id: [1],\n      current_quantity: [],\n      category_ids: [''],\n      sale_tax_id: [''],\n    });\n  }\n\n  ngOnInit() {\n    if (this.product?.id) {\n      this.isUpdate = true;\n      let data = {...this.product};\n      if (this.product?.categories?.length > 0) {\n        data.category_ids = (this.product.categories as []).map((category: any) => category?.id);\n      }\n      if (data?.initial_quantity_date) {\n        data.initial_quantity_date = moment(data.initial_quantity_date).toISOString();\n      }\n      this.productForm.patchValue(data);\n    }\n  }\n\n  async save() {\n    this.productForm.markAllAsTouched();\n    if (this.productForm.invalid) {\n      this.alertService.addAlert('Please Fill All Required Fields', 'warn');\n      return;\n    }\n    let product = this.productForm.value;\n    if (product.maximum_price <= 0 || !product.maximum_price) {\n      product.maximum_price = product.minimum_price;\n    }\n\n    if (product?.initial_quantity_date) {\n      product.initial_quantity_date = moment(product.initial_quantity_date).format('YYYY-MM-DD');\n    }\n    this.isWorking = true;\n    product.with = 'type,measure,incomeAccount,expenseAccount';\n\n    let request: Observable<any> = this.productService.store(product);\n    if (this.isUpdate) {\n      request = this.productService.update(product);\n    }\n    request.subscribe({\n      next: (response: any) => {\n        this.saved.emit(response?.item);\n        this.isWorking = false;\n        this.productFormService.listUpdated(true);\n        this.alertService.addAlert('Product saved successfully!', 'success');\n      },\n      error: () => (this.isWorking = false),\n    });\n  }\n\n  /**\n   * Method to evaluate form fields\n   */\n  isFieldValid(field: string) {\n    return this.formValidatorService.isFieldValid(field, this.productForm);\n  }\n\n  /**\n   * Method to find error in form fields\n   */\n  getErrorMessage(field: string) {\n    return this.formValidatorService.getErrorMessage(field, this.productForm, errorMessages);\n  }\n\n  /**\n   * Checks displayed Form Fields array for form field and returns boolean result\n   */\n  isFormFieldShown(fieldName: string): boolean {\n    return this.displayedFormFields.length > 0 && this.displayedFormFields.includes(fieldName);\n  }\n\n  /**\n   * Checks displayed Form Section array for form section and returns boolean result\n   */\n  isFormSectionShown(sectionName: string): boolean {\n    return this.displayedFormSections.length > 0 && this.displayedFormSections.includes(sectionName);\n  }\n}\n","<form [formGroup]=\"productForm\" (submit)=\"save()\">\n  <h3><strong>{{ product?.id ? 'Update' : 'Create' }} Product</strong></h3>\n  <div fxLayout=\"column\">\n    <div fxLayout=\"column\" *ngIf=\"isFormSectionShown('basic information')\">\n      <h4><strong>Basic Information</strong></h4>\n      <div fxLayout fxLayoutGap=\"0.5rem\">\n\n        <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('name')\">\n          <mat-label>Name</mat-label>\n          <input matInput placeholder=\"Name\" formControlName=\"name\" required />\n          <mat-error *ngIf=\"isFieldValid('name')\">{{ getErrorMessage('name') }} </mat-error>\n        </mat-form-field>\n\n        <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('product type')\">\n          <mat-label>Product Type</mat-label>\n          <app-searchable-selector apiUrl=\"api/product-types\" formControlName=\"type_id\"> </app-searchable-selector>\n          <mat-error *ngIf=\"isFieldValid('type_id')\">{{ getErrorMessage('type_id') }} </mat-error>\n        </mat-form-field>\n      </div>\n\n      <div fxLayout fxLayoutGap=\"0.5rem\">\n        <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('sku')\">\n          <mat-label>SKU</mat-label>\n          <input matInput placeholder=\"SKU\" formControlName=\"sku\" />\n          <mat-error *ngIf=\"isFieldValid('sku')\">{{ getErrorMessage('sku') }} </mat-error>\n        </mat-form-field>\n\n        <mat-form-field fxFlex=\"50%\">\n          <mat-label>Category</mat-label>\n          <app-searchable-selector apiUrl=\"api/product-categories\" formControlName=\"category_ids\" [multiple]=\"true\">\n          </app-searchable-selector>\n          <mat-error *ngIf=\"isFieldValid('category_ids')\">\n            {{ getErrorMessage('category_ids') }}\n          </mat-error>\n        </mat-form-field>\n      </div>\n\n      <div fxLayout fxLayoutGap=\"0.5rem\">\n        <mat-form-field fxFlex=\"100%\" *ngIf=\"isFormFieldShown('description')\">\n          <mat-label>Description</mat-label>\n          <textarea matInput placeholder=\"Description\" formControlName=\"description\"></textarea>\n        </mat-form-field>\n      </div>\n    </div>\n\n    <div fxLayout=\"column\" *ngIf=\"isFormSectionShown('inventory information')\">\n      <h4><strong>Inventory Information</strong></h4>\n      <div fxLayout fxLayoutGap=\"0.5rem\">\n\n        <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('product measure')\">\n          <mat-label>Measure</mat-label>\n          <app-searchable-selector apiUrl=\"api/product-measures\" formControlName=\"measure_id\">\n          </app-searchable-selector>\n          <mat-error *ngIf=\"isFieldValid('measure_id')\">{{ getErrorMessage('measure_id') }} </mat-error>\n        </mat-form-field>\n\n        <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('reorder point')\">\n          <mat-label>Reorder Point</mat-label>\n          <input matInput placeholder=\"Reorder Point\" formControlName=\"reorder_point\" type=\"number\" />\n          <mat-error *ngIf=\"isFieldValid('reorder_point')\">{{ getErrorMessage('reorder_point') }} </mat-error>\n        </mat-form-field>\n      </div>\n      <div fxLayout fxLayoutGap=\"0.5rem\">\n        <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('initial quantity')\">\n          <mat-label>Initial Quantity</mat-label>\n          <input matInput placeholder=\"Initial Quantity\" formControlName=\"initial_quantity\" />\n          <mat-error *ngIf=\"isFieldValid('initial_quantity')\">{{ getErrorMessage('initial_quantity') }} </mat-error>\n        </mat-form-field>\n\n        <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('initial quantity date')\">\n          <mat-label>Initial Quantity Date</mat-label>\n          <input matInput [matDatepicker]=\"pickerInitialQuantityDate\" placeholder=\"Initial Quantity Date\"\n            formControlName=\"initial_quantity_date\" />\n          <mat-datepicker-toggle matSuffix [for]=\"pickerInitialQuantityDate\"></mat-datepicker-toggle>\n          <mat-datepicker #pickerInitialQuantityDate></mat-datepicker>\n          <mat-error *ngIf=\"isFieldValid('initial_quantity_date')\">{{ getErrorMessage('initial_quantity_date') }}\n          </mat-error>\n        </mat-form-field>\n      </div>\n    </div>\n    <div fxLayout=\"column\" *ngIf=\"isFormSectionShown('sales information')\">\n      <h4><strong>Sale Information</strong></h4>\n      <div fxLayout fxLayoutGap=\"0.5rem\">\n        <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('sales price')\">\n          <mat-label>Selling Price</mat-label>\n          <input matInput placeholder=\"Selling Price\" formControlName=\"sale_price\" required type=\"number\" step=\"any\" />\n          <mat-error *ngIf=\"isFieldValid('sale_price')\">{{ getErrorMessage('sale_price') }} </mat-error>\n        </mat-form-field>\n\n        <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('sales tax')\">\n          <mat-label>Sales Tax</mat-label>\n          <app-searchable-selector apiUrl=\"api/taxes?type=sale\" titleField=\"name\" formControlName=\"sale_tax_id\"></app-searchable-selector>\n          <mat-error *ngIf=\"isFieldValid('sale_tax_id')\">{{ getErrorMessage('sale_tax_id') }} </mat-error>\n        </mat-form-field>\n      </div>\n      <div fxLayout fxLayoutGap=\"0.5rem\">\n        <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('minimum price')\">\n          <mat-label>Minimum Price</mat-label>\n          <input matInput placeholder=\"Minimum Price\" formControlName=\"minimum_price\" required type=\"number\"\n            step=\"any\" />\n          <mat-error *ngIf=\"isFieldValid('minimum_price')\">{{ getErrorMessage('minimum_price') }} </mat-error>\n        </mat-form-field>\n\n        <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('maximum price')\">\n          <mat-label>Maximum Price</mat-label>\n          <input matInput placeholder=\"Maximum Price\" formControlName=\"maximum_price\" type=\"number\" step=\"any\" />\n        </mat-form-field>\n      </div>\n      <div fxLayout fxLayoutGap=\"0.5rem\">\n        <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('condition types')\">\n          <mat-label>Condition</mat-label>\n          <app-searchable-selector apiUrl=\"api/condition-types\"\n                                   formControlName=\"condition_type_id\"></app-searchable-selector>\n        </mat-form-field>\n      </div>\n    </div>\n\n    <div fxFlex=\"100%\" fxLayout fxLayoutAlign=\"end\" fxLayoutGap=\"1rem\">\n      <button [disabled]=\"isWorking\" mat-button class=\"mt-2\" type=\"button\" (click)=\"cancelled.emit(true)\">\n        Cancel\n      </button>\n      <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" class=\"mt-2\" type=\"submit\">Save</button>\n    </div>\n  </div>\n</form>\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {MatDialog} from '@angular/material/dialog';\nimport {MaterialModule} from 'ngx-techlify-core';\nimport {ProductFormService} from 'techlify-inventory-common';\nimport {ProductFormComponent} from '../product-form/product-form.component';\n\n@Component({\n  selector: 'accounting-product-form-button',\n  templateUrl: './product-form-button.component.html',\n  styleUrls: ['./product-form-button.component.scss'],\n  standalone: true,\n  imports: [\n    MaterialModule,\n    ProductFormComponent,\n  ]\n})\nexport class ProductFormButtonComponent {\n  @Input() product: any;\n  @Output() saved = new EventEmitter();\n\n  constructor(public matDialog: MatDialog, private productFormService: ProductFormService) {\n  }\n\n  showForm(templateRef: TemplateRef<any>) {\n    this.matDialog.open(templateRef, {width: '600px'});\n  }\n\n  /**\n   * Handle on product saved event.\n   *\n   * @param product\n   */\n  onProductSaved(product: any) {\n    this.saved.emit(product);\n    this.matDialog?.closeAll();\n    this.productFormService.listUpdated(true);\n  }\n}\n","<mat-icon color=\"primary\" class=\"cursor-pointer\" [class.text-secondary]=\"product\" (click)=\"showForm(addProductForm)\">\n  {{ product ? 'edit' : 'add' }}\n</mat-icon>\n\n<ng-template #addProductForm>\n  <accounting-product-form\n    [product]=\"product\"\n    mat-dialog-content\n    (saved)=\"onProductSaved($event)\"\n    (cancelled)=\"matDialog.closeAll()\"\n  ></accounting-product-form>\n</ng-template>\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, RouterLink, RouterLinkActive } from '@angular/router';\nimport {\n  ColumnConfig, ColumnSelectorModule, ExportExcelModule,\n  MaterialModule, SearchableSelectorModule,\n  TechlifyListComponent\n} from 'ngx-techlify-core';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport { debounceTime } from 'rxjs/operators';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n  ExportToExcelButtonComponent, ProductModule,\n  ProductService\n} from 'techlify-inventory-common';\nimport { ProductFormService } from 'techlify-inventory-common';\nimport { CurrencyPipe, DatePipe, NgForOf, NgIf } from '@angular/common';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { ProductFormButtonComponent } from '../product-form-button/product-form-button.component';\n\n@UntilDestroy()\n@Component({\n  selector: 'app-product-list',\n  templateUrl: './product-list.component.html',\n  standalone: true,\n  imports: [\n    MaterialModule,\n    ColumnSelectorModule,\n    SearchableSelectorModule,\n    ReactiveFormsModule,\n    CurrencyPipe,\n    NgIf,\n    RouterLink,\n    RouterLinkActive,\n    InfiniteScrollDirective,\n    DatePipe,\n    ExportExcelModule,\n    ExportToExcelButtonComponent,\n    NgForOf,\n    ProductFormButtonComponent,\n    ProductModule\n  ]\n})\nexport class ProductListComponent extends TechlifyListComponent implements OnInit {\n\n  selection = new SelectionModel<any>(true, []);\n  exportInProgress = false;\n  columnConfig: ColumnConfig[] = [\n    { label: 'Measure', def: 'measure', isSelected: true, isEditable: true },\n    { label: 'Initial Quantity', def: 'initial_quantity', isSelected: false, isEditable: true },\n    { label: 'Income Account', def: 'income_account', isSelected: false, isEditable: true },\n    { label: 'Expense Account', def: 'expense_account', isSelected: false, isEditable: true },\n    { label: 'Creator', def: 'creator', isSelected: false, isEditable: true },\n  ];\n  selectedColumns: ColumnConfig[] = this.columnConfig.filter((col) => col.isSelected);\n  importId!: number;\n  // Columns to use during Excel export\n  private customExportColumns: string[] = [\n    '#',\n    'name',\n    'type',\n    'sku',\n    'categories',\n    'reorder_point',\n    'stock_receipts',\n    'last_stock_receipt_date',\n    'stock_issues',\n    'last_stock_issue_date',\n    'on_hand',\n    'measure',\n    'sale_price'\n  ];\n\n  constructor(\n    private fb: FormBuilder,\n    private dialog: MatDialog,\n    private activatedRoute: ActivatedRoute,\n    private productService: ProductService,\n    private productFormService: ProductFormService\n  ) {\n    super();\n    this.filterForm = this.fb.group({\n      category_ids: [''],\n      expense_account_ids: [''],\n      income_account_ids: [''],\n      measure_ids: [''],\n      search: [''],\n      sort_by: [''],\n      type_ids: [''],\n    });\n  }\n\n  get displayedColumns(): string[] {\n    if (this.exportInProgress) {\n      return this.customExportColumns;\n    }\n    const selectedCols = this.selectedColumns.map(col => col.def);\n    const defaultCols = [\n      '#',\n      'name',\n      'sku',\n      'categories',\n      'stock_receipts',\n      'stock_issues',\n      'on_hand',\n    ];\n    const cols = defaultCols.concat(...selectedCols);\n    cols.push('Actions', 'Select');\n    return cols;\n  }\n\n  ngOnInit(): void {\n    if (this.activatedRoute.snapshot.params?.['import_id']) {\n      this.importId = parseInt(this.activatedRoute.snapshot.params?.['import_id']);\n    }\n    // update form with URL query params\n    this.requestHelperService.updateFormWithQueryParams(this.filterForm, {\n      type_ids: { multiple: true },\n      category_ids: { multiple: true },\n      income_account_ids: { multiple: true },\n      expense_account_ids: { multiple: true },\n    });\n    // Update URL query params on filter change\n    this.filterForm.valueChanges.pipe(debounceTime(800)).subscribe(() => {\n      this.requestHelperService.updateQueryParams(\n        this.requestHelperService.convertToFormData({\n          ...this.filterForm.value,\n        })\n      );\n    });\n    // fetch task on params change\n    this.activatedRoute.queryParams.pipe(debounceTime(800)).subscribe(() => this.reload());\n    // listen form product add or update event and reload.\n    this.productFormService.isListUpdated().subscribe((val: boolean) => {\n      if (val && !this.isWorking) {\n        this.reload();\n      }\n    });\n  }\n\n  override loadData() {\n    let params: any = {\n      ...this.requestHelperService.convertToFormData(this.filterForm.value),\n    };\n    params.page = this.page;\n    params.perPage = this.perPage;\n    params.with = 'categories,lastStockReceipt,lastStockIssue,measure,creator';\n    if (this.importId) {\n      params.import_id = this.importId;\n    }\n    this.isWorking = true;\n\n    this.productService.index(params).subscribe({\n      next: (res: any) => {\n        this.isWorking = false;\n        this.models = this.models.concat(res?.data);\n        this.lastPage = res?.last_page;\n        // stop reloading data once data loaded.\n        this.productFormService.listUpdated(false);\n      },\n      error: () => (this.isWorking = false),\n    });\n  }\n\n  assignFilter(column: any, direction: string) {\n    if (column) {\n      return this.filterForm.get('sort_by')?.setValue(column + '|' + direction);\n    }\n  }\n\n  isAllRowsSelected() {\n    const numSelected = this.selection.selected.length;\n    const numRows = this.models.length;\n    return numSelected === numRows;\n  }\n\n  /** Selects all rows if they are not all selected; otherwise clear selection. */\n  toggleAllRows() {\n    if (this.isAllRowsSelected()) {\n      this.selection.clear();\n      return;\n    }\n\n    this.selection.select(...this.models);\n  }\n\n  checkboxLabel(row?: any): string {\n    if (!row) {\n      return `${this.isAllRowsSelected() ? 'deselect' : 'select'} all`;\n    }\n    return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row ${row.position + 1}`;\n  }\n\n  handleExport(hideColumns: boolean) {\n    this.exportInProgress = hideColumns;\n  }\n}\n","<mat-card class=\"mb-3\">\n  <mat-card-content>\n    <form [formGroup]=\"filterForm\" class=\"d-flex justify-content-between align-items-center gap-2\">\n      <div class=\"d-flex justify-content-center align-items-center gap-2\">\n        <h3 class=\"mb-0\">Products</h3>\n        <accounting-product-form-button></accounting-product-form-button>\n        <span matTooltip=\"Import\" routerLink=\"import\" class=\"cursor-pointer material-symbols-outlined\">\n          file_upload\n        </span>\n        <app-export-to-excel-button tableId=\"productTable\" fileName=\"products\" (onExportStart)=\"handleExport(true)\"\n          (onExportEnd)=\"handleExport(false)\">\n        </app-export-to-excel-button>\n        <app-column-selector mode=\"icon\" class=\"d-print-none\" [columnConfigs]=\"columnConfig\"\n          [(selectedColumns)]=\"selectedColumns\"></app-column-selector>\n      </div>\n\n      <div class=\"d-flex justify-content-start align-items-center gap-2\">\n        <mat-form-field>\n          <mat-label>Search</mat-label>\n          <input matInput placeholder=\"Search products\" formControlName=\"search\" />\n        </mat-form-field>\n\n        <mat-form-field>\n          <mat-label>Category</mat-label>\n          <app-searchable-selector apiUrl=\"api/product-categories\" formControlName=\"category_ids\" [multiple]=\"true\">\n          </app-searchable-selector>\n        </mat-form-field>\n\n        <mat-form-field>\n          <mat-label>Type</mat-label>\n          <app-searchable-selector apiUrl=\"api/product-types\" formControlName=\"type_ids\" titleField=\"title\"\n            [multiple]=\"true\">\n          </app-searchable-selector>\n        </mat-form-field>\n      </div>\n    </form>\n  </mat-card-content>\n</mat-card>\n\n<div class=\"d-flex justify-content-start gap-3\">\n  <mat-card [style.width]=\"selection.isEmpty() ? '100%' : '85%'\">\n    <mat-card-content class=\"p-0\">\n      <table mat-table [dataSource]=\"models\" class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n        [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort\n        (matSortChange)=\"sortColumn($event)\" matSortDisableClear=\"true\" aria-describedby=\"Products List\"\n        id=\"productTable\">\n        <!-- # Column -->\n        <ng-container matColumnDef=\"#\">\n          <th mat-header-cell *matHeaderCellDef>#</th>\n          <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n        </ng-container>\n\n        <!-- Name Column -->\n        <ng-container matColumnDef=\"name\">\n          <th mat-header-cell mat-sort-header *matHeaderCellDef>Name</th>\n          <td mat-cell *matCellDef=\"let element\">\n            <div class=\"d-flex flex-column gap-1\">\n              <a class=\"text-decoration-none text-dark\" [routerLink]=\"[element?.id, 'view']\">{{ element.name }}</a>\n              <small class=\"text-secondary\" *ngIf=\"element.type && !exportInProgress\">\n                {{ element.type?.title }}\n              </small>\n            </div>\n          </td>\n        </ng-container>\n\n        <!-- Type Column -->\n        <ng-container matColumnDef=\"type\">\n          <th mat-header-cell mat-sort-header *matHeaderCellDef>Type</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.type?.title }}\n          </td>\n        </ng-container>\n\n        <!-- Categories Column -->\n        <ng-container matColumnDef=\"categories\">\n          <th mat-header-cell *matHeaderCellDef>Categories</th>\n          <td mat-cell *matCellDef=\"let element\" style=\"max-width: 200px\">\n            <div *ngIf=\"element?.categories?.length > 0\"\n              class=\"d-flex justify-content-start align-items-center gap-1 flex-wrap\">\n              <span class=\"badge bg-secondary\" *ngFor=\"let category of element?.categories\">\n                {{ category?.title }}\n              </span>\n            </div>\n          </td>\n        </ng-container>\n\n        <!-- SKU Column -->\n        <ng-container matColumnDef=\"sku\">\n          <th mat-header-cell mat-sort-header *matHeaderCellDef>SKU</th>\n          <td mat-cell *matCellDef=\"let element\">{{ element.sku }}</td>\n        </ng-container>\n\n        <ng-container matColumnDef=\"description\">\n          <th mat-header-cell mat-sort-header *matHeaderCellDef>Description</th>\n          <td mat-cell *matCellDef=\"let element\">{{ element.description }}</td>\n        </ng-container>\n\n        <!-- Initial Quantity Column -->\n        <ng-container matColumnDef=\"initial_quantity\">\n          <th mat-header-cell mat-sort-header *matHeaderCellDef>Initial Quantity</th>\n          <td mat-cell *matCellDef=\"let element\">\n            <p class=\"mb-0\">{{ element.initial_quantity }}</p>\n            <small class=\"text-secondary\" *ngIf=\"element?.initial_quantity_date\">\n              on {{ element?.initial_quantity_date | date }}\n            </small>\n          </td>\n        </ng-container>\n\n        <!-- Stock Receipts Column -->\n        <ng-container matColumnDef=\"stock_receipts\">\n          <th mat-header-cell mat-sort-header=\"stock_receipts_sum_quantity\" *matHeaderCellDef>Stock Receipts</th>\n          <td mat-cell *matCellDef=\"let element\">\n            <p class=\"mb-0\">{{ element?.stock_receipts_sum_quantity }}</p>\n            <small class=\"text-secondary\" *ngIf=\"element?.last_stock_receipt && !exportInProgress\">\n              Latest on {{ element?.last_stock_receipt?.date | date }}\n            </small>\n          </td>\n        </ng-container>\n\n        <!-- Stock Issues Column -->\n        <ng-container matColumnDef=\"stock_issues\">\n          <th mat-header-cell mat-sort-header=\"stock_issues_sum_quantity\" *matHeaderCellDef>Stock Issues</th>\n          <td mat-cell *matCellDef=\"let element\">\n            <p class=\"mb-0\">{{ element?.stock_issues_sum_quantity }}</p>\n            <small class=\"text-secondary\" *ngIf=\"element?.last_stock_issue && !exportInProgress\">\n              Latest on {{ element?.last_stock_issue?.date | date }}\n            </small>\n          </td>\n        </ng-container>\n\n        <!-- On Hand Column -->\n        <ng-container matColumnDef=\"on_hand\">\n          <th mat-header-cell mat-sort-header='stock_on_hand' *matHeaderCellDef>On Hand</th>\n          <td mat-cell *matCellDef=\"let element\">\n            <div class=\"d-flex flex-column gap-1\">\n              <span>{{ element?.stock_on_hand }}</span>\n              <small class='text-muted'> Reorder Point: {{ element.reorder_point }} </small>\n            </div>\n          </td>\n        </ng-container>\n\n        <ng-container matColumnDef=\"measure\">\n          <th mat-header-cell mat-sort-header *matHeaderCellDef>Measure</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.measure?.title }}\n          </td>\n        </ng-container>\n\n        <!-- Reorder Point Column -->\n        <ng-container matColumnDef=\"reorder_point\">\n          <th mat-header-cell mat-sort-header *matHeaderCellDef>Reorder Point</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element.reorder_point }}\n          </td>\n        </ng-container>\n\n        <!-- Selling Price Column -->\n        <ng-container matColumnDef=\"sale_price\">\n          <th mat-header-cell mat-sort-header *matHeaderCellDef>Selling Price</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element.sale_price | currency }}\n          </td>\n        </ng-container>\n\n        <!-- Income Account Column -->\n        <ng-container matColumnDef=\"income_account\">\n          <th mat-header-cell *matHeaderCellDef>Income Account</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.income_account?.title }}\n          </td>\n        </ng-container>\n\n        <!-- Expense Account Column -->\n        <ng-container matColumnDef=\"expense_account\">\n          <th mat-header-cell *matHeaderCellDef>Expense Account</th>\n          <td mat-cell *matCellDef=\"let element\">\n            {{ element?.expense_account?.title }}\n          </td>\n        </ng-container>\n\n        <!-- Creator Column -->\n        <ng-container matColumnDef=\"creator\">\n          <th mat-header-cell *matHeaderCellDef>Creator</th>\n          <td mat-cell *matCellDef=\"let element\">\n            <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n            <small class=\"text-secondary\">{{ element?.created_at | date }}</small>\n          </td>\n        </ng-container>\n\n        <!-- Actions Column -->\n        <ng-container matColumnDef=\"Actions\">\n          <th mat-header-cell *matHeaderCellDef>Actions</th>\n          <td mat-cell *matCellDef=\"let element\">\n            <div class=\"text-secondary d-flex gap-1\">\n              <mat-icon class=\"cursor-pointer\" matTooltip=\"View\" [routerLink]=\"[element.id, 'view']\"\n                routerLinkActive=\"route-link-active\">\n                remove_red_eye\n              </mat-icon>\n\n              <accounting-product-form-button [product]=\"element\"></accounting-product-form-button>\n\n              <i class=\"fa-solid fa-arrows-down-to-line\" role='button' matTooltip=\"Receive Stock\"\n                [routerLink]=\"['/inventory/stock-receipts/form']\"></i>\n              <i class=\"fa-solid fa-arrow-up-from-bracket\" role='button' matTooltip=\"Issue Stock\"\n                [routerLink]=\"['/inventory/stock-issues/form']\"></i>\n            </div>\n          </td>\n        </ng-container>\n\n        <ng-container matColumnDef=\"Select\">\n          <th mat-header-cell *matHeaderCellDef>\n            <mat-checkbox (change)=\"$event ? toggleAllRows() : null\"\n              [checked]=\"selection.hasValue() && isAllRowsSelected()\"\n              [indeterminate]=\"selection.hasValue() && !isAllRowsSelected()\" [aria-label]=\"checkboxLabel()\">\n            </mat-checkbox>\n          </th>\n          <td mat-cell *matCellDef=\"let row\">\n            <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(row) : null\"\n              [checked]=\"selection.isSelected(row)\" [aria-label]=\"checkboxLabel(row)\">\n            </mat-checkbox>\n          </td>\n          <td mat-footer-cell *matFooterCellDef></td>\n        </ng-container>\n        <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n        <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n      </table>\n\n      <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n    </mat-card-content>\n  </mat-card>\n  <mat-card *ngIf=\"!selection.isEmpty()\" style=\"width: calc(15% - 1rem)\">\n    <mat-card-content>\n      <app-product-batch-update-form [selection]=\"selection\" (updated)=\"reload()\"></app-product-batch-update-form>\n    </mat-card-content>\n  </mat-card>\n</div>","/*\n * Public API Surface of ngx-techlify-accounting\n */\n\nexport * from './lib/sale/sale.module';\n\nexport * from './lib/sale/sale-dashboard/sale-dashboard.component';\nexport * from './lib/sale/sale-reports/account-receivables-summary-chart/account-receivables-summary-chart.component';\nexport * from './lib/sale/sale-reports/sales-summary-chart/sales-summary-chart.component';\n\nexport * from './lib/sale/customer/customer-phones/customer-phones.component';\nexport * from './lib/sale/customer/customer-form-button/customer-form-button.component';\nexport * from './lib/sale/customer/customer-address-type.enum';\nexport * from './lib/sale/customer/customer-phone-type.enum';\nexport * from './lib/sale/customer/widgets/customers-list-widget/customers-list-widget.component';\nexport * from './lib/sale/customer/customer-form/customer-form.component';\nexport * from './lib/sale/customer/customer-form/customer-form.module';\nexport * from './lib/sale/customer/customer-information-card/customer-information-card.component';\nexport * from './lib/sale/customer/customers-list/customers-list.component';\nexport * from './lib/sale/customer/customer.service';\nexport * from './lib/sale/customer/customer.module';\n\nexport * from './lib/sale/invoice/invoice.module';\nexport * from './lib/sale/invoice/invoice-delete-button/invoice-delete-button.component';\nexport * from './lib/sale/invoice/invoice-list-page/invoice-list-page.component';\nexport * from './lib/sale/invoice/invoice.service';\nexport * from './lib/sale/invoice/invoice-information-card/invoice-information-card.component';\nexport * from './lib/sale/invoice/invoice-line-items-table/invoice-line-items-table.component';\nexport * from './lib/sale/invoice/invoice-status-enum';\nexport * from './lib/sale/invoice/sale-document-type-enum';\nexport * from './lib/sale/invoice/invoice-summary.service';\nexport * from './lib/sale/invoice/invoice-form/invoice-form.module';\nexport * from './lib/sale/invoice/invoice-form/invoice-form/invoice-form.component';\nexport * from './lib/sale/invoice/invoice-form-page/invoice-form-page.component';\nexport * from './lib/sale/invoice/invoice-receipt-page/invoice-receipt-page.component';\n\nexport * from './lib/sale/invoice/invoice-display-configuration.service';\nexport * from './lib/sale/invoice/invoice-display-configuration/invoice-display-configuration.component';\n\nexport * from './lib/sale/invoice/quotation.service';\n\nexport * from './lib/accounting-plus/accounting-plus.module';\nexport * from './lib/accounting-plus/fixed-assets/fixed-assets.module';\nexport * from './lib/accounting-plus/service-center/service-center.module';\nexport * from './lib/accounting-plus/fixed-assets/fixed-asset-maintenance-view-page/fixed-asset-maintenance-view-page.component';\n\nexport * from './lib/sale/payment/payment.module';\nexport * from './lib/sale/payment/payment-list/payment-list.component';\nexport * from './lib/sale/payment/payment-form/payment-form.component';\nexport * from './lib/sale/payment/payment.service';\nexport * from './lib/sale/payment/payment-void/payment-void.module';\nexport * from './lib/sale/payment/payment-void/payment-void-button/payment-void-button.component';\nexport * from './lib/sale/payment/payment-method-type.enum';\nexport * from './lib/sale/payment/payment-receipt-email-button/payment-receipt-email-button.component';\n\nexport * from './lib/sale/payment/transaction-form/transaction-form.module';\nexport * from './lib/sale/payment/transaction-form/transaction-form/transaction-form.component';\nexport * from './lib/sale/payment/transaction-form/transaction-form-button/transaction-form-button.component';\nexport * from './lib/sale/payment/transaction-list/transaction-list/transaction-list.component';\nexport * from './lib/sale/payment/transaction-list/transaction-list.module';\n\nexport * from './lib/sale/transaction/transaction.module';\nexport * from './lib/sale/transaction/transaction.model';\nexport * from './lib/sale/transaction/transaction.service';\nexport * from './lib/sale/transaction/transaction-view/transaction-view.component';\nexport * from './lib/sale/transaction/transactable-view/transactable-view.component';\n\nexport * from './lib/sale/account/account.module';\nexport * from './lib/sale/account/account-form/account-form.component';\nexport * from './lib/sale/account/account-selector/account-selector.module';\nexport * from './lib/sale/account/account-selector/account-selector/account-selector.component';\nexport * from './lib/sale/account/account.service';\nexport * from './lib/sale/account/account-type.enum';\nexport * from './lib/sale/account/account.model';\nexport * from './lib/sale/account/accounts-list-compact/accounts-list-compact.component';\n\nexport * from './lib/company-information/company-information/company-information.component';\nexport * from './lib/company-information/company-info-display/company-info-display.component';\nexport * from './lib/company-information/client.service';\n\nexport * from './lib/@shared/print-button/print-button.module';\nexport * from './lib/@shared/print-button/print-button/print-button.component';\nexport * from './lib/@shared/print-button/print.service';\n\nexport * from './lib/sale/reports/balance-sheet.service';\nexport * from './lib/sale/reports/payables.service';\nexport * from './lib/sale/reports/receivables.service';\nexport * from './lib/sale/reports/reports.module';\nexport * from './lib/sale/reports/sales-summary.service';\nexport * from './lib/sale/reports/supplier-balance-report.service';\nexport * from './lib/sale/reports/expense-summary.service';\nexport * from './lib/sale/reports/balance-sheet/balance-sheet.component';\nexport * from './lib/sale/reports/expense-by-category-report/expense-by-category-report.component';\nexport * from './lib/sale/reports/expense-summary-report/expense-summary-report.component';\nexport * from './lib/sale/reports/income-by-customer-summary/income-by-customer-summary.component';\nexport * from './lib/sale/reports/outstanding-bills-report/outstanding-bills-report.component';\nexport * from './lib/sale/reports/overdue-invoices-report/overdue-invoices-report.component';\nexport * from './lib/sale/reports/payable-number-widget/payable-number-widget.component';\nexport * from './lib/sale/reports/product-sales-pie-chart/product-sales-pie-chart.component';\nexport * from './lib/sale/reports/product-sales-pie-chart/product-sales-pie-chart.component';\nexport * from './lib/sale/reports/profit-and-loss/profit-and-loss-report/profit-and-loss-report.component';\nexport * from './lib/sale/reports/profit-and-loss/profit-and-loss.module';\nexport * from './lib/sale/reports/profit-and-loss/profit-and-loss.service';\nexport * from './lib/sale/reports/receivables-number-widget/receivables-number-widget.component';\nexport * from './lib/sale/reports/receivables-report/receivables-report.component';\nexport * from './lib/sale/reports/receivables-report/receivables-report.component';\nexport * from './lib/sale/reports/supplier-balance-report-page/supplier-balance-report-page.component';\nexport * from './lib/sale/reports/top-customers-report/top-customers-report.component';\nexport * from './lib/sale/reports/trial-balance-report/trial-balance-report.module';\nexport * from './lib/sale/reports/trial-balance-report/trial-balance-report/trial-balance-report.component';\nexport * from './lib/sale/reports/top-suppliers-report/top-suppliers-report.component';\nexport * from './lib/sale/reports/profit-and-loss-summary/profit-and-loss-summary.component';\n\nexport * from './lib/sale/cheque/cheque.service';\nexport * from './lib/sale/cheque/cheque.module';\nexport * from './lib/sale/cheque/cheque-list/cheque-list.component';\nexport * from './lib/sale/cheque/cheque-status-selector/cheque-status-selector.component';\n\nexport * from './lib/purchase/purchase.module';\nexport * from './lib/purchase/purchase-reports/expense-summary-chart/expense-summary-chart.component';\nexport * from './lib/purchase/purchase-reports/accounts-payable-summary-chart/accounts-payable-summary-chart.component';\nexport * from './lib/purchase/recent-purchase-payments-widget/recent-purchase-payments-widget.module';\nexport * from  './lib/purchase/recent-purchase-payments-widget/recent-purchase-payments-widget/recent-purchase-payments-widget.component';\n\nexport * from './lib/accounting-plus/fixed-assets/fixed-assets.module';\n\nexport * from './lib/accounting-plus/service-center/service-center.service';\n\nexport * from './lib/journal/journal.module';\n\nexport * from './lib/sale/tax/tax.module';\n\nexport * from './lib/purchase/purchase.module';\n\nexport * from './lib/expense/expense.module';\nexport * from './lib/expense/expense-list-table/expense-list-table.component';\nexport * from './lib/expense/expense-line-chart/expense-line-chart.component';\nexport * from './lib/expense/expense.service';\nexport * from './lib/expense/expense-form-page/expense-form-page.component';\n\nexport * from './lib/bills/bills.module';\nexport * from './lib/bills/bills-list-page/bills-list-page.component';\nexport * from './lib/bills/bill-processing-updates/bill-processing-status-updater/bill-processing-status-updater.component';\n\nexport * from './lib/sale/quotation/quotation.module';\n\nexport * from './lib/purchase/payment-voucher/payment-voucher.module';\n\nexport * from './lib/sale/product/product-list/product-list.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i5","i6","i7","i10","i11","i1.PrintService","MaterialModule","SalesSummaryService","i1","i2.SalesSummaryService","i1.InvoiceSummaryService","TopCustomersReportComponent","i1.SalesSummaryService","ProductSalesPieChartComponent","i1.InvoiceService","routes","i2.ReceivablesService","i1.CountryCode","i2.CustomerService","i8","i9.MatTelInput","i2.CustomerFormComponent","i1.CustomerService","i9","i3.CustomerService","i12","i14","i15","i16.CustomerPhonesComponent","i17.CustomerFormButtonComponent","i2.PaymentService","debounceTime","i3.PaymentService","i16.PaymentVoidButtonComponent","i17.PaymentMethodTypeBadgeComponent","i18.PaymentDeleteButtonComponent","i1.InvoiceStatusService","i2.InvoiceService","moment","i3.InvoiceService","i13","i15.InvoiceVoidButtonComponent","i3.PrintService","i9.CustomerInformationCardComponent","i10.PaymentListComponent","i11.InvoiceListPageComponent","i4.InvoiceHelperService","i5.InvoiceFormComponent","i5.InvoiceDisplayConfigurationService","i10.PrintButtonComponent","i11.InvoiceLineItemsTableComponent","i12.InvoiceReceiptEmailButtonComponent","i3.QuotationService","i10.InvoiceInformationCardComponent","i12.PaymentListComponent","i13.CreateInvoiceFromQuotationButtonComponent","i14.InvoiceDeleteButtonComponent","i1.InvoiceDisplayConfigurationService","i1.PaymentService","i8.PrintButtonComponent","i9.PaymentReceiptEmailButtonComponent","i10.CompanyInfoDisplayComponent","errorMessages","i4.InvoiceService","i7.PaymentFormComponent","CompanyInfoDisplayComponent","i3.AssetLocationHistoryService","i4.AssetLocationHistoryBatchService","i3.FixedAssetService","i1.FixedAssetService","i11.FixedAssetBatchUpdateFormComponent","i8.TechlifyFilterComponent","i9.FixedAssetsTableComponent","i2.FixedAssetService","i6.FixedAssetFormComponent","i7.TechlifyFilterComponent","i8.FixedAssetsTableComponent","i5.FixedAssetDeleteButtonComponent","i7.FixedAssetInformationTeaserCardComponent","i3.FixedAssetDocumentService","i4.FixedAssetDocumentFormComponent","i2.FixedAssetDocumentService","i10.TechlifyFilterComponent","i11.FixedAssetDocumentFormButtonComponent","i1.FixedAssetMaintenanceStatusService","i3.FixedAssetMaintenanceService","i4.FixedAssetMaintenanceFormComponent","i1.FixedAssetMaintenanceService","i13.TechlifyFilterComponent","i14.FixedAssetMaintenanceStatusButtonComponent","i15.FixedAssetMaintenanceFormButtonComponent","i16.FixedAssetMaintenancePhotosComponent","i2.FixedAssetMaintenanceService","i8.FixedAssetInformationTeaserCardComponent","i10.FixedAssetMaintenanceFormButtonComponent","i11.FixedAssetMaintenancePhotosComponent","i2.AssetLocationHistoryService","i3.AssetUsageService","i3.AssetUsageSpecificationService","i1.AssetUsageService","i3.ServiceCenterService","i2.ServiceCenterFormComponent","i2.ServiceCenterService","i10.ServiceCenterFormButtonComponent","i11.ServiceCenterTagsComponent","i3.TransactionService","i2.TransactionFormComponent","i1.AccountService","i1.TransactionService","i5.AccountFormService","i2.AccountService","i3.AccountFormService","i4.PrintService","i16","i17","i18","i19.PrintButtonComponent","i20.AccountFormButtonComponent","i21.AccountBalanceCalculateButtonComponent","i1.AccountFormService","i7.TransactionFormButtonComponent","i8.TransactionListComponent","i9.AccountFormButtonComponent","i10.AccountDeleteButtonComponent","i3.ClientService","i2.SupplierBalanceReportService","ExpenseType","ExpenseSummaryService","i2.ExpenseSummaryService","i14.TechlifyFilterComponent","i2.InvoiceSummaryService","i12.TechlifyFilterComponent","i2.BalanceSheetService","i1.ReceivablesService","i1.PayablesService","i1.ExpenseSummaryService","i1.SupplierBalanceReportService","i1.ProfitAndLossService","i11.ProfitAndLossReportExpenseListComponent","i2.ProfitAndLossService","i4.DateService","i1.ChequeService","i11.TechlifyFilterComponent","i12.PaymentVoidButtonComponent","i3.ExpenseService","i4.PaymentService","i6.BillPaymentFormComponent","i2.ExpenseService","i1.ExpenseProcessingStatusService","i2.ExpenseProcessingStatusUpdateService","i6.AccountSelectorComponent","i12.ExpenseVoidButtonComponent","i13.BillProcessingStatusUpdaterComponent","i14.ExpenseMultiSelectFormComponent","i3.ExpenseProcessingStatusService","i7.ExpenseListTableComponent","i9.TechlifyFilterComponent","i7.PaymentInformationCardComponent","i8.BillsListPageComponent","i1.ExpenseLineItemService","i11.ExpenseLineItemListingComponent","i10.ExpenseListTableComponent","i1.ExpenseService","i6.ExpenseLineItemsComponent","i7.ExpenseInformationComponent","i1.TaxService","i4.TaxService","i13.AccountSelectorComponent","i14.ExpenseFilesComponent","i15.TaxSelectorComponent","i16.TaxAmountComponent","i5.ExpenseFormComponent","i2.PayablesService","i2.JournalEntryService","i1.JournalEntryService","i3.JournalEntryService","i3.TaxService","i2.PaymentVoucherService","i3.PaymentVoucherService","i5.AccountSelectorComponent","i1.PaymentVoucherService","i5.ExpenseService"],"mappings":"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"}