techlify-inventory-common 18.50.0 → 22.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/techlify-inventory-common-category.module-Dtn1604q.mjs +842 -0
- package/fesm2022/techlify-inventory-common-category.module-Dtn1604q.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-location.service-C99J8Lje.mjs +50 -0
- package/fesm2022/techlify-inventory-common-location.service-C99J8Lje.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-material.module-ClupVm7-.mjs +190 -0
- package/fesm2022/techlify-inventory-common-material.module-ClupVm7-.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-measure.service-DvJUGa0i.mjs +38 -0
- package/fesm2022/techlify-inventory-common-measure.service-DvJUGa0i.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-product-category-badges.component-VnfnNhtV.mjs +133 -0
- package/fesm2022/techlify-inventory-common-product-category-badges.component-VnfnNhtV.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-product.module-MZoVK3bN.mjs +4278 -0
- package/fesm2022/techlify-inventory-common-product.module-MZoVK3bN.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-purchase-order-view.component-CjED8n4_.mjs +852 -0
- package/fesm2022/techlify-inventory-common-purchase-order-view.component-CjED8n4_.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-purchase-order.service-ztJ5RRH5.mjs +40 -0
- package/fesm2022/techlify-inventory-common-purchase-order.service-ztJ5RRH5.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-recipient.module-gxR77BIj.mjs +647 -0
- package/fesm2022/techlify-inventory-common-recipient.module-gxR77BIj.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-shared.module-DP-FVqea.mjs +102 -0
- package/fesm2022/techlify-inventory-common-shared.module-DP-FVqea.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-stock-allocation-list.component-Du-VCtbs.mjs +382 -0
- package/fesm2022/techlify-inventory-common-stock-allocation-list.component-Du-VCtbs.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-stock-issue-form.component-DfgbqIKn.mjs +486 -0
- package/fesm2022/techlify-inventory-common-stock-issue-form.component-DfgbqIKn.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-stock-issue-page.module-DX9n3X1T.mjs +2509 -0
- package/fesm2022/techlify-inventory-common-stock-issue-page.module-DX9n3X1T.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-D8aIc5Oh.mjs +208 -0
- package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-D8aIc5Oh.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-stock-issue-product.service-BRbfc5KP.mjs +38 -0
- package/fesm2022/techlify-inventory-common-stock-issue-product.service-BRbfc5KP.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-stock-issue-view.component-Cp_0YkKh.mjs +239 -0
- package/fesm2022/techlify-inventory-common-stock-issue-view.component-Cp_0YkKh.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-stock-issue.service-CLHasWVp.mjs +38 -0
- package/fesm2022/techlify-inventory-common-stock-issue.service-CLHasWVp.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-stock-receipts.module-BPxUGNbD.mjs +4195 -0
- package/fesm2022/techlify-inventory-common-stock-receipts.module-BPxUGNbD.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-techlify-filter.module-BdRNWNHi.mjs +464 -0
- package/fesm2022/techlify-inventory-common-techlify-filter.module-BdRNWNHi.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-techlify-form-service-D9K3W2jt.mjs +13 -0
- package/fesm2022/techlify-inventory-common-techlify-form-service-D9K3W2jt.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common.mjs +10803 -2
- package/fesm2022/techlify-inventory-common.mjs.map +1 -1
- package/package.json +9 -11
- package/types/techlify-inventory-common.d.ts +1792 -0
- package/esm2022/lib/inventory-common/category/category-form/category-form.component.mjs +0 -75
- package/esm2022/lib/inventory-common/category/category-form-button/category-form-button.component.mjs +0 -32
- package/esm2022/lib/inventory-common/category/category-list-page/category-list-page.component.mjs +0 -64
- package/esm2022/lib/inventory-common/category/category-routing.module.mjs +0 -29
- package/esm2022/lib/inventory-common/category/category-view/category-view.component.mjs +0 -46
- package/esm2022/lib/inventory-common/category/category.module.mjs +0 -62
- package/esm2022/lib/inventory-common/category/category.service.mjs +0 -18
- package/esm2022/lib/inventory-common/incident/incident-form/incident-form.component.mjs +0 -113
- package/esm2022/lib/inventory-common/incident/incident-form-button/incident-form-button.component.mjs +0 -45
- package/esm2022/lib/inventory-common/incident/incident-list/incident-list.component.mjs +0 -140
- package/esm2022/lib/inventory-common/incident/incident-routing.module.mjs +0 -24
- package/esm2022/lib/inventory-common/incident/incident.module.mjs +0 -22
- package/esm2022/lib/inventory-common/incident/incident.service.mjs +0 -18
- package/esm2022/lib/inventory-common/inventory-common-routing.module.mjs +0 -81
- package/esm2022/lib/inventory-common/inventory-common.module.mjs +0 -43
- package/esm2022/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.mjs +0 -44
- package/esm2022/lib/inventory-common/inventory-value-report.service.mjs +0 -21
- package/esm2022/lib/inventory-common/location/location-form/location-form.component.mjs +0 -63
- package/esm2022/lib/inventory-common/location/location-form-button/location-form-button.component.mjs +0 -47
- package/esm2022/lib/inventory-common/location/location-information/location-information.component.mjs +0 -36
- package/esm2022/lib/inventory-common/location/location-list/location-list.component.mjs +0 -81
- package/esm2022/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.mjs +0 -80
- package/esm2022/lib/inventory-common/location/location-routing.module.mjs +0 -38
- package/esm2022/lib/inventory-common/location/location-status-changer/location-status-changer.component.mjs +0 -64
- package/esm2022/lib/inventory-common/location/location-view/location-view.component.mjs +0 -52
- package/esm2022/lib/inventory-common/location/location.module.mjs +0 -22
- package/esm2022/lib/inventory-common/location/location.service.mjs +0 -33
- package/esm2022/lib/inventory-common/location/shelf/shelf-form/shelf-form.component.mjs +0 -86
- package/esm2022/lib/inventory-common/location/shelf/shelf-form-button/shelf-form-button.component.mjs +0 -39
- package/esm2022/lib/inventory-common/location/shelf/shelf-list/shelf-list.component.mjs +0 -103
- package/esm2022/lib/inventory-common/location/shelf/shelf-routing.module.mjs +0 -24
- package/esm2022/lib/inventory-common/location/shelf/shelf.module.mjs +0 -22
- package/esm2022/lib/inventory-common/location/shelf/shelf.service.mjs +0 -20
- package/esm2022/lib/inventory-common/low-stock-report.service.mjs +0 -23
- package/esm2022/lib/inventory-common/material.module.mjs +0 -172
- package/esm2022/lib/inventory-common/measure/measure-form/measure-form.component.mjs +0 -63
- package/esm2022/lib/inventory-common/measure/measure-list/measure-list.component.mjs +0 -75
- package/esm2022/lib/inventory-common/measure/measure-routing.module.mjs +0 -24
- package/esm2022/lib/inventory-common/measure/measure.module.mjs +0 -43
- package/esm2022/lib/inventory-common/measure/measure.service.mjs +0 -18
- package/esm2022/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.mjs +0 -47
- package/esm2022/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.module.mjs +0 -22
- package/esm2022/lib/inventory-common/product/product-basic-info/product-basic-info.component.mjs +0 -58
- package/esm2022/lib/inventory-common/product/product-batch-update-form/product-batch-update-form.component.mjs +0 -54
- package/esm2022/lib/inventory-common/product/product-delete-button/product-delete-button.component.mjs +0 -54
- package/esm2022/lib/inventory-common/product/product-form/product-form.component.mjs +0 -258
- package/esm2022/lib/inventory-common/product/product-form-button/product-form-button.component.mjs +0 -15
- package/esm2022/lib/inventory-common/product/product-form.service.mjs +0 -17
- package/esm2022/lib/inventory-common/product/product-import-page/product-import-page.component.mjs +0 -66
- package/esm2022/lib/inventory-common/product/product-list/product-list.component.mjs +0 -177
- package/esm2022/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.mjs +0 -61
- package/esm2022/lib/inventory-common/product/product-measure-form/product-measure-form.component.mjs +0 -101
- package/esm2022/lib/inventory-common/product/product-measures-list/product-measures-list.component.mjs +0 -145
- package/esm2022/lib/inventory-common/product/product-nav-bar/product-nav-bar.component.mjs +0 -12
- package/esm2022/lib/inventory-common/product/product-quick-search/product-quick-search.component.mjs +0 -69
- package/esm2022/lib/inventory-common/product/product-routing.module.mjs +0 -68
- package/esm2022/lib/inventory-common/product/product-search/product-search.component.mjs +0 -151
- package/esm2022/lib/inventory-common/product/product-search/product-search.module.mjs +0 -39
- package/esm2022/lib/inventory-common/product/product-statistics.service.mjs +0 -23
- package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.mjs +0 -57
- package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.module.mjs +0 -18
- package/esm2022/lib/inventory-common/product/product-summary.service.mjs +0 -20
- package/esm2022/lib/inventory-common/product/product-view-page/product-view-page.component.mjs +0 -98
- package/esm2022/lib/inventory-common/product/product.module.mjs +0 -145
- package/esm2022/lib/inventory-common/product/product.service.mjs +0 -20
- package/esm2022/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.mjs +0 -15
- package/esm2022/lib/inventory-common/product-batch.service.mjs +0 -20
- package/esm2022/lib/inventory-common/rating/rating-form/rating-form.component.mjs +0 -112
- package/esm2022/lib/inventory-common/rating/rating-form-button/rating-form-button.component.mjs +0 -45
- package/esm2022/lib/inventory-common/rating/rating-list/rating-list.component.mjs +0 -135
- package/esm2022/lib/inventory-common/rating/rating-routing.module.mjs +0 -23
- package/esm2022/lib/inventory-common/rating/rating.module.mjs +0 -22
- package/esm2022/lib/inventory-common/rating/rating.service.mjs +0 -18
- package/esm2022/lib/inventory-common/recipient/recipient-form/recipient-form.component.mjs +0 -59
- package/esm2022/lib/inventory-common/recipient/recipient-list/recipient-list.component.mjs +0 -49
- package/esm2022/lib/inventory-common/recipient/recipient-routing.module.mjs +0 -24
- package/esm2022/lib/inventory-common/recipient/recipient.module.mjs +0 -18
- package/esm2022/lib/inventory-common/recipient/recipient.service.mjs +0 -18
- package/esm2022/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.mjs +0 -152
- package/esm2022/lib/inventory-common/reports/low-stock-report/low-stock-report.component.mjs +0 -161
- package/esm2022/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-product-data.service.mjs +0 -20
- package/esm2022/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-summary-report.component.mjs +0 -98
- package/esm2022/lib/inventory-common/services/techlify-form-service.mjs +0 -11
- package/esm2022/lib/inventory-common/shared/export-to-excel-button/export-to-excel-button.component.mjs +0 -58
- package/esm2022/lib/inventory-common/shared.module.mjs +0 -67
- package/esm2022/lib/inventory-common/stock-allocation/stock-allocation-list/stock-allocation-list.component.mjs +0 -81
- package/esm2022/lib/inventory-common/stock-allocation/stock-allocation.service.mjs +0 -16
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-form/stock-issue-form.component.mjs +0 -198
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-import-page/stock-issue-import-page.component.mjs +0 -59
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-list/stock-issue-list.component.mjs +0 -149
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.component.mjs +0 -91
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.module.mjs +0 -82
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form-button/stock-issue-product-form-button.component.mjs +0 -35
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form.component.mjs +0 -102
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-product-view/stock-issue-product-view.component.mjs +0 -59
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-product.service.mjs +0 -16
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-products-list/stock-issue-products-list.component.mjs +0 -163
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-routing.module.mjs +0 -51
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-single-product-form/stock-issue-single-product-form.component.mjs +0 -201
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-view/stock-issue-view.component.mjs +0 -64
- package/esm2022/lib/inventory-common/stock-issue/stock-issue.module.mjs +0 -47
- package/esm2022/lib/inventory-common/stock-issue/stock-issue.service.mjs +0 -18
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.component.mjs +0 -226
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-import-page/stock-receipt-import-page.component.mjs +0 -74
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-list/stock-receipt-list.component.mjs +0 -152
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form-button/stock-receipt-product-form-button.component.mjs +0 -37
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form.component.mjs +0 -80
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.mjs +0 -149
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-view/stock-receipt-product-view.component.mjs +0 -59
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product.service.mjs +0 -18
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-single-product-form/stock-receipt-simple-form/stock-receipt-single-product-form.component.mjs +0 -181
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-view/stock-receipt-view.component.mjs +0 -54
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt.service.mjs +0 -18
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-page/stock-receipts-page.component.mjs +0 -70
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-routing.module.mjs +0 -52
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipts.module.mjs +0 -104
- package/esm2022/lib/inventory-common/stock-summary.service.mjs +0 -26
- package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.mjs +0 -98
- package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.mjs +0 -139
- package/esm2022/lib/inventory-common/stock-transfer/stock-transfer.service.mjs +0 -18
- package/esm2022/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.mjs +0 -59
- package/esm2022/lib/inventory-common/supplier/payee-selector/payee-selector.module.mjs +0 -21
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-form/purchase-order-form.component.mjs +0 -156
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-listing/purchase-order-listing.component.mjs +0 -67
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form/purchase-order-product-form.component.mjs +0 -74
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form-button/purchase-order-product-form-button.component.mjs +0 -38
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.mjs +0 -61
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product.service.mjs +0 -20
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-view/purchase-order-view.component.mjs +0 -64
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order.service.mjs +0 -20
- package/esm2022/lib/inventory-common/supplier/supplier-branch-delete-button/supplier-branch-delete-button.component.mjs +0 -63
- package/esm2022/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form-button/supplier-branch-form-button.component.mjs +0 -47
- package/esm2022/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form.component.mjs +0 -79
- package/esm2022/lib/inventory-common/supplier/supplier-branch.service.mjs +0 -18
- package/esm2022/lib/inventory-common/supplier/supplier-branches-list/supplier-branches-list.component.mjs +0 -79
- package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form.component.mjs +0 -94
- package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form.service.mjs +0 -17
- package/esm2022/lib/inventory-common/supplier/supplier-information/supplier-information.component.mjs +0 -73
- package/esm2022/lib/inventory-common/supplier/supplier-list/supplier-list.component.mjs +0 -68
- package/esm2022/lib/inventory-common/supplier/supplier-routing.module.mjs +0 -51
- package/esm2022/lib/inventory-common/supplier/supplier-type.service.mjs +0 -25
- package/esm2022/lib/inventory-common/supplier/supplier-view/supplier-view.component.mjs +0 -70
- package/esm2022/lib/inventory-common/supplier/supplier.component.mjs +0 -20
- package/esm2022/lib/inventory-common/supplier/supplier.module.mjs +0 -64
- package/esm2022/lib/inventory-common/supplier/supplier.service.mjs +0 -20
- package/esm2022/lib/inventory-common/techlify-filter/techlify-filter.component.mjs +0 -116
- package/esm2022/lib/inventory-common/techlify-filter/techlify-filter.module.mjs +0 -42
- package/esm2022/public-api.mjs +0 -71
- package/esm2022/techlify-inventory-common.mjs +0 -5
- package/fesm2022/techlify-inventory-common-category.module-CGzFP2S_.mjs +0 -288
- package/fesm2022/techlify-inventory-common-category.module-CGzFP2S_.mjs.map +0 -1
- package/fesm2022/techlify-inventory-common-purchase-order-view.component-5mLg0IvH.mjs +0 -227
- package/fesm2022/techlify-inventory-common-purchase-order-view.component-5mLg0IvH.mjs.map +0 -1
- package/fesm2022/techlify-inventory-common-recipient.module-DLoP6xI3.mjs +0 -147
- package/fesm2022/techlify-inventory-common-recipient.module-DLoP6xI3.mjs.map +0 -1
- package/fesm2022/techlify-inventory-common-stock-issue-form.component-MYEKRteU.mjs +0 -199
- package/fesm2022/techlify-inventory-common-stock-issue-form.component-MYEKRteU.mjs.map +0 -1
- package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-C-c83FEn.mjs +0 -60
- package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-C-c83FEn.mjs.map +0 -1
- package/fesm2022/techlify-inventory-common-stock-issue-view.component-Co7hXpDq.mjs +0 -66
- package/fesm2022/techlify-inventory-common-stock-issue-view.component-Co7hXpDq.mjs.map +0 -1
- package/fesm2022/techlify-inventory-common-techlify-inventory-common-CWxzlvVi.mjs +0 -7214
- package/fesm2022/techlify-inventory-common-techlify-inventory-common-CWxzlvVi.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/inventory-common/category/category-form/category-form.component.d.ts +0 -18
- package/lib/inventory-common/category/category-form-button/category-form-button.component.d.ts +0 -13
- package/lib/inventory-common/category/category-list-page/category-list-page.component.d.ts +0 -20
- package/lib/inventory-common/category/category-routing.module.d.ts +0 -7
- package/lib/inventory-common/category/category-view/category-view.component.d.ts +0 -16
- package/lib/inventory-common/category/category.module.d.ts +0 -20
- package/lib/inventory-common/category/category.service.d.ts +0 -7
- package/lib/inventory-common/incident/incident-form/incident-form.component.d.ts +0 -19
- package/lib/inventory-common/incident/incident-form-button/incident-form-button.component.d.ts +0 -15
- package/lib/inventory-common/incident/incident-list/incident-list.component.d.ts +0 -22
- package/lib/inventory-common/incident/incident-routing.module.d.ts +0 -7
- package/lib/inventory-common/incident/incident.module.d.ts +0 -8
- package/lib/inventory-common/incident/incident.service.d.ts +0 -7
- package/lib/inventory-common/inventory-common-routing.module.d.ts +0 -7
- package/lib/inventory-common/inventory-common.module.d.ts +0 -14
- package/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.d.ts +0 -14
- package/lib/inventory-common/inventory-value-report.service.d.ts +0 -9
- package/lib/inventory-common/location/location-form/location-form.component.d.ts +0 -18
- package/lib/inventory-common/location/location-form-button/location-form-button.component.d.ts +0 -13
- package/lib/inventory-common/location/location-information/location-information.component.d.ts +0 -12
- package/lib/inventory-common/location/location-list/location-list.component.d.ts +0 -18
- package/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.d.ts +0 -18
- package/lib/inventory-common/location/location-routing.module.d.ts +0 -7
- package/lib/inventory-common/location/location-status-changer/location-status-changer.component.d.ts +0 -17
- package/lib/inventory-common/location/location-view/location-view.component.d.ts +0 -16
- package/lib/inventory-common/location/location.module.d.ts +0 -8
- package/lib/inventory-common/location/location.service.d.ts +0 -15
- package/lib/inventory-common/location/shelf/shelf-form/shelf-form.component.d.ts +0 -18
- package/lib/inventory-common/location/shelf/shelf-form-button/shelf-form-button.component.d.ts +0 -13
- package/lib/inventory-common/location/shelf/shelf-list/shelf-list.component.d.ts +0 -19
- package/lib/inventory-common/location/shelf/shelf-routing.module.d.ts +0 -7
- package/lib/inventory-common/location/shelf/shelf.module.d.ts +0 -8
- package/lib/inventory-common/location/shelf/shelf.service.d.ts +0 -8
- package/lib/inventory-common/low-stock-report.service.d.ts +0 -10
- package/lib/inventory-common/material.module.d.ts +0 -40
- package/lib/inventory-common/measure/measure-form/measure-form.component.d.ts +0 -21
- package/lib/inventory-common/measure/measure-list/measure-list.component.d.ts +0 -19
- package/lib/inventory-common/measure/measure-routing.module.d.ts +0 -7
- package/lib/inventory-common/measure/measure.module.d.ts +0 -14
- package/lib/inventory-common/measure/measure.service.d.ts +0 -7
- package/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.d.ts +0 -13
- package/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.module.d.ts +0 -12
- package/lib/inventory-common/product/product-basic-info/product-basic-info.component.d.ts +0 -21
- package/lib/inventory-common/product/product-batch-update-form/product-batch-update-form.component.d.ts +0 -17
- package/lib/inventory-common/product/product-delete-button/product-delete-button.component.d.ts +0 -26
- package/lib/inventory-common/product/product-form/product-form.component.d.ts +0 -46
- package/lib/inventory-common/product/product-form-button/product-form-button.component.d.ts +0 -7
- package/lib/inventory-common/product/product-form.service.d.ts +0 -7
- package/lib/inventory-common/product/product-import-page/product-import-page.component.d.ts +0 -10
- package/lib/inventory-common/product/product-list/product-list.component.d.ts +0 -34
- package/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.d.ts +0 -18
- package/lib/inventory-common/product/product-measure-form/product-measure-form.component.d.ts +0 -33
- package/lib/inventory-common/product/product-measures-list/product-measures-list.component.d.ts +0 -43
- package/lib/inventory-common/product/product-nav-bar/product-nav-bar.component.d.ts +0 -5
- package/lib/inventory-common/product/product-quick-search/product-quick-search.component.d.ts +0 -15
- package/lib/inventory-common/product/product-routing.module.d.ts +0 -7
- package/lib/inventory-common/product/product-search/product-search.component.d.ts +0 -48
- package/lib/inventory-common/product/product-search/product-search.module.d.ts +0 -13
- package/lib/inventory-common/product/product-statistics.service.d.ts +0 -9
- package/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.d.ts +0 -15
- package/lib/inventory-common/product/product-summary-chart/product-summary-chart.module.d.ts +0 -10
- package/lib/inventory-common/product/product-summary.service.d.ts +0 -8
- package/lib/inventory-common/product/product-view-page/product-view-page.component.d.ts +0 -44
- package/lib/inventory-common/product/product.module.d.ts +0 -31
- package/lib/inventory-common/product/product.service.d.ts +0 -8
- package/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.d.ts +0 -6
- package/lib/inventory-common/product-batch.service.d.ts +0 -8
- package/lib/inventory-common/rating/rating-form/rating-form.component.d.ts +0 -19
- package/lib/inventory-common/rating/rating-form-button/rating-form-button.component.d.ts +0 -15
- package/lib/inventory-common/rating/rating-list/rating-list.component.d.ts +0 -22
- package/lib/inventory-common/rating/rating-routing.module.d.ts +0 -7
- package/lib/inventory-common/rating/rating.module.d.ts +0 -8
- package/lib/inventory-common/rating/rating.service.d.ts +0 -7
- package/lib/inventory-common/recipient/recipient-form/recipient-form.component.d.ts +0 -21
- package/lib/inventory-common/recipient/recipient-list/recipient-list.component.d.ts +0 -16
- package/lib/inventory-common/recipient/recipient-routing.module.d.ts +0 -7
- package/lib/inventory-common/recipient/recipient.module.d.ts +0 -9
- package/lib/inventory-common/recipient/recipient.service.d.ts +0 -7
- package/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.d.ts +0 -27
- package/lib/inventory-common/reports/low-stock-report/low-stock-report.component.d.ts +0 -25
- package/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-product-data.service.d.ts +0 -8
- package/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-summary-report.component.d.ts +0 -25
- package/lib/inventory-common/services/techlify-form-service.d.ts +0 -5
- package/lib/inventory-common/shared/export-to-excel-button/export-to-excel-button.component.d.ts +0 -12
- package/lib/inventory-common/shared.module.d.ts +0 -13
- package/lib/inventory-common/stock-allocation/stock-allocation-list/stock-allocation-list.component.d.ts +0 -19
- package/lib/inventory-common/stock-allocation/stock-allocation.service.d.ts +0 -7
- package/lib/inventory-common/stock-issue/stock-issue-form/stock-issue-form.component.d.ts +0 -45
- package/lib/inventory-common/stock-issue/stock-issue-import-page/stock-issue-import-page.component.d.ts +0 -10
- package/lib/inventory-common/stock-issue/stock-issue-list/stock-issue-list.component.d.ts +0 -33
- package/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.component.d.ts +0 -30
- package/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.module.d.ts +0 -18
- package/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form-button/stock-issue-product-form-button.component.d.ts +0 -12
- package/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form.component.d.ts +0 -21
- package/lib/inventory-common/stock-issue/stock-issue-product-view/stock-issue-product-view.component.d.ts +0 -19
- package/lib/inventory-common/stock-issue/stock-issue-product.service.d.ts +0 -7
- package/lib/inventory-common/stock-issue/stock-issue-products-list/stock-issue-products-list.component.d.ts +0 -40
- package/lib/inventory-common/stock-issue/stock-issue-routing.module.d.ts +0 -7
- package/lib/inventory-common/stock-issue/stock-issue-single-product-form/stock-issue-single-product-form.component.d.ts +0 -42
- package/lib/inventory-common/stock-issue/stock-issue-view/stock-issue-view.component.d.ts +0 -19
- package/lib/inventory-common/stock-issue/stock-issue.module.d.ts +0 -14
- package/lib/inventory-common/stock-issue/stock-issue.service.d.ts +0 -7
- package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.component.d.ts +0 -48
- package/lib/inventory-common/stock-receipts/stock-receipt-import-page/stock-receipt-import-page.component.d.ts +0 -10
- package/lib/inventory-common/stock-receipts/stock-receipt-list/stock-receipt-list.component.d.ts +0 -30
- package/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form-button/stock-receipt-product-form-button.component.d.ts +0 -12
- package/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form.component.d.ts +0 -17
- package/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.d.ts +0 -31
- package/lib/inventory-common/stock-receipts/stock-receipt-product-view/stock-receipt-product-view.component.d.ts +0 -19
- package/lib/inventory-common/stock-receipts/stock-receipt-product.service.d.ts +0 -7
- package/lib/inventory-common/stock-receipts/stock-receipt-single-product-form/stock-receipt-simple-form/stock-receipt-single-product-form.component.d.ts +0 -33
- package/lib/inventory-common/stock-receipts/stock-receipt-view/stock-receipt-view.component.d.ts +0 -19
- package/lib/inventory-common/stock-receipts/stock-receipt.service.d.ts +0 -7
- package/lib/inventory-common/stock-receipts/stock-receipts-page/stock-receipts-page.component.d.ts +0 -21
- package/lib/inventory-common/stock-receipts/stock-receipts-routing.module.d.ts +0 -7
- package/lib/inventory-common/stock-receipts/stock-receipts.module.d.ts +0 -22
- package/lib/inventory-common/stock-summary.service.d.ts +0 -14
- package/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.d.ts +0 -19
- package/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.d.ts +0 -28
- package/lib/inventory-common/stock-transfer/stock-transfer.service.d.ts +0 -7
- package/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.d.ts +0 -20
- package/lib/inventory-common/supplier/payee-selector/payee-selector.module.d.ts +0 -11
- package/lib/inventory-common/supplier/purchase-order/purchase-order-form/purchase-order-form.component.d.ts +0 -30
- package/lib/inventory-common/supplier/purchase-order/purchase-order-listing/purchase-order-listing.component.d.ts +0 -16
- package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form/purchase-order-product-form.component.d.ts +0 -16
- package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form-button/purchase-order-product-form-button.component.d.ts +0 -12
- package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.d.ts +0 -15
- package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product.service.d.ts +0 -8
- package/lib/inventory-common/supplier/purchase-order/purchase-order-view/purchase-order-view.component.d.ts +0 -19
- package/lib/inventory-common/supplier/purchase-order/purchase-order.service.d.ts +0 -8
- package/lib/inventory-common/supplier/supplier-branch-delete-button/supplier-branch-delete-button.component.d.ts +0 -18
- package/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form-button/supplier-branch-form-button.component.d.ts +0 -13
- package/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form.component.d.ts +0 -22
- package/lib/inventory-common/supplier/supplier-branch.service.d.ts +0 -7
- package/lib/inventory-common/supplier/supplier-branches-list/supplier-branches-list.component.d.ts +0 -18
- package/lib/inventory-common/supplier/supplier-form/supplier-form.component.d.ts +0 -25
- package/lib/inventory-common/supplier/supplier-form/supplier-form.service.d.ts +0 -7
- package/lib/inventory-common/supplier/supplier-information/supplier-information.component.d.ts +0 -18
- package/lib/inventory-common/supplier/supplier-list/supplier-list.component.d.ts +0 -20
- package/lib/inventory-common/supplier/supplier-routing.module.d.ts +0 -7
- package/lib/inventory-common/supplier/supplier-type.service.d.ts +0 -13
- package/lib/inventory-common/supplier/supplier-view/supplier-view.component.d.ts +0 -20
- package/lib/inventory-common/supplier/supplier.component.d.ts +0 -10
- package/lib/inventory-common/supplier/supplier.module.d.ts +0 -20
- package/lib/inventory-common/supplier/supplier.service.d.ts +0 -8
- package/lib/inventory-common/techlify-filter/techlify-filter.component.d.ts +0 -31
- package/lib/inventory-common/techlify-filter/techlify-filter.module.d.ts +0 -12
- package/public-api.d.ts +0 -67
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"techlify-inventory-common.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"techlify-inventory-common.mjs","names":["i1","i1.ProductService","i2","i4","i5","i6","i1.ProductSummaryService","i2","i1.ProductService","MaterialModule","i4","i5","i6","i7","i8","i9","i1.ProductSummaryService","i2","i3","i4","i5.LowStockProductsWidgetComponent","i6.ProductSummaryChartComponent","i7.ProductQuickSearchComponent","i8","i1","i1.LowStockReportService","i2","i3","i4","i1","i1.InventoryValueReportService","i2","i3","MaterialModule","i5","i6","i7","i8","i11","i12","i13","i14","i1","finalize","i1.StockIssueProductDataService","i3","i4","i5","i6","i7","i8","i9","i10","i11","i12","routes","i1","debounceTime","i3","i4.ProductService","i5","i6","i7","i8","i9","i10","i11","i12.ProductBasicInfoComponent","MaterialModule","i1","routes","i1","i2","i1","i3.MeasureService","i4","i5","i6","i7","i8","i1","i2.MeasureService","i3","i4","i5","i6","i7","i8","i9","i10.TechlifyFilterComponent","routes","i1","i1","moment","i1","i3.IncidentService","i1","i2","i3.IncidentService","i4","i1","moment","i1","i3.RatingService","i1","i2","i3.RatingService","i4","i2.SupplierService","i3","i4","i5","i7","i1","i1","i3.SupplierBranchService","i4","i5","i6","i7","i8","MaterialModule","i2","i2","i3.SupplierBranchService","MaterialModule","i1","i2","i3.SupplierBranchService","i4.SupplierBranchFormButtonComponent","i5.SupplierBranchDeleteButtonComponent","i6","i7","i8","i9","i10","i11","i12","i13","i1.SupplierService","i2","i3.StockReceiptPageComponent","i4.IncidentListComponent","i5.RatingListComponent","i6","i7","i9","i10.SupplierInformationComponent","i11.SupplierBranchesListComponent","i2.SupplierFormService","i3","i1","i2","i3.SupplierService","i4","i5","i6","i7","i8","i9","i11","i12","i13","i1.PurchaseOrderService","MaterialModule","i4","i5","i6","i7","i8","i9","i10","i11","i12","i1","i3.PurchaseOrderService","i4","MaterialModule","i5","i6","i8","i9","i10","i11","routes","i1","i1","routes","i1","routes","i1","i1","i3.LocationService","i4","MaterialModule","i5","i6","i7","i2","i1","i2.LocationService","i3","MaterialModule","i4","i1.LocationService","i3","MaterialModule","i4","i5","i6","i7","i8","i9","i1","i2.LocationService","MaterialModule","i4","i1.LocationService","i3","i4","i5","i6","i7","i8","i9","i1.LocationService","i2","MaterialModule","i3","routes","i1","i1","i1","i3.ShelfService","MaterialModule","i2","i1.ShelfService","i3","i4","i5","i6","i7","i8","i9","i10","i11","i1"],"sources":["../../../projects/inventory-common/src/lib/inventory-common/product/product-summary.service.ts","../../../projects/inventory-common/src/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-quick-search/product-quick-search.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-quick-search/product-quick-search.component.html","../../../projects/inventory-common/src/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.ts","../../../projects/inventory-common/src/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.html","../../../projects/inventory-common/src/lib/inventory-common/low-stock-report.service.ts","../../../projects/inventory-common/src/lib/inventory-common/reports/low-stock-report/low-stock-report.component.ts","../../../projects/inventory-common/src/lib/inventory-common/reports/low-stock-report/low-stock-report.component.html","../../../projects/inventory-common/src/lib/inventory-common/inventory-value-report.service.ts","../../../projects/inventory-common/src/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.ts","../../../projects/inventory-common/src/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.html","../../../projects/inventory-common/src/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-product-data.service.ts","../../../projects/inventory-common/src/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-summary-report.component.ts","../../../projects/inventory-common/src/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-summary-report.component.html","../../../projects/inventory-common/src/lib/inventory-common/inventory-common-routing.module.ts","../../../projects/inventory-common/src/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.module.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-summary-chart/product-summary-chart.module.ts","../../../projects/inventory-common/src/lib/inventory-common/inventory-common.module.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-search/product-search.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-search/product-search.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-search/product-search.module.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-issue/stock-issue-import-page/stock-issue-import-page.component.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-issue/stock-issue-import-page/stock-issue-import-page.component.html","../../../projects/inventory-common/src/lib/inventory-common/stock-issue/stock-issue-routing.module.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-issue/stock-issue.module.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form-button/stock-issue-product-form-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form-button/stock-issue-product-form-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/measure/measure-form/measure-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/measure/measure-form/measure-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/measure/measure-list/measure-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/measure/measure-list/measure-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/measure/measure-routing.module.ts","../../../projects/inventory-common/src/lib/inventory-common/measure/measure.module.ts","../../../projects/inventory-common/src/lib/inventory-common/incident/incident.service.ts","../../../projects/inventory-common/src/lib/inventory-common/incident/incident-form/incident-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/incident/incident-form/incident-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/incident/incident-form-button/incident-form-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/incident/incident-form-button/incident-form-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/incident/incident-list/incident-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/incident/incident-list/incident-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/rating/rating.service.ts","../../../projects/inventory-common/src/lib/inventory-common/rating/rating-form/rating-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/rating/rating-form/rating-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/rating/rating-form-button/rating-form-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/rating/rating-form-button/rating-form-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/rating/rating-list/rating-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/rating/rating-list/rating-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-information/supplier-information.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-information/supplier-information.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-branch.service.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form-button/supplier-branch-form-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form-button/supplier-branch-form-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-branch-delete-button/supplier-branch-delete-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-branch-delete-button/supplier-branch-delete-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-branches-list/supplier-branches-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-branches-list/supplier-branches-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-view/supplier-view.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-view/supplier-view.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-form/supplier-form.service.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-list/supplier-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-list/supplier-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-listing/purchase-order-listing.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-listing/purchase-order-listing.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-form/purchase-order-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-form/purchase-order-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-routing.module.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier.module.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-type.service.ts","../../../projects/inventory-common/src/lib/inventory-common/incident/incident-routing.module.ts","../../../projects/inventory-common/src/lib/inventory-common/incident/incident.module.ts","../../../projects/inventory-common/src/lib/inventory-common/rating/rating-routing.module.ts","../../../projects/inventory-common/src/lib/inventory-common/rating/rating.module.ts","../../../projects/inventory-common/src/lib/inventory-common/location/location-form/location-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/location/location-form/location-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/location/location-form-button/location-form-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/location/location-form-button/location-form-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/location/location-status-changer/location-status-changer.component.ts","../../../projects/inventory-common/src/lib/inventory-common/location/location-status-changer/location-status-changer.component.html","../../../projects/inventory-common/src/lib/inventory-common/location/location-list/location-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/location/location-list/location-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/location/location-information/location-information.component.ts","../../../projects/inventory-common/src/lib/inventory-common/location/location-information/location-information.component.html","../../../projects/inventory-common/src/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.ts","../../../projects/inventory-common/src/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.html","../../../projects/inventory-common/src/lib/inventory-common/location/location-view/location-view.component.ts","../../../projects/inventory-common/src/lib/inventory-common/location/location-view/location-view.component.html","../../../projects/inventory-common/src/lib/inventory-common/location/location-routing.module.ts","../../../projects/inventory-common/src/lib/inventory-common/location/location.module.ts","../../../projects/inventory-common/src/lib/inventory-common/location/shelf/shelf.service.ts","../../../projects/inventory-common/src/lib/inventory-common/location/shelf/shelf-form/shelf-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/location/shelf/shelf-form/shelf-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/location/shelf/shelf-form-button/shelf-form-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/location/shelf/shelf-form-button/shelf-form-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/location/shelf/shelf-list/shelf-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/location/shelf/shelf-list/shelf-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/location/shelf/shelf-routing.module.ts","../../../projects/inventory-common/src/lib/inventory-common/location/shelf/shelf.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductSummaryService extends TechlifyService {\n\n constructor(public httpService: HttpService) {\n super(httpService, 'products-summary');\n }\n}\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { TechlifyListComponent } from 'ngx-techlify-core';\nimport { ProductService } from '../product.service';\n\n@Component({\n selector: 'app-low-stock-products-widget',\n templateUrl: './low-stock-products-widget.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class LowStockProductsWidgetComponent extends TechlifyListComponent implements OnInit {\n displayedColumns: string[] = ['#', 'Product', 'Stock', 'Reorder Point'];\n\n constructor(private productService: ProductService) {\n super();\n this.lastPage = 0;\n this.perPage = 1000;\n }\n\n ngOnInit() {\n this.loadData();\n }\n\n override loadData() {\n const params: any = {\n page: this.page,\n perPage: this.perPage,\n is_low_stock: true,\n num_items: this.perPage + '|' + this.page,\n };\n this.isWorking = true;\n this.productService.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 style=\"max-height: 460px; overflow: auto\">\n <mat-card-content>\n <h3>Low Stock Products</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 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 <!-- Product Column -->\n <ng-container matColumnDef=\"Product\">\n <th mat-header-cell *matHeaderCellDef>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"['/inventory/products', $safeNavigationMigration(element?.id), 'view']\" class=\"text-dark\">\n {{ element?.name }}\n </a>\n </td>\n </ng-container>\n\n <!-- Stock Column -->\n <ng-container matColumnDef=\"Stock\">\n <th mat-header-cell *matHeaderCellDef>Stock</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.current_stock }}</td>\n </ng-container>\n\n <!-- Reorder Point Column -->\n <ng-container matColumnDef=\"Reorder Point\">\n <th mat-header-cell *matHeaderCellDef>Reorder Point</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.reorder_point }}</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 @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </mat-card-content>\n</mat-card>\n","import { Component, Input, OnInit, ChangeDetectionStrategy } 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 { ProductSummaryService } from '../product-summary.service';\n\n@Component({\n selector: 'app-product-summary-chart',\n imports: [MatCard, MatCardContent, GoogleChartsModule, MatProgressBar],\n templateUrl: './product-summary-chart.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './product-summary-chart.component.scss',\n})\nexport class ProductSummaryChartComponent implements OnInit {\n @Input() height: number = 400;\n @Input() title = 'Product Summary';\n\n constructor(private productSummaryService: ProductSummaryService) {}\n\n chart: any = {\n title: 'Pie Chart',\n type: ChartType.PieChart,\n data: [],\n options: {\n pieSliceText: 'value',\n },\n };\n isLoading: boolean = false;\n\n ngOnInit() {\n this.loadData();\n }\n\n loadData() {\n const params: any = {\n include: 'products_aggregated',\n group_by: 'category_id',\n };\n this.isLoading = true;\n this.productSummaryService.index(params).subscribe({\n next: (response: any) => {\n let data: any[] = [];\n response?.products_aggregated?.forEach((item: any) => {\n data.push([item?.title, item?.product_count]);\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>{{ title }}</h3>\n </mat-card-content>\n @if (isLoading) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n } @if (chart.data?.length > 0) {\n <mat-card-content>\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 } @if (chart.data?.length === 0 && !isLoading) {\n <mat-card-content\n class=\"d-flex justify-content-center align-items-center p-3 text-secondary\">\n <p>No data to display.</p>\n </mat-card-content>\n }\n</mat-card>\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { TechlifyIconModule, TechlifyListComponent } from 'ngx-techlify-core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { debounceTime } from 'rxjs';\nimport { ProductModule } from '../product.module';\nimport { ProductService } from '../product.service';\nimport { MaterialModule } from '../../material.module';\n\n@Component({\n selector: 'app-product-quick-search',\n imports: [\n InfiniteScrollDirective,\n RouterLink,\n ReactiveFormsModule,\n ProductModule,\n RouterLinkActive,\n MaterialModule,\n TechlifyIconModule\n ],\n templateUrl: './product-quick-search.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './product-quick-search.component.scss',\n})\nexport class ProductQuickSearchComponent extends TechlifyListComponent implements OnInit {\n displayedColumns: string[] = ['#', 'Product', 'SKU', 'On Hand', 'Actions'];\n searchControl: FormControl<any> = new FormControl('');\n\n constructor(private productService: ProductService) {\n super();\n this.lastPage = 0;\n this.perPage = 1000;\n }\n\n ngOnInit() {\n this.loadData();\n\n this.searchControl.valueChanges.pipe(debounceTime(500)).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 sort_by: 'created_at|desc',\n with: 'type,categories',\n };\n this.isWorking = true;\n this.productService.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 style=\"max-height: 460px; overflow: auto\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <h3>Products Quick Search</h3>\n\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input type=\"text\" matInput placeholder=\"Search products\" [formControl]=\"searchControl\" />\n </mat-form-field>\n </mat-card-content>\n <mat-card-content class=\"p-0\">\n <table mat-table [dataSource]=\"models\" class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\">\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 <!-- Product Column -->\n <ng-container matColumnDef=\"Product\">\n <th mat-header-cell *matHeaderCellDef>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-column\">\n <a [routerLink]=\"['/inventory/products', $safeNavigationMigration(element?.id), 'view']\" class=\"text-dark\">\n {{ element?.name }}\n </a>\n\n @if (element?.categories?.length > 0) {\n <div\n class=\"d-flex justify-content-start align-items-center gap-1 flex-wrap\">\n @for (category of element?.categories; track category) {\n <span class=\"badge bg-secondary\">\n {{ category?.title }}\n </span>\n }\n </div>\n }\n </div>\n </td>\n </ng-container>\n\n <!-- SKU Column -->\n <ng-container matColumnDef=\"SKU\">\n <th mat-header-cell *matHeaderCellDef>SKU</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.sku }}</td>\n </ng-container>\n\n <!-- On Hand Column -->\n <ng-container matColumnDef=\"On Hand\">\n <th mat-header-cell *matHeaderCellDef>On Hand</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.stock_on_hand }}\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-2 align-items-center\">\n <mat-icon class=\"cursor-pointer\" matTooltip=\"View\"\n [routerLink]=\"['/inventory/products', element.id, 'view']\" routerLinkActive=\"route-link-active\">\n remove_red_eye\n </mat-icon>\n\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 <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </mat-card-content>\n</mat-card>","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport moment from 'moment';\nimport { ProductSummaryService } from '../product/product-summary.service';\n\n@Component({\n selector: 'app-inventory-dashboard-page',\n templateUrl: './inventory-dashboard-page.component.html',\n styleUrls: ['./inventory-dashboard-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class InventoryDashboardPageComponent implements OnInit {\n lowStockProductsCount!: number;\n stockReceiptsQtySum!: number;\n stockIssueQuantitySum!: number;\n constructor(private productSummaryService: ProductSummaryService) {}\n\n ngOnInit(): void {\n this.loadProductSummary();\n }\n\n private loadProductSummary() {\n const params: any = {\n include: 'low_stock_products_count,stock_receipts_quantity_sum,stock_issue_quantity_sum',\n date_from: moment().startOf('month').format('YYYY-MM-DD'),\n date_to: moment().endOf('month').format('YYYY-MM-DD'),\n };\n this.productSummaryService.index(params).subscribe({\n next: (response: any) => {\n this.lowStockProductsCount = response?.low_stock_products_count;\n this.stockReceiptsQtySum = response?.stock_receipts_quantity_sum;\n this.stockIssueQuantitySum = response?.stock_issue_quantity_sum;\n },\n });\n }\n}\n","<div class=\"d-flex justify-content-start align-items-start gap-3 vh-100\">\n <div class=\"row\" style=\"width: calc(100% - 300px)\">\n <div class=\"col-lg-4 mb-3\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-center align-items-center gap-3\">\n <span class=\"material-symbols-outlined fs-1 fw-bold\" style=\"color: #f5222d !important\"> inventory_2 </span>\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Low Stock Products</small>\n <h1 class=\"mb-0 fw-bold\">{{ lowStockProductsCount | number }}</h1>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div class=\"col-lg-4 mb-3\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-center align-items-center gap-3\">\n <span class=\"material-symbols-outlined fs-1 fw-bold\"> arrow_circle_down </span>\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Products Received This Month</small>\n <h1 class=\"mb-0 fw-bold\">{{ stockReceiptsQtySum | number }}</h1>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div class=\"col-lg-4 mb-3\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-center align-items-center gap-3\">\n <span class=\"material-symbols-outlined fs-1 fw-bold\"> arrow_circle_up </span>\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Products Issued This Month</small>\n <h1 class=\"mb-0 fw-bold\">{{ stockIssueQuantitySum | number }}</h1>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div class=\"col-lg-6 mb-3\">\n <app-product-quick-search></app-product-quick-search>\n </div>\n <div class=\"col-lg-6 mb-3\">\n <app-low-stock-products-widget></app-low-stock-products-widget>\n </div>\n <div class=\"col-lg-6 mb-3\">\n <app-product-summary-chart title=\"Product By Category\"></app-product-summary-chart>\n </div>\n </div>\n <div style=\"width: 300px\" class=\"d-flex flex-column gap-3 h-100\">\n <mat-card class=\"h-100\">\n <mat-card-content>\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <mat-icon>flag</mat-icon>\n <h3 class=\"mb-0 fw-bold\">Reports</h3>\n </div>\n </mat-card-content>\n <mat-card-content class=\"mt-3 d-flex flex-column justify-content-start gap-3\">\n <a\n class=\"d-flex justify-content-start align-items-center gap-2 text-decoration-none text-dark\"\n routerLink=\"/inventory/reports/low-stock-report\"\n >\n <span class=\"material-symbols-outlined fs-3\"> description </span>\n <h3 class=\"mb-0\">Low Stock Report</h3>\n <span class=\"material-symbols-outlined\"> chevron_forward </span>\n </a>\n <a\n class=\"d-flex justify-content-start align-items-center gap-2 text-decoration-none text-dark cursor-pointer\"\n routerLink=\"/inventory/reports/inventory-value-report\"\n >\n <span class=\"material-symbols-outlined fs-3\"> description </span>\n <h3 class=\"mb-0\">Inventory Value Report</h3>\n <span class=\"material-symbols-outlined\"> chevron_forward </span>\n </a>\n </mat-card-content>\n </mat-card>\n </div>\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 LowStockReportService extends TechlifyService {\n constructor(protected httpService: HttpService) {\n super(httpService, 'reports/low-stock-report');\n }\n\n export(params?: any): Observable<any> {\n return this.http.get('api/reports/low-stock-report/export', { params });\n }\n}\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { CurrencyPipe, DatePipe } from '@angular/common';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { MatCard, MatCardContent } from '@angular/material/card';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatFooterCell,\n MatFooterCellDef,\n MatFooterRow,\n MatFooterRowDef,\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 { MatInput } from '@angular/material/input';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatSort, MatSortHeader, Sort } from '@angular/material/sort';\nimport { ProductCategoryBadgesComponent } from '../../product/widgets/product-category-badges/product-category-badges.component';\nimport { RequestHelperService, SearchableSelectorModule, TechlifyListComponent } from 'ngx-techlify-core';\nimport { InventoryValueReportService } from '../../inventory-value-report.service';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\nimport { LowStockReportService } from '../../low-stock-report.service';\n\n@Component({\n selector: 'app-low-stock-report',\n imports: [\n CurrencyPipe,\n FormsModule,\n InfiniteScrollDirective,\n MatCard,\n MatCardContent,\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatFooterCell,\n MatFooterRow,\n MatFooterRowDef,\n MatFormField,\n MatHeaderCell,\n MatHeaderRow,\n MatHeaderRowDef,\n MatInput,\n MatLabel,\n MatProgressBar,\n MatRow,\n MatRowDef,\n MatSort,\n MatSortHeader,\n MatTable,\n ProductCategoryBadgesComponent,\n ReactiveFormsModule,\n SearchableSelectorModule,\n RouterLink,\n MatFooterCellDef,\n MatHeaderCellDef,\n MatFooterCellDef,\n MatHeaderCellDef,\n MatHeaderCellDef,\n DatePipe,\n ],\n templateUrl: './low-stock-report.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './low-stock-report.component.scss',\n})\nexport class LowStockReportComponent extends TechlifyListComponent implements OnInit {\n displayedColumns: string[] = [\n '#',\n 'Product',\n 'Type',\n 'Categories',\n 'Reorder Point',\n 'Stock',\n 'Last Purchase',\n '30d Issues',\n '30d Receipts',\n '60d Issues',\n '60d Receipts',\n '90d Issues',\n '90d Receipts',\n '1y Issues',\n '1y Receipts',\n ];\n totalInventoryValue = 0;\n isExporting = false;\n\n constructor(\n protected override service: LowStockReportService,\n private activatedRoute: ActivatedRoute,\n private formBuilder: FormBuilder\n ) {\n super();\n\n this.filterForm = this.formBuilder.group({\n category_ids: [''],\n search: [''],\n sort_by: ['id|desc'],\n });\n }\n\n ngOnInit() {\n this.updateFormWithQueryParams();\n this.subscribeToFormChanges();\n this.subscribeToRouteChanges();\n }\n\n override loadData(): void {\n const params: any = {\n ...this.requestHelperService.convertToFormData(this.filterForm.value),\n page: this.page,\n perPage: this.perPage,\n with: 'categories,lastStockReceipt,type,measure',\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.isWorking = false;\n\n this.models.forEach((model: any) => {\n this.totalInventoryValue += model?.inventory_value;\n });\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 this.filterForm.get('sort_by')?.setValue(active + '|' + direction);\n }\n\n export() {\n const params: any = {\n ...this.requestHelperService.convertToFormData(this.filterForm.value),\n page: this.page,\n perPage: 50000,\n with: 'categories,lastStockReceipt',\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 private updateFormWithQueryParams(): void {\n this.requestHelperService.updateFormWithQueryParams(this.filterForm, {\n category_ids: { multiple: true },\n });\n }\n\n private subscribeToFormChanges(): void {\n (this.filterForm as FormGroup).valueChanges.pipe(debounceTime(800)).subscribe({\n next: () => {\n this.requestHelperService.updateQueryParams(this.requestHelperService.convertToFormData(this.filterForm.value));\n },\n });\n }\n\n private subscribeToRouteChanges(): void {\n this.activatedRoute.queryParams.pipe(debounceTime(500), distinctUntilChanged()).subscribe(() => {\n this.reload();\n });\n }\n}\n","<div>\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 <h3 class=\"mb-0\">Low Stock Report</h3>\n <i class=\"fa-solid fa-file-excel cursor-pointer d-print-none\" (click)=\"export()\"></i>\n </div>\n <form [formGroup]=\"filterForm\" class=\"d-flex justify-content-end 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 </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 mat-table\n [dataSource]=\"models\"\n class=\"w-100\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n matSort\n (matSortChange)=\"onSortChange($event)\"\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 <!-- Product Column -->\n <ng-container matColumnDef=\"Product\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"name\">Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"['/inventory/products', $safeNavigationMigration(element?.id), 'view']\" class=\"text-dark\">\n {{ element?.name }}\n </a>\n </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\">\n {{ element?.type?.title }}\n </td>\n </ng-container>\n\n <!-- Reorder Point Column -->\n <ng-container matColumnDef=\"Reorder Point\">\n <th mat-header-cell *matHeaderCellDef>Reorder Point</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.reorder_point }}\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\">\n <app-product-category-badges [product]=\"element\"></app-product-category-badges>\n </td>\n </ng-container>\n\n <!-- Stock Column -->\n <ng-container matColumnDef=\"Stock\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"stock\">Stock</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.stock }}\n </td>\n </ng-container>\n\n <!-- Last Purchase Column -->\n <ng-container matColumnDef=\"Last Purchase\">\n <th mat-header-cell *matHeaderCellDef>Last Purchase</th>\n <td mat-cell *matCellDef=\"let element\">\n @if (element?.last_stock_receipt) {\n <p class=\"mb-0\">\n {{ $safeNavigationMigration(element?.last_stock_receipt?.date) | date }}\n -\n {{ element?.last_stock_receipt?.quantity }}\n {{ element?.measure?.title }}\n </p>\n } @if (element?.last_stock_receipt) {\n <small class=\"text-secondary\">\n {{ element?.last_stock_receipt?.purchase_price ?? 0 | currency }} per {{ element?.measure?.title }}\n </small>\n }\n </td>\n </ng-container>\n\n <!-- 30d Issues -->\n <ng-container matColumnDef=\"30d Issues\">\n <th mat-header-cell *matHeaderCellDef>30d Issues</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.issues_30d }}</td>\n </ng-container>\n\n <!-- 30d Receipts -->\n <ng-container matColumnDef=\"30d Receipts\">\n <th mat-header-cell *matHeaderCellDef>30d Receipts</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.receipts_30d }}</td>\n </ng-container>\n\n <!-- 60d Issues -->\n <ng-container matColumnDef=\"60d Issues\">\n <th mat-header-cell *matHeaderCellDef>60d Issues</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.issues_60d }}</td>\n </ng-container>\n\n <!-- 60d Receipts -->\n <ng-container matColumnDef=\"60d Receipts\">\n <th mat-header-cell *matHeaderCellDef>60d Receipts</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.receipts_60d }}</td>\n </ng-container>\n\n <!-- 90d Issues -->\n <ng-container matColumnDef=\"90d Issues\">\n <th mat-header-cell *matHeaderCellDef>90d Issues</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.issues_90d }}</td>\n </ng-container>\n\n <!-- 90d Receipts -->\n <ng-container matColumnDef=\"90d Receipts\">\n <th mat-header-cell *matHeaderCellDef>90d Receipts</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.receipts_90d }}</td>\n </ng-container>\n\n <!-- 1y Issues -->\n <ng-container matColumnDef=\"1y Issues\">\n <th mat-header-cell *matHeaderCellDef>1y Issues</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.issues_1y }}</td>\n </ng-container>\n\n <!-- 60d Receipts -->\n <ng-container matColumnDef=\"1y Receipts\">\n <th mat-header-cell *matHeaderCellDef>1y Receipts</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.receipts_1y }}</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 @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\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 InventoryValueReportService extends TechlifyService {\n constructor(httpService: HttpService) {\n super(httpService, 'reports/inventory-value-report');\n }\n\n export(params?: any): Observable<any> {\n return this.http.get('api/reports/inventory-value-report/export', { params });\n }\n}\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RequestHelperService, SearchableSelectorModule, TechlifyListComponent } from 'ngx-techlify-core';\nimport { InventoryValueReportService } from '../../inventory-value-report.service';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\nimport { ProductCategoryBadgesComponent } from '../../product/widgets/product-category-badges/product-category-badges.component';\nimport { CurrencyPipe } from '@angular/common';\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { Sort } from '@angular/material/sort';\nimport { MaterialModule } from '../../material.module';\n\n@Component({\n selector: 'app-inventory-value-report',\n imports: [\n CommonModule,\n MaterialModule,\n RouterLink,\n ProductCategoryBadgesComponent,\n CurrencyPipe,\n ReactiveFormsModule,\n SearchableSelectorModule,\n InfiniteScrollDirective,\n ],\n templateUrl: './inventory-value-report.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './inventory-value-report.component.scss',\n})\nexport class InventoryValueReportComponent extends TechlifyListComponent implements OnInit {\n displayedColumns: string[] = [\n '#',\n 'product',\n 'sku',\n 'on_hand',\n 'Average Price',\n 'Inventory Value',\n 'Last Purchase Price',\n 'Inventory Value Based On Last Purchase Price',\n ];\n totalInventoryValue = 0;\n isExporting = false;\n\n minStockOptions: number[] = (() => {\n const options: number[] = [0, 1];\n for (let i = 10; i <= 10000; i += 10) {\n options.push(i);\n }\n return options;\n })();\n\n constructor(\n protected override service: InventoryValueReportService,\n private activatedRoute: ActivatedRoute,\n private formBuilder: FormBuilder\n ) {\n super();\n\n this.filterForm = this.formBuilder.group({\n category_ids: [''],\n type_ids: [''],\n location_ids: [''],\n search: [''],\n sort_by: ['id|desc'],\n min_stock_on_hand: [1],\n });\n }\n\n ngOnInit() {\n this.updateFormWithQueryParams();\n this.subscribeToFormChanges();\n this.subscribeToRouteChanges();\n }\n\n override loadData(): void {\n const params: any = {\n ...this.requestHelperService.convertToFormData(this.filterForm.value),\n page: this.page,\n perPage: 50,\n with: 'categories,lastStockReceipt,type',\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.totalInventoryValue += response?.totals?.total_inventory_value;\n this.isWorking = false;\n },\n error: () => (this.isWorking = false),\n });\n }\n\n private updateFormWithQueryParams(): void {\n this.requestHelperService.updateFormWithQueryParams(this.filterForm, {\n category_ids: { multiple: true },\n location_ids: { multiple: true },\n });\n }\n\n private subscribeToFormChanges(): void {\n (this.filterForm as FormGroup).valueChanges.pipe(debounceTime(800)).subscribe({\n next: () => {\n this.requestHelperService.updateQueryParams(this.requestHelperService.convertToFormData(this.filterForm.value));\n },\n });\n }\n\n private subscribeToRouteChanges(): void {\n this.activatedRoute.queryParams.pipe(debounceTime(500), distinctUntilChanged()).subscribe(() => {\n this.reload();\n });\n }\n\n onSortChange(sort: Sort) {\n let { active, direction } = sort;\n if (!active) active = 'id';\n if (!direction) direction = 'desc';\n this.filterForm.get('sort_by')?.setValue(active + '|' + direction);\n }\n\n export(type: string = 'excel') {\n const params: any = {\n ...this.requestHelperService.convertToFormData(this.filterForm.value),\n page: this.page,\n perPage: 50000,\n with: 'categories,lastStockReceipt,type',\n export_type: type,\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 // We need to override the reload method to reset the totalInventoryValue\n override reload(): void {\n this.totalInventoryValue = 0;\n this.page = 1;\n this.models = [];\n this.loadData();\n }\n}\n","<div>\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 <h3 class=\"mb-0\">Inventory Value Report</h3>\n <i class=\"fa-solid fa-file-excel cursor-pointer d-print-none\" (click)=\"export('excel')\"></i>\n <i class=\"fa-solid fa-file-pdf cursor-pointer d-print-none\" (click)=\"export('pdf')\"></i>\n </div>\n <form [formGroup]=\"filterForm\" class=\"d-flex justify-content-end 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\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Location</mat-label>\n <app-searchable-selector apiUrl=\"api/inventory-locations\" formControlName=\"location_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Min Stock On Hand</mat-label>\n <mat-select formControlName=\"min_stock_on_hand\">\n @for (option of minStockOptions; track option) {\n <mat-option [value]=\"option\">\n {{ option }}\n </mat-option>\n }\n </mat-select>\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\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" matSort (matSortChange)=\"onSortChange($event)\">\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 <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"name\">Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-column gap-1\">\n <a [routerLink]=\"['/inventory/products', $safeNavigationMigration(element?.id), 'view']\" class=\"text-dark\">\n {{ element?.name }}\n </a>\n <app-product-category-badges [product]=\"element\"></app-product-category-badges>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"sku\">\n <th mat-header-cell *matHeaderCellDef>SKU</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-column gap-1\">\n <span>{{ element?.sku }}</span>\n <span class='text-secondary'> {{ element?.type?.title }} </span>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <strong>Total</strong>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"on_hand\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"stock_on_hand\">On Hand</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.stock_on_hand }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <!-- Average Price Column -->\n <ng-container matColumnDef=\"Average Price\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"average_purchase_price\">\n <div class=\"d-flex flex-row gap-1 align-items-center\">\n <span>Avg. Price</span>\n <i class=\"fa-solid fa-circle-info d-print-none text-secondary\"\n matTooltip=\"Average price of batches in stock\"></i>\n </div>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ $safeNavigationMigration(element?.average_purchase_price) | currency }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <!-- Inventory Value Column -->\n <ng-container matColumnDef=\"Inventory Value\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"inventory_value\">\n <div class=\"d-flex flex-row gap-1 align-items-center\">\n <span>Inventory Value</span>\n <i class=\"fa-solid fa-circle-info d-print-none text-secondary\" matTooltip=\"Based on average price\"></i>\n </div>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ $safeNavigationMigration(element?.inventory_value) | currency }}\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <strong>{{ totalInventoryValue | currency }}</strong>\n </td>\n </ng-container>\n\n <!-- Last Purchase Price Column -->\n <ng-container matColumnDef=\"Last Purchase Price\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"last_purchase_price\">\n Last Price\n </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.last_stock_receipt?.purchase_price ?? 0 | currency }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <!-- Inventory Value Based On Last Purchase Price Column -->\n <ng-container matColumnDef=\"Inventory Value Based On Last Purchase Price\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"inventory_value_based_on_last_price\">\n <div class=\"d-flex flex-row gap-1 align-items-center\">\n <span>Inventory Value</span>\n <i class=\"fa-solid fa-circle-info d-print-none text-secondary\"\n matTooltip=\"Based on last purchase price\"></i>\n </div>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.inventory_value_based_on_last_price ?? 0 | currency }}\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 @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </mat-card-content>\n </mat-card>\n</div>","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StockIssueProductDataService extends TechlifyService {\n\n constructor(protected override http: HttpService) {\n super(http, 'reports/stock-issue-product-data');\n }\n}\n","import { Component, OnInit, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { SharedModule } from '../../shared.module';\nimport { TechlifyListComponent, Timeline } from 'ngx-techlify-core';\nimport { StockIssueProductDataService } from './stock-issue-product-data.service';\nimport { ProductCategoryBadgesComponent } from '../../product/widgets/product-category-badges/product-category-badges.component';\nimport { FormBuilder } from '@angular/forms';\nimport { finalize } from 'rxjs/operators';\n\ninterface PrimaryGroup {\n id: number | null;\n label: string;\n models: any[];\n grand_total_quantity: number;\n grand_total_avco: number;\n grand_total_fifo_value: number;\n}\n\n@Component({\n selector: 'app-stock-issue-summary-report',\n imports: [\n SharedModule,\n ProductCategoryBadgesComponent,\n ],\n templateUrl: './stock-issue-summary-report.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './stock-issue-summary-report.component.scss'\n})\nexport class StockIssueSummaryReportComponent extends TechlifyListComponent implements OnInit {\n displayedColumns: string[] = [\n '#',\n 'product',\n 'sku',\n 'categories',\n 'stock_issues',\n 'stock_issues_avco',\n 'total_cost'\n ];\n\n primaryGroups = signal<PrimaryGroup[]>([]);\n\n constructor(\n protected override service: StockIssueProductDataService,\n private fb: FormBuilder\n ) {\n super(service);\n\n this.filterFormConfiguration = {\n category_ids: { multiple: true },\n location_ids: { multiple: true },\n };\n\n this.filterForm = this.fb.group({\n category_ids: [''],\n date_from: [''],\n date_to: [''],\n duration: [Timeline.THIS_YEAR],\n location_ids: [''],\n primary_group_by: ['location'],\n secondary_group_by: ['product'],\n search: [''],\n });\n }\n\n ngOnInit(): void {\n this.patchFiltersFromRoute();\n this.listenFilterChanges();\n }\n\n override loadData(): void {\n if (this.isWorking) {\n return;\n }\n\n const filters = this.requestHelperService.convertToFormData(\n JSON.parse(JSON.stringify(this.filterForm.value))\n );\n\n this.isWorking = true;\n\n this.service\n .index(filters)\n .pipe(finalize(() => (this.isWorking = false)))\n .subscribe((res: any) => {\n const rows: any[] = res?.data ?? [];\n const groupsById = new Map<string, PrimaryGroup>();\n\n rows.forEach((row: any) => {\n const key = String(row.primary_group_id ?? 'none');\n if (!groupsById.has(key)) {\n groupsById.set(key, {\n id: row.primary_group_id,\n label: row.primary_group_label ?? 'Unknown',\n models: [],\n grand_total_quantity: 0,\n grand_total_avco: 0,\n grand_total_fifo_value: 0,\n });\n }\n\n const group = groupsById.get(key) as PrimaryGroup;\n group.models.push(row);\n group.grand_total_quantity += Number(row.total_quantity) || 0;\n group.grand_total_avco += Number(row.total_avco) || 0;\n group.grand_total_fifo_value += Number(row.total_fifo_value) || 0;\n });\n\n this.primaryGroups.set(Array.from(groupsById.values()));\n });\n }\n}\n","<div class=\"d-flex flex-column gap-2\">\n <mat-card>\n <mat-card-content class=\"d-flex flex-row align-items-center justify-content-between\">\n <h5 class=\"mb-0\">Stock Issue Summary Report</h5>\n\n <form class=\"d-flex flex-row gap-1\" [formGroup]=\"filterForm\">\n <mat-form-field class=\"fl-md\">\n <mat-label>Search</mat-label>\n <input matInput placeholder=\"Search products\" formControlName=\"search\" />\n </mat-form-field>\n\n <app-timeline-filter appearance=\"fill\" labelText=\"Period\" formControlName=\"duration\" [form]=\"filterForm\"\n [showClearButton]=\"true\"></app-timeline-filter>\n\n <mat-form-field>\n <mat-label>Category</mat-label>\n <app-searchable-selector formControlName=\"category_ids\" apiUrl=\"api/product-categories\"\n [multiple]=\"true\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Location From</mat-label>\n <app-searchable-selector formControlName=\"location_ids\" apiUrl=\"api/inventory-locations\"\n [multiple]=\"true\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Primary Group By</mat-label>\n <mat-select required formControlName=\"primary_group_by\">\n <mat-option value=\"location\">Location From</mat-option>\n <mat-option value=\"recipient\">Recipient</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Secondary Group By</mat-label>\n <mat-select required formControlName=\"secondary_group_by\">\n <mat-option value=\"product\">Product</mat-option>\n </mat-select>\n </mat-form-field>\n </form>\n </mat-card-content>\n </mat-card>\n\n @for (group of primaryGroups(); track group) {\n <mat-card>\n <mat-card-content class=\"p-0\">\n <h6 class=\"px-3 pt-3 mb-2 fw-bold\">{{ group.label }}</h6>\n\n <table mat-table [dataSource]=\"group.models\" class=\"w-100\">\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 <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"['/inventory/products', $safeNavigationMigration(element?.product?.id), 'view']\" class=\"text-dark\">\n {{ element?.product?.name }}\n </a>\n </td>\n <td mat-footer-cell *matFooterCellDef> <strong> Total </strong> </td>\n </ng-container>\n\n <ng-container matColumnDef=\"sku\">\n <th mat-header-cell *matHeaderCellDef>SKU</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.sku }}</td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"categories\">\n <th mat-header-cell *matHeaderCellDef>Categories</th>\n <td mat-cell *matCellDef=\"let element\">\n <app-product-category-badges [product]=\"$safeNavigationMigration(element?.product)\"></app-product-category-badges>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues\">\n <th mat-header-cell *matHeaderCellDef>Stock Issues</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.total_quantity }}</td>\n <td mat-footer-cell *matFooterCellDef> <strong> {{ group?.grand_total_quantity }} </strong> </td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues_avco\">\n <th mat-header-cell *matHeaderCellDef> Total Cost (AVCO) </th>\n <td mat-cell *matCellDef=\"let element\">{{ $safeNavigationMigration(element?.total_avco) | currency }}</td>\n <td mat-footer-cell *matFooterCellDef> <strong> {{ $safeNavigationMigration(group?.grand_total_avco) | currency }} </strong> </td>\n </ng-container>\n\n <ng-container matColumnDef=\"total_cost\">\n <th mat-header-cell *matHeaderCellDef> Total Cost (FIFO) </th>\n <td mat-cell *matCellDef=\"let element\">{{ $safeNavigationMigration(element?.total_fifo_value) | currency }}</td>\n <td mat-footer-cell *matFooterCellDef> <strong> {{ $safeNavigationMigration(group?.grand_total_fifo_value) | currency }} </strong> </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 [hidden]=\"!group?.grand_total_avco && !group?.grand_total_quantity\" mat-footer-row\n *matFooterRowDef=\"displayedColumns\"></tr>\n </table>\n @if (!group.models.length) {\n <p class=\"px-3 py-2 mb-0 text-secondary\">No stock issues for this group.</p>\n }\n </mat-card-content>\n </mat-card>\n } @if (!isWorking && !primaryGroups().length) {\n <mat-card>\n <mat-card-content class=\"text-secondary text-center py-4\">\n No stock issues found for the selected filters.\n </mat-card-content>\n </mat-card>\n } @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { InventoryDashboardPageComponent } from './inventory-dashboard-page/inventory-dashboard-page.component';\nimport { LowStockReportComponent } from './reports/low-stock-report/low-stock-report.component';\nimport { InventoryValueReportComponent } from './reports/inventory-value-report/inventory-value-report.component';\nimport { StockTransferListComponent } from \"./stock-transfer/stock-transfer-list/stock-transfer-list.component\";\nimport { StockIssueSummaryReportComponent } from './reports/stock-issue-summary-report/stock-issue-summary-report.component';\n\nconst routes: Routes = [\n {\n path: 'reports/low-stock-report',\n component: LowStockReportComponent,\n },\n {\n path: 'reports/inventory-value-report',\n component: InventoryValueReportComponent,\n },\n {\n path: 'reports/stock-issue-summary-report',\n component: StockIssueSummaryReportComponent\n },\n {\n path: 'suppliers',\n loadChildren: () => import('./supplier/supplier.module').then((m) => m.SupplierModule),\n },\n {\n path: 'locations',\n loadChildren: () =>\n import(\"./location/location.module\").then((mod) => mod.LocationModule),\n },\n {\n path: \"measures\",\n loadChildren: () =>\n import(\"./measure/measure.module\").then((mod) => mod.MeasureModule),\n },\n {\n path: 'stock-issues',\n loadChildren: () => import('./stock-issue/stock-issue.module').then((mod) => mod.StockIssueModule),\n },\n {\n path: 'stock-receipts',\n loadChildren: () => import('./stock-receipts/stock-receipts.module').then((mod) => mod.StockReceiptsModule),\n },\n {\n path: 'categories',\n loadChildren: () => import('./category/category.module').then((mod) => mod.CategoryModule),\n },\n {\n path: 'recipients',\n loadChildren: () => import('./recipient/recipient.module').then((mod) => mod.RecipientModule),\n },\n {\n path: 'products',\n loadChildren: () => import('./product/product.module').then((mod) => mod.ProductModule),\n },\n {\n path: 'stock-transfers',\n component: StockTransferListComponent\n },\n {\n path: 'dashboard',\n component: InventoryDashboardPageComponent,\n },\n {\n path: '**',\n redirectTo: 'products',\n pathMatch: 'full',\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class InventoryCommonRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from 'ngx-techlify-core';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { RouterModule } from '@angular/router';\nimport { LowStockProductsWidgetComponent } from './low-stock-products-widget.component';\n\n@NgModule({\n declarations: [LowStockProductsWidgetComponent],\n imports: [CommonModule, MaterialModule, InfiniteScrollModule, MatProgressBarModule, RouterModule],\n exports: [LowStockProductsWidgetComponent],\n})\nexport class LowStockProductsWidgetModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from 'ngx-techlify-core';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { GoogleChartsModule } from 'angular-google-charts';\n\n@NgModule({\n imports: [CommonModule, MaterialModule, MatProgressBarModule, GoogleChartsModule],\n})\nexport class ProductSummaryChartModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { InventoryCommonRoutingModule } from './inventory-common-routing.module';\nimport { InventoryDashboardPageComponent } from './inventory-dashboard-page/inventory-dashboard-page.component';\nimport { MaterialModule } from 'ngx-techlify-core';\nimport { LowStockProductsWidgetModule } from './product/low-stock-products-widget/low-stock-products-widget.module';\nimport { ProductSummaryChartModule } from './product/product-summary-chart/product-summary-chart.module';\nimport { ProductSummaryChartComponent } from './product/product-summary-chart/product-summary-chart.component';\nimport { ProductQuickSearchComponent } from './product/product-quick-search/product-quick-search.component';\n\n@NgModule({\n declarations: [InventoryDashboardPageComponent],\n imports: [\n CommonModule,\n InventoryCommonRoutingModule,\n MaterialModule,\n LowStockProductsWidgetModule,\n ProductSummaryChartModule,\n ProductSummaryChartComponent,\n ProductQuickSearchComponent,\n ],\n})\nexport class InventoryCommonModule {}\n","import {Component, EventEmitter, Input, OnInit, Output, TemplateRef, ChangeDetectionStrategy} from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { FilterService } from 'ngx-techlify-core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ProductService } from '../product.service';\nimport { debounceTime } from 'rxjs/operators';\nimport { ActivatedRoute } from '@angular/router';\nimport { MatDialog } from '@angular/material/dialog';\n\n@UntilDestroy()\n@Component({\n selector: 'app-product-search',\n templateUrl: './product-search.component.html',\n styleUrls: ['./product-search.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class ProductSearchComponent implements OnInit {\n public searchFormGroup: FormGroup;\n public lastPage!: number;\n public page: number = 1;\n public perPage: number = 7;\n public totalItems = 0;\n public currentPage = 1;\n public num_items = 7;\n public routeFilters: any;\n public products: any[] = [];\n\n columnDefinitions = [\n { def: 'Product Title', isShow: true },\n { def: 'Product Sku', isShow: true },\n { def: 'Actions', isShow: true },\n ];\n\n displayedColumns: string[] = ['Product Title', 'Product Sku', 'Actions'];\n public dataSource = new MatTableDataSource();\n\n @Input() with: string = '';\n @Output() selected: EventEmitter<any> = new EventEmitter();\n\n constructor(\n private dialog: MatDialog,\n private fb: FormBuilder,\n private filterService: FilterService,\n private productService: ProductService,\n private activatedRoute: ActivatedRoute\n ) {\n this.searchFormGroup = this.fb.group({\n num_items: [this.num_items + '|' + this.currentPage],\n search: [''],\n sort_by: [''],\n });\n }\n\n ngOnInit(): void {\n this.listenForChanges();\n this.loadData();\n }\n\n listenForChanges() {\n this.searchFormGroup.valueChanges.pipe(debounceTime(500), untilDestroyed(this)).subscribe((changes) => {\n this.filterService.applyFilterToRoute(this.activatedRoute, this.searchFormGroup.value);\n this.reload();\n });\n }\n\n async loadData() {\n var filters = this.searchFormGroup.value;\n filters.page = this.page;\n filters.per_page = this.perPage;\n filters.num_items = this.num_items + '|' + this.currentPage;\n filters.with = this.with;\n var res = await this.productService.index(filters).toPromise();\n if (this.products.length < 1) {\n this.products = res.data;\n } else {\n res.data.forEach((item: any) => this.products.push(item));\n }\n this.dataSource = new MatTableDataSource(this.products);\n this.totalItems = res.total;\n this.lastPage = res.last_page || this.page;\n this.barCodeAutoAdd();\n }\n\n reload() {\n this.products = [];\n this.currentPage = 1;\n this.loadData();\n }\n\n addProduct(product: any) {\n this.selected.emit(product);\n }\n\n assignFilter(column: any, direction: string) {\n if (column) {\n return this.searchFormGroup.get('sort_by')?.setValue(column + '|' + direction);\n }\n }\n\n /**\n * Checks search filter for an exact match in a product and adds product to form\n */\n barCodeAutoAdd() {\n var filters = this.searchFormGroup.value;\n if (filters.search) {\n let result = this.products.find((obj) => {\n return obj.sku === filters.search;\n });\n if (result) {\n this.addProduct(result);\n this.searchFormGroup.get('search')?.patchValue('');\n }\n }\n }\n\n sortColumn(event: any) {\n var direction = event.direction.toString().toUpperCase();\n this.assignFilter(event.active, direction);\n }\n\n onScroll() {\n if (this.totalItems > this.products.length) {\n this.currentPage += 1;\n this.loadData();\n }\n }\n\n viewProduct(product: any, viewProductTemplate: TemplateRef<any>) {\n const dialogRef = this.dialog.open(viewProductTemplate, {\n width: '800px',\n data: {\n product,\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.reload();\n }\n });\n }\n}\n","<div id=\"tableContainer\" #tableContainer class=\"table-container d-flex flex-column\">\n <div class=\"text-dark d-flex flex-row justify-content-start align-items-center gap-2\">\n <mat-icon class=\"material-symbol-outlined\"> campaign </mat-icon>\n <strong>Product Search</strong>\n </div>\n <small class=\"text-secondary mt-2\"> Quickly search for a product to be added as a line item. </small>\n <form [formGroup]=\"searchFormGroup\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input matInput placeholder=\"Search product, SKU\" formControlName=\"search\" />\n </mat-form-field>\n </form>\n <div\n class=\"d-flex flex-column gap-2\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [infiniteScrollContainer]=\"tableContainer\"\n (scrolled)=\"onScroll()\"\n [fromRoot]=\"false\"\n >\n @for (product of products; track product) {\n <mat-card class=\"p-2\" style=\"background: #d9d9d9\">\n <div>\n <div class=\"d-flex flex-row justify-content-between align-items-center\">\n <strong class=\"text-dark\">{{ product?.name }}</strong>\n <strong class=\"text-primary font-xs cursor-pointer\" (click)=\"addProduct(product)\"> Add </strong>\n </div>\n <div class=\"d-flex flex-row justify-content-between align-items-center\">\n <small class=\"text-secondary\">{{ product?.sku }}</small>\n <mat-icon\n (click)=\"viewProduct(product, viewProductTemplate)\"\n class=\"material-symbol-outlined font-md cursor-pointer\"\n >\n contact_support\n </mat-icon>\n </div>\n </div>\n </mat-card>\n }\n </div>\n</div>\n\n<ng-template #viewProductTemplate let-data>\n <div mat-dialog-content>\n <app-product-basic-info [product]=\"data.product\" (saved)=\"reload()\" (deleted)=\"reload()\"></app-product-basic-info>\n\n <div class=\"d-flex justify-content-end mt-2\">\n <button mat-flat-button type=\"button\" mat-dialog-close>Close</button>\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProductSearchComponent } from './product-search.component';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ProductModule } from '../product.module';\nimport { MaterialModule } from \"ngx-techlify-core\";\n\n@NgModule({\n declarations: [ProductSearchComponent],\n imports: [\n CommonModule,\n InfiniteScrollDirective,\n ReactiveFormsModule,\n MaterialModule,\n ProductModule\n ],\n exports: [ProductSearchComponent],\n})\nexport class ProductSearchModule {\n}\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { MaterialModule } from '../../material.module';\nimport { ImportCsvConfig, ImportCsvModule } from 'ngx-techlify-core';\n\n@Component({\n selector: 'app-stock-issue-import-page',\n templateUrl: './stock-issue-import-page.component.html',\n styleUrls: ['./stock-issue-import-page.component.css'],\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n MaterialModule,\n ImportCsvModule\n ]\n})\nexport class StockIssueImportPageComponent implements OnInit {\n\n importConfig: ImportCsvConfig = {\n apiUrl: 'api/stock-issues-import',\n title: 'Stock Issues',\n importType: 'stock-issue',\n properties: [\n {\n label: 'Product',\n value: 'product',\n type: 'text',\n },\n {\n label: 'Date',\n value: 'date',\n type: 'date',\n },\n {\n label: 'Quantity',\n value: 'quantity',\n type: 'number',\n },\n {\n label: 'Particulars',\n value: 'particulars',\n type: 'text',\n },\n ],\n sampleFile: {\n name: 'Stock Issue Sample',\n path: 'assets/stock-issue/stock-issue-sample.csv',\n },\n importHistory: {\n isEnabled: true,\n type: 'stock-issue',\n apiUrl: 'api/import-histories',\n },\n viewRouterLink: '/inventory/stock-issues',\n };\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","<app-import-csv [config]=\"importConfig\"></app-import-csv>","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { StockIssuePageComponent } from './stock-issue-page/stock-issue-page.component';\nimport { StockIssueImportPageComponent } from './stock-issue-import-page/stock-issue-import-page.component';\nimport { AuthenticationGuard } from 'ngx-techlify-core';\n\nconst routes: Routes = [\n {\n path: '',\n component: StockIssuePageComponent,\n },\n {\n path: 'import',\n component: StockIssueImportPageComponent,\n canLoad: [AuthenticationGuard]\n },\n {\n path: 'form',\n loadComponent: () => import('./stock-issue-form/stock-issue-form.component').then(m => m.StockIssueFormComponent),\n canLoad: [AuthenticationGuard]\n },\n {\n path: 'form/:id',\n loadComponent: () => import('./stock-issue-form/stock-issue-form.component').then(m => m.StockIssueFormComponent),\n canLoad: [AuthenticationGuard]\n },\n {\n path: ':id/view',\n loadComponent: () => import('./stock-issue-view/stock-issue-view.component').then(m => m.StockIssueViewComponent),\n canLoad: [AuthenticationGuard]\n },\n {\n path: 'products/:id/view',\n loadComponent: () => import('./stock-issue-product-view/stock-issue-product-view.component').then(m => m.StockIssueProductViewComponent),\n canLoad: [AuthenticationGuard]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class StockIssueRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { StockIssueRoutingModule } from './stock-issue-routing.module';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { StockIssuePageModule } from './stock-issue-page/stock-issue-page.module';\nimport { TechlifyFilterModule } from '../techlify-filter/techlify-filter.module';\nimport { TechlifyFormButtonComponent } from 'ngx-techlify-core';\n\n@NgModule({\n declarations: [],\n exports: [],\n imports: [\n CommonModule,\n StockIssueRoutingModule,\n MatCardModule,\n TechlifyFilterModule,\n MatDialogModule,\n MatButtonModule,\n StockIssuePageModule,\n TechlifyFormButtonComponent\n ],\n})\nexport class StockIssueModule { }\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TechlifyIconModule } from 'ngx-techlify-core';\nimport { StockIssueProductFormComponent } from '../stock-issue-product-form.component';\n\n@Component({\n selector: 'app-stock-issue-product-form-button',\n templateUrl: './stock-issue-product-form-button.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [TechlifyIconModule],\n})\nexport class StockIssueProductFormButtonComponent {\n stockIssueProduct = input<any>();\n stockIssueId = input.required<number>();\n\n saved = output<any>();\n\n constructor(private dialog: MatDialog) {}\n\n open(): void {\n this.dialog.open(StockIssueProductFormComponent, {\n width: '500px',\n data: {\n stockIssueId: this.stockIssueId(),\n stockIssueProduct: this.stockIssueProduct() ?? null,\n },\n }).afterClosed().subscribe((item: any) => {\n if (item) {\n this.saved.emit(item);\n }\n });\n }\n}\n","<app-techlify-icon role=\"button\" [name]=\"stockIssueProduct() ? 'edit' : 'add'\" (click)=\"open()\">\n</app-techlify-icon>\n","import { Component, Inject, OnInit, Optional, ChangeDetectionStrategy } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { FormValidatorService, TechlifyFormComponent } from 'ngx-techlify-core';\nimport { MeasureService } from '../measure.service';\nimport { SharedModule } from '../../shared.module';\n\n@Component({\n selector: 'app-measure-form',\n imports: [SharedModule],\n templateUrl: './measure-form.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrls: ['./measure-form.component.scss'],\n})\nexport class MeasureFormComponent extends TechlifyFormComponent implements OnInit {\n constructor(\n protected override formValidatorService: FormValidatorService,\n private formBuilder: FormBuilder,\n protected override service: MeasureService,\n public override dialogRef: MatDialogRef<MeasureFormComponent>,\n @Inject(MAT_DIALOG_DATA) @Optional() public data: { model?: any }\n ) {\n super(formValidatorService, service);\n\n this.errorMessages = {\n title: {\n required: 'The title field is required.',\n },\n quantity_measure: {\n required: 'The quantity measure field is required.',\n },\n };\n\n this.form = this.formBuilder.group({\n id: [''],\n title: ['', Validators.required],\n quantity_measure: ['', Validators.required],\n description: [''],\n });\n }\n\n ngOnInit(): void {\n const model = this.data?.model;\n if (model) {\n this.isUpdate = true;\n this.form.patchValue({ ...model });\n }\n }\n}\n","<mat-card-content>\n <h5 class=\"text-center\">Measure Form</h5>\n <small class=\"text-center text-secondary mb-2\">Measures are used throughout the app. ONLY create measure as is applicable.</small>\n\n <form [formGroup]=\"form\" class=\"d-flex flex-row flex-wrap justify-content-start gap-2 mt-2\" (ngSubmit)=\"submit()\">\n <mat-form-field style=\"width: calc(100%)\">\n <mat-label>Title</mat-label>\n <input formControlName=\"title\" type=\"text\" matInput placeholder=\"Title\" />\n @if (isFieldValid('title')) {\n <mat-error>\n {{ getErrorMessage('title') }}\n </mat-error>\n }\n </mat-form-field>\n\n <mat-form-field style=\"width: calc(100%)\">\n <mat-label>Quantity Measure</mat-label>\n <input formControlName=\"quantity_measure\" type=\"text\" matInput placeholder=\"Quantity Measure\" />\n <mat-hint> What is this measure for? eg: Unit, Length, Mass, Capacity. </mat-hint>\n @if (isFieldValid('quantity_measure')) {\n <mat-error>\n {{ getErrorMessage('quantity_measure') }}\n </mat-error>\n }\n </mat-form-field>\n\n <mat-form-field style=\"width: calc(100%)\">\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" placeholder=\"Description\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\" style=\"width: calc(100%)\">\n <button [disabled]=\"isWorking\" type=\"submit\" mat-raised-button color=\"primary\">Save</button>\n <button [disabled]=\"isWorking\" type=\"button\" mat-flat-button (click)=\"dialogRef.close()\">Cancel</button>\n </div>\n </form>\n\n</mat-card-content>","import { Component, OnInit, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { TechlifyListComponent } from 'ngx-techlify-core';\nimport { MeasureService } from '../measure.service';\nimport { Sort } from '@angular/material/sort';\nimport { MeasureFormComponent } from '../measure-form/measure-form.component';\n\n@Component({\n selector: 'app-measure-list',\n templateUrl: './measure-list.component.html',\n styleUrls: ['./measure-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class MeasureListComponent extends TechlifyListComponent implements OnInit {\n measureForm = signal(MeasureFormComponent);\n\n displayedColumns: string[] = [\n 'no',\n 'title',\n 'products',\n 'quantity_measure',\n 'description',\n 'actions'\n ];\n\n constructor(private formBuilder: FormBuilder, protected override service: MeasureService) {\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 withCount: 'products',\n ...this.filterForm.value,\n };\n this.isWorking = true;\n this.service.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 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 <h3 class=\"mb-0\">Measures</h3>\n <app-techlify-form-button [component]=\"measureForm()\" [width]=\"'500px'\"\n (saved)=\"reload()\"></app-techlify-form-button>\n </div>\n <app-techlify-filter [filterForm]=\"filterForm\" (filterUpdated)=\"reload()\"></app-techlify-filter>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Service Centers\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" matSort\n (matSortChange)=\"onSortChange($event)\">\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 <!-- Title Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Title</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.title }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"products\">\n <th mat-header-cell *matHeaderCellDef>Products</th>\n <td mat-cell *matCellDef=\"let element\">\n <a\n class=\"cursor-pointer text-dark text-decoration-none\"\n [routerLink]=\"['/inventory/products']\"\n [queryParams]=\"{ measure_ids: element.id }\"\n >\n {{ element?.products_count }} products\n </a>\n </td>\n </ng-container>\n\n <!-- Quantity Measure Column -->\n <ng-container matColumnDef=\"quantity_measure\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Quantity Measure</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.quantity_measure }}\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\">{{ element?.description }}</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 @if (element?.client_id) {\n <app-techlify-form-button [component]=\"measureForm()\" [model]=\"element\" [width]=\"'500px'\"\n (saved)=\"reload()\"></app-techlify-form-button>\n } @if (element?.client_id && element?.products_count == 0) {\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{ type: 'Measure', title: $safeNavigationMigration(element?.title) }\" (deleted)=\"reload()\"></app-techlify-delete-button>\n }\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 @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </mat-card-content>\n</mat-card>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { MeasureListComponent } from './measure-list/measure-list.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: MeasureListComponent,\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class MeasureRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MeasureRoutingModule } from './measure-routing.module';\nimport { MeasureListComponent } from './measure-list/measure-list.component';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { MaterialModule } from 'ngx-techlify-core';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { TechlifyFilterModule } from '../techlify-filter/techlify-filter.module';\nimport { SharedModule } from '../shared.module';\n\n@NgModule({\n declarations: [MeasureListComponent],\n imports: [\n CommonModule,\n MeasureRoutingModule,\n MaterialModule,\n SharedModule,\n TechlifyFilterModule,\n InfiniteScrollModule,\n MatProgressBarModule,\n ],\n})\nexport class MeasureModule {}\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from \"ngx-techlify-core\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IncidentService extends TechlifyService {\n\n constructor(\n httpService: HttpService\n ) {\n super(httpService, 'incidents');\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } 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 { MatError, MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatDatepicker, MatDatepickerInput } from \"@angular/material/datepicker\";\nimport { MatButton } from \"@angular/material/button\";\nimport { IncidentService } from \"../incident.service\";\nimport { Observable } from \"rxjs\";\nimport moment from \"moment/moment\";\n\n@Component({\n selector: 'app-incident-form',\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n MatDatepickerInput,\n MatDatepicker,\n ReactiveFormsModule,\n SearchableSelectorModule,\n MatButton,\n MatError,\n ],\n templateUrl: './incident-form.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './incident-form.component.scss'\n})\nexport class IncidentFormComponent extends TechlifyFormComponent implements OnInit {\n @Input() incident: any;\n @Input() incidentableType!: string;\n @Input() incidentableId!: number;\n @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n @Output() cancelled: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(\n formValidatorService: FormValidatorService,\n private formBuilder: FormBuilder,\n private incidentService: IncidentService\n ) {\n super(formValidatorService);\n\n this.errorMessages = {\n date: {\n required: 'The date field is required.'\n },\n classification_id: {\n required: 'The classification field is required.'\n }\n }\n\n this.form = this.formBuilder.group({\n id: [''],\n date: ['', Validators.required],\n classification_id: ['', Validators.required],\n cost: [''],\n details: [''],\n incidentable_id: [''],\n incidentable_type: ['']\n });\n }\n\n ngOnInit() {\n if (this.incidentableType && this.incidentableId) {\n this.form.patchValue({\n incidentable_type: this.incidentableType,\n incidentable_id: this.incidentableId\n });\n }\n\n if (this.incident) {\n const data: any = { ...this.incident };\n if (data?.date) {\n data.date = new Date(data.date);\n }\n this.form.patchValue(data);\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 = {\n ...this.form.value\n }\n if (data?.date) {\n data.date = moment(data.date).format('YYYY-MM-DD');\n }\n\n let request: Observable<any> = this.incidentService.store(data);\n if (data?.id) {\n request = this.incidentService.update(data);\n }\n this.isWorking = true;\n request.subscribe({\n next: (response: any) => {\n this.saved.emit(response?.item);\n this.isWorking = false;\n this.alertService.addAlert('The incident saved successfully!', 'success');\n },\n error: () => (this.isWorking = false)\n })\n }\n}\n","<form [formGroup]=\"form\"\n (submit)=\"save()\"\n class=\"d-flex flex-column justify-content-start gap-2\">\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput formControlName=\"date\" [matDatepicker]=\"picker\" placeholder=\"Date\" (focus)=\"picker.open()\">\n <mat-datepicker #picker></mat-datepicker>\n @if (isFieldValid('date')) {\n <mat-error>\n {{ getErrorMessage('date') }}\n </mat-error>\n }\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Classification</mat-label>\n <app-searchable-selector\n required\n formControlName=\"classification_id\"\n apiUrl=\"api/incident-classifications\"\n [enableSearch]=\"false\"\n ></app-searchable-selector>\n @if (isFieldValid('classification_id')) {\n <mat-error>\n {{ getErrorMessage('classification_id') }}\n </mat-error>\n }\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Cost</mat-label>\n <input matInput type=\"number\" formControlName=\"cost\" placeholder=\"Cost\"/>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Details</mat-label>\n <textarea matInput formControlName=\"details\" rows=\"3\" placeholder=\"Details\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-3\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" mat-flat-button type=\"button\" (click)=\"cancelled.emit()\">Cancel</button>\n </div>\n</form>\n","import {Component, EventEmitter, Input, Output, TemplateRef, ChangeDetectionStrategy} from '@angular/core';\nimport {MatIcon} from \"@angular/material/icon\";\nimport {MatDialog, MatDialogContent, MatDialogTitle} from \"@angular/material/dialog\";\nimport {IncidentFormComponent} from \"../incident-form/incident-form.component\";\n\n@Component({\n selector: 'app-incident-form-button',\n imports: [\n MatIcon,\n IncidentFormComponent,\n MatDialogTitle,\n MatDialogContent\n ],\n templateUrl: './incident-form-button.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './incident-form-button.component.scss'\n})\nexport class IncidentFormButtonComponent {\n @Input() incident: any;\n @Input() incidentableType!: string;\n @Input() incidentableId!: number;\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: '400px' });\n }\n\n onSaved(category: any) {\n this.matDialog.closeAll();\n this.saved.emit(category);\n }\n}\n","@if (!incident) {\n<mat-icon\n color=\"primary\"\n class=\"cursor-pointer\"\n (click)=\"showForm(formTemplate)\"\n>\n add\n</mat-icon>\n} @if (incident) {\n<mat-icon\n class=\"cursor-pointer\"\n (click)=\"showForm(formTemplate)\"\n>\n edit\n</mat-icon>\n}\n\n<ng-template #formTemplate>\n <h3 mat-dialog-title class=\"mb-0\">\n {{ incident ? 'Edit' : 'Create' }} Incident\n </h3>\n <div mat-dialog-content>\n <app-incident-form\n [incident]=\"incident\"\n [incidentableId]=\"incidentableId\"\n [incidentableType]=\"incidentableType\"\n (saved)=\"onSaved($event)\"\n (cancelled)=\"matDialog.closeAll()\"\n ></app-incident-form>\n </div>\n</ng-template>\n","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { MatCard, MatCardContent } from \"@angular/material/card\";\nimport { SearchableSelectorModule, TechlifyListComponent } from \"ngx-techlify-core\";\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from \"@angular/forms\";\nimport { CurrencyPipe, DatePipe } 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, Sort } from \"@angular/material/sort\";\nimport { debounceTime, distinctUntilChanged } from \"rxjs\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { IncidentService } from \"../incident.service\";\nimport { MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { IncidentFormButtonComponent } from \"../incident-form-button/incident-form-button.component\";\nimport { NgxPermissionsModule } from \"ngx-permissions\";\n\n@Component({\n selector: 'app-incident-list',\n imports: [\n MatCard,\n MatCardContent,\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 MatSortHeader,\n MatTable,\n MatHeaderCellDef,\n CurrencyPipe,\n ReactiveFormsModule,\n MatFormField,\n MatInput,\n MatLabel,\n SearchableSelectorModule,\n IncidentFormButtonComponent,\n NgxPermissionsModule\n ],\n templateUrl: './incident-list.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './incident-list.component.scss'\n})\nexport class IncidentListComponent extends TechlifyListComponent implements OnInit {\n @Input() supplierId!: number;\n @Input() incidentableType!: string;\n @Input() incidentableId!: number;\n\n displayedColumns: string[] = [\n 'No',\n 'Date',\n 'Classification',\n 'Cost',\n 'Details',\n 'Creator',\n 'Actions',\n ];\n\n constructor(\n private formBuilder: FormBuilder,\n private activatedRoute: ActivatedRoute,\n private incidentService: IncidentService\n ) {\n super();\n this.lastPage = 0;\n this.filterForm = this.formBuilder.group({\n search: [''],\n classification_ids: [''],\n sort_by: ['created_at|desc'],\n incidentable_types: [''],\n incidentable_ids: [''],\n });\n }\n\n\n ngOnInit(): void {\n if (this.incidentableType && this.incidentableId) {\n this.filterForm.patchValue({\n incidentable_types: this.incidentableType,\n incidentable_ids: this.incidentableId\n });\n }\n\n this.requestHelperService.updateFormWithQueryParams(\n this.filterForm,\n {\n classification_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 this.isWorking = true;\n const params: any = {\n ...this.requestHelperService.convertToFormData(this.filterForm.value),\n page: this.page,\n perPage: this.perPage,\n with: 'classification,creator'\n }\n this.incidentService.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 })\n }\n\n onSortChange(sort: Sort) {\n let { direction, active } = sort;\n if (!active) {\n active = 'created_at';\n direction = 'desc';\n }\n if (!direction) {\n 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 gal-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-3\">\n <h2 class=\"mb-0\">Incidents</h2>\n <app-incident-form-button\n *ngxPermissionsOnly=\"['incident.create']\"\n incidentableType=\"Supplier\"\n [incidentableId]=\"supplierId\"\n (saved)=\"reload()\"\n ></app-incident-form-button>\n </div>\n <form\n [formGroup]=\"filterForm\" (submit)=\"reload()\"\n class=\"d-flex justify-content-end align-items-center gap-3\"\n >\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input type=\"text\" placeholder=\"Search Details\" matInput formControlName=\"search\">\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Classification</mat-label>\n <app-searchable-selector\n apiUrl=\"api/incident-classifications\"\n [enableSearch]=\"false\"\n formControlName=\"classification_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=\"mt-3\">\n <mat-card-content class=\"p-0\">\n <table\n mat-table [dataSource]=\"models\" class=\"w-100\"\n matSort\n (matSortChange)=\"onSortChange($event)\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n >\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\"> {{ $safeNavigationMigration(element?.date) | date }} </td>\n </ng-container>\n\n <!-- Classification Column -->\n <ng-container matColumnDef=\"Classification\">\n <th mat-header-cell *matHeaderCellDef> Classification </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.classification?.title }}\n </td>\n </ng-container>\n\n <!-- Cost Column -->\n <ng-container matColumnDef=\"Cost\">\n <th mat-header-cell *matHeaderCellDef> Cost </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ $safeNavigationMigration(element?.cost) | currency }}\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 <!-- 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\">{{ $safeNavigationMigration(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 <app-incident-form-button\n *ngxPermissionsOnly=\"['incident.update']\"\n [incident]=\"element\"\n incidentableType=\"Supplier\"\n [incidentableId]=\"supplierId\"\n (saved)=\"reload()\"\n ></app-incident-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 @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\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 RatingService extends TechlifyService {\n\n constructor(\n httpService: HttpService\n ) {\n super(httpService, 'ratings');\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } 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 { MatError, MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatDatepicker, MatDatepickerInput } from \"@angular/material/datepicker\";\nimport { MatButton } from \"@angular/material/button\";\nimport { Observable } from \"rxjs\";\nimport moment from \"moment/moment\";\nimport { RatingService } from \"../rating.service\";\n\n@Component({\n selector: 'app-rating-form',\n imports: [\n MatFormField,\n MatLabel,\n MatInput,\n MatDatepickerInput,\n MatDatepicker,\n ReactiveFormsModule,\n SearchableSelectorModule,\n MatButton,\n MatError,\n ],\n templateUrl: './rating-form.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './rating-form.component.scss'\n})\nexport class RatingFormComponent extends TechlifyFormComponent implements OnInit {\n @Input() rating: any;\n @Input() rateableType!: string;\n @Input() rateableId!: number;\n @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n @Output() cancelled: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(\n formValidatorService: FormValidatorService,\n private formBuilder: FormBuilder,\n private ratingService: RatingService\n ) {\n super(formValidatorService);\n\n this.errorMessages = {\n date: {\n required: 'The date field is required.'\n },\n grade_id: {\n required: 'The grade field is required.'\n }\n }\n\n this.form = this.formBuilder.group({\n id: [''],\n date: ['', Validators.required],\n grade_id: ['', Validators.required],\n details: [''],\n rateable_type: [''],\n rateable_id: ['']\n });\n }\n\n ngOnInit() {\n if (this.rateableId && this.rateableType) {\n this.form.patchValue({\n rateable_id: this.rateableId,\n rateable_type: this.rateableType\n })\n }\n\n if (this.rating) {\n const data: any = { ...this.rating };\n if (data?.date) {\n data.date = new Date(data.date);\n }\n this.form.patchValue(data);\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 = {\n ...this.form.value\n }\n if (data?.date) {\n data.date = moment(data.date).format('YYYY-MM-DD');\n }\n\n let request: Observable<any> = this.ratingService.store(data);\n if (data?.id) {\n request = this.ratingService.update(data);\n }\n this.isWorking = true;\n request.subscribe({\n next: (response: any) => {\n this.saved.emit(response?.item);\n this.isWorking = false;\n this.alertService.addAlert('The rating saved successfully!', 'success');\n },\n error: () => (this.isWorking = false)\n })\n }\n}\n","<form [formGroup]=\"form\"\n (submit)=\"save()\"\n class=\"d-flex flex-column justify-content-start gap-2\">\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput formControlName=\"date\" [matDatepicker]=\"picker\" placeholder=\"Date\" (focus)=\"picker.open()\">\n <mat-datepicker #picker></mat-datepicker>\n @if (isFieldValid('date')) {\n <mat-error>\n {{ getErrorMessage('date') }}\n </mat-error>\n }\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Grade</mat-label>\n <app-searchable-selector\n required\n formControlName=\"grade_id\"\n apiUrl=\"api/rating-grades\"\n [enableSearch]=\"false\"\n ></app-searchable-selector>\n @if (isFieldValid('grade_id')) {\n <mat-error>\n {{ getErrorMessage('grade_id') }}\n </mat-error>\n }\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Details</mat-label>\n <textarea matInput formControlName=\"details\" rows=\"3\" placeholder=\"Details\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-3\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" mat-flat-button type=\"button\" (click)=\"cancelled.emit()\">Cancel</button>\n </div>\n</form>\n","import {Component, EventEmitter, Input, Output, TemplateRef, ChangeDetectionStrategy} from '@angular/core';\nimport {MatIcon} from \"@angular/material/icon\";\nimport {MatDialog, MatDialogContent, MatDialogTitle} from \"@angular/material/dialog\";\nimport {RatingFormComponent} from \"../rating-form/rating-form.component\";\n\n@Component({\n selector: 'app-rating-form-button',\n imports: [\n MatIcon,\n RatingFormComponent,\n MatDialogTitle,\n MatDialogContent\n ],\n templateUrl: './rating-form-button.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './rating-form-button.component.scss'\n})\nexport class RatingFormButtonComponent {\n @Input() rating: any;\n @Input() rateableType!: string;\n @Input() rateableId!: number;\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: '400px' });\n }\n\n onSaved(category: any) {\n this.matDialog.closeAll();\n this.saved.emit(category);\n }\n}\n","@if (!rating) {\n<mat-icon\n color=\"primary\"\n class=\"cursor-pointer\"\n (click)=\"showForm(formTemplate)\"\n>\n add\n</mat-icon>\n} @if (rating) {\n<mat-icon\n class=\"cursor-pointer\"\n (click)=\"showForm(formTemplate)\"\n>\n edit\n</mat-icon>\n}\n\n<ng-template #formTemplate>\n <h3 mat-dialog-title class=\"mb-0\">\n {{ rating ? 'Edit' : 'Create' }} Rating\n </h3>\n <div mat-dialog-content>\n <app-rating-form\n [rating]=\"rating\"\n [rateableId]=\"rateableId\"\n [rateableType]=\"rateableType\"\n (saved)=\"onSaved($event)\"\n (cancelled)=\"matDialog.closeAll()\"\n ></app-rating-form>\n </div>\n</ng-template>\n","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { DatePipe } 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, MatHeaderCellDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow, MatRowDef, MatTable\n} from \"@angular/material/table\";\nimport { MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatProgressBar } from \"@angular/material/progress-bar\";\nimport { MatSort, MatSortHeader, Sort } from \"@angular/material/sort\";\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from \"@angular/forms\";\nimport { SearchableSelectorModule, TechlifyListComponent } from \"ngx-techlify-core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { debounceTime, distinctUntilChanged } from \"rxjs\";\nimport { RatingFormButtonComponent } from \"../rating-form-button/rating-form-button.component\";\nimport { RatingService } from \"../rating.service\";\n\n@Component({\n selector: 'app-rating-list',\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 MatInput,\n MatLabel,\n MatProgressBar,\n MatRow,\n MatRowDef,\n MatSort,\n MatSortHeader,\n MatTable,\n ReactiveFormsModule,\n SearchableSelectorModule,\n MatHeaderCellDef,\n RatingFormButtonComponent\n ],\n templateUrl: './rating-list.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './rating-list.component.scss'\n})\nexport class RatingListComponent extends TechlifyListComponent implements OnInit {\n @Input() supplierId!: number;\n @Input() rateableType!: string;\n @Input() rateableId!: number;\n\n displayedColumns: string[] = [\n 'No',\n 'Date',\n 'Grade',\n 'Details',\n 'Creator',\n 'Actions',\n ];\n\n constructor(\n private formBuilder: FormBuilder,\n private activatedRoute: ActivatedRoute,\n private ratingService: RatingService\n ) {\n super();\n this.lastPage = 0;\n this.filterForm = this.formBuilder.group({\n search: [''],\n grade_ids: [''],\n rateable_types: [''],\n rateable_ids: [''],\n sort_by: ['created_at|desc']\n });\n }\n\n\n ngOnInit(): void {\n if (this.rateableId && this.rateableType) {\n this.filterForm.patchValue({\n rateable_types: this.rateableType,\n rateable_ids: this.rateableId\n });\n }\n\n this.requestHelperService.updateFormWithQueryParams(\n this.filterForm,\n {\n grade_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 this.isWorking = true;\n const params: any = {\n ...this.requestHelperService.convertToFormData(this.filterForm.value),\n page: this.page,\n perPage: this.perPage,\n with: 'grade,creator'\n }\n this.ratingService.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 })\n }\n\n onSortChange(sort: Sort) {\n let { direction, active } = sort;\n if (!active) {\n active = 'created_at';\n direction = 'desc';\n }\n if (!direction) {\n 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 gal-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-3\">\n <h2 class=\"mb-0\">Ratings</h2>\n <app-rating-form-button\n [rateableId]=\"supplierId\" rateableType=\"Supplier\"\n (saved)=\"reload()\"\n ></app-rating-form-button>\n </div>\n <form\n [formGroup]=\"filterForm\" (submit)=\"reload()\"\n class=\"d-flex justify-content-end align-items-center gap-3\"\n >\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input type=\"text\" placeholder=\"Search\" matInput formControlName=\"search\">\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Grade</mat-label>\n <app-searchable-selector\n apiUrl=\"api/rating-grades\"\n [enableSearch]=\"false\"\n formControlName=\"grade_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=\"mt-3\">\n <mat-card-content class=\"p-0\">\n <table\n mat-table [dataSource]=\"models\" class=\"w-100\"\n matSort\n (matSortChange)=\"onSortChange($event)\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n >\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\"> {{ $safeNavigationMigration(element?.date) | date }} </td>\n </ng-container>\n\n <!-- Grade Column -->\n <ng-container matColumnDef=\"Grade\">\n <th mat-header-cell *matHeaderCellDef> Grade </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.grade?.title }}\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 <!-- 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\">{{ $safeNavigationMigration(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 <app-rating-form-button\n [rating]=\"element\" (saved)=\"reload()\"\n [rateableId]=\"supplierId\" rateableType=\"Supplier\"\n ></app-rating-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 @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </mat-card-content>\n</mat-card>\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { ActionPopup, ActionPopupComponent, AlertService, ErrorHandlerService } from 'ngx-techlify-core';\nimport { SupplierFormComponent } from '../supplier-form/supplier-form.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SupplierService } from '../supplier.service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-supplier-information',\n templateUrl: './supplier-information.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SupplierInformationComponent {\n @Input() supplier!: any;\n\n constructor(\n private dialog: MatDialog,\n private supplierService: SupplierService,\n private alertService: AlertService,\n private router: Router,\n private errorService: ErrorHandlerService\n ) {}\n\n modifySupplier(model?: any) {\n const dialogRef = this.dialog.open(SupplierFormComponent, {\n width: '600px',\n data: {\n details: model,\n },\n });\n dialogRef.afterClosed().subscribe((result: any) => {\n if (result) {\n location.reload();\n }\n });\n }\n\n deleteSupplier(id: any) {\n const dialogRef = this.dialog.open(ActionPopupComponent, {\n width: '400px',\n data: <ActionPopup>{\n title: 'Delete Supplier',\n message: 'Are you sure you want to delete this supplier?',\n },\n autoFocus: false,\n });\n\n dialogRef.afterClosed().subscribe(async (result: any) => {\n if (result) {\n try {\n const result = await this.supplierService.delete(id);\n this.alertService.addAlert('Successfully Deleted Supplier', 'success');\n } catch (error) {\n this.errorService.handleError(error);\n } finally {\n this.router.navigateByUrl('/suppliers');\n }\n }\n });\n }\n}\n","<mat-card>\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center\">\n <h3 class=\"mb-0\">Personal Information</h3>\n <div class=\"d-flex justify-content-end align-items-center gap-1\">\n <app-audit-log-for-model [modelId]=\"$safeNavigationMigration(supplier?.id)\" modelType=\"Supplier\" logView=\"all\"></app-audit-log-for-model>\n <mat-icon class=\"material-icons cursor-pointer\" (click)=\"modifySupplier(supplier)\"> edit </mat-icon>\n <mat-icon class=\"material-icons cursor-pointer\" (click)=\"deleteSupplier(supplier)\"> delete </mat-icon>\n </div>\n </div>\n\n <mat-divider></mat-divider>\n\n <div class=\"mt-2\">\n <div class=\"d-flex justify-content-start gap-2\">\n <div>\n <h3 class=\"mb-0\">{{ supplier?.company_name }}</h3>\n @if (supplier?.type) {\n <span class=\"status-pill-sm status-light-orange\"> {{ supplier?.type?.title }}</span>\n }\n </div>\n </div>\n </div>\n\n <div class=\"row mt-3\">\n @if (supplier?.contact_name) {\n <div class=\"col-6\">\n <p class=\"text-muted mb-0\">Contact Name</p>\n <p class=\"text-wrap\">{{ supplier?.contact_name }}</p>\n </div>\n } @if (supplier?.email) {\n <div class=\"col-6\">\n <p class=\"text-muted mb-0\">Email</p>\n <p class=\"text-wrap\">{{ supplier?.email }}</p>\n </div>\n } @if (supplier?.phone) {\n <div class=\"col-6\">\n <p class=\"text-muted mb-0\">Phone</p>\n <p class=\"text-wrap\">{{ supplier?.phone }}</p>\n </div>\n } @if (supplier?.details) {\n <div class=\"col-6\">\n <p class=\"text-muted mb-0\">Details</p>\n <p class=\"text-wrap\">{{ supplier?.details }}</p>\n </div>\n }\n </div>\n\n <div class=\"row mt-2 h-100\">\n @if (supplier?.address) {\n <div class=\"d-flex\">\n <mat-icon class=\"material-icons text-primary my-auto\">location_on</mat-icon>\n <p class=\"ms-2 my-auto\">{{ supplier?.address }}</p>\n </div>\n }\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 SupplierBranchService extends TechlifyService {\n constructor(httpService: HttpService) {\n super(httpService, 'supplier-branches');\n }\n}\n\n","import { Component, EventEmitter, Inject, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { AlertService, FormValidatorService, TechlifyFormComponent } from 'ngx-techlify-core';\nimport { Observable } from 'rxjs';\nimport { SupplierBranchService } from '../supplier-branch.service';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-supplier-branch-form',\n templateUrl: './supplier-branch-form.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SupplierBranchFormComponent extends TechlifyFormComponent implements OnInit {\n\n override errorMessages = {\n title: {\n required: 'The title field is required.',\n },\n };\n\n constructor(\n formValidatorService: FormValidatorService,\n private formBuilder: FormBuilder,\n protected supplierBranchService: SupplierBranchService,\n @Inject(MAT_DIALOG_DATA) public data: any,\n public override dialogRef: MatDialogRef<SupplierBranchFormComponent>,\n ) {\n super(formValidatorService);\n\n this.form = this.formBuilder.group({\n id: [''],\n supplier_id: ['', Validators.required],\n title: ['', Validators.required],\n description: [''],\n phone: [''],\n email: [''],\n address: [''],\n });\n }\n\n ngOnInit(): void {\n if (this.data?.supplierId) {\n this.form.patchValue({ supplier_id: this.data.supplierId });\n }\n if (this.data?.branch) {\n this.form.patchValue({ ...this.data.branch });\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 form: any = {\n ...this.form.value,\n };\n\n this.isWorking = true;\n let promise: Observable<any> = form.id\n ? this.supplierBranchService.update(form)\n : this.supplierBranchService.store(form);\n\n promise.subscribe({\n next: () => {\n this.dialogRef.close(true);\n this.alertService.addAlert('Branch saved successfully!', 'success');\n },\n error: () => (this.isWorking = false),\n });\n }\n}\n","<mat-card-content>\n <h3 class=\"text-center mb-1\">Branch Form</h3>\n\n <form [formGroup]=\"form\" class=\"d-flex flex-row flex-wrap justify-content-start gap-2\" (submit)=\"save()\">\n <mat-form-field style=\"width: calc(100%)\">\n <mat-label>Title</mat-label>\n <input formControlName=\"title\" type=\"text\" matInput placeholder=\"Title\" />\n @if (isFieldValid('title')) {\n <mat-error>\n {{ getErrorMessage('title') }}\n </mat-error>\n }\n </mat-form-field>\n\n <mat-form-field style=\"width: calc(100%)\">\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(100%)\">\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(100%)\">\n <mat-label>Address</mat-label>\n <input formControlName=\"address\" type=\"text\" matInput placeholder=\"Address\" />\n </mat-form-field>\n\n <mat-form-field style=\"width: calc(100%)\">\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" placeholder=\"Description\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\" style=\"width: calc(100%)\">\n <button [disabled]=\"isWorking\" type=\"button\" mat-flat-button mat-dialog-close>Cancel</button>\n <button [disabled]=\"isWorking\" type=\"submit\" mat-raised-button color=\"primary\">Save</button>\n </div>\n </form>\n</mat-card-content>","import { Component, EventEmitter, Input, Output, TemplateRef, ChangeDetectionStrategy } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MaterialModule } from '../../../material.module';\nimport { TechlifyIconModule } from 'ngx-techlify-core';\nimport { SupplierBranchFormComponent } from '../supplier-branch-form.component';\n\n@Component({\n selector: 'app-supplier-branch-form-button',\n templateUrl: './supplier-branch-form-button.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n MaterialModule,\n TechlifyIconModule\n ]\n})\nexport class SupplierBranchFormButtonComponent {\n @Input() branch: any;\n @Input() supplierId: number | null = null;\n @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(public dialog: MatDialog) { }\n\n open() {\n this.dialog.open(SupplierBranchFormComponent, {\n width: '500px',\n data: {\n branch: this.branch,\n supplierId: this.supplierId\n },\n }).afterClosed().subscribe((response: any) => {\n if (response) {\n this.saved.emit(response);\n }\n });\n }\n}\n","<app-techlify-icon role='button' (click)=\"open()\" [name]=\"branch?.id ? 'edit' : 'add'\"></app-techlify-icon>","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { MaterialModule } from '../../material.module';\nimport { ActionPopup, ActionPopupComponent, AlertService, ErrorHandlerService, TechlifyIconModule } from 'ngx-techlify-core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { lastValueFrom } from 'rxjs';\nimport { SupplierBranchService } from '../supplier-branch.service';\nimport { NgxPermissionsModule } from 'ngx-permissions';\n\n@Component({\n selector: 'app-supplier-branch-delete-button',\n templateUrl: './supplier-branch-delete-button.component.html',\n styleUrls: ['./supplier-branch-delete-button.component.css'],\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n MaterialModule,\n TechlifyIconModule,\n NgxPermissionsModule\n ],\n})\nexport class SupplierBranchDeleteButtonComponent implements OnInit {\n\n @Input() branch: any\n @Output() deleted: EventEmitter<any> = new EventEmitter<any>()\n\n constructor(private dialog: MatDialog,\n private alertService: AlertService,\n private errorHandler: ErrorHandlerService,\n private supplierBranchService: SupplierBranchService\n ) { }\n\n ngOnInit() {\n }\n\n openDialog() {\n this.dialog.open(ActionPopupComponent, {\n width: '400px',\n data: <ActionPopup>{\n title: 'Delete Supplier Branch',\n message: 'Are you sure you want to delete this Supplier Branch?',\n },\n autoFocus: false,\n }).afterClosed().subscribe(async (result) => {\n if (result) {\n this.supplierBranchService.delete(this.branch).subscribe({\n next: () => {\n this.alertService.addAlert('Successfully deleted the Supplier Branch', 'success');\n this.deleted.emit(this.branch)\n },\n error: (error: any) => {\n this.errorHandler.handleError(error);\n }\n })\n }\n });\n }\n\n}\n","<app-techlify-icon role=\"button\" name='delete' (click)=\"openDialog()\">\n</app-techlify-icon>","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { ErrorHandlerService, TechlifyListComponent } from 'ngx-techlify-core';\nimport { SupplierBranchService } from '../supplier-branch.service';\n\n@Component({\n selector: 'app-supplier-branches-list',\n templateUrl: './supplier-branches-list.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SupplierBranchesListComponent extends TechlifyListComponent implements OnInit {\n @Input() supplierId: number | null = null;\n\n displayedColumns: string[] = [\n '#',\n 'title',\n 'address',\n 'phone',\n 'email',\n 'description',\n 'actions',\n ];\n\n constructor(\n private fb: FormBuilder,\n private errorHandlerService: ErrorHandlerService,\n protected override service: SupplierBranchService,\n ) {\n super();\n\n this.filterForm = this.fb.group({\n supplier_id: [''],\n search: [''],\n sort_by: ['created_at|desc'],\n });\n }\n\n ngOnInit(): void {\n this.listenFilterChanges();\n this.loadData();\n }\n\n override async loadData() {\n let filters: any = this.requestHelperService.convertToFormData(this.filterForm.value);\n filters.page = this.page;\n filters.perPage = this.perPage;\n\n if (this.supplierId) {\n filters.supplier_id = this.supplierId;\n }\n\n this.isWorking = true;\n this.service.index(filters).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: (error: any) => {\n this.isWorking = false;\n this.errorHandlerService.handleError(error);\n },\n });\n }\n\n assignFilter(column: any, direction: any) {\n return this.filterForm.get('sort_by')?.setValue(column + '|' + direction);\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-start align-items-center gap-3\">\n <h3 class=\"mb-0 fw-bold\">Branches</h3>\n <app-supplier-branch-form-button [supplierId]=\"supplierId\"\n (saved)=\"reload()\"></app-supplier-branch-form-button>\n </div>\n <form [formGroup]=\"filterForm\" class=\"d-flex justify-content-end align-items-center gap-2\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input matInput placeholder=\"Search by Title, Address, Phone, Email\" formControlName=\"search\" />\n <mat-icon matSuffix>search</mat-icon>\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 #table [dataSource]=\"models\" class=\"w-100 table-hover\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort\n (matSortChange)=\"sortColumn($event)\" aria-describedby=\"Supplier Branches List\">\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=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Title</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.title }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"address\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Address</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.address }}</td>\n </ng-container>\n\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 <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=\"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=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-secondary d-flex align-items-center gap-2\">\n <app-supplier-branch-form-button [branch]=\"element\" [supplierId]=\"supplierId\"\n (saved)=\"reload()\"></app-supplier-branch-form-button>\n <app-supplier-branch-delete-button [branch]=\"element\"\n (deleted)=\"reload()\"></app-supplier-branch-delete-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 @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </mat-card-content>\n</mat-card>","import { lastValueFrom } from 'rxjs';\nimport { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SupplierService } from '../supplier.service';\nimport { MatTabChangeEvent } from '@angular/material/tabs';\n\n@Component({\n selector: 'app-supplier-view',\n templateUrl: './supplier-view.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SupplierViewComponent implements OnInit {\n supplier: any;\n supplierId: number = 0;\n selectedTabIndex: number = 0;\n isLoading: boolean = false;\n\n constructor(private supplierService: SupplierService, private route: ActivatedRoute, private router: Router) {}\n\n ngOnInit(): void {\n this.route.firstChild?.url.subscribe((url) => {\n if (url[0].path === 'ratings') {\n this.selectedTabIndex = 1;\n } else if (url[0].path === 'estimates') {\n this.selectedTabIndex = 2;\n } else {\n this.selectedTabIndex = 0;\n }\n });\n\n this.supplierId = this.route.snapshot.params['id'];\n this.getSupplier(this.supplierId);\n }\n\n onTabChange(event: MatTabChangeEvent) {\n switch (event.index) {\n case 0:\n this.router.navigate(['incidents'], { relativeTo: this.route });\n return;\n case 1:\n this.router.navigate(['ratings'], { relativeTo: this.route });\n return;\n case 2:\n this.router.navigate(['estimates'], { relativeTo: this.route });\n return;\n }\n }\n\n async getSupplier(id: number) {\n this.isLoading = true;\n let result: any = await lastValueFrom(this.supplierService.show(id));\n this.isLoading = false;\n this.supplier = result.item;\n }\n}\n","@if (isLoading) {\n<mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n} @if (supplier) {\n<div class=\"d-flex flex-row gap-3 justify-content-between\">\n <div style=\"width: 400px\">\n <app-supplier-information [supplier]=\"supplier\"></app-supplier-information>\n <mat-card class=\"mt-3\">\n <mat-card-content class=\"p-0\">\n <app-note-list modelType=\"Supplier\" [relatedModelId]=\"$safeNavigationMigration(supplier?.id)\" viewMode=\"timeline\"\n labelText=\"Notes\"></app-note-list>\n </mat-card-content>\n </mat-card>\n </div>\n\n <mat-card class='w-100'>\n <mat-card-content>\n <mat-tab-group [mat-stretch-tabs]=\"false\">\n <mat-tab label=\"Branches\">\n <app-supplier-branches-list [supplierId]=\"$safeNavigationMigration(supplier?.id)\"></app-supplier-branches-list>\n </mat-tab>\n <mat-tab label=\"Incidents\">\n <app-incident-list [supplierId]=\"$safeNavigationMigration(supplier?.id)\" incidentableType=\"Supplier\" [incidentableId]=\"$safeNavigationMigration(supplier?.id)\">\n </app-incident-list>\n </mat-tab>\n <mat-tab label=\"Ratings\">\n <app-rating-list [supplierId]=\"$safeNavigationMigration(supplier?.id)\" [rateableId]=\"$safeNavigationMigration(supplier?.id)\"\n rateableType=\"Supplier\"></app-rating-list>\n </mat-tab>\n <mat-tab label=\"Stock Receipts\">\n <app-stock-receipts-page [supplierId]=\"$safeNavigationMigration(supplier?.id)\"></app-stock-receipts-page>\n </mat-tab>\n </mat-tab-group>\n </mat-card-content>\n </mat-card>\n</div>\n}","import { Injectable } from '@angular/core';\nimport TechlifyFormService from '../../services/techlify-form-service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SupplierFormService extends TechlifyFormService {\n constructor() {\n super();\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { SupplierFormComponent } from './supplier-form/supplier-form.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SupplierFormService } from './supplier-form/supplier-form.service';\n\n@Component({\n selector: 'app-supplier',\n templateUrl: './supplier.component.html',\n styleUrls: ['./supplier.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SupplierComponent {\n constructor(public dialog: MatDialog, private supplierFormService: SupplierFormService) {}\n}\n","<div>\n <router-outlet></router-outlet>\n</div>\n","import { Component, OnInit, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { TechlifyListComponent } from 'ngx-techlify-core';\nimport { SupplierService } from '../supplier.service';\nimport { SupplierFormComponent } from '../supplier-form/supplier-form.component';\n\n@Component({\n selector: 'app-supplier-list',\n templateUrl: './supplier-list.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SupplierListComponent extends TechlifyListComponent implements OnInit {\n\n supplierForm = signal(SupplierFormComponent);\n\n displayedColumns: string[] = [\n '#',\n 'company_name',\n 'type',\n 'contact_name',\n 'phone',\n 'address',\n 'email',\n 'details',\n 'actions',\n ];\n\n override filterFormConfiguration: any = {\n supplier_type_ids: { multiple: true }\n };\n\n constructor(\n private fb: FormBuilder,\n private router: Router,\n protected override service: SupplierService,\n ) {\n super();\n\n this.filterForm = this.fb.group({\n search: [''],\n supplier_type_ids: [''],\n sort_by: ['created_at|desc'],\n });\n }\n\n ngOnInit(): void {\n this.patchFiltersFromRoute();\n this.listenFilterChanges();\n this.loadData();\n }\n\n onSaved(model: any): void {\n this.modelCreated(model);\n const lastCreated = Array.isArray(model) ? model[0] : model;\n if (lastCreated?.id) {\n this.router.navigate(['/inventory/suppliers', lastCreated.id, 'view']);\n }\n }\n}\n","<div class=\"d-flex flex-column gap-2\">\n <mat-card>\n <mat-card-content class=\"d-flex flex-row justify-content-between align-items-center\">\n <div class=\"d-flex flex-row align-items-center gap-2\">\n <h3 class=\"mb-0\">Suppliers</h3>\n <app-techlify-form-button [component]=\"supplierForm()\" [width]=\"'600px'\"\n (saved)=\"onSaved($event)\"></app-techlify-form-button>\n </div>\n <div class=\"d-flex flex-row gap-2\" [formGroup]=\"filterForm\">\n <mat-form-field class=\"fl-md\">\n <mat-label>Search</mat-label>\n <input matInput placeholder=\"Search Supplier by Name, Phone, Address, Email, Description\"\n formControlName=\"search\" />\n </mat-form-field>\n <mat-form-field class=\"fl-sm\">\n <mat-label>Type</mat-label>\n <app-searchable-selector apiUrl=\"api/supplier-types\" formControlName=\"supplier_type_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n </div>\n </mat-card-content>\n </mat-card>\n\n <mat-card>\n <mat-card-content class=\"p-0\">\n <table mat-table #table [dataSource]=\"models\" class=\"w-100 table-hover\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort\n (matSortChange)=\"sortColumn($event)\" aria-describedby=\"Suppliers List\">\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=\"company_name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.company_name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell *matHeaderCellDef>Type</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.type?.title }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"contact_name\">\n <th mat-header-cell *matHeaderCellDef>Contact</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.contact_name }}\n </td>\n </ng-container>\n\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 <ng-container matColumnDef=\"address\">\n <th mat-header-cell *matHeaderCellDef>Address</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.address }}</td>\n </ng-container>\n\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 <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=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row gap-1 align-items-center text-secondary\">\n <app-techlify-icon name=\"view\" matTooltip=\"View\"\n [routerLink]=\"['/inventory/suppliers', element.id, 'view']\" routerLinkActive=\"route-link-active\"\n *ngxPermissionsOnly=\"['supplier.read']\"></app-techlify-icon>\n <app-techlify-form-button *ngxPermissionsOnly=\"['supplier.update']\" [component]=\"supplierForm()\"\n [model]=\"element\" [width]=\"'600px'\" (saved)=\"modelsUpdatedById($event)\"></app-techlify-form-button>\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{ title: $safeNavigationMigration(element?.company_name), type: 'Supplier' }\"\n (deleted)=\"modelsDeletedById($event)\"></app-techlify-delete-button>\n <app-audit-log-for-model [modelId]=\"$safeNavigationMigration(element?.id)\" modelType=\"Supplier\"\n logView=\"all\"></app-audit-log-for-model>\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 @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </mat-card-content>\n </mat-card>\n</div>\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { TechlifyIconModule, TechlifyListComponent } from 'ngx-techlify-core';\nimport { PurchaseOrderService } from '../purchase-order.service';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { SearchableSelectorModule } from 'ngx-techlify-core';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n selector: 'app-purchase-order-listing',\n templateUrl: './purchase-order-listing.component.html',\n styleUrls: ['./purchase-order-listing.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n CommonModule,\n MaterialModule,\n TechlifyIconModule,\n ReactiveFormsModule,\n InfiniteScrollDirective,\n SearchableSelectorModule,\n RouterModule\n ]\n})\nexport class PurchaseOrderListingComponent extends TechlifyListComponent implements OnInit {\n\n override filterFormConfiguration: any = {};\n\n defaultSelectedColumns: string[] = [\n '#',\n 'date',\n 'po_number',\n 'supplier',\n 'details',\n 'status',\n 'items',\n ];\n\n get displayedColumns(): string[] {\n return this.defaultSelectedColumns.concat('actions');\n }\n\n constructor(protected override service: PurchaseOrderService,\n private fb: FormBuilder\n ) {\n super(service);\n this.filterForm = this.fb.group({\n search: [''],\n with: 'supplier,purchaseOrderProducts.product',\n })\n }\n\n ngOnInit(): void {\n this.patchFiltersFromRoute();\n this.listenFilterChanges();\n this.loadData();\n }\n}","<div class=\"d-flex flex-column gap-2\">\n\n <mat-card>\n <mat-card-content class='d-flex flex-row justify-content-between align-items-center'>\n <div class='d-flex flex-row gap-2'>\n <h5 class=\"mb-0\">Purchase Orders</h5>\n <app-techlify-icon name='add' role='button' routerLink=\"form\"></app-techlify-icon>\n </div>\n\n <div class=\"d-flex flex-row gap-2 align-items-center\">\n <form [formGroup]='filterForm' class=\"d-flex flex-row gap-1\">\n <mat-form-field class=\"mb-0\">\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\">\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Suppliers</mat-label>\n <app-searchable-selector formControlName=\"supplier_ids\" [multiple]=\"true\" apiUrl=\"api/suppliers\"\n titleField=\"company_name\" sortBy=\"company_name|asc\"></app-searchable-selector>\n </mat-form-field>\n </form>\n </div>\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\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" matSort>\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 <!-- 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\">{{ $safeNavigationMigration(element?.date) | date : 'mediumDate' }}</td>\n </ng-container>\n\n <!-- PO # Column -->\n <ng-container matColumnDef=\"po_number\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>PO #</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.po_number }}</td>\n </ng-container>\n\n <!-- Supplier Column -->\n <ng-container matColumnDef=\"supplier\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Supplier</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.supplier?.company_name }}</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?.particulars }}</td>\n </ng-container>\n\n <!-- Status Column -->\n <ng-container matColumnDef=\"status\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Status</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.status }}</td>\n </ng-container>\n\n <!-- Items Column -->\n <ng-container matColumnDef=\"items\">\n <th mat-header-cell *matHeaderCellDef>Items</th>\n <td mat-cell *matCellDef=\"let element\">\n @for (item of element?.purchase_order_products; track item; let last\n = $last) {\n <span>\n {{ item?.product?.name }}@if (!last) {\n <span>, </span>\n }\n </span>\n }\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 <span class=\"text-secondary\">\n <app-techlify-icon name='view' role='button' [routerLink]=\"element.id + '/view'\"\n matTooltip=\"View\"></app-techlify-icon>\n <app-techlify-icon name='edit' role='button' [routerLink]=\"'form/' + element.id\"\n matTooltip=\"Edit\"></app-techlify-icon>\n </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 @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </mat-card-content>\n </mat-card>\n\n</div>","import { Component, OnInit, ChangeDetectionStrategy } from \"@angular/core\";\nimport { FormArray, FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { FormValidatorService, TechlifyFormComponent, TechlifyIconModule } from \"ngx-techlify-core\";\nimport { MaterialModule } from '../../../material.module';\nimport { SearchableSelectorModule } from 'ngx-techlify-core';\nimport { PurchaseOrderService } from '../purchase-order.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport moment from 'moment';\n\n@Component({\n selector: 'app-purchase-order-form',\n templateUrl: './purchase-order-form.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n ReactiveFormsModule,\n MaterialModule,\n SearchableSelectorModule,\n TechlifyIconModule\n ]\n})\n\nexport class PurchaseOrderFormComponent extends TechlifyFormComponent implements OnInit {\n\n constructor(protected override formValidatorService: FormValidatorService,\n private fb: FormBuilder,\n private purchaseOrderService: PurchaseOrderService,\n private router: Router,\n private route: ActivatedRoute,\n ) {\n super(formValidatorService);\n\n this.form = this.fb.group({\n id: [''],\n date: [new Date(), Validators.compose([Validators.required])],\n po_number: [''],\n supplier_id: [''],\n details: [''],\n purchase_order_products: this.fb.array([])\n });\n }\n\n ngOnInit(): void {\n const id = this.route.snapshot.params['id'];\n if (id) {\n this.loadData(id);\n }\n }\n\n get purchaseOrderProducts(): FormArray {\n return this.form.get('purchase_order_products') as FormArray;\n }\n\n createPurchaseOrderProduct() {\n return this.fb.group({\n product_id: ['', Validators.required],\n quantity: [1, [Validators.required, Validators.min(1)]],\n unit_id: ['', Validators.required],\n details: ['']\n });\n }\n\n addPurchaseOrderProduct() {\n this.purchaseOrderProducts.push(this.createPurchaseOrderProduct());\n }\n\n removePurchaseOrderProduct(index: number) {\n this.purchaseOrderProducts.removeAt(index);\n }\n\n clearProducts() {\n this.purchaseOrderProducts.clear();\n }\n\n loadData(id: number) {\n this.isWorking = true;\n this.purchaseOrderService.show(id, { with: 'purchaseOrderProducts.product' }).subscribe({\n next: (response: any) => {\n this.isWorking = false;\n const purchaseOrder = response.item;\n\n this.form.patchValue({\n id: purchaseOrder.id,\n date: purchaseOrder.date ? new Date(purchaseOrder.date) : new Date(),\n po_number: purchaseOrder.po_number ?? '',\n supplier_id: purchaseOrder.supplier_id ?? '',\n details: purchaseOrder.details ?? '',\n });\n\n this.purchaseOrderProducts.clear();\n const products = purchaseOrder.purchase_order_products || [];\n\n products.map((product: any) => {\n const row = this.createPurchaseOrderProduct();\n row.patchValue({\n product_id: product.product_id,\n quantity: product.quantity,\n unit_id: product.unit_id,\n details: product.details || '',\n });\n this.purchaseOrderProducts.push(row);\n })\n },\n error: () => {\n this.isWorking = false;\n }\n });\n }\n\n save() {\n if (this.form.invalid) {\n this.form.markAllAsTouched();\n this.form.markAsDirty();\n this.alertService.addAlert('Please check the form for errors.', 'error');\n return;\n }\n\n if (this.purchaseOrderProducts.length === 0) {\n this.alertService.addAlert('Please add at least one product.', 'error');\n return;\n }\n\n const formData = this.form.getRawValue();\n const data: any = {\n id: formData.id ?? null,\n date: moment(formData.date).format('YYYY-MM-DD'),\n po_number: formData.po_number,\n supplier_id: formData.supplier_id,\n details: formData.details,\n products: formData.purchase_order_products.map((row: any) => ({\n product_id: row.product_id,\n quantity: row.quantity,\n unit_id: row.unit_id,\n details: row.details,\n }))\n };\n\n this.isWorking = true;\n\n const promise = data?.id\n ? this.purchaseOrderService.update(data)\n : this.purchaseOrderService.store(data);\n\n promise.subscribe({\n next: (response: any) => {\n this.isWorking = false;\n this.alertService.addAlert('Purchase order saved successfully!', 'success');\n this.router.navigate(['/inventory/suppliers/purchase-orders']);\n },\n error: () => {\n this.isWorking = false;\n }\n });\n }\n\n cancel() {\n this.router.navigate(['/inventory/suppliers/purchase-orders']);\n }\n}\n\n","<mat-card class=\"d-flex flex-column gap-2 container\">\n <mat-card-content>\n\n <div class=\"d-flex flex-column gap-1\">\n <h5>\n <span class=\"material-symbols-outlined align-middle\">shopping_cart</span>\n Purchase Order Form\n </h5>\n </div>\n\n <form class=\"d-flex flex-column gap-2\" [formGroup]=\"form\" (submit)=\"save()\">\n\n <div class=\"d-flex flex-column\">\n <div class=\"d-flex flex-row gap-2 justify-content-between\">\n <mat-form-field appearance='outline' class=\"w-100\">\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"picker\" placeholder=\"Date\" formControlName=\"date\" required>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n @if (isFieldValid('date')) {\n <mat-error>{{ getErrorMessage('date') }}</mat-error>\n }\n </mat-form-field>\n <mat-form-field appearance='outline' class=\"w-100\">\n <mat-label>PO #</mat-label>\n <input matInput placeholder=\"PO #\" formControlName=\"po_number\">\n </mat-form-field>\n </div>\n\n <div class=\"d-flex flex-row gap-2 justify-content-between\">\n <mat-form-field appearance='outline' class=\"w-100\">\n <mat-label>Supplier</mat-label>\n <app-searchable-selector apiUrl='api/suppliers' formControlName=\"supplier_id\"\n titleField='company_name'></app-searchable-selector>\n </mat-form-field>\n <mat-form-field appearance='outline' class=\"w-100\">\n <mat-label>Details</mat-label>\n <textarea matInput placeholder=\"Details\" formControlName=\"details\"></textarea>\n </mat-form-field>\n </div>\n </div>\n\n <table class=\"table mt-3\">\n <thead>\n <tr>\n <th scope=\"col\">#</th>\n <th scope=\"col\">Product</th>\n <th scope=\"col\">Quantity</th>\n <th scope=\"col\">Unit</th>\n <th scope=\"col\">Details</th>\n <th scope=\"col\" class=\"text-center\" width=\"50\"></th>\n </tr>\n </thead>\n <tbody formArrayName=\"purchase_order_products\">\n @for (row of purchaseOrderProducts.controls; track row; let i =\n $index) {\n <tr [formGroupName]=\"i\">\n <th scope=\"row\">{{ i + 1 }}</th>\n <td>\n <mat-form-field appearance='outline' class=\"w-100\">\n <mat-label>Product</mat-label>\n <app-searchable-selector apiUrl='api/products' formControlName=\"product_id\"\n titleField='name' [cache]=\"true\" required></app-searchable-selector>\n </mat-form-field>\n </td>\n <td>\n <mat-form-field appearance='outline' class='fl-sm'>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"1\">\n </mat-form-field>\n </td>\n <td>\n <mat-form-field appearance='outline' class=\"w-100\">\n <mat-label>Unit</mat-label>\n <app-searchable-selector apiUrl='api/product-measures' formControlName=\"unit_id\"\n titleField='title' required></app-searchable-selector>\n </mat-form-field>\n </td>\n <td>\n <mat-form-field appearance='outline'>\n <mat-label>Details</mat-label>\n <input matInput formControlName=\"details\">\n </mat-form-field>\n </td>\n <td class=\"text-center align-middle\">\n <div class=\"d-flex gap-2 justify-content-center align-items-center text-secondary\">\n <app-techlify-icon role='button' name='delete' (click)=\"removePurchaseOrderProduct(i)\"\n matTooltip=\"Remove row\"></app-techlify-icon>\n </div>\n </td>\n </tr>\n }\n </tbody>\n <tfoot>\n <tr>\n <td colspan=\"6\" class=\"text-end\">\n <div class=\"d-flex flex-row gap-2 justify-content-end\">\n <button mat-button color=\"primary\" type=\"button\" (click)=\"clearProducts()\"\n [disabled]=\"purchaseOrderProducts.length === 0\">\n <mat-icon>block</mat-icon> CLEAR ALL\n </button>\n <button mat-raised-button color=\"primary\" type=\"button\"\n (click)=\"addPurchaseOrderProduct()\">\n <mat-icon>add</mat-icon> ADD\n </button>\n </div>\n </td>\n </tr>\n </tfoot>\n </table>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2 mt-2\">\n <button [disabled]=\"isWorking\" mat-flat-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n <button [disabled]=\"isWorking || purchaseOrderProducts.length === 0\" mat-raised-button color=\"primary\"\n type=\"submit\">Save</button>\n </div>\n\n </form>\n\n </mat-card-content>\n</mat-card>\n","import { SupplierViewComponent } from './supplier-view/supplier-view.component';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { SupplierComponent } from './supplier.component';\nimport { SupplierListComponent } from './supplier-list/supplier-list.component';\nimport { PurchaseOrderListingComponent } from './purchase-order/purchase-order-listing/purchase-order-listing.component';\nimport { PurchaseOrderFormComponent } from './purchase-order/purchase-order-form/purchase-order-form.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: SupplierComponent,\n children: [\n { path: '', component: SupplierListComponent },\n {\n path: ':id/view',\n component: SupplierViewComponent,\n },\n\n {\n path: 'purchase-orders',\n component: PurchaseOrderListingComponent\n },\n {\n path: 'purchase-orders/form',\n component: PurchaseOrderFormComponent\n },\n {\n path: 'purchase-orders/form/:id',\n component: PurchaseOrderFormComponent\n },\n {\n path: 'purchase-orders/:id/view',\n loadComponent: () => import('./purchase-order/purchase-order-view/purchase-order-view.component').then(m => m.PurchaseOrderViewComponent)\n }\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class SupplierRoutingModule { }\n\n","import { NoteModule } from 'ngx-techlify-core';\nimport { NgModule } from '@angular/core';\nimport { SupplierRoutingModule } from './supplier-routing.module';\nimport { SupplierComponent } from './supplier.component';\nimport { SupplierViewComponent } from './supplier-view/supplier-view.component';\nimport { SupplierListComponent } from './supplier-list/supplier-list.component';\nimport { SupplierInformationComponent } from './supplier-information/supplier-information.component';\nimport { SupplierBranchesListComponent } from './supplier-branches-list/supplier-branches-list.component';\nimport { SupplierBranchFormComponent } from './supplier-branch-form/supplier-branch-form.component';\nimport { SupplierBranchFormButtonComponent } from './supplier-branch-form/supplier-branch-form-button/supplier-branch-form-button.component';\nimport { SupplierBranchDeleteButtonComponent } from './supplier-branch-delete-button/supplier-branch-delete-button.component';\nimport { StockReceiptsModule } from '../stock-receipts/stock-receipts.module';\nimport { IncidentListComponent } from \"../incident/incident-list/incident-list.component\";\nimport { RatingListComponent } from \"../rating/rating-list/rating-list.component\";\nimport { SharedModule } from '../shared.module';\n\n@NgModule({\n declarations: [\n SupplierComponent,\n SupplierViewComponent,\n SupplierListComponent,\n SupplierInformationComponent,\n SupplierBranchesListComponent,\n SupplierBranchFormComponent,\n ],\n imports: [\n SupplierRoutingModule,\n StockReceiptsModule,\n IncidentListComponent,\n RatingListComponent,\n SupplierBranchFormButtonComponent,\n SupplierBranchDeleteButtonComponent,\n SharedModule,\n ],\n})\nexport class SupplierModule { }\n\n\n\n","import { Injectable } from '@angular/core';\nimport { HttpService } from 'ngx-techlify-core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SupplierTypeService {\n constructor(private httpService: HttpService) {}\n\n /**\n * get all suppliers from API\n *\n */\n index() {\n return this.httpService.get(`api/supplier-types`);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport {IncidentListComponent} from \"./incident-list/incident-list.component\";\n\nconst routes: Routes = [\n {\n path: '',\n component: IncidentListComponent\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class IncidentRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { IncidentRoutingModule } from './incident-routing.module';\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n IncidentRoutingModule\n ]\n})\nexport class IncidentModule { }\n","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {RatingListComponent} from \"./rating-list/rating-list.component\";\n\nconst routes: Routes = [\n {\n path: '', component: RatingListComponent\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class RatingRoutingModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { RatingRoutingModule } from './rating-routing.module';\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n RatingRoutingModule\n ]\n})\nexport class RatingModule { }\n","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from \"@angular/forms\";\nimport {\n FormValidatorService,\n SearchableSelectorModule,\n TechlifyFeatureModule,\n TechlifyFormComponent\n} from \"ngx-techlify-core\";\nimport { LocationService } from '../location.service';\nimport { MaterialModule } from '../../material.module';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-location-form',\n imports: [\n FormsModule,\n MaterialModule,\n ReactiveFormsModule,\n SearchableSelectorModule,\n TechlifyFeatureModule\n ],\n templateUrl: './location-form.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './location-form.component.scss'\n})\nexport class LocationFormComponent extends TechlifyFormComponent implements OnInit {\n @Input() model!: 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 formBuilder: FormBuilder,\n protected override service: LocationService,\n public override dialogRef: MatDialogRef<LocationFormComponent>\n ) {\n super(formValidatorService);\n this.errorMessages = {\n title: {\n required: 'The title field is required.'\n }\n }\n\n this.form = this.formBuilder.group({\n id: [''],\n parent_id: [''],\n title: ['', Validators.required],\n address: [''],\n description: [''],\n });\n }\n\n ngOnInit() {\n if (this.model) {\n this.isUpdate = true;\n this.form.patchValue({ ...this.model });\n }\n }\n}\n","<form [formGroup]=\"form\" (submit)=\"submit(form.value)\" class=\"d-flex flex-column gap-1\">\n <mat-form-field>\n <mat-label>Title</mat-label>\n <input type=\"text\" matInput formControlName=\"title\" placeholder=\"Title\">\n @if (isFieldValid('title')) {\n <mat-error>\n {{ getErrorMessage('title') }}\n </mat-error>\n }\n </mat-form-field>\n\n <mat-form-field techlifyFeatureEnabled=\"sub-locations\">\n <mat-label>Parent</mat-label>\n <app-searchable-selector formControlName=\"parent_id\" apiUrl='api/inventory-locations?status_ids=1'\n [selectedValue]=\"$safeNavigationMigration(model?.parent)\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Address</mat-label>\n <input type=\"text\" matInput formControlName=\"address\" placeholder=\"Address\">\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-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 (click)=\"cancelled.emit()\" [disabled]=\"isWorking\" type=\"button\" mat-flat-button>\n Cancel\n </button>\n </div>\n</form>","import { Component, EventEmitter, Input, Output, TemplateRef, ChangeDetectionStrategy } from '@angular/core';\nimport { MatDialog, MatDialogContent, MatDialogTitle } from \"@angular/material/dialog\";\nimport { LocationFormComponent } from '../location-form/location-form.component';\nimport { TechlifyIconModule } from 'ngx-techlify-core';\n\n@Component({\n selector: 'app-location-form-button',\n imports: [\n MatDialogContent,\n MatDialogTitle,\n LocationFormComponent,\n TechlifyIconModule\n ],\n templateUrl: './location-form-button.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './location-form-button.component.scss'\n})\nexport class LocationFormButtonComponent {\n @Input() model!: 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,\n {\n width: '400px'\n }).afterClosed().subscribe({\n next: (model: any) => {\n if (!model) {\n return;\n }\n\n this.saved.emit(model);\n }\n });\n }\n\n onSaved(model: any) {\n this.matDialog.closeAll();\n this.saved.emit(model);\n }\n}\n","<app-techlify-icon role=\"button\" [name]=\"model ? 'edit' : 'add'\" (click)=\"showForm(formTemplate)\"></app-techlify-icon>\n\n<ng-template #formTemplate>\n <h3 mat-dialog-title> Location Form </h3>\n <app-location-form mat-dialog-content [model]=\"model\" (saved)=\"onSaved($event)\"\n (cancelled)=\"matDialog.closeAll()\"></app-location-form>\n</ng-template>","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { MaterialModule } from '../../material.module';\nimport { AlertService, ErrorHandlerService, FormValidatorService, SearchableSelectorModule, TechlifyFormComponent } from 'ngx-techlify-core';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { LocationService } from '../location.service';\n\n@Component({\n selector: 'app-location-status-changer',\n templateUrl: './location-status-changer.component.html',\n styleUrls: ['./location-status-changer.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n MaterialModule,\n ReactiveFormsModule,\n SearchableSelectorModule\n ],\n})\nexport class LocationStatusChangerComponent extends TechlifyFormComponent implements OnInit {\n\n @Input() location!: any;\n\n constructor(protected override formValidatorService: FormValidatorService,\n protected override service: LocationService,\n private fb: FormBuilder,\n private errorHandler: ErrorHandlerService\n ) {\n super(formValidatorService);\n\n this.form = this.fb.group({\n id: [''],\n status_id: ['']\n });\n }\n\n ngOnInit() {\n this.form.patchValue({\n id: this.location.id,\n status_id: this.location.status_id\n })\n\n this.form.valueChanges.subscribe({\n next: () => {\n this.save();\n }\n })\n }\n\n save() {\n this.service.updateStatus(this.form.value).subscribe({\n next: () => {\n this.form.markAsPristine();\n\n this.alertService.addAlert('Location status updated successfully!', 'success');\n },\n error: (error: any) => {\n this.errorHandler.handleError(error);\n }\n });\n }\n\n}\n","<form [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>Status</mat-label>\n <app-searchable-selector apiUrl=\"api/techlify-statuses\"\n formControlName=\"status_id\" [cache]=\"true\"></app-searchable-selector>\n </mat-form-field>\n</form>","import { Component, OnInit, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { SearchableSelectorModule, TechlifyDeleteButtonComponent, TechlifyFeatureService, TechlifyIconModule, TechlifyListComponent } from 'ngx-techlify-core';\nimport { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { LocationService } from '../location.service';\nimport { LocationFormButtonComponent } from '../location-form-button/location-form-button.component';\nimport { LocationStatusChangerComponent } from '../location-status-changer/location-status-changer.component';\nimport { MaterialModule } from '../../material.module';\n\n@Component({\n selector: 'app-location-list',\n imports: [\n FormsModule,\n InfiniteScrollDirective,\n MaterialModule,\n ReactiveFormsModule,\n SearchableSelectorModule,\n LocationFormButtonComponent,\n RouterLink,\n LocationStatusChangerComponent,\n TechlifyIconModule,\n TechlifyDeleteButtonComponent\n ],\n templateUrl: './location-list.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './location-list.component.scss'\n})\nexport class LocationListComponent extends TechlifyListComponent implements OnInit {\n displayedColumns: string[] = [\n '#',\n 'Title',\n 'Address',\n 'stock_receipts',\n 'stock_issues',\n 'Description',\n 'status',\n 'Actions',\n ]\n\n override filterFormConfiguration: any = {};\n isSublocationsEnabled = signal<boolean>(false);\n\n constructor(\n protected override service: LocationService,\n private formBuilder: FormBuilder,\n private featureService: TechlifyFeatureService\n ) {\n super();\n\n this.filterForm = this.formBuilder.group({\n search: [''],\n sort_by: ['id|desc'],\n with: 'status,parent',\n withCount: 'stockReceipts,stockIssues',\n });\n }\n\n ngOnInit() {\n this.addParentColumn();\n\n this.patchFiltersFromRoute();\n this.listenFilterChanges();\n this.loadData();\n }\n\n addParentColumn() {\n this.isSublocationsEnabled.set(this.featureService.isFeatureExists('sub-locations'));\n\n if (this.isSublocationsEnabled()) {\n const index = this.displayedColumns.indexOf('Title');\n this.displayedColumns.splice(index + 1, 0, 'parent');\n }\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 mb-0\">\n <h5 class=\"mb-0\">Locations</h5>\n <app-location-form-button (saved)=\"reload()\"></app-location-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 locations\" matInput formControlName=\"search\">\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)=\"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=\"Title\">\n <th mat-header-cell mat-sort-header=\"title\" *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.title }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"parent\">\n <th mat-header-cell mat-sort-header=\"parent\" *matHeaderCellDef> Parent </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.parent?.title }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Address\">\n <th mat-header-cell mat-sort-header=\"address\" *matHeaderCellDef> Address </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.address }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_receipts\">\n <th mat-header-cell *matHeaderCellDef> Stock Receipts </th>\n <td mat-cell *matCellDef=\"let element\">\n <span [routerLink]=\"['/inventory/stock-receipts']\" [queryParams]=\"{ location_ids: element.id }\"\n class='cursor-pointer'>\n {{element?.stock_receipts_count }} receipt(s)</span>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"stock_issues\">\n <th mat-header-cell *matHeaderCellDef> Stock Issues </th>\n <td mat-cell *matCellDef=\"let element\">\n <span [routerLink]=\"['/inventory/stock-issues']\" [queryParams]=\"{ location_ids: element.id }\"\n class='cursor-pointer'>\n {{element?.stock_issues_count }} issue(s)</span>\n </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=\"status\">\n <th mat-header-cell *matHeaderCellDef> Status </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-location-status-changer [location]=\"element\"></app-location-status-changer>\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 text-secondary\">\n <app-techlify-icon role='button' name=\"view\"\n [routerLink]=\"['/location/locations', $safeNavigationMigration(element?.id), 'view']\"></app-techlify-icon>\n\n <app-location-form-button [model]=\"element\" (saved)=\"reload()\"></app-location-form-button>\n\n @if (element?.stock_receipts_count == 0 &&\n element?.stock_issues_count == 0) {\n <span>\n <app-techlify-delete-button [data]=\"{ title: $safeNavigationMigration(element?.title), type: 'Location' }\" [model]=\"element\"\n [service]=\"service\" (deleted)=\"reload()\"></app-techlify-delete-button>\n </span>\n }\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 @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </mat-card-content>\n</mat-card>","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { LocationFormButtonComponent } from '../location-form-button/location-form-button.component';\nimport { MaterialModule } from '../../material.module';\nimport { TechlifyDeleteButtonComponent } from 'ngx-techlify-core';\nimport { LocationService } from '../location.service';\n\n@Component({\n selector: 'app-location-information',\n imports: [\n MaterialModule,\n LocationFormButtonComponent,\n TechlifyDeleteButtonComponent\n ],\n templateUrl: './location-information.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './location-information.component.scss'\n})\nexport class LocationInformationComponent {\n @Input() model: any;\n\n constructor(\n private location: Location,\n public service: LocationService,\n ) {\n }\n\n redirectBack() {\n this.location.back();\n }\n}\n","@if (model) {\n<mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center\">\n <h3 class=\"mb-2 fw-bold\">{{ model?.title }}</h3>\n <div class=\"d-flex justify-content-start align-items-center gap-2 text-secondary\">\n <app-location-form-button [model]=\"model\" (saved)=\"model = $event\"></app-location-form-button>\n <app-techlify-delete-button [data]=\"{ title: $safeNavigationMigration(model?.title), type: 'Location' }\" [model]=\"model\"\n [service]=\"service\" (deleted)=\"redirectBack()\"></app-techlify-delete-button>\n </div>\n </mat-card-content>\n <mat-divider class=\"mx-2\"></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-start align-items-start flex-wrap\">\n <strong class=\"w-100 mb-2\">Location Details</strong>\n @if (model?.address) {\n <div class=\"d-flex flex-column gap-1 justify-content-start w-100 mb-2\">\n <small class=\"text-secondary\">Address</small>\n <p class=\"mb-0\">{{ model?.address }}</p>\n </div>\n } @if (model?.description) {\n <div class=\"d-flex flex-column gap-1 justify-content-start w-100 mb-2\">\n <small class=\"text-secondary\">Description</small>\n <p class=\"mb-0\">{{ model?.description }}</p>\n </div>\n }\n </div>\n\n </mat-card-content>\n</mat-card>\n}","import { Component, Input, OnInit, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { LocationService } from '../location.service';\nimport { TechlifyListComponent } from 'ngx-techlify-core';\nimport { ProductModule } from '../../product/product.module';\nimport { FormBuilder } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n ProductCategoryBadgesComponent\n} from '../../product/widgets/product-category-badges/product-category-badges.component';\nimport { StockTransferFormComponent } from '../../stock-transfer/stock-transfer-form/stock-transfer-form.component';\nimport { TechlifyFormButtonComponent } from 'ngx-techlify-core';\nimport { SharedModule } from '../../shared.module';\n\n@Component({\n selector: 'app-location-product-statistics',\n imports: [\n ProductModule,\n ProductCategoryBadgesComponent,\n StockTransferFormComponent,\n TechlifyFormButtonComponent,\n SharedModule\n ],\n templateUrl: './location-product-statistics.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './location-product-statistics.component.scss'\n})\nexport class LocationProductStatisticsComponent extends TechlifyListComponent implements OnInit {\n @Input() location: any;\n stockTransferForm = signal(StockTransferFormComponent);\n displayedColumns: string[] = [\n '#',\n 'SKU',\n 'Product',\n 'Category',\n 'Quantity',\n 'Actions'\n ];\n\n constructor(\n protected override service: LocationService,\n private formBuilder: FormBuilder,\n ) {\n super();\n\n this.filterForm = this.formBuilder.group({\n search: [''],\n sort_by: ['id|desc'],\n });\n }\n\n ngOnInit() {\n this.patchFiltersFromRoute();\n this.listenFilterChanges();\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 page: this.page,\n perPage: this.perPage,\n with: 'categories',\n }\n this.isWorking = true;\n this.service.productStatistics(this.location, 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>\n <h3>Location Products</h3>\n </mat-card-content>\n <mat-divider class=\"mt-3\"></mat-divider>\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=\"SKU\">\n <th mat-header-cell *matHeaderCellDef> SKU </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.sku }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Product\">\n <th mat-header-cell *matHeaderCellDef> Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-dark\" [routerLink]=\"['/inventory/products', element.id, 'view']\">\n {{ element?.name }}\n </a>\n </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\">\n <app-product-category-badges [product]=\"element\"></app-product-category-badges>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Quantity\">\n <th mat-header-cell *matHeaderCellDef> Quantity </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.current_stock }}\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 @if (location?.id) {\n <app-techlify-form-button [component]=\"stockTransferForm()\"\n [data]=\"{ product_id: $safeNavigationMigration(element?.id), location_from: location }\" [width]=\"'500px'\"\n (saved)=\"reload()\"></app-techlify-form-button>\n }\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 @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </mat-card-content>\n</mat-card>","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { LocationService } from '../location.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { LocationInformationComponent } from '../location-information/location-information.component';\nimport { ProductModule } from '../../product/product.module';\nimport { LocationProductStatisticsComponent } from '../location-product-statistics/location-product-statistics.component';\nimport { MaterialModule } from '../../material.module';\n\n@Component({\n selector: 'app-location-view',\n imports: [\n MaterialModule,\n LocationInformationComponent,\n ProductModule,\n LocationProductStatisticsComponent\n ],\n templateUrl: './location-view.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './location-view.component.scss'\n})\nexport class LocationViewComponent implements OnInit {\n id!: number;\n isLoading!: boolean;\n model!: any;\n\n constructor(\n private service: LocationService,\n private activatedRoute: ActivatedRoute\n ) {\n this.id = parseInt(this.activatedRoute.snapshot.params['id']);\n }\n\n ngOnInit() {\n if (this.id) {\n this.loadModel();\n }\n }\n\n private loadModel() {\n this.isLoading = true;\n const params: any = {}\n this.service.show(this.id, params).subscribe({\n next: (response: any) => {\n this.model = response?.item;\n this.isLoading = false;\n },\n error: () => (this.isLoading = false)\n })\n }\n}\n","@if (model) {\n<div class=\"d-flex justify-content-start align-items-start flex-wrap gap-3\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 400px\">\n <app-location-information\n [model]=\"model\"\n ></app-location-information>\n </div>\n\n <app-location-product-statistics\n style=\"width: calc(100% - 400px - 1rem)\"\n [location]=\"model\"\n ></app-location-product-statistics>\n\n</div>\n} @if (isLoading) {\n<mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { LocationListComponent } from './location-list/location-list.component';\nimport { LocationViewComponent } from './location-view/location-view.component';\n\nconst routes: Routes = [\n {\n path: 'locations',\n component: LocationListComponent\n },\n {\n path: 'locations/:id/view',\n component: LocationViewComponent\n },\n {\n path: 'shelves',\n loadChildren: () => import('./shelf/shelf.module').then((mod) => mod.ShelfModule)\n },\n {\n path: '**',\n redirectTo: 'locations',\n pathMatch: 'full'\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class LocationRoutingModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { LocationRoutingModule } from './location-routing.module';\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n LocationRoutingModule\n ]\n})\nexport class LocationModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from \"ngx-techlify-core\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ShelfService extends TechlifyService {\n\n constructor(\n protected httpService: HttpService\n ) {\n super(httpService, 'shelves');\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from \"@angular/forms\";\nimport { MatButton } from \"@angular/material/button\";\nimport { MatError, MatFormField, MatLabel } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport {\n AlertService,\n FormValidatorService,\n SearchableSelectorModule,\n TechlifyFormComponent\n} from \"ngx-techlify-core\";\nimport { ShelfService } from \"../shelf.service\";\n\n@Component({\n selector: 'app-shelf-form',\n imports: [\n FormsModule,\n MatButton,\n MatError,\n MatFormField,\n MatInput,\n MatLabel,\n ReactiveFormsModule,\n SearchableSelectorModule\n ],\n templateUrl: './shelf-form.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './shelf-form.component.scss'\n})\nexport class ShelfFormComponent extends TechlifyFormComponent implements OnInit {\n @Input() model!: any;\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 protected override service: ShelfService\n ) {\n super(formValidatorService);\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 type_id: [''],\n location_id: [''],\n description: [''],\n });\n }\n\n ngOnInit() {\n if (this.model) {\n this.form.patchValue({ ...this.model });\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 data.with = 'type,location,creator';\n this.isSaving = true;\n let request = this.service.store(data);\n if (data?.id) {\n request = this.service.update(data);\n }\n request.subscribe({\n next: (response: any) => {\n this.isSaving = false;\n this.saved.emit(response?.item);\n this.alertService.addAlert('The shelf saved successfully!', 'success');\n },\n error: () => (this.isSaving = false)\n });\n }\n}\n","<form\n [formGroup]=\"form\"\n (submit)=\"save()\"\n class=\"d-flex flex-column gap-1\"\n>\n <mat-form-field>\n <mat-label>Name</mat-label>\n <input type=\"text\" matInput formControlName=\"name\" placeholder=\"Name\">\n @if (isFieldValid('name')) {\n <mat-error>\n {{ getErrorMessage('name') }}\n </mat-error>\n }\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Type</mat-label>\n <app-searchable-selector formControlName=\"type_id\" apiUrl=\"api/shelf-types\" [enableSearch]=\"false\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Location</mat-label>\n <app-searchable-selector formControlName=\"location_id\" apiUrl=\"api/inventory-locations?status_ids=1\"\n [selectedValue]=\"$safeNavigationMigration(model?.location)\">\n </app-searchable-selector>\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-form-field>\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, ChangeDetectionStrategy } from '@angular/core';\nimport { MatDialog, MatDialogContent, MatDialogTitle } from \"@angular/material/dialog\";\nimport { ShelfFormComponent } from \"../shelf-form/shelf-form.component\";\nimport { MaterialModule } from '../../../material.module';\nimport { TechlifyIconModule } from 'ngx-techlify-core';\n\n@Component({\n selector: 'app-shelf-form-button',\n imports: [\n MaterialModule,\n TechlifyIconModule,\n ShelfFormComponent\n ],\n templateUrl: './shelf-form-button.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './shelf-form-button.component.scss'\n})\nexport class ShelfFormButtonComponent {\n @Input() model!: 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(model: any) {\n this.matDialog.closeAll();\n this.saved.emit(model);\n }\n}\n","<app-techlify-icon role='button' [name]=\"model ? 'edit' : 'add'\" (click)=\"showForm(formTemplate)\"></app-techlify-icon>\n\n<ng-template #formTemplate>\n <h3 mat-dialog-title>{{ model ? 'Edit' : 'Create' }} Shelf</h3>\n <app-shelf-form mat-dialog-content [model]=\"model\" (saved)=\"onSaved($event)\" (cancelled)=\"matDialog.closeAll()\">\n </app-shelf-form>\n</ng-template>","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport {\n MaterialModule, SearchableSelectorModule,\n TechlifyDeleteButtonComponent,\n TechlifyIconModule,\n TechlifyListComponent\n} from \"ngx-techlify-core\";\nimport { InfiniteScrollDirective } from \"ngx-infinite-scroll\";\nimport { CommonModule, DatePipe } from \"@angular/common\";\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from \"@angular/forms\";\nimport { ShelfFormButtonComponent } from \"../shelf-form-button/shelf-form-button.component\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { debounceTime, distinctUntilChanged } from \"rxjs\";\nimport { Sort } from \"@angular/material/sort\";\nimport { ShelfService } from \"../shelf.service\";\n\n@Component({\n selector: 'app-shelf-list',\n imports: [\n CommonModule,\n MaterialModule,\n InfiniteScrollDirective,\n ReactiveFormsModule,\n ShelfFormButtonComponent,\n SearchableSelectorModule,\n DatePipe,\n TechlifyIconModule,\n TechlifyDeleteButtonComponent\n ],\n templateUrl: './shelf-list.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './shelf-list.component.css'\n})\nexport class ShelfListComponent extends TechlifyListComponent implements OnInit {\n displayedColumns: string[] = [\n '#',\n 'Name',\n 'Location',\n 'Type',\n 'Description',\n 'Creator',\n 'Actions',\n ]\n\n constructor(\n protected override service: ShelfService,\n private formBuilder: FormBuilder,\n private activatedRoute: ActivatedRoute,\n ) {\n super();\n this.lastPage = 0;\n\n this.filterForm = this.formBuilder.group({\n search: [''],\n location_ids: [''],\n sort_by: ['id|desc'],\n });\n }\n\n ngOnInit() {\n this.requestHelperService.updateFormWithQueryParams(\n this.filterForm,\n {\n location_ids: { multiple: true }\n }\n );\n\n (this.filterForm as FormGroup).valueChanges.pipe(debounceTime(800)).subscribe({\n next: () => {\n this.requestHelperService.updateQueryParams(this.requestHelperService.convertToFormData(this.filterForm.value));\n }\n });\n\n // listen for route change\n this.activatedRoute.queryParams.pipe(debounceTime(500), distinctUntilChanged())\n .subscribe(() => this.reload());\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 page: this.page,\n perPage: this.perPage,\n with: 'type,location,creator',\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","<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>Shelves</strong>\n <app-shelf-form-button (saved)=\"modelCreated($event)\"></app-shelf-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 class='fl-md'>\n <mat-label>Search</mat-label>\n <input type=\"text\" placeholder=\"Search shelves\" matInput formControlName=\"search\">\n </mat-form-field>\n <mat-form-field class='fl-sm'>\n <mat-label>Location</mat-label>\n <app-searchable-selector formControlName=\"location_ids\" [multiple]=\"true\" apiUrl=\"api/inventory-locations\">\n </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=\"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=\"Location\">\n <th mat-header-cell mat-sort-header=\"location\" *matHeaderCellDef> Location </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.location?.title }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Type\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"type\"> Type </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.type?.title }}\n </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=\"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\">{{ $safeNavigationMigration(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 text-secondary\">\n <app-shelf-form-button [model]=\"element\" (saved)=\"modelsUpdatedById($event)\"></app-shelf-form-button>\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{ title: $safeNavigationMigration(element?.name), type: 'Shelf' }\" (deleted)=\"reload()\"></app-techlify-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 @if (isWorking) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </mat-card-content>\n</mat-card>","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { ShelfListComponent } from \"./shelf-list/shelf-list.component\";\n\nconst routes: Routes = [\n {\n path: '',\n component: ShelfListComponent\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class ShelfRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ShelfRoutingModule } from './shelf-routing.module';\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n ShelfRoutingModule\n ]\n})\nexport class ShelfModule { }\n"],"mappings":"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"}
|