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.
Files changed (356) hide show
  1. package/fesm2022/techlify-inventory-common-category.module-Dtn1604q.mjs +842 -0
  2. package/fesm2022/techlify-inventory-common-category.module-Dtn1604q.mjs.map +1 -0
  3. package/fesm2022/techlify-inventory-common-location.service-C99J8Lje.mjs +50 -0
  4. package/fesm2022/techlify-inventory-common-location.service-C99J8Lje.mjs.map +1 -0
  5. package/fesm2022/techlify-inventory-common-material.module-ClupVm7-.mjs +190 -0
  6. package/fesm2022/techlify-inventory-common-material.module-ClupVm7-.mjs.map +1 -0
  7. package/fesm2022/techlify-inventory-common-measure.service-DvJUGa0i.mjs +38 -0
  8. package/fesm2022/techlify-inventory-common-measure.service-DvJUGa0i.mjs.map +1 -0
  9. package/fesm2022/techlify-inventory-common-product-category-badges.component-VnfnNhtV.mjs +133 -0
  10. package/fesm2022/techlify-inventory-common-product-category-badges.component-VnfnNhtV.mjs.map +1 -0
  11. package/fesm2022/techlify-inventory-common-product.module-MZoVK3bN.mjs +4278 -0
  12. package/fesm2022/techlify-inventory-common-product.module-MZoVK3bN.mjs.map +1 -0
  13. package/fesm2022/techlify-inventory-common-purchase-order-view.component-CjED8n4_.mjs +852 -0
  14. package/fesm2022/techlify-inventory-common-purchase-order-view.component-CjED8n4_.mjs.map +1 -0
  15. package/fesm2022/techlify-inventory-common-purchase-order.service-ztJ5RRH5.mjs +40 -0
  16. package/fesm2022/techlify-inventory-common-purchase-order.service-ztJ5RRH5.mjs.map +1 -0
  17. package/fesm2022/techlify-inventory-common-recipient.module-gxR77BIj.mjs +647 -0
  18. package/fesm2022/techlify-inventory-common-recipient.module-gxR77BIj.mjs.map +1 -0
  19. package/fesm2022/techlify-inventory-common-shared.module-DP-FVqea.mjs +102 -0
  20. package/fesm2022/techlify-inventory-common-shared.module-DP-FVqea.mjs.map +1 -0
  21. package/fesm2022/techlify-inventory-common-stock-allocation-list.component-Du-VCtbs.mjs +382 -0
  22. package/fesm2022/techlify-inventory-common-stock-allocation-list.component-Du-VCtbs.mjs.map +1 -0
  23. package/fesm2022/techlify-inventory-common-stock-issue-form.component-DfgbqIKn.mjs +486 -0
  24. package/fesm2022/techlify-inventory-common-stock-issue-form.component-DfgbqIKn.mjs.map +1 -0
  25. package/fesm2022/techlify-inventory-common-stock-issue-page.module-DX9n3X1T.mjs +2509 -0
  26. package/fesm2022/techlify-inventory-common-stock-issue-page.module-DX9n3X1T.mjs.map +1 -0
  27. package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-D8aIc5Oh.mjs +208 -0
  28. package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-D8aIc5Oh.mjs.map +1 -0
  29. package/fesm2022/techlify-inventory-common-stock-issue-product.service-BRbfc5KP.mjs +38 -0
  30. package/fesm2022/techlify-inventory-common-stock-issue-product.service-BRbfc5KP.mjs.map +1 -0
  31. package/fesm2022/techlify-inventory-common-stock-issue-view.component-Cp_0YkKh.mjs +239 -0
  32. package/fesm2022/techlify-inventory-common-stock-issue-view.component-Cp_0YkKh.mjs.map +1 -0
  33. package/fesm2022/techlify-inventory-common-stock-issue.service-CLHasWVp.mjs +38 -0
  34. package/fesm2022/techlify-inventory-common-stock-issue.service-CLHasWVp.mjs.map +1 -0
  35. package/fesm2022/techlify-inventory-common-stock-receipts.module-BPxUGNbD.mjs +4195 -0
  36. package/fesm2022/techlify-inventory-common-stock-receipts.module-BPxUGNbD.mjs.map +1 -0
  37. package/fesm2022/techlify-inventory-common-techlify-filter.module-BdRNWNHi.mjs +464 -0
  38. package/fesm2022/techlify-inventory-common-techlify-filter.module-BdRNWNHi.mjs.map +1 -0
  39. package/fesm2022/techlify-inventory-common-techlify-form-service-D9K3W2jt.mjs +13 -0
  40. package/fesm2022/techlify-inventory-common-techlify-form-service-D9K3W2jt.mjs.map +1 -0
  41. package/fesm2022/techlify-inventory-common.mjs +10803 -2
  42. package/fesm2022/techlify-inventory-common.mjs.map +1 -1
  43. package/package.json +9 -11
  44. package/types/techlify-inventory-common.d.ts +1792 -0
  45. package/esm2022/lib/inventory-common/category/category-form/category-form.component.mjs +0 -75
  46. package/esm2022/lib/inventory-common/category/category-form-button/category-form-button.component.mjs +0 -32
  47. package/esm2022/lib/inventory-common/category/category-list-page/category-list-page.component.mjs +0 -64
  48. package/esm2022/lib/inventory-common/category/category-routing.module.mjs +0 -29
  49. package/esm2022/lib/inventory-common/category/category-view/category-view.component.mjs +0 -46
  50. package/esm2022/lib/inventory-common/category/category.module.mjs +0 -62
  51. package/esm2022/lib/inventory-common/category/category.service.mjs +0 -18
  52. package/esm2022/lib/inventory-common/incident/incident-form/incident-form.component.mjs +0 -113
  53. package/esm2022/lib/inventory-common/incident/incident-form-button/incident-form-button.component.mjs +0 -45
  54. package/esm2022/lib/inventory-common/incident/incident-list/incident-list.component.mjs +0 -140
  55. package/esm2022/lib/inventory-common/incident/incident-routing.module.mjs +0 -24
  56. package/esm2022/lib/inventory-common/incident/incident.module.mjs +0 -22
  57. package/esm2022/lib/inventory-common/incident/incident.service.mjs +0 -18
  58. package/esm2022/lib/inventory-common/inventory-common-routing.module.mjs +0 -81
  59. package/esm2022/lib/inventory-common/inventory-common.module.mjs +0 -43
  60. package/esm2022/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.mjs +0 -44
  61. package/esm2022/lib/inventory-common/inventory-value-report.service.mjs +0 -21
  62. package/esm2022/lib/inventory-common/location/location-form/location-form.component.mjs +0 -63
  63. package/esm2022/lib/inventory-common/location/location-form-button/location-form-button.component.mjs +0 -47
  64. package/esm2022/lib/inventory-common/location/location-information/location-information.component.mjs +0 -36
  65. package/esm2022/lib/inventory-common/location/location-list/location-list.component.mjs +0 -81
  66. package/esm2022/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.mjs +0 -80
  67. package/esm2022/lib/inventory-common/location/location-routing.module.mjs +0 -38
  68. package/esm2022/lib/inventory-common/location/location-status-changer/location-status-changer.component.mjs +0 -64
  69. package/esm2022/lib/inventory-common/location/location-view/location-view.component.mjs +0 -52
  70. package/esm2022/lib/inventory-common/location/location.module.mjs +0 -22
  71. package/esm2022/lib/inventory-common/location/location.service.mjs +0 -33
  72. package/esm2022/lib/inventory-common/location/shelf/shelf-form/shelf-form.component.mjs +0 -86
  73. package/esm2022/lib/inventory-common/location/shelf/shelf-form-button/shelf-form-button.component.mjs +0 -39
  74. package/esm2022/lib/inventory-common/location/shelf/shelf-list/shelf-list.component.mjs +0 -103
  75. package/esm2022/lib/inventory-common/location/shelf/shelf-routing.module.mjs +0 -24
  76. package/esm2022/lib/inventory-common/location/shelf/shelf.module.mjs +0 -22
  77. package/esm2022/lib/inventory-common/location/shelf/shelf.service.mjs +0 -20
  78. package/esm2022/lib/inventory-common/low-stock-report.service.mjs +0 -23
  79. package/esm2022/lib/inventory-common/material.module.mjs +0 -172
  80. package/esm2022/lib/inventory-common/measure/measure-form/measure-form.component.mjs +0 -63
  81. package/esm2022/lib/inventory-common/measure/measure-list/measure-list.component.mjs +0 -75
  82. package/esm2022/lib/inventory-common/measure/measure-routing.module.mjs +0 -24
  83. package/esm2022/lib/inventory-common/measure/measure.module.mjs +0 -43
  84. package/esm2022/lib/inventory-common/measure/measure.service.mjs +0 -18
  85. package/esm2022/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.mjs +0 -47
  86. package/esm2022/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.module.mjs +0 -22
  87. package/esm2022/lib/inventory-common/product/product-basic-info/product-basic-info.component.mjs +0 -58
  88. package/esm2022/lib/inventory-common/product/product-batch-update-form/product-batch-update-form.component.mjs +0 -54
  89. package/esm2022/lib/inventory-common/product/product-delete-button/product-delete-button.component.mjs +0 -54
  90. package/esm2022/lib/inventory-common/product/product-form/product-form.component.mjs +0 -258
  91. package/esm2022/lib/inventory-common/product/product-form-button/product-form-button.component.mjs +0 -15
  92. package/esm2022/lib/inventory-common/product/product-form.service.mjs +0 -17
  93. package/esm2022/lib/inventory-common/product/product-import-page/product-import-page.component.mjs +0 -66
  94. package/esm2022/lib/inventory-common/product/product-list/product-list.component.mjs +0 -177
  95. package/esm2022/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.mjs +0 -61
  96. package/esm2022/lib/inventory-common/product/product-measure-form/product-measure-form.component.mjs +0 -101
  97. package/esm2022/lib/inventory-common/product/product-measures-list/product-measures-list.component.mjs +0 -145
  98. package/esm2022/lib/inventory-common/product/product-nav-bar/product-nav-bar.component.mjs +0 -12
  99. package/esm2022/lib/inventory-common/product/product-quick-search/product-quick-search.component.mjs +0 -69
  100. package/esm2022/lib/inventory-common/product/product-routing.module.mjs +0 -68
  101. package/esm2022/lib/inventory-common/product/product-search/product-search.component.mjs +0 -151
  102. package/esm2022/lib/inventory-common/product/product-search/product-search.module.mjs +0 -39
  103. package/esm2022/lib/inventory-common/product/product-statistics.service.mjs +0 -23
  104. package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.mjs +0 -57
  105. package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.module.mjs +0 -18
  106. package/esm2022/lib/inventory-common/product/product-summary.service.mjs +0 -20
  107. package/esm2022/lib/inventory-common/product/product-view-page/product-view-page.component.mjs +0 -98
  108. package/esm2022/lib/inventory-common/product/product.module.mjs +0 -145
  109. package/esm2022/lib/inventory-common/product/product.service.mjs +0 -20
  110. package/esm2022/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.mjs +0 -15
  111. package/esm2022/lib/inventory-common/product-batch.service.mjs +0 -20
  112. package/esm2022/lib/inventory-common/rating/rating-form/rating-form.component.mjs +0 -112
  113. package/esm2022/lib/inventory-common/rating/rating-form-button/rating-form-button.component.mjs +0 -45
  114. package/esm2022/lib/inventory-common/rating/rating-list/rating-list.component.mjs +0 -135
  115. package/esm2022/lib/inventory-common/rating/rating-routing.module.mjs +0 -23
  116. package/esm2022/lib/inventory-common/rating/rating.module.mjs +0 -22
  117. package/esm2022/lib/inventory-common/rating/rating.service.mjs +0 -18
  118. package/esm2022/lib/inventory-common/recipient/recipient-form/recipient-form.component.mjs +0 -59
  119. package/esm2022/lib/inventory-common/recipient/recipient-list/recipient-list.component.mjs +0 -49
  120. package/esm2022/lib/inventory-common/recipient/recipient-routing.module.mjs +0 -24
  121. package/esm2022/lib/inventory-common/recipient/recipient.module.mjs +0 -18
  122. package/esm2022/lib/inventory-common/recipient/recipient.service.mjs +0 -18
  123. package/esm2022/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.mjs +0 -152
  124. package/esm2022/lib/inventory-common/reports/low-stock-report/low-stock-report.component.mjs +0 -161
  125. package/esm2022/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-product-data.service.mjs +0 -20
  126. package/esm2022/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-summary-report.component.mjs +0 -98
  127. package/esm2022/lib/inventory-common/services/techlify-form-service.mjs +0 -11
  128. package/esm2022/lib/inventory-common/shared/export-to-excel-button/export-to-excel-button.component.mjs +0 -58
  129. package/esm2022/lib/inventory-common/shared.module.mjs +0 -67
  130. package/esm2022/lib/inventory-common/stock-allocation/stock-allocation-list/stock-allocation-list.component.mjs +0 -81
  131. package/esm2022/lib/inventory-common/stock-allocation/stock-allocation.service.mjs +0 -16
  132. package/esm2022/lib/inventory-common/stock-issue/stock-issue-form/stock-issue-form.component.mjs +0 -198
  133. package/esm2022/lib/inventory-common/stock-issue/stock-issue-import-page/stock-issue-import-page.component.mjs +0 -59
  134. package/esm2022/lib/inventory-common/stock-issue/stock-issue-list/stock-issue-list.component.mjs +0 -149
  135. package/esm2022/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.component.mjs +0 -91
  136. package/esm2022/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.module.mjs +0 -82
  137. 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
  138. package/esm2022/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form.component.mjs +0 -102
  139. package/esm2022/lib/inventory-common/stock-issue/stock-issue-product-view/stock-issue-product-view.component.mjs +0 -59
  140. package/esm2022/lib/inventory-common/stock-issue/stock-issue-product.service.mjs +0 -16
  141. package/esm2022/lib/inventory-common/stock-issue/stock-issue-products-list/stock-issue-products-list.component.mjs +0 -163
  142. package/esm2022/lib/inventory-common/stock-issue/stock-issue-routing.module.mjs +0 -51
  143. package/esm2022/lib/inventory-common/stock-issue/stock-issue-single-product-form/stock-issue-single-product-form.component.mjs +0 -201
  144. package/esm2022/lib/inventory-common/stock-issue/stock-issue-view/stock-issue-view.component.mjs +0 -64
  145. package/esm2022/lib/inventory-common/stock-issue/stock-issue.module.mjs +0 -47
  146. package/esm2022/lib/inventory-common/stock-issue/stock-issue.service.mjs +0 -18
  147. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.component.mjs +0 -226
  148. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-import-page/stock-receipt-import-page.component.mjs +0 -74
  149. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-list/stock-receipt-list.component.mjs +0 -152
  150. 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
  151. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form.component.mjs +0 -80
  152. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.mjs +0 -149
  153. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-view/stock-receipt-product-view.component.mjs +0 -59
  154. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product.service.mjs +0 -18
  155. 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
  156. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-view/stock-receipt-view.component.mjs +0 -54
  157. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt.service.mjs +0 -18
  158. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-page/stock-receipts-page.component.mjs +0 -70
  159. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-routing.module.mjs +0 -52
  160. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts.module.mjs +0 -104
  161. package/esm2022/lib/inventory-common/stock-summary.service.mjs +0 -26
  162. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.mjs +0 -98
  163. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.mjs +0 -139
  164. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer.service.mjs +0 -18
  165. package/esm2022/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.mjs +0 -59
  166. package/esm2022/lib/inventory-common/supplier/payee-selector/payee-selector.module.mjs +0 -21
  167. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-form/purchase-order-form.component.mjs +0 -156
  168. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-listing/purchase-order-listing.component.mjs +0 -67
  169. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form/purchase-order-product-form.component.mjs +0 -74
  170. 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
  171. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.mjs +0 -61
  172. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product.service.mjs +0 -20
  173. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-view/purchase-order-view.component.mjs +0 -64
  174. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order.service.mjs +0 -20
  175. package/esm2022/lib/inventory-common/supplier/supplier-branch-delete-button/supplier-branch-delete-button.component.mjs +0 -63
  176. package/esm2022/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form-button/supplier-branch-form-button.component.mjs +0 -47
  177. package/esm2022/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form.component.mjs +0 -79
  178. package/esm2022/lib/inventory-common/supplier/supplier-branch.service.mjs +0 -18
  179. package/esm2022/lib/inventory-common/supplier/supplier-branches-list/supplier-branches-list.component.mjs +0 -79
  180. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form.component.mjs +0 -94
  181. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form.service.mjs +0 -17
  182. package/esm2022/lib/inventory-common/supplier/supplier-information/supplier-information.component.mjs +0 -73
  183. package/esm2022/lib/inventory-common/supplier/supplier-list/supplier-list.component.mjs +0 -68
  184. package/esm2022/lib/inventory-common/supplier/supplier-routing.module.mjs +0 -51
  185. package/esm2022/lib/inventory-common/supplier/supplier-type.service.mjs +0 -25
  186. package/esm2022/lib/inventory-common/supplier/supplier-view/supplier-view.component.mjs +0 -70
  187. package/esm2022/lib/inventory-common/supplier/supplier.component.mjs +0 -20
  188. package/esm2022/lib/inventory-common/supplier/supplier.module.mjs +0 -64
  189. package/esm2022/lib/inventory-common/supplier/supplier.service.mjs +0 -20
  190. package/esm2022/lib/inventory-common/techlify-filter/techlify-filter.component.mjs +0 -116
  191. package/esm2022/lib/inventory-common/techlify-filter/techlify-filter.module.mjs +0 -42
  192. package/esm2022/public-api.mjs +0 -71
  193. package/esm2022/techlify-inventory-common.mjs +0 -5
  194. package/fesm2022/techlify-inventory-common-category.module-CGzFP2S_.mjs +0 -288
  195. package/fesm2022/techlify-inventory-common-category.module-CGzFP2S_.mjs.map +0 -1
  196. package/fesm2022/techlify-inventory-common-purchase-order-view.component-5mLg0IvH.mjs +0 -227
  197. package/fesm2022/techlify-inventory-common-purchase-order-view.component-5mLg0IvH.mjs.map +0 -1
  198. package/fesm2022/techlify-inventory-common-recipient.module-DLoP6xI3.mjs +0 -147
  199. package/fesm2022/techlify-inventory-common-recipient.module-DLoP6xI3.mjs.map +0 -1
  200. package/fesm2022/techlify-inventory-common-stock-issue-form.component-MYEKRteU.mjs +0 -199
  201. package/fesm2022/techlify-inventory-common-stock-issue-form.component-MYEKRteU.mjs.map +0 -1
  202. package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-C-c83FEn.mjs +0 -60
  203. package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-C-c83FEn.mjs.map +0 -1
  204. package/fesm2022/techlify-inventory-common-stock-issue-view.component-Co7hXpDq.mjs +0 -66
  205. package/fesm2022/techlify-inventory-common-stock-issue-view.component-Co7hXpDq.mjs.map +0 -1
  206. package/fesm2022/techlify-inventory-common-techlify-inventory-common-CWxzlvVi.mjs +0 -7214
  207. package/fesm2022/techlify-inventory-common-techlify-inventory-common-CWxzlvVi.mjs.map +0 -1
  208. package/index.d.ts +0 -5
  209. package/lib/inventory-common/category/category-form/category-form.component.d.ts +0 -18
  210. package/lib/inventory-common/category/category-form-button/category-form-button.component.d.ts +0 -13
  211. package/lib/inventory-common/category/category-list-page/category-list-page.component.d.ts +0 -20
  212. package/lib/inventory-common/category/category-routing.module.d.ts +0 -7
  213. package/lib/inventory-common/category/category-view/category-view.component.d.ts +0 -16
  214. package/lib/inventory-common/category/category.module.d.ts +0 -20
  215. package/lib/inventory-common/category/category.service.d.ts +0 -7
  216. package/lib/inventory-common/incident/incident-form/incident-form.component.d.ts +0 -19
  217. package/lib/inventory-common/incident/incident-form-button/incident-form-button.component.d.ts +0 -15
  218. package/lib/inventory-common/incident/incident-list/incident-list.component.d.ts +0 -22
  219. package/lib/inventory-common/incident/incident-routing.module.d.ts +0 -7
  220. package/lib/inventory-common/incident/incident.module.d.ts +0 -8
  221. package/lib/inventory-common/incident/incident.service.d.ts +0 -7
  222. package/lib/inventory-common/inventory-common-routing.module.d.ts +0 -7
  223. package/lib/inventory-common/inventory-common.module.d.ts +0 -14
  224. package/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.d.ts +0 -14
  225. package/lib/inventory-common/inventory-value-report.service.d.ts +0 -9
  226. package/lib/inventory-common/location/location-form/location-form.component.d.ts +0 -18
  227. package/lib/inventory-common/location/location-form-button/location-form-button.component.d.ts +0 -13
  228. package/lib/inventory-common/location/location-information/location-information.component.d.ts +0 -12
  229. package/lib/inventory-common/location/location-list/location-list.component.d.ts +0 -18
  230. package/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.d.ts +0 -18
  231. package/lib/inventory-common/location/location-routing.module.d.ts +0 -7
  232. package/lib/inventory-common/location/location-status-changer/location-status-changer.component.d.ts +0 -17
  233. package/lib/inventory-common/location/location-view/location-view.component.d.ts +0 -16
  234. package/lib/inventory-common/location/location.module.d.ts +0 -8
  235. package/lib/inventory-common/location/location.service.d.ts +0 -15
  236. package/lib/inventory-common/location/shelf/shelf-form/shelf-form.component.d.ts +0 -18
  237. package/lib/inventory-common/location/shelf/shelf-form-button/shelf-form-button.component.d.ts +0 -13
  238. package/lib/inventory-common/location/shelf/shelf-list/shelf-list.component.d.ts +0 -19
  239. package/lib/inventory-common/location/shelf/shelf-routing.module.d.ts +0 -7
  240. package/lib/inventory-common/location/shelf/shelf.module.d.ts +0 -8
  241. package/lib/inventory-common/location/shelf/shelf.service.d.ts +0 -8
  242. package/lib/inventory-common/low-stock-report.service.d.ts +0 -10
  243. package/lib/inventory-common/material.module.d.ts +0 -40
  244. package/lib/inventory-common/measure/measure-form/measure-form.component.d.ts +0 -21
  245. package/lib/inventory-common/measure/measure-list/measure-list.component.d.ts +0 -19
  246. package/lib/inventory-common/measure/measure-routing.module.d.ts +0 -7
  247. package/lib/inventory-common/measure/measure.module.d.ts +0 -14
  248. package/lib/inventory-common/measure/measure.service.d.ts +0 -7
  249. package/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.d.ts +0 -13
  250. package/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.module.d.ts +0 -12
  251. package/lib/inventory-common/product/product-basic-info/product-basic-info.component.d.ts +0 -21
  252. package/lib/inventory-common/product/product-batch-update-form/product-batch-update-form.component.d.ts +0 -17
  253. package/lib/inventory-common/product/product-delete-button/product-delete-button.component.d.ts +0 -26
  254. package/lib/inventory-common/product/product-form/product-form.component.d.ts +0 -46
  255. package/lib/inventory-common/product/product-form-button/product-form-button.component.d.ts +0 -7
  256. package/lib/inventory-common/product/product-form.service.d.ts +0 -7
  257. package/lib/inventory-common/product/product-import-page/product-import-page.component.d.ts +0 -10
  258. package/lib/inventory-common/product/product-list/product-list.component.d.ts +0 -34
  259. package/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.d.ts +0 -18
  260. package/lib/inventory-common/product/product-measure-form/product-measure-form.component.d.ts +0 -33
  261. package/lib/inventory-common/product/product-measures-list/product-measures-list.component.d.ts +0 -43
  262. package/lib/inventory-common/product/product-nav-bar/product-nav-bar.component.d.ts +0 -5
  263. package/lib/inventory-common/product/product-quick-search/product-quick-search.component.d.ts +0 -15
  264. package/lib/inventory-common/product/product-routing.module.d.ts +0 -7
  265. package/lib/inventory-common/product/product-search/product-search.component.d.ts +0 -48
  266. package/lib/inventory-common/product/product-search/product-search.module.d.ts +0 -13
  267. package/lib/inventory-common/product/product-statistics.service.d.ts +0 -9
  268. package/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.d.ts +0 -15
  269. package/lib/inventory-common/product/product-summary-chart/product-summary-chart.module.d.ts +0 -10
  270. package/lib/inventory-common/product/product-summary.service.d.ts +0 -8
  271. package/lib/inventory-common/product/product-view-page/product-view-page.component.d.ts +0 -44
  272. package/lib/inventory-common/product/product.module.d.ts +0 -31
  273. package/lib/inventory-common/product/product.service.d.ts +0 -8
  274. package/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.d.ts +0 -6
  275. package/lib/inventory-common/product-batch.service.d.ts +0 -8
  276. package/lib/inventory-common/rating/rating-form/rating-form.component.d.ts +0 -19
  277. package/lib/inventory-common/rating/rating-form-button/rating-form-button.component.d.ts +0 -15
  278. package/lib/inventory-common/rating/rating-list/rating-list.component.d.ts +0 -22
  279. package/lib/inventory-common/rating/rating-routing.module.d.ts +0 -7
  280. package/lib/inventory-common/rating/rating.module.d.ts +0 -8
  281. package/lib/inventory-common/rating/rating.service.d.ts +0 -7
  282. package/lib/inventory-common/recipient/recipient-form/recipient-form.component.d.ts +0 -21
  283. package/lib/inventory-common/recipient/recipient-list/recipient-list.component.d.ts +0 -16
  284. package/lib/inventory-common/recipient/recipient-routing.module.d.ts +0 -7
  285. package/lib/inventory-common/recipient/recipient.module.d.ts +0 -9
  286. package/lib/inventory-common/recipient/recipient.service.d.ts +0 -7
  287. package/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.d.ts +0 -27
  288. package/lib/inventory-common/reports/low-stock-report/low-stock-report.component.d.ts +0 -25
  289. package/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-product-data.service.d.ts +0 -8
  290. package/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-summary-report.component.d.ts +0 -25
  291. package/lib/inventory-common/services/techlify-form-service.d.ts +0 -5
  292. package/lib/inventory-common/shared/export-to-excel-button/export-to-excel-button.component.d.ts +0 -12
  293. package/lib/inventory-common/shared.module.d.ts +0 -13
  294. package/lib/inventory-common/stock-allocation/stock-allocation-list/stock-allocation-list.component.d.ts +0 -19
  295. package/lib/inventory-common/stock-allocation/stock-allocation.service.d.ts +0 -7
  296. package/lib/inventory-common/stock-issue/stock-issue-form/stock-issue-form.component.d.ts +0 -45
  297. package/lib/inventory-common/stock-issue/stock-issue-import-page/stock-issue-import-page.component.d.ts +0 -10
  298. package/lib/inventory-common/stock-issue/stock-issue-list/stock-issue-list.component.d.ts +0 -33
  299. package/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.component.d.ts +0 -30
  300. package/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.module.d.ts +0 -18
  301. 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
  302. package/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form.component.d.ts +0 -21
  303. package/lib/inventory-common/stock-issue/stock-issue-product-view/stock-issue-product-view.component.d.ts +0 -19
  304. package/lib/inventory-common/stock-issue/stock-issue-product.service.d.ts +0 -7
  305. package/lib/inventory-common/stock-issue/stock-issue-products-list/stock-issue-products-list.component.d.ts +0 -40
  306. package/lib/inventory-common/stock-issue/stock-issue-routing.module.d.ts +0 -7
  307. package/lib/inventory-common/stock-issue/stock-issue-single-product-form/stock-issue-single-product-form.component.d.ts +0 -42
  308. package/lib/inventory-common/stock-issue/stock-issue-view/stock-issue-view.component.d.ts +0 -19
  309. package/lib/inventory-common/stock-issue/stock-issue.module.d.ts +0 -14
  310. package/lib/inventory-common/stock-issue/stock-issue.service.d.ts +0 -7
  311. package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.component.d.ts +0 -48
  312. package/lib/inventory-common/stock-receipts/stock-receipt-import-page/stock-receipt-import-page.component.d.ts +0 -10
  313. package/lib/inventory-common/stock-receipts/stock-receipt-list/stock-receipt-list.component.d.ts +0 -30
  314. 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
  315. package/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form.component.d.ts +0 -17
  316. package/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.d.ts +0 -31
  317. package/lib/inventory-common/stock-receipts/stock-receipt-product-view/stock-receipt-product-view.component.d.ts +0 -19
  318. package/lib/inventory-common/stock-receipts/stock-receipt-product.service.d.ts +0 -7
  319. 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
  320. package/lib/inventory-common/stock-receipts/stock-receipt-view/stock-receipt-view.component.d.ts +0 -19
  321. package/lib/inventory-common/stock-receipts/stock-receipt.service.d.ts +0 -7
  322. package/lib/inventory-common/stock-receipts/stock-receipts-page/stock-receipts-page.component.d.ts +0 -21
  323. package/lib/inventory-common/stock-receipts/stock-receipts-routing.module.d.ts +0 -7
  324. package/lib/inventory-common/stock-receipts/stock-receipts.module.d.ts +0 -22
  325. package/lib/inventory-common/stock-summary.service.d.ts +0 -14
  326. package/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.d.ts +0 -19
  327. package/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.d.ts +0 -28
  328. package/lib/inventory-common/stock-transfer/stock-transfer.service.d.ts +0 -7
  329. package/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.d.ts +0 -20
  330. package/lib/inventory-common/supplier/payee-selector/payee-selector.module.d.ts +0 -11
  331. package/lib/inventory-common/supplier/purchase-order/purchase-order-form/purchase-order-form.component.d.ts +0 -30
  332. package/lib/inventory-common/supplier/purchase-order/purchase-order-listing/purchase-order-listing.component.d.ts +0 -16
  333. package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form/purchase-order-product-form.component.d.ts +0 -16
  334. 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
  335. package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.d.ts +0 -15
  336. package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product.service.d.ts +0 -8
  337. package/lib/inventory-common/supplier/purchase-order/purchase-order-view/purchase-order-view.component.d.ts +0 -19
  338. package/lib/inventory-common/supplier/purchase-order/purchase-order.service.d.ts +0 -8
  339. package/lib/inventory-common/supplier/supplier-branch-delete-button/supplier-branch-delete-button.component.d.ts +0 -18
  340. package/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form-button/supplier-branch-form-button.component.d.ts +0 -13
  341. package/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form.component.d.ts +0 -22
  342. package/lib/inventory-common/supplier/supplier-branch.service.d.ts +0 -7
  343. package/lib/inventory-common/supplier/supplier-branches-list/supplier-branches-list.component.d.ts +0 -18
  344. package/lib/inventory-common/supplier/supplier-form/supplier-form.component.d.ts +0 -25
  345. package/lib/inventory-common/supplier/supplier-form/supplier-form.service.d.ts +0 -7
  346. package/lib/inventory-common/supplier/supplier-information/supplier-information.component.d.ts +0 -18
  347. package/lib/inventory-common/supplier/supplier-list/supplier-list.component.d.ts +0 -20
  348. package/lib/inventory-common/supplier/supplier-routing.module.d.ts +0 -7
  349. package/lib/inventory-common/supplier/supplier-type.service.d.ts +0 -13
  350. package/lib/inventory-common/supplier/supplier-view/supplier-view.component.d.ts +0 -20
  351. package/lib/inventory-common/supplier/supplier.component.d.ts +0 -10
  352. package/lib/inventory-common/supplier/supplier.module.d.ts +0 -20
  353. package/lib/inventory-common/supplier/supplier.service.d.ts +0 -8
  354. package/lib/inventory-common/techlify-filter/techlify-filter.component.d.ts +0 -31
  355. package/lib/inventory-common/techlify-filter/techlify-filter.module.d.ts +0 -12
  356. package/public-api.d.ts +0 -67
@@ -0,0 +1 @@
1
+ {"version":3,"file":"techlify-inventory-common-stock-receipts.module-BPxUGNbD.mjs","names":["i2","i3.SupplierService","i5","i6","i7","i8","i9","i1","i2","i3","i2.StockReceiptService","i3","i4.LocationService","i5","MaterialModule","i6","i7","i8","i9","i10","i11.PayeeSelectorComponent","i2","i3.StockReceiptProductService","MaterialModule","i5","i6","i7","i1","i2","i1.StockReceiptProductService","i2","i3","i4","i11.ProductCategoryBadgesComponent","i12.StockReceiptProductFormButtonComponent","i1.StockReceiptService","i2","i3","i4","i5","i6","i7","i8","i9","i11.ProductCategoryBadgesComponent","i12","i1","i3","i4","i5","i6","i7","i8","i9.ExportToExcelButtonComponent","i10.StockReceiptListComponent","i11.StockReceiptProductsListComponent","MaterialModule","i1","i2.StockReceiptService","i3","i4","i6","i2","i3.StockReceiptService","i4","i5.LocationService","i6","MaterialModule","i7","i8","i9","i10","i12","i13","i1","i2.StockReceiptProductService","i3","i4","i6","i1","MaterialModule"],"sources":["../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier.service.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-form/supplier-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/supplier-form/supplier-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/payee-selector/payee-selector.module.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt.service.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-single-product-form/stock-receipt-simple-form/stock-receipt-single-product-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-single-product-form/stock-receipt-simple-form/stock-receipt-single-product-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-product.service.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form-button/stock-receipt-product-form-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form-button/stock-receipt-product-form-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-list/stock-receipt-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-list/stock-receipt-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipts-page/stock-receipts-page.component.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipts-page/stock-receipts-page.component.html","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-import-page/stock-receipt-import-page.component.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-import-page/stock-receipt-import-page.component.html","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-view/stock-receipt-view.component.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-view/stock-receipt-view.component.html","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-product-view/stock-receipt-product-view.component.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipt-product-view/stock-receipt-product-view.component.html","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipts-routing.module.ts","../../../projects/inventory-common/src/lib/inventory-common/stock-receipts/stock-receipts.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\nimport { HttpParams } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SupplierService extends TechlifyService {\n constructor(private httpService: HttpService) {\n super(httpService, 'suppliers');\n }\n}\n","import { Component, Inject, OnInit, Optional, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { FormBuilder, FormControl, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FormValidatorService, TechlifyFormComponent } from 'ngx-techlify-core';\nimport { finalize } from 'rxjs';\nimport { SupplierService } from '../supplier.service';\nimport { SharedModule } from '../../shared.module';\n\n@Component({\n selector: 'app-supplier-form',\n imports: [SharedModule],\n changeDetection: ChangeDetectionStrategy.Eager,\n templateUrl: './supplier-form.component.html',\n})\nexport class SupplierFormComponent extends TechlifyFormComponent implements OnInit {\n override errorMessages: any = {\n company_name: {\n required: 'Company Name is required',\n },\n supplier_type_id: {\n required: 'Supplier Type is required',\n },\n address: {\n required: 'The address field is required',\n },\n };\n\n isCreateAnother: FormControl = new FormControl(false);\n totalRecordSaved = signal<number>(0);\n\n constructor(\n protected override formValidatorService: FormValidatorService,\n private fb: FormBuilder,\n protected override service: SupplierService,\n public override dialogRef: MatDialogRef<SupplierFormComponent>,\n @Inject(MAT_DIALOG_DATA) @Optional() public data: { model?: any }\n ) {\n super(formValidatorService, service);\n this.form = this.fb.group({\n id: [''],\n contact_name: [''],\n company_name: ['', Validators.required],\n details: [''],\n address: ['', Validators.required],\n phone: [''],\n email: [''],\n supplier_type_id: ['', Validators.required],\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 override submit(): void {\n if (!this.isCreateAnother.value) {\n super.submit();\n return;\n }\n\n this.form.markAllAsTouched();\n if (!this.form.valid) {\n return;\n }\n\n this.isWorking = true;\n const model = this.form.value;\n (this.isUpdate ? this.service.update(model) : this.service.store(model))\n .pipe(finalize(() => (this.isWorking = false)))\n .subscribe((res: any) => {\n this.createdEntries.unshift(res?.item);\n this.totalRecordSaved.set(this.totalRecordSaved() + 1);\n this.alertService.addAlert('Supplier saved successfully. You can create another one now.', 'success');\n this.form.reset();\n });\n }\n}\n","<mat-card-title class=\"d-flex flex-row justify-content-center align-items-center\">\n Supplier Form\n</mat-card-title>\n<mat-card-content>\n <form class=\"d-flex flex-column gap-3\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field>\n <mat-label>Company Name</mat-label>\n <input autocomplete=\"off\" formControlName=\"company_name\" matInput placeholder=\"Company Name\" required />\n @if (isFieldValid('company_name')) {\n <mat-error>\n {{ getErrorMessage('company_name') }}\n </mat-error>\n }\n </mat-form-field>\n <mat-form-field>\n <mat-label>Contact Name</mat-label>\n <input autocomplete=\"off\" formControlName=\"contact_name\" matInput placeholder=\"Contact Name\" />\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Types</mat-label>\n <app-searchable-selector apiUrl=\"api/supplier-types\" formControlName=\"supplier_type_id\" titleField=\"title\">\n </app-searchable-selector>\n @if (isFieldValid('supplier_type_id')) {\n <mat-error>\n {{ getErrorMessage('supplier_type_id') }}\n </mat-error>\n }\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Phone</mat-label>\n <input autocomplete=\"off\" formControlName=\"phone\" matInput placeholder=\"Phone\" />\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Email</mat-label>\n <input autocomplete=\"off\" formControlName=\"email\" matInput placeholder=\"Email\" type=\"email\" />\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Address</mat-label>\n <input autocomplete=\"off\" formControlName=\"address\" matInput placeholder=\"Address\" required />\n @if (isFieldValid('address')) {\n <mat-error>\n {{ getErrorMessage('address') }}\n </mat-error>\n }\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Details</mat-label>\n <input autocomplete=\"off\" formControlName=\"details\" matInput placeholder=\"Details\" />\n </mat-form-field>\n\n <div class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex flex-row gap-2 align-items-center\">\n <mat-checkbox [formControl]=\"isCreateAnother\">Create Another</mat-checkbox>\n <small class=\"text-secondary\">({{ totalRecordSaved() }} records saved successfully)</small>\n </div>\n\n <div class=\"d-flex justify-content-end gap-2\">\n <button type=\"button\" mat-flat-button [disabled]=\"isWorking\" (click)=\"closeDialog()\">Cancel</button>\n <button type=\"submit\" mat-raised-button color=\"primary\" [disabled]=\"isWorking\">Save</button>\n </div>\n </div>\n </form>\n</mat-card-content>\n","import { Component, forwardRef, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SupplierFormComponent } from '../../supplier-form/supplier-form.component';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\n@Component({\n selector: 'app-payee-selector',\n templateUrl: './payee-selector.component.html',\n styleUrls: ['./payee-selector.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PayeeSelectorComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class PayeeSelectorComponent implements ControlValueAccessor {\n @Input() label = 'Payee';\n @Input() appearance: MatFormFieldAppearance = 'fill';\n @Input() required: boolean = false;\n @Input() showAddButton: boolean = false;\n @Input() multiple: boolean = false;\n\n value: any;\n onChange: any = () => {};\n onTouch: any = () => {};\n\n writeValue(value: any): void {\n this.value = value;\n this.onChange(value);\n this.onTouch(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n protected readonly SupplierFormComponent = SupplierFormComponent;\n}\n","<mat-form-field [appearance]=\"appearance\" class=\"w-100\">\n <mat-label>{{ label }}</mat-label>\n <app-searchable-selector\n apiUrl=\"api/suppliers\"\n titleField=\"company_name\"\n sortBy=\"company_name|asc\"\n [required]=\"required\"\n [(ngModel)]=\"value\"\n #payeeSelector=\"ngModel\"\n name=\"payeeSelector\"\n [add]=\"showAddButton\"\n [itemComponent]=\"SupplierFormComponent\"\n (ngModelChange)=\"onChange($event)\"\n [addConfig]=\"{ width: '600px' }\"\n [ngModelOptions]=\"{ standalone: true }\"\n [multiple]=\"multiple\"\n >\n </app-searchable-selector>\n @if (payeeSelector.invalid && payeeSelector.touched) {\n <mat-error> The payee field is required. </mat-error>\n }\n</mat-form-field>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PayeeSelectorComponent } from './payee-selector/payee-selector.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SearchableSelectorModule } from 'ngx-techlify-core';\n\n@NgModule({\n declarations: [PayeeSelectorComponent],\n exports: [PayeeSelectorComponent],\n imports: [CommonModule, MatFormFieldModule, ReactiveFormsModule, SearchableSelectorModule, FormsModule],\n})\nexport class PayeeSelectorModule {}\n","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StockReceiptService extends TechlifyService {\n constructor(httpService: HttpService) {\n super(httpService, 'stock-receipts');\n }\n}\n","import { Component, Inject, OnInit, Optional, ChangeDetectionStrategy } from '@angular/core';\nimport { DateUtils, FormValidatorService, SearchableSelectorModule, TechlifyFeatureModule, TechlifyFormComponent, TechlifyIconModule } from 'ngx-techlify-core';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { StockReceiptService } from '../../stock-receipt.service';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { debounceTime, Observable } from 'rxjs';\nimport { LocationService } from '../../../location/location.service';\nimport { MaterialModule } from '../../../material.module';\nimport { PayeeSelectorModule } from '../../../supplier/payee-selector/payee-selector.module';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n selector: 'app-stock-receipt-single-product-form',\n templateUrl: './stock-receipt-single-product-form.component.html',\n styleUrls: ['./stock-receipt-single-product-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n ReactiveFormsModule,\n MaterialModule,\n MatDialogModule,\n PayeeSelectorModule,\n SearchableSelectorModule,\n TechlifyFeatureModule,\n TechlifyIconModule,\n RouterModule,\n ],\n})\nexport class StockReceiptSingleProductFormComponent extends TechlifyFormComponent implements OnInit {\n product: any;\n\n private locationsCountValue: number = 0;\n\n constructor(\n protected override formValidatorService: FormValidatorService,\n protected override service: StockReceiptService,\n private formBuilder: FormBuilder,\n private dateUtils: DateUtils,\n private locationService: LocationService,\n @Optional() public override dialogRef: MatDialogRef<StockReceiptSingleProductFormComponent>,\n @Inject(MAT_DIALOG_DATA) @Optional() public data: { model?: any; product?: any; latestLocationId?: any },\n ) {\n super(formValidatorService);\n this.errorMessages = {\n date: {\n required: 'The date field is required.',\n },\n quantity: {\n required: 'The quantity field is required.',\n },\n purchase_price: {\n required: 'The purchase price field is required.',\n },\n };\n\n this.form = this.formBuilder.group({\n id: [''],\n product_id: [''],\n supplier_id: [''],\n location_id: [''],\n date: [new Date(), Validators.required],\n quantity: [0, Validators.required],\n purchase_price: [0, Validators.required],\n amount: [0],\n particulars: [''],\n batch_number: [''],\n expires_on: [''],\n });\n }\n\n ngOnInit() {\n this.product = this.data?.product;\n const stockReceipt = this.data?.model;\n\n this.locationService.count({ status_id: '1' }).subscribe((count: number) => {\n this.locationsCountValue = count;\n });\n\n this.form\n .get('quantity')\n ?.valueChanges.pipe(debounceTime(500))\n .subscribe(() => this.updateTotalAmount());\n this.form\n .get('purchase_price')\n ?.valueChanges.pipe(debounceTime(500))\n .subscribe(() => this.updateTotalAmount());\n\n if (stockReceipt) {\n this.isUpdate = true;\n const receiptData: any = { ...stockReceipt };\n if (receiptData.date) receiptData.date = new Date(receiptData.date);\n if (receiptData?.batch) {\n receiptData.batch_number = receiptData.batch?.batch_number;\n receiptData.expires_on = receiptData.batch?.expires_on ? new Date(receiptData.batch.expires_on) : '';\n }\n this.form.patchValue(receiptData);\n\n const srp = stockReceipt.stock_receipt_products?.[0];\n if (srp) {\n this.product = srp.product;\n this.form.patchValue({\n product_id: srp.product_id,\n quantity: srp.quantity,\n location_id: srp.location_id,\n supplier_id: srp.supplier_id,\n particulars: srp.particulars,\n purchase_price: srp.purchase_price,\n amount: srp.amount,\n });\n }\n } else {\n if (this.product?.last_stock_receipt) {\n const { quantity, purchase_price, location_id } = this.product.last_stock_receipt;\n this.form.patchValue({ quantity: quantity ?? 0, purchase_price: purchase_price ?? 0, location_id });\n }\n }\n }\n\n get locationsCount(): number {\n return this.locationsCountValue;\n }\n\n save() {\n if (this.form.invalid) {\n this.form.markAllAsTouched();\n this.alertService.addAlert('Please check the form for errors', 'error');\n return;\n }\n const data: any = {\n ...this.form.value,\n products: [\n {\n ...this.form.value,\n with: 'batch',\n id: this.product.id,\n product_id: this.product.id\n }\n ],\n };\n if (data.date) {\n data.date = this.dateUtils.getYYYYMMDDString(data.date);\n }\n if (data?.expires_on) {\n data.expires_on = this.dateUtils.getYYYYMMDDString(data.expires_on);\n }\n this.isWorking = true;\n let request: Observable<any> = this.service.store(data);\n if (this.isUpdate) {\n request = this.service.update(data);\n }\n request.subscribe({\n next: (response: any) => {\n this.isWorking = false;\n this.dialogRef.close(response?.item.stock_receipt_products);\n this.alertService.addAlert('Stock Receipt Saved Successfully!', 'success');\n },\n error: () => (this.isWorking = false),\n });\n }\n\n private updateTotalAmount() {\n const { purchase_price, quantity } = this.form.value;\n const amount: any = parseFloat(purchase_price) * parseFloat(quantity) || 0;\n this.form.get('amount')?.setValue(amount);\n }\n}\n","<mat-card-content>\n <h5 class=\"text-center\">\n Stock Receipt Form\n\n @if (data.product) {\n for {{data.product?.name}}\n }\n </h5>\n <form [formGroup]=\"form\" class=\"d-flex flex-column gap-1 justify-content-start\" (submit)=\"save()\">\n <app-payee-selector label=\"Supplier\" formControlName=\"supplier_id\" appearance=\"fill\"\n [showAddButton]=\"true\"></app-payee-selector>\n\n @if (locationsCount > 1) {\n <mat-form-field appearance=\"fill\">\n <mat-label>Location</mat-label>\n <app-searchable-selector formControlName=\"location_id\" apiUrl=\"api/inventory-locations?status_ids=1\"\n [selectedValue]=\"$safeNavigationMigration(data.model?.stock_receipt_products?.[0]?.location)\" titleField=\"title\"></app-searchable-selector>\n </mat-form-field>\n }\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"datePicker\" formControlName=\"date\" (focus)=\"datePicker.open()\" />\n <mat-datepicker #datePicker></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>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"0\" />\n @if (isFieldValid('quantity')) {\n <mat-error>\n {{ getErrorMessage('quantity') }}\n </mat-error>\n }\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Purchase Price</mat-label>\n <input matInput formControlName=\"purchase_price\" type=\"number\" min=\"0\" />\n @if (isFieldValid('purchase_price')) {\n <mat-error>\n {{ getErrorMessage('purchase_price') }}\n </mat-error>\n }\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Total Value</mat-label>\n <input matInput formControlName=\"amount\" readonly type=\"number\" min=\"0\" />\n </mat-form-field>\n\n <div techlifyFeatureEnabled=\"product-batch-numbers\" class=\"d-flex flex-column gap-2 w-100\">\n <mat-form-field>\n <mat-label>Batch #</mat-label>\n <input type=\"text\" formControlName=\"batch_number\" matInput placeholder=\"Batch #\">\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Expires On</mat-label>\n <input matInput [matDatepicker]=\"expiresOnPicker\" formControlName=\"expires_on\"\n (focus)=\"expiresOnPicker.open()\" />\n <mat-datepicker #expiresOnPicker></mat-datepicker>\n </mat-form-field>\n </div>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" (click)=\"dialogRef.close()\" mat-flat-button type=\"button\">Cancel</button>\n </div>\n </form>\n</mat-card-content>","import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StockReceiptProductService extends TechlifyService {\n constructor(httpService: HttpService) {\n super(httpService, 'stock-receipt-products');\n }\n}\n","import { Component, Inject, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { FormValidatorService, SearchableSelectorModule, TechlifyFormComponent } from 'ngx-techlify-core';\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MaterialModule } from '../../material.module';\nimport { StockReceiptProductService } from '../stock-receipt-product.service';\nimport { debounceTime } from 'rxjs';\n\n@Component({\n selector: 'app-stock-receipt-product-form',\n templateUrl: './stock-receipt-product-form.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n ReactiveFormsModule,\n MaterialModule,\n SearchableSelectorModule,\n MatDialogTitle,\n MatDialogContent,\n ],\n})\nexport class StockReceiptProductFormComponent extends TechlifyFormComponent implements OnInit {\n\n constructor(\n formValidatorService: FormValidatorService,\n private fb: FormBuilder,\n protected override service: StockReceiptProductService,\n dialogRef: MatDialogRef<StockReceiptProductFormComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {\n super(formValidatorService);\n this.dialogRef = dialogRef;\n\n this.errorMessages = {\n product_id: { required: 'Product is required.' },\n quantity: { required: 'Quantity is required.', min: 'Quantity must be greater than or equal to 0.' },\n purchase_price: { required: 'Purchase price is required.', min: 'Purchase price must be at least 0.' },\n };\n\n this.form = this.fb.group({\n id: [''],\n stock_receipt_id: ['', Validators.required],\n product_id: ['', Validators.required],\n quantity: [0, [Validators.required, Validators.min(0)]],\n purchase_price: [0, [Validators.required, Validators.min(0)]],\n amount: [{ value: 0, disabled: true }],\n location_id: [''],\n particulars: [''],\n });\n }\n\n ngOnInit(): void {\n this.form.patchValue({ stock_receipt_id: this.data.stockReceiptId });\n\n this.form.get('quantity')?.valueChanges.pipe(\n debounceTime(300))\n .subscribe(() => this.updateAmount());\n this.form.get('purchase_price')?.valueChanges.pipe(\n debounceTime(300))\n .subscribe(() => this.updateAmount());\n\n const product = this.data.stockReceiptProduct;\n if (product) {\n this.isUpdate = true;\n this.form.patchValue(product);\n }\n }\n\n private updateAmount(): void {\n const quantity = this.form.get('quantity')?.value ?? 0;\n const purchasePrice = this.form.get('purchase_price')?.value ?? 0;\n this.form.get('amount')?.setValue(parseFloat(quantity) * parseFloat(purchasePrice) || 0);\n }\n\n cancel(): void {\n this.dialogRef.close();\n }\n}\n","<h3 mat-dialog-title class='text-center'>Stock Receipt Product Form</h3>\n\n<mat-dialog-content>\n <form [formGroup]=\"form\" (submit)=\"submit(form.getRawValue())\" class=\"d-flex flex-column gap-3 mt-2\">\n\n <mat-form-field class=\"w-100\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" apiUrl=\"api/products\" titleField=\"name\"\n [selectedValue]=\"data.stockReceiptProduct.product\" [cache]=\"true\"></app-searchable-selector>\n @if (isFieldValid('product_id')) {\n <mat-error>{{ getErrorMessage('product_id') }}</mat-error>\n }\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Quantity</mat-label>\n <input matInput type=\"number\" formControlName=\"quantity\" min=\"0\" step=\"any\">\n @if (isFieldValid('quantity')) {\n <mat-error>{{ getErrorMessage('quantity') }}</mat-error>\n }\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Purchase Price</mat-label>\n <input matInput type=\"number\" formControlName=\"purchase_price\" min=\"0\" step=\"any\">\n @if (isFieldValid('purchase_price')) {\n <mat-error>{{ getErrorMessage('purchase_price') }}</mat-error>\n }\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Total Amount</mat-label>\n <input matInput type=\"number\" formControlName=\"amount\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Location</mat-label>\n <app-searchable-selector formControlName=\"location_id\" apiUrl=\"api/inventory-locations?status_ids=1\"\n [selectedValue]=\"data.stockReceiptProduct.location\" titleField=\"title\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end gap-2\">\n <button mat-flat-button type=\"button\" [disabled]=\"isWorking\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isWorking\">Save</button>\n </div>\n\n </form>\n</mat-dialog-content>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TechlifyIconModule } from 'ngx-techlify-core';\nimport { StockReceiptProductFormComponent } from '../stock-receipt-product-form.component';\n\n@Component({\n selector: 'app-stock-receipt-product-form-button',\n templateUrl: './stock-receipt-product-form-button.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n TechlifyIconModule,\n ],\n})\nexport class StockReceiptProductFormButtonComponent {\n\n stockReceiptProduct = input<any>();\n stockReceiptId = input.required<number>();\n\n saved = output<any>();\n\n constructor(private dialog: MatDialog) { }\n\n open(): void {\n this.dialog.open(StockReceiptProductFormComponent, {\n width: '500px',\n data: {\n stockReceiptId: this.stockReceiptId(),\n stockReceiptProduct: this.stockReceiptProduct(),\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]=\"stockReceiptProduct() ? 'edit' : 'add'\" (click)=\"open()\">\n</app-techlify-icon>","import { Component, OnInit, effect, input, output, signal, ChangeDetectionStrategy } from \"@angular/core\";\nimport {\n ColumnConfig, TechlifyFeatureService,\n TechlifyListComponent\n} from 'ngx-techlify-core';\nimport { StockReceiptProductService } from \"../stock-receipt-product.service\";\nimport { FormBuilder } from \"@angular/forms\";\nimport { UntilDestroy } from \"@ngneat/until-destroy\";\nimport { StockReceiptSingleProductFormComponent } from \"../stock-receipt-single-product-form/stock-receipt-simple-form/stock-receipt-single-product-form.component\";\n\n@UntilDestroy()\n@Component({\n selector: 'app-stock-receipt-product-list',\n templateUrl: './stock-receipt-product-list.component.html',\n styleUrls: ['./stock-receipt-product-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class StockReceiptProductsListComponent extends TechlifyListComponent implements OnInit {\n filtersInput = input<any>({}, { alias: 'filters' });\n isProductView = input<boolean>(false);\n selectedColumns = input<ColumnConfig[]>([]);\n exportInProgress = input<boolean>(false);\n listUpdated = output<any>();\n columnConfigReady = output<ColumnConfig[]>();\n product = input<any>(null);\n\n stockReceiptSingleProductForm = signal(StockReceiptSingleProductFormComponent)\n\n private readonly productViewHiddenColumns = ['product', 'sku', 'measure'];\n private _defaultSelectedColumns: ColumnConfig[] = [];\n\n columnConfig: ColumnConfig[] = [\n { label: '#', def: 'no', isSelected: true, isEditable: false },\n { label: 'Receipt #', def: 'receipt_number', isSelected: true, isEditable: false },\n { label: 'Product', def: 'product', isSelected: true, isEditable: false },\n { label: 'Product Categories', def: 'product_categories', isSelected: false, isEditable: true, isExportable: false },\n { label: 'Categories', def: 'categories', isSelected: false, isEditable: false, isExportable: true },\n { label: 'SKU', def: 'sku', isSelected: true, isEditable: false },\n { label: 'Date', def: 'date', isSelected: true, isEditable: false },\n { label: 'Quantity', def: 'quantity', isSelected: true, isEditable: false },\n { label: 'Measure', def: 'measure', isSelected: true, isEditable: true },\n { label: 'Location', def: 'location', isSelected: true, isEditable: false },\n { label: 'Purchase Price', def: 'purchase_price', isSelected: true, isEditable: false },\n { label: 'Total Value', def: 'amount', isSelected: true, isEditable: false },\n { label: 'Supplier', def: 'supplier', isSelected: true, isEditable: false },\n { label: 'Supplier Contact', def: 'supplier_contact', isSelected: false, isEditable: true },\n { label: 'Supplier Phone', def: 'supplier_phone', isSelected: false, isEditable: true },\n { label: 'Particulars', def: 'particulars', isSelected: true, isEditable: false },\n { label: 'Creator', def: 'creator', isSelected: false, isEditable: true },\n { label: 'Actions', def: 'actions', isSelected: true, isEditable: false, isExportable: false },\n ];\n\n get displayedColumns(): string[] {\n const cols = this.selectedColumns().length > 0 ? this.selectedColumns() : this._defaultSelectedColumns;\n const selectedDefs = new Set(cols.map(col => col.def));\n return this.columnConfig.filter(col => {\n if (this.isProductView() && this.productViewHiddenColumns.includes(col.def)) return false;\n if (this.exportInProgress()) {\n if (col.isExportable === true) {\n return true;\n }\n if (col.isExportable === false) {\n return false;\n }\n }\n return selectedDefs.has(col.def);\n }).map(col => col.def);\n }\n\n get totalPurchasePrice(): number {\n return this.models.reduce((sum, model) => sum + Number(model?.purchase_price ?? 0), 0);\n }\n\n get totalValue(): number {\n return this.models.reduce((sum, model) => sum + Number(model?.amount ?? 0), 0);\n }\n\n get footerColumns(): string[] {\n return this.displayedColumns.map(col => `footer-${col}`);\n }\n\n constructor(\n protected override service: StockReceiptProductService,\n private formBuilder: FormBuilder,\n private featureService: TechlifyFeatureService\n ) {\n super();\n\n this.filterFormConfiguration = {\n date_from: { date: true },\n date_to: { date: true },\n category_ids: { multiple: true },\n supplier_ids: { multiple: true },\n location_ids: { multiple: true },\n measure_ids: { multiple: true },\n product_ids: { multiple: true },\n };\n\n this.filterForm = this.formBuilder.group({\n category_ids: [''],\n date_from: [''],\n date_to: [''],\n duration: [''],\n location_ids: [''],\n measure_ids: [''],\n product_ids: [''],\n search: [''],\n sort_by: ['date|desc'],\n supplier_ids: [''],\n page: this.page,\n perPage: this.perPage,\n });\n\n let initialized = false;\n effect(() => {\n const filters = this.filtersInput();\n if (!initialized) {\n initialized = true;\n return;\n }\n this.filterForm.patchValue(filters, { emitEvent: true });\n });\n }\n\n ngOnInit(): void {\n this.loadFeatures();\n this._defaultSelectedColumns = this.columnConfig.filter(col => col.isSelected);\n queueMicrotask(() => this.columnConfigReady.emit(this.columnConfig));\n\n const initialFilters = this.filtersInput();\n if (initialFilters) {\n this.filterForm.patchValue(initialFilters, { emitEvent: false });\n }\n\n this.patchFiltersFromRoute();\n this.listenFilterChanges();\n this.loadData();\n }\n\n private loadFeatures() {\n if (this.featureService.isFeatureExists('product-batch-numbers')) {\n const qtyIndex = this.columnConfig.findIndex(c => c.def === 'quantity');\n if (qtyIndex >= 0) {\n this.columnConfig.splice(qtyIndex + 1, 0, { label: 'Batch', def: 'batch', isSelected: true, isEditable: false });\n }\n }\n }\n}\n","<mat-card>\n @if (isProductView()) {\n <mat-card-header class=\"d-flex align-items-center gap-2\">\n <mat-card-title>Stock Receipts</mat-card-title>\n <app-techlify-form-button [component]=\"stockReceiptSingleProductForm()\" [data]=\"{product: product()}\" width=\"500px\"\n (saved)=\"modelCreated($event); listUpdated.emit(true)\"\n ></app-techlify-form-button>\n </mat-card-header>\n }\n\n <mat-card-content class=\"p-0\">\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Stock Receipt Products\" infiniteScroll\n id=\"stockReceiptTable\" [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" matSort\n (matSortChange)=\"sortColumn($event)\">\n\n <!-- # Column -->\n <ng-container matColumnDef=\"no\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"receipt_number\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"Stock Receipt ID\">Receipt #</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/stock-receipts', $safeNavigationMigration(element?.stock_receipt_id), 'view']\">\n {{ element?.stock_receipt_id }} <i class=\"fa-solid fa-up-right-from-square\"></i>\n </a>\n </td>\n </ng-container>\n\n <!-- Product Column -->\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/products', $safeNavigationMigration(element?.product?.id), 'view']\">\n {{ element?.product?.name }}\n </a>\n </td>\n </ng-container>\n\n <!-- Product Categories Column -->\n <ng-container matColumnDef=\"product_categories\">\n <th mat-header-cell *matHeaderCellDef>Product 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 </ng-container>\n\n <!-- Categories Column (export only) -->\n <ng-container matColumnDef=\"categories\">\n <th mat-header-cell *matHeaderCellDef>Categories</th>\n <td mat-cell *matCellDef=\"let element\">\n @for (category of element?.product?.categories; track category; let\n last = $last) {\n <span> {{ category?.title }}@if (!last) { , } </span>\n }\n </td>\n </ng-container>\n\n <!-- SKU Column -->\n <ng-container matColumnDef=\"sku\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>SKU</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.sku }}</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?.stock_receipt?.date) | date }}</td>\n </ng-container>\n\n <!-- Quantity Column -->\n <ng-container matColumnDef=\"quantity\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Quantity</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.quantity }} {{ element?.product?.measure?.title }}\n </td>\n </ng-container>\n\n <!-- Batch Column -->\n <ng-container matColumnDef=\"batch\">\n <th mat-header-cell *matHeaderCellDef>Batch</th>\n <td mat-cell *matCellDef=\"let element\">\n @if (element?.batch?.batch_number) {\n <p class=\"mb-0\">{{ element?.batch?.batch_number }}</p>\n } @if (element?.batch?.expires_on) {\n <small class=\"text-secondary\">\n Expires\n {{ $safeNavigationMigration(element?.batch?.expires_on) | date }}\n </small>\n }\n </td>\n </ng-container>\n\n <!-- Measure Column -->\n <ng-container matColumnDef=\"measure\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Measure</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.measure?.title }}</td>\n </ng-container>\n\n <!-- Location Column -->\n <ng-container matColumnDef=\"location\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Location</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/locations', $safeNavigationMigration(element?.location_id), 'view']\">\n {{ element?.location?.title }}\n </a>\n </td>\n </ng-container>\n\n <!-- Purchase Price Column -->\n <ng-container matColumnDef=\"purchase_price\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Purchase Price</th>\n <td mat-cell *matCellDef=\"let element\">{{ $safeNavigationMigration(element?.purchase_price) | currency }}</td>\n </ng-container>\n\n <!-- Total Value Column -->\n <ng-container matColumnDef=\"amount\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Total Value</th>\n <td mat-cell *matCellDef=\"let element\">{{ $safeNavigationMigration(element?.amount) | currency }}</td>\n </ng-container>\n\n <!-- Particulars Column -->\n <ng-container matColumnDef=\"particulars\">\n <th mat-header-cell *matHeaderCellDef>Particulars</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.particulars }}</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?.stock_receipt?.supplier?.company_name }}</td>\n </ng-container>\n\n <!-- Supplier Contact Column -->\n <ng-container matColumnDef=\"supplier_contact\">\n <th mat-header-cell *matHeaderCellDef>Supplier Contact</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.stock_receipt?.supplier?.contact_name }}</td>\n </ng-container>\n\n <!-- Supplier Phone Column -->\n <ng-container matColumnDef=\"supplier_phone\">\n <th mat-header-cell *matHeaderCellDef>Supplier Phone</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.stock_receipt?.supplier?.phone }}</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?.stock_receipt?.creator?.name }}</p>\n <small class=\"text-secondary\">{{ $safeNavigationMigration(element?.stock_receipt?.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\n @if (element?.stock_receipt?.stock_transfer) {\n <span class=\"badge rounded-pill text-bg-secondary\">Stock Transfer</span>\n } @else {\n <div class=\"d-flex gap-1 text-secondary\">\n <app-techlify-icon role='button' name='view' class='text-secondary'\n [routerLink]=\"['/inventory', 'stock-receipts', 'products', $safeNavigationMigration(element?.id), 'view']\"></app-techlify-icon>\n <app-stock-receipt-product-form-button [stockReceiptId]=\"$safeNavigationMigration(element?.stock_receipt_id)\"\n [stockReceiptProduct]=\"element\" (saved)=\"reload(); listUpdated.emit(true)\">\n </app-stock-receipt-product-form-button>\n <app-techlify-delete-button [model]=\"element\" [service]=\"service\"\n [data]=\"{ title: $safeNavigationMigration(element?.product?.name), type: 'Stock Receipt Product' }\"\n (deleted)=\"reload(); listUpdated.emit(true)\">\n </app-techlify-delete-button>\n </div>\n }\n </td>\n </ng-container>\n\n <!-- Footer Cells for Total Row -->\n <ng-container matColumnDef=\"footer-no\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-receipt_number\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-product\">\n <td mat-footer-cell *matFooterCellDef><strong>Total</strong></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-product_categories\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-sku\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-categories\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-date\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-quantity\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-batch\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-measure\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-location\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-purchase_price\">\n <td mat-footer-cell *matFooterCellDef><strong>{{ totalPurchasePrice | currency }}</strong></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-amount\">\n <td mat-footer-cell *matFooterCellDef><strong>{{ totalValue | currency }}</strong></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-particulars\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-supplier\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-supplier_contact\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-supplier_phone\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-creator\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-actions\">\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=\"footerColumns\"></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, effect, input, output, ChangeDetectionStrategy } from \"@angular/core\";\nimport {\n ColumnConfig, TechlifyFeatureService,\n TechlifyListComponent\n} from 'ngx-techlify-core';\nimport { StockReceiptService } from \"../stock-receipt.service\";\nimport { FormBuilder } from \"@angular/forms\";\nimport { UntilDestroy } from \"@ngneat/until-destroy\";\nimport { Router } from '@angular/router';\n\n@UntilDestroy()\n@Component({\n selector: 'app-stock-receipt-list',\n templateUrl: './stock-receipt-list.component.html',\n styleUrls: ['./stock-receipt-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class StockReceiptListComponent extends TechlifyListComponent implements OnInit {\n filtersInput = input<any>({}, { alias: 'filters' });\n selectedColumns = input<ColumnConfig[]>([]);\n exportInProgress = input<boolean>(false);\n listUpdated = output<any>();\n columnConfigReady = output<ColumnConfig[]>();\n\n private _defaultSelectedColumns: ColumnConfig[] = [];\n\n columnConfig: ColumnConfig[] = [\n { label: '#', def: 'no', isSelected: true, isEditable: false },\n { label: 'Receipt #', def: 'receipt_number', isSelected: true, isEditable: false },\n { label: 'Product', def: 'product', isSelected: true, isEditable: false },\n { label: 'Product Categories', def: 'product_categories', isSelected: false, isEditable: true, isExportable: false },\n { label: 'Categories', def: 'categories', isSelected: false, isEditable: false, isExportable: true },\n { label: 'SKU', def: 'sku', isSelected: true, isEditable: false },\n { label: 'Date', def: 'date', isSelected: true, isEditable: false },\n { label: 'Quantity', def: 'quantity', isSelected: true, isEditable: false },\n { label: 'Measure', def: 'measure', isSelected: true, isEditable: true },\n { label: 'Location', def: 'location', isSelected: true, isEditable: false },\n { label: 'Purchase Price', def: 'purchase_price', isSelected: true, isEditable: false },\n { label: 'Total Value', def: 'amount', isSelected: true, isEditable: false },\n { label: 'Supplier', def: 'supplier', isSelected: true, isEditable: false },\n { label: 'Supplier Contact', def: 'supplier_contact', isSelected: false, isEditable: true },\n { label: 'Supplier Phone', def: 'supplier_phone', isSelected: false, isEditable: true },\n { label: 'Particulars', def: 'particulars', isSelected: true, isEditable: false },\n { label: 'Creator', def: 'creator', isSelected: false, isEditable: true },\n { label: 'Actions', def: 'actions', isSelected: true, isEditable: false, isExportable: false },\n ];\n\n get displayedColumns(): string[] {\n const cols = this.selectedColumns().length > 0 ? this.selectedColumns() : this._defaultSelectedColumns;\n const selectedDefs = new Set(cols.map(col => col.def));\n return this.columnConfig.filter(col => {\n if (this.exportInProgress()) {\n if (col.isExportable === true) return true;\n if (col.isExportable === false) return false;\n }\n return selectedDefs.has(col.def);\n }).map(col => col.def);\n }\n\n get totalPurchasePrice(): number {\n return this.models.reduce((sum, model) => {\n const products = model?.stock_receipt_products ?? [];\n return sum + products.reduce((productSum: number, product: any) =>\n productSum + Number(product?.purchase_price ?? 0), 0);\n }, 0);\n }\n\n get totalValue(): number {\n return this.models.reduce((sum, model) => {\n const products = model?.stock_receipt_products ?? [];\n return sum + products.reduce((productSum: number, product: any) =>\n productSum + Number(product?.amount ?? 0), 0);\n }, 0);\n }\n\n get footerColumns(): string[] {\n return this.displayedColumns.map(col => `footer-${col}`);\n }\n\n constructor(\n protected override service: StockReceiptService,\n private formBuilder: FormBuilder,\n private router: Router,\n private featureService: TechlifyFeatureService\n ) {\n super();\n this.lastPage = 0;\n\n this.filterFormConfiguration = {\n date_from: { date: true },\n date_to: { date: true },\n category_ids: { multiple: true },\n supplier_ids: { multiple: true },\n location_ids: { multiple: true },\n measure_ids: { multiple: true },\n product_ids: { multiple: true },\n };\n\n this.filterForm = this.formBuilder.group({\n category_ids: [''],\n date_from: [''],\n date_to: [''],\n duration: [''],\n import_id: [''],\n location_ids: [''],\n measure_ids: [''],\n product_ids: [''],\n search: [''],\n sort_by: ['date|desc'],\n supplier_ids: [''],\n page: this.page,\n perPage: this.perPage,\n with: [\"creator,supplier,batch,stockReceiptProducts.product,stockReceiptProducts.product.categories,stockReceiptProducts.location,stockReceiptProducts.stockTransfer\"],\n });\n\n let initialized = false;\n effect(() => {\n const filters = this.filtersInput();\n if (!initialized) {\n initialized = true;\n return;\n }\n this.filterForm.patchValue(filters, { emitEvent: true });\n });\n }\n\n ngOnInit(): void {\n this.loadFeatures();\n this._defaultSelectedColumns = this.columnConfig.filter(col => col.isSelected);\n queueMicrotask(() => this.columnConfigReady.emit(this.columnConfig));\n this.patchFiltersFromRoute();\n this.listenFilterChanges();\n this.loadData();\n }\n\n private loadFeatures() {\n if (this.featureService.isFeatureExists('product-batch-numbers')) {\n const qtyIndex = this.columnConfig.findIndex(c => c.def === 'quantity');\n if (qtyIndex >= 0) {\n this.columnConfig.splice(qtyIndex + 1, 0, { label: 'Batch', def: 'batch', isSelected: true, isEditable: false });\n }\n }\n }\n\n redirectToView(model: any) {\n this.router.navigate(['/inventory/stock-receipts', model?.id, 'view']);\n }\n\n getStockReceiptDeleteTitle(model: any): string {\n return `#${model?.id}`;\n }\n}\n","<mat-card>\n <mat-card-content class=\"p-0\">\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Stock Receipts\" infiniteScroll\n id=\"stockReceiptTable\" [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" matSort\n (matSortChange)=\"sortColumn($event)\">\n\n <!-- # Column -->\n <ng-container matColumnDef=\"no\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"receipt_number\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"Stock Receipt ID\">Receipt #</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/stock-receipts', $safeNavigationMigration(element?.id), 'view']\">\n {{ element?.id }} <i class=\"fa-solid fa-up-right-from-square\"></i>\n </a>\n </td>\n </ng-container>\n\n <!-- Product Column -->\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Product</th>\n <td mat-cell *matCellDef=\"let element\">\n <ul class=\"mb-0 ps-3\">\n @for (srp of element?.stock_receipt_products; track srp) {\n <li>\n {{ srp?.quantity }} {{ srp?.product?.measure?.title }} <em>of</em>\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/products', $safeNavigationMigration(srp?.product?.id), 'view']\">\n {{ srp?.product?.name }}\n </a>\n </li>\n }\n </ul>\n </td>\n </ng-container>\n\n <!-- Product Categories Column -->\n <ng-container matColumnDef=\"product_categories\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Product Categories</th>\n <td mat-cell *matCellDef=\"let element\">\n <app-product-category-badges\n [product]=\"$safeNavigationMigration(element?.stock_receipt_products[0]?.product)\"></app-product-category-badges>\n </td>\n </ng-container>\n\n <!-- SKU Column -->\n <ng-container matColumnDef=\"sku\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>SKU</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.stock_receipt_products[0]?.product?.sku }}</td>\n </ng-container>\n\n <!-- Categories Column (export only) -->\n <ng-container matColumnDef=\"categories\">\n <th mat-header-cell *matHeaderCellDef>Categories</th>\n <td mat-cell *matCellDef=\"let element\">\n @for (category of\n element?.stock_receipt_products[0]?.product?.categories; track\n category; let last = $last) {\n <span> {{ category?.title }}@if (!last) { , } </span>\n }\n </td>\n </ng-container>\n\n <!-- Date Column -->\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Date</th>\n <td mat-cell *matCellDef=\"let element\">{{ $safeNavigationMigration(element?.date) | date }}</td>\n </ng-container>\n\n <!-- Quantity Column -->\n <ng-container matColumnDef=\"quantity\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Quantity</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.stock_receipt_products[0]?.quantity }} {{\n element?.stock_receipt_products[0]?.product?.measure?.title }}</td>\n </ng-container>\n\n <!-- Batch Column -->\n <ng-container matColumnDef=\"batch\">\n <th mat-header-cell *matHeaderCellDef>Batch</th>\n <td mat-cell *matCellDef=\"let element\">\n @if (element?.batch?.batch_number) {\n <p class=\"mb-0\">{{ element?.batch?.batch_number }}</p>\n } @if (element?.batch?.expires_on) {\n <small class=\"text-secondary\">\n Expires\n {{ $safeNavigationMigration(element?.batch?.expires_on) | date }}\n </small>\n }\n </td>\n </ng-container>\n\n <!-- Measure Column -->\n <ng-container matColumnDef=\"measure\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Measure</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.stock_receipt_products[0]?.product?.measure?.title }}</td>\n </ng-container>\n\n <!-- Location Column -->\n <ng-container matColumnDef=\"location\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Location</th>\n <td mat-cell *matCellDef=\"let element\">\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/locations', $safeNavigationMigration(element?.stock_receipt_products[0]?.location_id), 'view']\">\n {{ element?.stock_receipt_products[0]?.location?.title }}\n </a>\n </td>\n </ng-container>\n\n <!-- Purchase Price Column -->\n <ng-container matColumnDef=\"purchase_price\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Purchase Price</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ $safeNavigationMigration(element?.stock_receipt_products[0]?.purchase_price) | currency }}\n </td>\n </ng-container>\n\n <!-- Total Value Column -->\n <ng-container matColumnDef=\"amount\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Total Value</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ $safeNavigationMigration(element?.stock_receipt_products[0]?.amount) | currency }}\n </td>\n </ng-container>\n\n <!-- Particulars Column -->\n <ng-container matColumnDef=\"particulars\">\n <th mat-header-cell *matHeaderCellDef>Particulars</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.details }}</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 <!-- Supplier Contact Column -->\n <ng-container matColumnDef=\"supplier_contact\">\n <th mat-header-cell *matHeaderCellDef>Supplier Contact</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.supplier?.contact_name }}</td>\n </ng-container>\n\n <!-- Supplier Phone Column -->\n <ng-container matColumnDef=\"supplier_phone\">\n <th mat-header-cell *matHeaderCellDef>Supplier Phone</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.supplier?.phone }}</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 @if (!element.stock_transfer) {\n <div class=\"d-flex gap-1 text-secondary\">\n <app-techlify-icon role='button' name='view' class='text-secondary'\n [routerLink]=\"['/inventory', 'stock-receipts', $safeNavigationMigration(element?.id), 'view']\"></app-techlify-icon>\n <app-techlify-icon role='button' name='edit'\n [routerLink]=\"['/inventory/stock-receipts/form', $safeNavigationMigration(element?.id)]\"></app-techlify-icon>\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{ title: getStockReceiptDeleteTitle(element), type: 'Stock Receipt' }\"\n (deleted)=\"reload(); listUpdated.emit(true)\"></app-techlify-delete-button>\n </div>\n } @if (element.stock_transfer) {\n <span class=\"badge rounded-pill text-bg-secondary\">Stock Transfer</span>\n }\n </td>\n </ng-container>\n\n <!-- Footer Cells for Total Row -->\n <ng-container matColumnDef=\"footer-no\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-receipt_number\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-product\">\n <td mat-footer-cell *matFooterCellDef colspan=\"1\"><strong>Total</strong></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-product_categories\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-sku\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-categories\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-date\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-quantity\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-batch\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-measure\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-location\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-purchase_price\">\n <td mat-footer-cell *matFooterCellDef><strong>{{ totalPurchasePrice | currency }}</strong></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-amount\">\n <td mat-footer-cell *matFooterCellDef><strong>{{ totalValue | currency }}</strong></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-particulars\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-supplier\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-supplier_contact\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-supplier_phone\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-creator\">\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"footer-actions\">\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=\"footerColumns\"></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, Signal, input, output, signal, ChangeDetectionStrategy } from \"@angular/core\";\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\nimport { UntilDestroy } from \"@ngneat/until-destroy\";\nimport { toSignal } from \"@angular/core/rxjs-interop\";\nimport { startWith } from \"rxjs\";\nimport { ColumnConfig } from \"ngx-techlify-core\";\n\n@UntilDestroy()\n@Component({\n selector: 'app-stock-receipts-page',\n templateUrl: './stock-receipts-page.component.html',\n styleUrls: ['./stock-receipts-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class StockReceiptPageComponent implements OnInit {\n product = input<any>(null);\n supplierId = input<number | undefined>(undefined);\n listUpdated = output<any>();\n\n selectedView = signal<'itemized' | 'grouped'>('itemized');\n exportInProgress = signal<boolean>(false);\n\n columnConfig: ColumnConfig[] = [];\n selectedColumns: ColumnConfig[] = [];\n\n filterForm: FormGroup;\n filtersValue: Signal<any>;\n\n constructor(private formBuilder: FormBuilder) {\n this.filterForm = this.formBuilder.group({\n category_ids: [''],\n duration: [''],\n location_ids: [''],\n measure_ids: [''],\n product_ids: [''],\n search: [''],\n supplier_ids: [''],\n date_from: [''],\n date_to: [''],\n });\n\n this.filtersValue = toSignal(\n this.filterForm.valueChanges.pipe(startWith(this.filterForm.value))\n );\n }\n\n ngOnInit(): void {\n const productVal = this.product();\n if (productVal) {\n this.filterForm.get('product_ids')?.setValue(productVal.id);\n }\n\n const supplierIdVal = this.supplierId();\n if (supplierIdVal) {\n this.filterForm.get('supplier_ids')?.setValue(supplierIdVal);\n }\n }\n\n onColumnConfigReady(config: ColumnConfig[]) {\n this.columnConfig = config;\n this.selectedColumns = config.filter(col => col.isSelected);\n }\n}\n","@if (!product()) {\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-start align-items-center gap-2\">\n <h3 class=\"mb-0\">Stock Receipts</h3>\n\n <app-techlify-icon role='button' name='add' [routerLink]=\"['/inventory/stock-receipts/form']\"\n class='ms-2'></app-techlify-icon>\n\n <span matTooltip=\"Import\" routerLink=\"import\" class=\"cursor-pointer material-symbols-outlined\">\n file_upload\n </span>\n\n <app-export-to-excel-button tableId=\"stockReceiptTable\" fileName=\"Stock Receipts\"\n (onExportStart)=\"exportInProgress.set(true)\" (onExportEnd)=\"exportInProgress.set(false)\">\n </app-export-to-excel-button>\n @if (columnConfig.length > 0) {\n <app-column-selector mode=\"icon\" class=\"mt-1 d-print-none\"\n [columnConfigs]=\"columnConfig\" [(selectedColumns)]=\"selectedColumns\"></app-column-selector>\n }\n <mat-button-toggle-group class=\"view-toggle\" [value]=\"selectedView()\" (change)=\"selectedView.set($event.value)\">\n <mat-button-toggle value=\"itemized\">Itemized</mat-button-toggle>\n <mat-button-toggle value=\"grouped\">Grouped</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <form [formGroup]=\"filterForm\" class=\"d-flex align-items-center gap-2 flex-wrap\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" />\n </mat-form-field>\n\n <app-timeline-filter labelText=\"Date\" formControlName=\"duration\" [form]=\"filterForm\"></app-timeline-filter>\n\n <mat-form-field class='fl-sm'>\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 class='fl-sm'>\n <mat-label>Measure</mat-label>\n <app-searchable-selector apiUrl=\"api/product-measures\" formControlName=\"measure_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\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 class='fl-sm'>\n <mat-label>Supplier</mat-label>\n <app-searchable-selector apiUrl=\"api/suppliers\" formControlName=\"supplier_ids\" titleField=\"company_name\"\n [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n} @if (product()) {\n<mat-card class=\"mb-2\">\n <mat-card-content class=\"mb-0\">\n <div class=\"d-flex justify-content-start align-items-center gap-2 mb-2\">\n <span class=\"material-symbols-outlined\"> output_circle </span>\n <h3 class=\"mb-0\">Stock Receipts</h3>\n </div>\n </mat-card-content>\n</mat-card>\n} @if (selectedView() === 'itemized') {\n<app-stock-receipt-product-list [filters]=\"filtersValue()\"\n [selectedColumns]=\"selectedColumns\" [exportInProgress]=\"exportInProgress()\"\n (columnConfigReady)=\"onColumnConfigReady($event)\" (listUpdated)=\"listUpdated.emit($event)\">\n</app-stock-receipt-product-list>\n} @if (selectedView() === 'grouped') {\n<app-stock-receipt-list [filters]=\"filtersValue()\"\n [selectedColumns]=\"selectedColumns\" [exportInProgress]=\"exportInProgress()\"\n (columnConfigReady)=\"onColumnConfigReady($event)\" (listUpdated)=\"listUpdated.emit($event)\">\n</app-stock-receipt-list>\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-receipt-import-page',\n templateUrl: './stock-receipt-import-page.component.html',\n styleUrls: ['./stock-receipt-import-page.component.css'],\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n MaterialModule,\n ImportCsvModule\n ]\n})\nexport class StockReceiptImportPageComponent implements OnInit {\n\n importConfig: ImportCsvConfig = {\n apiUrl: 'api/stock-receipts-import',\n title: 'Stock Receipts',\n importType: 'stock-receipt',\n properties: [\n {\n label: 'Product',\n value: 'product',\n type: 'text',\n },\n {\n label: 'Supplier',\n value: 'supplier',\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: 'Purchase Price',\n value: 'purchase_price',\n type: 'number',\n },\n {\n label: 'Amount', \n value: 'amount',\n type: 'number',\n },\n {\n label: 'Particulars',\n value: 'particulars',\n type: 'text',\n },\n ],\n sampleFile: {\n name: 'Stock Receipt Sample',\n path: 'assets/stock-receipt/stock-receipt-sample.csv',\n },\n importHistory: {\n isEnabled: true,\n type: 'stock-receipt',\n apiUrl: 'api/import-histories',\n },\n viewRouterLink: '/inventory/stock-receipts',\n };\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","<app-import-csv [config]=\"importConfig\"></app-import-csv>","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { ActivatedRoute } from \"@angular/router\";\nimport { StockReceiptService } from \"../stock-receipt.service\";\nimport {Location} from \"@angular/common\";\n\n@Component({\n selector: 'app-stock-receipt-view',\n templateUrl: './stock-receipt-view.component.html',\n styleUrl: './stock-receipt-view.component.css',\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class StockReceiptViewComponent implements OnInit {\n\n id!: number;\n isLoading!: boolean;\n stockReceipt!: any;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n protected service: StockReceiptService,\n protected location: Location\n ) {}\n\n ngOnInit(): void {\n this.activatedRoute.params.subscribe(params => {\n this.id = parseInt(params['id']);\n if (this.id) {\n this.loadData();\n }\n });\n }\n\n loadData() {\n this.isLoading = true;\n const params: any = {\n with: 'creator,stockReceiptProducts.product,batch'\n }\n this.service.show(this.id, params).subscribe({\n next: (response: any) => {\n this.stockReceipt = response?.item;\n this.isLoading = false;\n },\n error: () => {\n this.isLoading = false;\n }\n });\n }\n\n redirectBack() {\n this.location.back();\n }\n}\n","@if (isLoading) {\n<mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n} @if (stockReceipt) {\n<div class=\"d-flex flex-column justify-content-start gap-2\">\n <mat-card>\n <mat-card-content>\n <h3 class=\"mb-0\">Stock Receipt for {{ stockReceipt?.stock_receipt_products[0]?.product?.name }}</h3>\n </mat-card-content>\n </mat-card>\n <div class=\"d-flex justify-content-start align-items-start gap-2\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 350px\">\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 <span class=\"material-symbols-outlined\"> campaign </span>\n <strong class=\"mb-0 text-dark\">Information</strong>\n </div>\n <div class=\"d-flex justify-content-start align-items-center gap-2 text-secondary\">\n <app-techlify-icon role='button' name='edit'\n [routerLink]=\"['/inventory/stock-receipts/form', $safeNavigationMigration(stockReceipt?.id)]\"></app-techlify-icon>\n <app-techlify-delete-button [model]=\"stockReceipt\" [service]=\"service\"\n [data]=\"{ title: $safeNavigationMigration(stockReceipt?.id), type: 'Stock Receipt' }\"\n (deleted)=\"redirectBack()\">\n </app-techlify-delete-button>\n </div>\n </mat-card-content>\n <mat-card-content class=\"d-flex flex-column justify-content-start gap-2 mt-3\">\n <div class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex flex-column gap-0\">\n <a class=\"text-decoration-none text-black\"\n [routerLink]=\"['/inventory/products', $safeNavigationMigration(stockReceipt?.stock_receipt_products[0]?.product?.id), 'view']\">\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.product?.name }}</p>\n </a>\n @if (stockReceipt?.stock_receipt_products[0]?.product?.sku) {\n <small>{{\n stockReceipt?.stock_receipt_products[0]?.product?.sku }}</small>\n }\n </div>\n <div class=\"d-flex flex-column justify-content-end gap-0\">\n @if (stockReceipt?.date) {\n <small>{{ $safeNavigationMigration(stockReceipt?.date) | date }}</small>\n } @if (stockReceipt?.stock_receipt_products[0]?.batch?.expires_on)\n {\n <small techlifyFeatureEnabled=\"product-batch-numbers\">\n Expires on\n {{ $safeNavigationMigration(stockReceipt?.stock_receipt_products[0]?.batch?.expires_on) | date }}\n </small>\n }\n </div>\n </div>\n <div class=\"row\">\n @if (stockReceipt?.stock_receipt_products[0]?.purchase_price) {\n <div class=\"col-6\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Purchase Price</small>\n <p class=\"mb-0\">{{ $safeNavigationMigration(stockReceipt?.stock_receipt_products[0]?.purchase_price) | currency }}</p>\n </div>\n </div>\n } @if (stockReceipt?.stock_receipt_products[0]?.supplier) {\n <div class=\"col-6\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Supplier</small>\n <a class=\"text-decoration-none text-black\"\n [routerLink]=\"['/inventory/suppliers', $safeNavigationMigration(stockReceipt?.stock_receipt_products[0]?.supplier?.id), 'view']\">\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.supplier?.company_name }}</p>\n </a>\n </div>\n </div>\n }\n </div>\n <div class=\"row\">\n @if (stockReceipt?.stock_receipt_products[0]?.quantity) {\n <div class=\"col-6\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Quantity</small>\n <div class=\"d-flex gap-1\">\n <h3 class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.quantity }}</h3>\n <small class=\"text-secondary\">{{ stockReceipt?.stock_receipt_products[0]?.product?.measure?.title\n }}</small>\n </div>\n </div>\n </div>\n } @if (stockReceipt?.stock_receipt_products[0]?.amount) {\n <div class=\"col-6\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Total Value</small>\n <h3 class=\"mb-0\">{{ $safeNavigationMigration(stockReceipt?.stock_receipt_products[0]?.amount) | currency }}</h3>\n </div>\n </div>\n }\n </div>\n @if (stockReceipt?.stock_receipt_products[0]?.particulars) {\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Particulars</small>\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.particulars }}</p>\n </div>\n </div>\n </div>\n }\n <div class=\"row\">\n @if (stockReceipt?.stock_receipt_products[0]?.location) {\n <div class=\"col-6\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Location</small>\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.location?.title }}</p>\n </div>\n </div>\n } @if (stockReceipt?.stock_receipt_products[0]?.batch) {\n <div class=\"col-6\" techlifyFeatureEnabled=\"product-batch-numbers\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Batch</small>\n <p class=\"mb-0\">{{ stockReceipt?.stock_receipt_products[0]?.batch?.batch_number }}</p>\n </div>\n </div>\n }\n </div>\n @if (stockReceipt?.creator) {\n <div class=\"row\">\n <div class=\"col-12\">\n <small class=\"mb-0\">\n <span class=\"text-secondary\">Created By</span> {{ stockReceipt?.creator?.name }}\n <span class=\"text-secondary\">On</span> {{ $safeNavigationMigration(stockReceipt?.created_at) | date }}\n </small>\n </div>\n </div>\n }\n </mat-card-content>\n </mat-card>\n\n <app-note-list labelText=\"Notes\" viewMode=\"timeline\" modelType=\"StockReceipt\"\n [relatedModelId]=\"$safeNavigationMigration(stockReceipt?.id)\"></app-note-list>\n </div>\n\n <div style=\"width: calc(100% - 350px - 0.5rem)\">\n <app-entity-files-view-all title=\"Document\" [entityId]=\"$safeNavigationMigration(stockReceipt?.id)\" entityType=\"StockReceipt\">\n </app-entity-files-view-all>\n </div>\n </div>\n</div>\n}","import { Component, OnInit, signal, 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 { CommonModule, Location } from '@angular/common';\nimport { SearchableSelectorModule } from 'ngx-techlify-core';\nimport { StockReceiptService } from '../stock-receipt.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { debounceTime } from 'rxjs';\nimport moment from 'moment';\nimport { LocationService } from '../../location/location.service';\n\n@Component({\n selector: 'app-stock-receipt-form',\n templateUrl: './stock-receipt-form.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MaterialModule,\n SearchableSelectorModule,\n TechlifyIconModule\n ]\n})\n\nexport class StockReceiptFormComponent extends TechlifyFormComponent implements OnInit {\n\n locationCount = signal<number>(0);\n\n stockReceiptId = signal<number | null>(null);\n stockReceipt = signal<any>(null);\n\n constructor(protected override formValidatorService: FormValidatorService,\n private fb: FormBuilder,\n private stockReceiptService: StockReceiptService,\n private router: Router,\n private route: ActivatedRoute,\n private locationService: LocationService,\n private location: Location\n ) {\n super(formValidatorService);\n\n this.errorMessages = {\n supplier_id: {\n required: 'The supplier field is required.',\n },\n date: {\n required: 'The date field is required.',\n },\n details: {\n required: 'The particulars field is required.',\n },\n };\n\n this.form = this.fb.group({\n supplier_id: ['', Validators.compose([Validators.required])],\n date: [new Date(), Validators.compose([Validators.required])],\n details: [''],\n stock_receipt_products: this.fb.array([])\n });\n }\n\n ngOnInit(): void {\n this.locationService.count().subscribe((count: number) => {\n this.locationCount.set(count);\n });\n\n const id = this.route.snapshot.paramMap.get('id');\n if (id) {\n this.stockReceiptId.set(+id);\n this.loadStockReceipt(+id);\n } else {\n this.addStockReceiptProduct();\n }\n }\n\n private loadStockReceipt(id: number): void {\n this.isWorking = true;\n this.stockReceiptService.show(id, { with: 'stockReceiptProducts.product,stockReceiptProducts.location' }).subscribe({\n next: (response: any) => {\n this.isWorking = false;\n this.stockReceipt.set(response.item);\n },\n error: () => {\n this.isWorking = false;\n },\n complete: () => {\n this.form.patchValue({\n supplier_id: this.stockReceipt().supplier_id,\n date: this.stockReceipt().date ? new Date(this.stockReceipt().date) : new Date(),\n details: this.stockReceipt().details,\n });\n\n this.stockReceiptProducts.clear();\n this.stockReceipt().stock_receipt_products?.forEach((srp: any) => {\n const group = this.createStockReceiptProduct();\n group.patchValue({\n id: srp.id,\n product_id: srp.product_id,\n location_id: srp.location_id,\n quantity: srp.quantity,\n purchase_price: srp.purchase_price,\n total_amount: (srp.quantity || 0) * (srp.purchase_price || 0),\n particulars: srp.particulars,\n });\n const index = this.stockReceiptProducts.length;\n group.get('quantity')?.valueChanges.pipe(debounceTime(300))\n .subscribe(() => this.updateRowTotal(index));\n group.get('purchase_price')?.valueChanges.pipe(debounceTime(300))\n .subscribe(() => this.updateRowTotal(index));\n this.stockReceiptProducts.push(group);\n });\n }\n });\n }\n\n get stockReceiptProducts(): FormArray {\n return this.form.get('stock_receipt_products') as FormArray;\n }\n\n createStockReceiptProduct() {\n return this.fb.group({\n id: [''],\n product_id: ['', Validators.required],\n location_id: ['', this.locationCount() > 0 ? Validators.required : null],\n quantity: [0, [Validators.required, Validators.min(0)]],\n purchase_price: [0, [Validators.required, Validators.min(0)]],\n total_amount: [{ value: 0, disabled: true }],\n particulars: ['']\n });\n }\n\n getSelectedProduct(index: number): any {\n return this.stockReceipt()\n ?.stock_receipt_products?.find(\n (sr: any) => sr.id === this.stockReceiptProducts.at(index)?.get('id')?.value\n )?.product;\n }\n\n getSelectedLocation(index: number): any {\n return this.stockReceipt()\n ?.stock_receipt_products?.find(\n (sr: any) => sr.id === this.stockReceiptProducts.at(index)?.get('id')?.value\n )?.location;\n }\n\n addStockReceiptProduct() {\n const group = this.createStockReceiptProduct();\n const index = this.stockReceiptProducts.length;\n\n group.get('quantity')?.valueChanges.pipe(debounceTime(300))\n .subscribe(() => this.updateRowTotal(index));\n group.get('purchase_price')?.valueChanges.pipe(debounceTime(300))\n .subscribe(() => this.updateRowTotal(index));\n\n this.stockReceiptProducts.push(group);\n }\n\n removeStockReceiptProduct(index: number) {\n this.stockReceiptProducts.removeAt(index);\n }\n\n clearProducts() {\n this.stockReceiptProducts.clear();\n }\n\n getRowTotal(index: number): number {\n const row = this.stockReceiptProducts.at(index);\n if (!row) {\n return 0;\n }\n const quantity = row.get('quantity')?.value;\n const purchasePrice = row.get('purchase_price')?.value;\n return quantity * purchasePrice;\n }\n\n updateRowTotal(index: number) {\n this.stockReceiptProducts.at(index)\n ?.get('total_amount')\n ?.setValue(this.getRowTotal(index));\n }\n\n /**\n * We're doing a little more than a normal submit so we won't use the\n * techlify-form's submit method\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.stockReceiptProducts.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: this.stockReceipt()?.id ?? null,\n date: moment(formData.date).format('YYYY-MM-DD'),\n supplier_id: formData.supplier_id,\n details: formData.details,\n products: formData.stock_receipt_products.map((row: any) => ({\n id: row.product_id,\n product_id: row.product_id,\n supplier_id: formData.supplier_id,\n quantity: row.quantity,\n purchase_price: row.purchase_price,\n amount: (parseFloat(row.quantity) || 0) * (parseFloat(row.purchase_price) || 0),\n location_id: row.location_id,\n particulars: row.particulars,\n }))\n };\n\n this.isWorking = true;\n const request$ = this.stockReceipt()?.id\n ? this.stockReceiptService.update(data)\n : this.stockReceiptService.store(data);\n\n request$.subscribe({\n next: () => {\n this.isWorking = false;\n this.alertService.addAlert('Stock receipts saved successfully!', 'success');\n this.location.back();\n },\n error: () => {\n this.isWorking = false;\n }\n });\n }\n\n cancel() {\n this.location.back();\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\">download</span>\n Receive Stock\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>Supplier</mat-label>\n <app-searchable-selector apiUrl='api/suppliers' formControlName=\"supplier_id\"\n titleField='company_name' required></app-searchable-selector>\n @if (isFieldValid('supplier_id')) {\n <mat-error>{{ getErrorMessage('supplier_id') }}</mat-error>\n }\n </mat-form-field>\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 </div>\n\n <div class=\"d-flex flex-row gap-2 justify-content-between\">\n <div class=\"w-50\">\n <mat-form-field appearance='outline' class=\"w-100\">\n <mat-label>Particulars</mat-label>\n <textarea matInput placeholder=\"Particulars\" formControlName=\"details\"></textarea>\n </mat-form-field>\n </div>\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 @if (locationCount() > 0) {\n <th scope=\"col\">Location</th>\n }\n <th scope=\"col\">Quantity</th>\n <th scope=\"col\">Purchase Price</th>\n <th scope=\"col\">Total Value</th>\n <th scope=\"col\">Particulars</th>\n <th scope=\"col\" class=\"text-center\" width=\"50\"></th>\n </tr>\n </thead>\n <tbody formArrayName=\"stock_receipt_products\">\n @for (row of stockReceiptProducts.controls; track row; let i = $index)\n {\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\" [selectedValue]=\"getSelectedProduct(i)\"\n required></app-searchable-selector>\n </mat-form-field>\n </td>\n @if (locationCount() > 0) {\n <td>\n <mat-form-field appearance='outline' class=\"w-100\">\n <mat-label>Location</mat-label>\n <app-searchable-selector apiUrl='api/inventory-locations?status_ids=1'\n formControlName=\"location_id\" titleField='title'\n [selectedValue]=\"getSelectedLocation(i)\"></app-searchable-selector>\n </mat-form-field>\n </td>\n }\n <td>\n <mat-form-field appearance='outline' class='fl-sm'>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" min=\"0\" type=\"number\">\n </mat-form-field>\n </td>\n <td>\n <mat-form-field appearance='outline' class='fl-sm'>\n <mat-label>Purchase Price</mat-label>\n <input matInput formControlName=\"purchase_price\" type=\"number\" min=\"0\">\n </mat-form-field>\n </td>\n <td>\n <mat-form-field appearance='outline' class='fl-sm'>\n <mat-label>Total Value</mat-label>\n <input matInput [value]=\"getRowTotal(i) | currency\" readonly>\n </mat-form-field>\n </td>\n <td>\n <mat-form-field appearance='outline'>\n <mat-label>Particulars</mat-label>\n <input matInput formControlName=\"particulars\">\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)=\"removeStockReceiptProduct(i)\"\n matTooltip=\"Remove row\"></app-techlify-icon>\n </div>\n </td>\n </tr>\n }\n </tbody>\n <tfoot>\n <tr>\n <td colspan=\"8\" 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]=\"stockReceiptProducts.length === 0\">\n <mat-icon>block</mat-icon> CLEAR ALL\n </button>\n <button mat-raised-button color=\"primary\" type=\"button\"\n (click)=\"addStockReceiptProduct()\">\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 || stockReceiptProducts.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 { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { ActivatedRoute } from '@angular/router';\nimport { SharedModule } from '../../shared.module';\nimport { StockReceiptProductService } from '../stock-receipt-product.service';\nimport { NoteModule, TechlifyFeatureModule } from 'ngx-techlify-core';\nimport { StockAllocationListComponent } from '../../stock-allocation/stock-allocation-list/stock-allocation-list.component';\n\n@Component({\n selector: 'app-stock-receipt-product-view',\n templateUrl: './stock-receipt-product-view.component.html',\n styleUrl: './stock-receipt-product-view.component.scss',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n SharedModule,\n NoteModule,\n TechlifyFeatureModule,\n StockAllocationListComponent\n ],\n})\nexport class StockReceiptProductViewComponent implements OnInit {\n\n id!: number;\n isLoading!: boolean;\n model!: any;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n protected service: StockReceiptProductService,\n private location: Location\n ) { }\n\n ngOnInit(): void {\n this.activatedRoute.params.subscribe(params => {\n this.id = parseInt(params['id']);\n if (this.id) {\n this.loadData();\n }\n });\n }\n\n loadData() {\n this.isLoading = true;\n this.service.show(this.id).subscribe({\n next: (response: any) => {\n this.model = response?.item;\n this.isLoading = false;\n },\n error: () => {\n this.isLoading = false;\n }\n });\n }\n\n redirectBack() {\n this.location.back();\n }\n}\n","@if (isLoading) {\n<mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n} @if (model) {\n<div class=\"d-flex flex-column justify-content-start gap-2\">\n <mat-card>\n <mat-card-content>\n <h3 class=\"mb-0\">Stock Receipt for {{ model?.product?.name }}</h3>\n </mat-card-content>\n </mat-card>\n <div class=\"d-flex justify-content-start align-items-start gap-2\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 350px\">\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 <span class=\"material-symbols-outlined\"> campaign </span>\n <strong class=\"mb-0 text-dark\">Information</strong>\n </div>\n <div class=\"d-flex justify-content-start align-items-center gap-2 text-secondary\">\n <app-techlify-icon name=\"edit\" role=\"button\"\n [routerLink]=\"['/inventory/stock-receipts/form', $safeNavigationMigration(model?.stock_receipt_id)]\"></app-techlify-icon>\n <app-techlify-delete-button [model]=\"model\" [service]=\"service\"\n [data]=\"{ title: $safeNavigationMigration(model?.product?.name), type: 'Stock Receipt Product' }\"\n (deleted)=\"redirectBack()\"\n >\n </app-techlify-delete-button>\n </div>\n </mat-card-content>\n <mat-card-content class=\"d-flex flex-column justify-content-start gap-2 mt-3\">\n <div class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex flex-column gap-0\">\n <a class=\"text-decoration-none text-black\"\n [routerLink]=\"['/inventory/products', $safeNavigationMigration(model?.product?.id), 'view']\">\n <p class=\"mb-0\">{{ model?.product?.name }}</p>\n </a>\n @if (model?.product?.sku) {\n <small>{{ model?.product?.sku }}</small>\n }\n </div>\n <div class=\"d-flex flex-column justify-content-end gap-0\">\n @if (model?.stock_receipt?.date) {\n <small>{{ $safeNavigationMigration(model?.stock_receipt?.date) | date }}</small>\n } @if (model?.batch?.expires_on) {\n <small techlifyFeatureEnabled=\"product-batch-numbers\">\n Expires on\n {{ $safeNavigationMigration(model?.batch?.expires_on) | date }}\n </small>\n }\n </div>\n </div>\n\n <div class=\"row\">\n @if (model?.purchase_price) {\n <div class=\"col-6\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Purchase Price</small>\n <p class=\"mb-0\">{{ $safeNavigationMigration(model?.purchase_price) | currency }}</p>\n </div>\n </div>\n } @if (model?.stock_receipt?.supplier) {\n <div class=\"col-6\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Supplier</small>\n <a class=\"text-decoration-none text-black\"\n [routerLink]=\"['/inventory/suppliers', $safeNavigationMigration(model?.stock_receipt?.supplier?.id), 'view']\">\n <p class=\"mb-0\">{{ model?.stock_receipt?.supplier?.company_name }}</p>\n </a>\n </div>\n </div>\n }\n </div>\n\n <div class=\"row\">\n @if (model?.quantity) {\n <div class=\"col-6\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Quantity</small>\n <div class=\"d-flex gap-1\">\n <h3 class=\"mb-0\">{{ model?.quantity }}</h3>\n <small class=\"text-secondary\">{{ model?.product?.measure?.title }}</small>\n </div>\n </div>\n </div>\n } @if (model?.amount) {\n <div class=\"col-6\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Total Value</small>\n <h3 class=\"mb-0\">{{ $safeNavigationMigration(model?.amount) | currency }}</h3>\n </div>\n </div>\n }\n </div>\n @if (model?.particulars) {\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Particulars</small>\n <p class=\"mb-0\">{{ model?.particulars }}</p>\n </div>\n </div>\n </div>\n }\n <div class=\"row\">\n @if (model?.location) {\n <div class=\"col-6\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Location</small>\n <p class=\"mb-0\">{{ model?.location?.title }}</p>\n </div>\n </div>\n } @if (model?.batch) {\n <div class=\"col-6\" techlifyFeatureEnabled=\"product-batch-numbers\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Batch</small>\n <p class=\"mb-0\">{{ model?.batch?.batch_number }}</p>\n </div>\n </div>\n }\n </div>\n @if (model?.stock_receipt?.creator) {\n <div class=\"row\">\n <div class=\"col-12\">\n <small class=\"mb-0\">\n <span class=\"text-secondary\">Created By</span> {{ model?.stock_receipt?.creator?.name }}\n <span class=\"text-secondary\">On</span> {{ $safeNavigationMigration(model?.stock_receipt?.created_at) | date }}\n </small>\n </div>\n </div>\n }\n </mat-card-content>\n </mat-card>\n\n <app-note-list labelText=\"Notes\" viewMode=\"timeline\" modelType=\"StockReceiptProduct\"\n [relatedModelId]=\"$safeNavigationMigration(model?.stock_receipt_id)\"></app-note-list>\n </div>\n\n <div style=\"width: calc(100% - 350px - 0.5rem)\">\n <app-stock-allocation-list [stockReceiptProductId]=\"$safeNavigationMigration(model?.id)\"></app-stock-allocation-list>\n </div>\n </div>\n</div>\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { StockReceiptPageComponent } from './stock-receipts-page/stock-receipts-page.component';\nimport { StockReceiptImportPageComponent } from './stock-receipt-import-page/stock-receipt-import-page.component';\nimport { AuthenticationGuard } from 'ngx-techlify-core';\nimport { StockReceiptViewComponent } from \"./stock-receipt-view/stock-receipt-view.component\";\nimport { StockReceiptFormComponent } from './stock-receipt-form/stock-receipt-form.component';\nimport { StockReceiptProductViewComponent } from './stock-receipt-product-view/stock-receipt-product-view.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: StockReceiptPageComponent,\n },\n {\n path: ':id/view',\n component: StockReceiptViewComponent\n },\n {\n path: 'products/:id/view',\n component: StockReceiptProductViewComponent\n },\n {\n path: 'import',\n component: StockReceiptImportPageComponent,\n canLoad: [AuthenticationGuard]\n },\n {\n path: 'form',\n component: StockReceiptFormComponent,\n canLoad: [AuthenticationGuard]\n },\n {\n path: 'form/:id',\n component: StockReceiptFormComponent,\n canLoad: [AuthenticationGuard]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class StockReceiptsRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { StockReceiptsRoutingModule } from './stock-receipts-routing.module';\nimport { StockReceiptPageComponent } from './stock-receipts-page/stock-receipts-page.component';\nimport {\n ColumnSelectorModule,\n EntityFilesViewAllModule,\n NoteModule,\n SearchableSelectorModule,\n TechlifyFeatureModule,\n TechlifyFormButtonComponent,\n TechlifyIconModule,\n TimelineFilterModule\n} from 'ngx-techlify-core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { PayeeSelectorModule } from '../supplier/payee-selector/payee-selector.module';\nimport { TechlifyFilterModule } from '../techlify-filter/techlify-filter.module';\nimport {\n ProductCategoryBadgesComponent\n} from \"../product/widgets/product-category-badges/product-category-badges.component\";\nimport { StockReceiptViewComponent } from './stock-receipt-view/stock-receipt-view.component';\nimport { StockReceiptListComponent } from './stock-receipt-list/stock-receipt-list.component';\nimport { StockReceiptProductsListComponent } from './stock-receipt-product-list/stock-receipt-product-list.component';\nimport { TechlifyDeleteButtonComponent } from 'ngx-techlify-core';\nimport { MaterialModule } from '../material.module';\nimport { RouterModule } from '@angular/router';\nimport { ExportToExcelButtonComponent } from '../shared/export-to-excel-button/export-to-excel-button.component';\nimport { StockReceiptProductFormButtonComponent } from './stock-receipt-product-form/stock-receipt-product-form-button/stock-receipt-product-form-button.component';\n\n@NgModule({\n declarations: [\n StockReceiptPageComponent,\n StockReceiptViewComponent,\n StockReceiptListComponent,\n StockReceiptProductsListComponent\n ],\n exports: [\n StockReceiptPageComponent,\n StockReceiptListComponent,\n StockReceiptProductsListComponent\n ],\n imports: [\n CommonModule,\n MaterialModule,\n StockReceiptsRoutingModule,\n TechlifyFilterModule,\n SearchableSelectorModule,\n TimelineFilterModule,\n ReactiveFormsModule,\n PayeeSelectorModule,\n InfiniteScrollDirective,\n ProductCategoryBadgesComponent,\n ColumnSelectorModule,\n EntityFilesViewAllModule,\n TechlifyFeatureModule,\n NoteModule,\n TechlifyIconModule,\n RouterModule,\n ExportToExcelButtonComponent,\n TechlifyDeleteButtonComponent,\n StockReceiptProductFormButtonComponent,\n TechlifyFormButtonComponent\n ],\n})\nexport class StockReceiptsModule { }\n"],"mappings":"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"}