techlify-inventory-common 18.1.0 → 18.3.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 (216) hide show
  1. package/esm2022/lib/inventory-common/category/category-form/category-form.component.mjs +12 -12
  2. package/esm2022/lib/inventory-common/category/category-form-button/category-form-button.component.mjs +5 -5
  3. package/esm2022/lib/inventory-common/category/category-list-page/category-list-page.component.mjs +22 -26
  4. package/esm2022/lib/inventory-common/category/category-routing.module.mjs +10 -5
  5. package/esm2022/lib/inventory-common/category/category-view/category-view.component.mjs +46 -0
  6. package/esm2022/lib/inventory-common/category/category.module.mjs +23 -24
  7. package/esm2022/lib/inventory-common/category/category.service.mjs +6 -6
  8. package/esm2022/lib/inventory-common/inventory-common-routing.module.mjs +32 -18
  9. package/esm2022/lib/inventory-common/inventory-common.module.mjs +13 -9
  10. package/esm2022/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.mjs +12 -10
  11. package/esm2022/lib/inventory-common/inventory-value-report.service.mjs +21 -0
  12. package/esm2022/lib/inventory-common/location/location-delete-button/location-delete-button.component.mjs +68 -0
  13. package/esm2022/lib/inventory-common/location/location-form/location-form.component.mjs +86 -0
  14. package/esm2022/lib/inventory-common/location/location-form-button/location-form-button.component.mjs +35 -0
  15. package/esm2022/lib/inventory-common/location/location-information/location-information.component.mjs +34 -0
  16. package/esm2022/lib/inventory-common/location/location-list/location-list.component.mjs +121 -0
  17. package/esm2022/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.mjs +127 -0
  18. package/esm2022/lib/inventory-common/location/location-routing.module.mjs +29 -0
  19. package/esm2022/lib/inventory-common/location/location-view/location-view.component.mjs +53 -0
  20. package/esm2022/lib/inventory-common/location/location.module.mjs +22 -0
  21. package/esm2022/lib/inventory-common/location/location.service.mjs +23 -0
  22. package/esm2022/lib/inventory-common/low-stock-report.service.mjs +23 -0
  23. package/esm2022/lib/inventory-common/material.module.mjs +37 -37
  24. package/esm2022/lib/inventory-common/measure/measure-delete/measure-delete-button/measure-delete-button.component.mjs +4 -4
  25. package/esm2022/lib/inventory-common/measure/measure-delete/measure-delete.module.mjs +4 -4
  26. package/esm2022/lib/inventory-common/measure/measure-form/measure-form/measure-form.component.mjs +14 -14
  27. package/esm2022/lib/inventory-common/measure/measure-form/measure-form-button/measure-form-button.component.mjs +5 -5
  28. package/esm2022/lib/inventory-common/measure/measure-form/measure-form.module.mjs +6 -6
  29. package/esm2022/lib/inventory-common/measure/measure-routing.module.mjs +5 -5
  30. package/esm2022/lib/inventory-common/measure/measure.module.mjs +10 -10
  31. package/esm2022/lib/inventory-common/measure/measure.service.mjs +6 -6
  32. package/esm2022/lib/inventory-common/measure/measures-list/measures-list.component.mjs +12 -18
  33. package/esm2022/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.mjs +13 -11
  34. package/esm2022/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.module.mjs +10 -24
  35. package/esm2022/lib/inventory-common/product/product-basic-info/product-basic-info.component.mjs +5 -5
  36. package/esm2022/lib/inventory-common/product/product-batch-update-form/product-batch-update-form.component.mjs +56 -0
  37. package/esm2022/lib/inventory-common/product/product-delete-button/product-delete-button.component.mjs +6 -6
  38. package/esm2022/lib/inventory-common/product/product-form/product-form.component.mjs +43 -45
  39. package/esm2022/lib/inventory-common/product/product-form-button/product-form-button.component.mjs +5 -5
  40. package/esm2022/lib/inventory-common/product/product-form.service.mjs +4 -4
  41. package/esm2022/lib/inventory-common/product/product-import-page/product-import-page.component.mjs +32 -32
  42. package/esm2022/lib/inventory-common/product/product-list/product-list.component.mjs +65 -87
  43. package/esm2022/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.mjs +56 -0
  44. package/esm2022/lib/inventory-common/product/product-measure-form/product-measure-form.component.mjs +12 -12
  45. package/esm2022/lib/inventory-common/product/product-measures-list/product-measures-list.component.mjs +22 -28
  46. package/esm2022/lib/inventory-common/product/product-nav-bar/product-nav-bar.component.mjs +3 -3
  47. package/esm2022/lib/inventory-common/product/product-quick-search/product-quick-search.component.mjs +92 -0
  48. package/esm2022/lib/inventory-common/product/product-routing.module.mjs +17 -17
  49. package/esm2022/lib/inventory-common/product/product-statistics.service.mjs +23 -0
  50. package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.mjs +10 -16
  51. package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.module.mjs +9 -20
  52. package/esm2022/lib/inventory-common/product/product-tax/product-tax-delete-button/product-tax-delete-button.component.mjs +6 -6
  53. package/esm2022/lib/inventory-common/product/product-tax/product-tax-form-button/product-tax-form-button.component.mjs +14 -14
  54. package/esm2022/lib/inventory-common/product/product-tax/product-tax-list/product-tax-list.component.mjs +6 -6
  55. package/esm2022/lib/inventory-common/product/product-tax/product-tax.module.mjs +9 -26
  56. package/esm2022/lib/inventory-common/product/product-tax/product-tax.service.mjs +6 -6
  57. package/esm2022/lib/inventory-common/product/product-view-page/product-view-page.component.mjs +9 -7
  58. package/esm2022/lib/inventory-common/product/product.module.mjs +37 -26
  59. package/esm2022/lib/inventory-common/product/product.service.mjs +7 -7
  60. package/esm2022/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.mjs +15 -0
  61. package/esm2022/lib/inventory-common/product-batch.service.mjs +20 -0
  62. package/esm2022/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.mjs +168 -0
  63. package/esm2022/lib/inventory-common/reports/low-stock-report/low-stock-report.component.mjs +163 -0
  64. package/esm2022/lib/inventory-common/services/techlify-form-service.mjs +2 -2
  65. package/esm2022/lib/inventory-common/stock-issuances/stock-issuance-delete-button/stock-issuance-delete-button.component.mjs +6 -6
  66. package/esm2022/lib/inventory-common/stock-issuances/stock-issuance-delete-button/stock-issuance-delete-button.module.mjs +5 -5
  67. package/esm2022/lib/inventory-common/stock-issuances/stock-issuance.service.mjs +6 -6
  68. package/esm2022/lib/inventory-common/stock-issuances/stock-issuances-list/stock-issuances-list.component.mjs +84 -56
  69. package/esm2022/lib/inventory-common/stock-issuances/stock-issuances-list/stock-issuances-list.module.mjs +28 -12
  70. package/esm2022/lib/inventory-common/stock-issuances/stock-issuances-routing.module.mjs +5 -5
  71. package/esm2022/lib/inventory-common/stock-issuances/stock-issuances.module.mjs +14 -14
  72. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form/stock-issue-form.component.mjs +14 -14
  73. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form-button/stock-issue-form-button.component.mjs +5 -5
  74. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form.module.mjs +13 -13
  75. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-delete-button/stock-receipt-delete-button.component.mjs +6 -6
  76. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form/stock-receipt-form.component.mjs +18 -18
  77. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form-button/stock-receipt-form-button.component.mjs +5 -5
  78. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.module.mjs +12 -12
  79. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt.service.mjs +6 -6
  80. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-list-page/stock-receipts-list-page.component.mjs +82 -44
  81. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-routing.module.mjs +5 -5
  82. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts.module.mjs +24 -22
  83. package/esm2022/lib/inventory-common/stock-summary.service.mjs +5 -5
  84. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.mjs +105 -0
  85. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-form-button/stock-transfer-form-button.component.mjs +38 -0
  86. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.mjs +77 -0
  87. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer.service.mjs +18 -0
  88. package/esm2022/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.mjs +9 -9
  89. package/esm2022/lib/inventory-common/supplier/payee-selector/payee-selector.module.mjs +10 -24
  90. package/esm2022/lib/inventory-common/supplier/supplier-delete-button/supplier-delete-button.component.mjs +64 -0
  91. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form-button/supplier-form-button.component.mjs +43 -0
  92. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form.component.mjs +24 -24
  93. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form.service.mjs +4 -4
  94. package/esm2022/lib/inventory-common/supplier/supplier-information/supplier-information.component.mjs +16 -15
  95. package/esm2022/lib/inventory-common/supplier/supplier-routing.module.mjs +9 -16
  96. package/esm2022/lib/inventory-common/supplier/supplier-view/supplier-view.component.mjs +13 -14
  97. package/esm2022/lib/inventory-common/supplier/supplier.component.mjs +3 -3
  98. package/esm2022/lib/inventory-common/supplier/supplier.module.mjs +23 -15
  99. package/esm2022/lib/inventory-common/supplier/supplier.service.mjs +5 -5
  100. package/esm2022/lib/inventory-common/supplier/suppliers-list/suppliers-list.component.mjs +6 -65
  101. package/esm2022/lib/inventory-common/techlify-filter/techlify-filter.component.mjs +16 -18
  102. package/esm2022/lib/inventory-common/techlify-filter/techlify-filter.module.mjs +13 -9
  103. package/fesm2022/techlify-inventory-common-category.module-BsvJ6rVx.mjs +290 -0
  104. package/fesm2022/techlify-inventory-common-category.module-BsvJ6rVx.mjs.map +1 -0
  105. package/fesm2022/techlify-inventory-common-location.module-Cwx9mHKE.mjs +529 -0
  106. package/fesm2022/techlify-inventory-common-location.module-Cwx9mHKE.mjs.map +1 -0
  107. package/fesm2022/techlify-inventory-common-measure.module-C2v0-n_m.mjs +307 -0
  108. package/fesm2022/techlify-inventory-common-measure.module-C2v0-n_m.mjs.map +1 -0
  109. package/fesm2022/{techlify-inventory-common-stock-issuances.module-BQRRP-hW.mjs → techlify-inventory-common-stock-issuances.module-CPccetrp.mjs} +3 -5
  110. package/fesm2022/techlify-inventory-common-stock-issuances.module-CPccetrp.mjs.map +1 -0
  111. package/fesm2022/techlify-inventory-common-supplier.module-CYq-2pV1.mjs +464 -0
  112. package/fesm2022/techlify-inventory-common-supplier.module-CYq-2pV1.mjs.map +1 -0
  113. package/fesm2022/techlify-inventory-common-techlify-inventory-common-BMNkSTd6.mjs +3620 -0
  114. package/fesm2022/techlify-inventory-common-techlify-inventory-common-BMNkSTd6.mjs.map +1 -0
  115. package/fesm2022/techlify-inventory-common.mjs +1 -1
  116. package/lib/inventory-common/category/category-form/category-form.component.d.ts +4 -4
  117. package/lib/inventory-common/category/category-form-button/category-form-button.component.d.ts +2 -2
  118. package/lib/inventory-common/category/category-list-page/category-list-page.component.d.ts +4 -4
  119. package/lib/inventory-common/category/category-view/category-view.component.d.ts +16 -0
  120. package/lib/inventory-common/category/category.module.d.ts +12 -11
  121. package/lib/inventory-common/category/category.service.d.ts +1 -1
  122. package/lib/inventory-common/inventory-common.module.d.ts +2 -1
  123. package/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.d.ts +1 -1
  124. package/lib/inventory-common/inventory-value-report.service.d.ts +9 -0
  125. package/lib/inventory-common/location/location-delete-button/location-delete-button.component.d.ts +28 -0
  126. package/lib/inventory-common/location/location-form/location-form.component.d.ts +19 -0
  127. package/lib/inventory-common/location/location-form-button/location-form-button.component.d.ts +13 -0
  128. package/lib/inventory-common/location/location-information/location-information.component.d.ts +10 -0
  129. package/lib/inventory-common/location/location-list/location-list.component.d.ts +20 -0
  130. package/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.d.ts +21 -0
  131. package/lib/inventory-common/location/location-routing.module.d.ts +7 -0
  132. package/lib/inventory-common/location/location-view/location-view.component.d.ts +16 -0
  133. package/lib/inventory-common/location/location.module.d.ts +8 -0
  134. package/lib/inventory-common/location/location.service.d.ts +10 -0
  135. package/lib/inventory-common/low-stock-report.service.d.ts +10 -0
  136. package/lib/inventory-common/measure/measure-delete/measure-delete-button/measure-delete-button.component.d.ts +3 -3
  137. package/lib/inventory-common/measure/measure-form/measure-form/measure-form.component.d.ts +4 -4
  138. package/lib/inventory-common/measure/measure-form/measure-form-button/measure-form-button.component.d.ts +2 -2
  139. package/lib/inventory-common/measure/measure.service.d.ts +1 -1
  140. package/lib/inventory-common/measure/measures-list/measures-list.component.d.ts +5 -5
  141. package/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.d.ts +3 -3
  142. package/lib/inventory-common/product/product-basic-info/product-basic-info.component.d.ts +2 -2
  143. package/lib/inventory-common/product/product-batch-update-form/product-batch-update-form.component.d.ts +18 -0
  144. package/lib/inventory-common/product/product-delete-button/product-delete-button.component.d.ts +4 -4
  145. package/lib/inventory-common/product/product-form/product-form.component.d.ts +6 -6
  146. package/lib/inventory-common/product/product-form-button/product-form-button.component.d.ts +3 -3
  147. package/lib/inventory-common/product/product-import-page/product-import-page.component.d.ts +2 -2
  148. package/lib/inventory-common/product/product-list/product-list.component.d.ts +15 -24
  149. package/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.d.ts +15 -0
  150. package/lib/inventory-common/product/product-measure-form/product-measure-form.component.d.ts +6 -6
  151. package/lib/inventory-common/product/product-measures-list/product-measures-list.component.d.ts +7 -7
  152. package/lib/inventory-common/product/product-quick-search/product-quick-search.component.d.ts +15 -0
  153. package/lib/inventory-common/product/product-statistics.service.d.ts +9 -0
  154. package/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.d.ts +1 -1
  155. package/lib/inventory-common/product/product-tax/product-tax-delete-button/product-tax-delete-button.component.d.ts +4 -4
  156. package/lib/inventory-common/product/product-tax/product-tax-form-button/product-tax-form-button.component.d.ts +5 -5
  157. package/lib/inventory-common/product/product-tax/product-tax-list/product-tax-list.component.d.ts +2 -2
  158. package/lib/inventory-common/product/product-tax/product-tax.service.d.ts +1 -1
  159. package/lib/inventory-common/product/product-view-page/product-view-page.component.d.ts +4 -4
  160. package/lib/inventory-common/product/product.module.d.ts +16 -13
  161. package/lib/inventory-common/product/product.service.d.ts +2 -2
  162. package/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.d.ts +6 -0
  163. package/lib/inventory-common/product-batch.service.d.ts +8 -0
  164. package/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.d.ts +26 -0
  165. package/lib/inventory-common/reports/low-stock-report/low-stock-report.component.d.ts +26 -0
  166. package/lib/inventory-common/stock-issuances/stock-issuance-delete-button/stock-issuance-delete-button.component.d.ts +4 -4
  167. package/lib/inventory-common/stock-issuances/stock-issuance.service.d.ts +1 -1
  168. package/lib/inventory-common/stock-issuances/stock-issuances-list/stock-issuances-list.component.d.ts +16 -8
  169. package/lib/inventory-common/stock-issuances/stock-issuances-list/stock-issuances-list.module.d.ts +3 -1
  170. package/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form/stock-issue-form.component.d.ts +4 -4
  171. package/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form-button/stock-issue-form-button.component.d.ts +2 -2
  172. package/lib/inventory-common/stock-receipts/stock-receipt-delete-button/stock-receipt-delete-button.component.d.ts +4 -4
  173. package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form/stock-receipt-form.component.d.ts +4 -4
  174. package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form-button/stock-receipt-form-button.component.d.ts +2 -2
  175. package/lib/inventory-common/stock-receipts/stock-receipt.service.d.ts +1 -1
  176. package/lib/inventory-common/stock-receipts/stock-receipts-list-page/stock-receipts-list-page.component.d.ts +12 -4
  177. package/lib/inventory-common/stock-receipts/stock-receipts.module.d.ts +2 -1
  178. package/lib/inventory-common/stock-summary.service.d.ts +1 -1
  179. package/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.d.ts +19 -0
  180. package/lib/inventory-common/stock-transfer/stock-transfer-form-button/stock-transfer-form-button.component.d.ts +14 -0
  181. package/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.d.ts +17 -0
  182. package/lib/inventory-common/stock-transfer/stock-transfer.service.d.ts +7 -0
  183. package/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.d.ts +3 -3
  184. package/lib/inventory-common/supplier/supplier-delete-button/supplier-delete-button.component.d.ts +18 -0
  185. package/lib/inventory-common/supplier/supplier-form/supplier-form-button/supplier-form-button.component.d.ts +13 -0
  186. package/lib/inventory-common/supplier/supplier-form/supplier-form.component.d.ts +6 -6
  187. package/lib/inventory-common/supplier/supplier-information/supplier-information.component.d.ts +4 -4
  188. package/lib/inventory-common/supplier/supplier-view/supplier-view.component.d.ts +4 -4
  189. package/lib/inventory-common/supplier/supplier.component.d.ts +2 -2
  190. package/lib/inventory-common/supplier/supplier.module.d.ts +3 -1
  191. package/lib/inventory-common/supplier/supplier.service.d.ts +1 -1
  192. package/lib/inventory-common/supplier/suppliers-list/suppliers-list.component.d.ts +0 -8
  193. package/lib/inventory-common/techlify-filter/techlify-filter.component.d.ts +4 -4
  194. package/lib/inventory-common/techlify-filter/techlify-filter.module.d.ts +2 -1
  195. package/package.json +1 -1
  196. package/fesm2022/techlify-inventory-common-category.module-CNm2bEsx.mjs +0 -257
  197. package/fesm2022/techlify-inventory-common-category.module-CNm2bEsx.mjs.map +0 -1
  198. package/fesm2022/techlify-inventory-common-measure.module-BEaRHh5Z.mjs +0 -313
  199. package/fesm2022/techlify-inventory-common-measure.module-BEaRHh5Z.mjs.map +0 -1
  200. package/fesm2022/techlify-inventory-common-product.module-BV9Cy88x.mjs +0 -1168
  201. package/fesm2022/techlify-inventory-common-product.module-BV9Cy88x.mjs.map +0 -1
  202. package/fesm2022/techlify-inventory-common-stock-issuances-list.module-Dt6gx-ji.mjs +0 -436
  203. package/fesm2022/techlify-inventory-common-stock-issuances-list.module-Dt6gx-ji.mjs.map +0 -1
  204. package/fesm2022/techlify-inventory-common-stock-issuances.module-BQRRP-hW.mjs.map +0 -1
  205. package/fesm2022/techlify-inventory-common-stock-receipt-form.module-DND0GNlf.mjs +0 -302
  206. package/fesm2022/techlify-inventory-common-stock-receipt-form.module-DND0GNlf.mjs.map +0 -1
  207. package/fesm2022/techlify-inventory-common-stock-receipts.module-BvYaKITT.mjs +0 -253
  208. package/fesm2022/techlify-inventory-common-stock-receipts.module-BvYaKITT.mjs.map +0 -1
  209. package/fesm2022/techlify-inventory-common-supplier-form.component-DVBnhiyH.mjs +0 -177
  210. package/fesm2022/techlify-inventory-common-supplier-form.component-DVBnhiyH.mjs.map +0 -1
  211. package/fesm2022/techlify-inventory-common-supplier.module-Bwa7gx14.mjs +0 -608
  212. package/fesm2022/techlify-inventory-common-supplier.module-Bwa7gx14.mjs.map +0 -1
  213. package/fesm2022/techlify-inventory-common-techlify-form-service-CiVfwYTS.mjs +0 -14
  214. package/fesm2022/techlify-inventory-common-techlify-form-service-CiVfwYTS.mjs.map +0 -1
  215. package/fesm2022/techlify-inventory-common-techlify-inventory-common-GFYF7JCA.mjs +0 -495
  216. package/fesm2022/techlify-inventory-common-techlify-inventory-common-GFYF7JCA.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"techlify-inventory-common-product.module-BV9Cy88x.mjs","sources":["../../../projects/inventory-common/src/lib/inventory-common/product/product-measure-form/product-measure-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-measure-form/product-measure-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-measures-list/product-measures-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-measures-list/product-measures-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-form.service.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-form/product-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-form/product-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-form-button/product-form-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-form-button/product-form-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-list/product-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-list/product-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-nav-bar/product-nav-bar.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-nav-bar/product-nav-bar.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-tax/product-tax.service.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-tax/product-tax-form-button/product-tax-form-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-tax/product-tax-form-button/product-tax-form-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-tax/product-tax-delete-button/product-tax-delete-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-tax/product-tax-delete-button/product-tax-delete-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-tax/product-tax-list/product-tax-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-tax/product-tax-list/product-tax-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-delete-button/product-delete-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-delete-button/product-delete-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-basic-info/product-basic-info.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-basic-info/product-basic-info.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-view-page/product-view-page.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-view-page/product-view-page.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-import-page/product-import-page.component.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-import-page/product-import-page.component.html","../../../projects/inventory-common/src/lib/inventory-common/product/product-routing.module.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product-tax/product-tax.module.ts","../../../projects/inventory-common/src/lib/inventory-common/product/product.module.ts"],"sourcesContent":["import { Component, Inject, OnInit } from \"@angular/core\";\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\nimport { MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\nimport { NgxSpinnerService } from \"ngx-spinner\";\nimport {\n AlertService,\n ErrorHandlerService,\n FormValidatorService,\n} from \"ngx-techlify-core\";\nimport { ProductService } from \"../product.service\";\n\nconst errorMessages: any = {\n title: {\n required: \"Please Enter Title\",\n },\n description: {\n required: \"Please Enter Description\",\n },\n};\n\n@Component({\n selector: \"app-product-measure-form\",\n templateUrl: \"./product-measure-form.component.html\",\n})\nexport class ProductMeasureFormComponent implements OnInit {\n public productMeasureForm: FormGroup;\n public isWorking: boolean = false;\n public isUpdate: boolean = false;\n constructor(\n private productService: ProductService,\n private fb: FormBuilder,\n public dialogRef: MatDialogRef<ProductMeasureFormComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private spinnerService: NgxSpinnerService,\n private formValidatorService: FormValidatorService,\n private errorService: ErrorHandlerService,\n private alertService: AlertService\n ) {\n this.productMeasureForm = this.fb.group({\n id: [\"\"],\n title: [\"\", Validators.compose([Validators.required])],\n description: [\"\", Validators.compose([Validators.required])],\n });\n }\n\n ngOnInit(): void {\n if (this.data.details) {\n this.isUpdate = true;\n this.productMeasureForm.patchValue(this.data.details);\n }\n }\n\n async save() {\n if (!this.productMeasureForm.valid) {\n this.alertService.addAlert(\"Please Fill All Required Fields\", \"warn\");\n this.productMeasureForm.markAllAsTouched();\n return;\n }\n let productMeasure = this.productMeasureForm.value;\n try {\n this.spinnerService.show();\n this.isWorking = true;\n let result = this.isUpdate\n ? await this.productService.updateProductMeasure(productMeasure)\n : await this.productService.createProductMeasure(productMeasure);\n this.dialogRef.close(result);\n } catch (error) {\n this.errorService.handleError(error);\n } finally {\n this.isWorking = false;\n this.spinnerService.hide();\n }\n }\n /**\n * Method to evaluate form fields\n */\n isFieldValid(field: string) {\n return this.formValidatorService.isFieldValid(\n field,\n this.productMeasureForm\n );\n }\n /**\n * Method to find error in form fields\n */\n getErrorMessage(field: string) {\n return this.formValidatorService.getErrorMessage(\n field,\n this.productMeasureForm,\n errorMessages\n );\n }\n}\n","<div>\n <form [formGroup]=\"productMeasureForm\" (ngSubmit)=\"save()\">\n <h3 class=\"text-center\">Create/Update Product Measure</h3>\n <div fxLayout=\"column\">\n <div fxLayout=\"column\">\n <mat-form-field>\n <input\n matInput\n placeholder=\"Title\"\n formControlName=\"title\"\n required\n />\n <mat-error *ngIf=\"isFieldValid('title')\"\n >{{ getErrorMessage(\"title\") }}\n </mat-error>\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n placeholder=\"Description\"\n formControlName=\"description\"\n required\n />\n <mat-error *ngIf=\"isFieldValid('description')\"\n >{{ getErrorMessage(\"description\") }}\n </mat-error>\n </mat-form-field>\n <div fxFlex=\"100%\" fxLayout fxLayoutGap=\"1rem\">\n <button\n mat-button\n class=\"mt-2\"\n type=\"button\"\n (click)=\"dialogRef.close()\"\n >\n Cancel\n </button>\n <button mat-raised-button color=\"primary\" class=\"mt-2\" type=\"submit\">\n Save\n </button>\n </div>\n </div>\n </div>\n </form>\n</div>\n","import { ProductMeasureFormComponent } from \"../product-measure-form/product-measure-form.component\";\nimport { ProductService } from \"../product.service\";\nimport { Component, OnInit } from \"@angular/core\";\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { MatTableDataSource } from \"@angular/material/table\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { FilterService } from \"ngx-techlify-core\";\nimport { debounceTime } from \"rxjs/operators\";\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\n\n@UntilDestroy()\n@Component({\n selector: \"app-product-measure-list\",\n templateUrl: \"./product-measures-list.component.html\",\n})\nexport class ProductMeasuresListComponent implements OnInit {\n public filterFormGroup: FormGroup;\n\n public lastPage!: number;\n public page: number = 1;\n public perPage: number = 25;\n public totalItems = 0;\n public currentPage = 1;\n public num_items = 25;\n public routeFilters: any;\n public productMeasures: any[] = [];\n\n columnDefinitions = [\n { def: \"#\", isShow: true },\n { def: \"Title\", isShow: true },\n { def: \"Description\", isShow: true },\n { def: \"Actions\", isShow: true },\n ];\n\n displayedColumns: string[] = [\"#\", \"Title\", \"Description\", \"Actions\"];\n\n public dataSource = new MatTableDataSource();\n\n constructor(\n private fb: FormBuilder,\n private dialog: MatDialog,\n private filterService: FilterService,\n private activatedRoute: ActivatedRoute,\n private productService: ProductService\n ) {\n this.filterFormGroup = this.fb.group({\n num_items: [this.num_items + \"|\" + this.currentPage],\n search: [\"\"],\n type_ids: [\"\"],\n sort_by: [\"\"],\n });\n }\n\n ngOnInit(): void {\n this.patchFiltersFromRoute();\n this.listenForChanges();\n this.loadData();\n }\n\n listenForChanges() {\n this.filterFormGroup.valueChanges\n .pipe(debounceTime(500), untilDestroyed(this))\n .subscribe((changes) => {\n this.filterService.applyFilterToRoute(\n this.activatedRoute,\n this.filterFormGroup.value\n );\n this.reload();\n });\n }\n\n patchFiltersFromRoute() {\n this.routeFilters = this.filterService.getFiltersFromRoute(\n this.activatedRoute,\n this.filterFormGroup.value\n );\n this.filterFormGroup.setValue(this.routeFilters);\n\n if (this.routeFilters.type_ids) {\n this.filterFormGroup\n .get(\"type_ids\")!\n .setValue(this.routeFilters.type_ids.split(\",\").map(Number));\n }\n }\n\n async loadData() {\n let filters = this.filterFormGroup.value;\n filters.page = this.page;\n filters.per_page = this.perPage;\n filters.type_ids = filters.type_ids.toString();\n filters.num_items = this.num_items + \"|\" + this.currentPage;\n\n let res = await this.productService.getProductMeasures(filters);\n\n if (this.productMeasures.length < 1) {\n this.productMeasures = res.data;\n } else {\n res.data.forEach((item: any) => this.productMeasures.push(item));\n }\n this.dataSource = new MatTableDataSource(this.productMeasures);\n this.totalItems = res.total;\n this.lastPage = res.last_page || this.page;\n }\n\n reload() {\n this.productMeasures = [];\n this.currentPage = 1;\n this.loadData();\n }\n\n modifyProductMeasure(model?: any) {\n const dialogRef = this.dialog.open(ProductMeasureFormComponent, {\n width: \"600px\",\n data: {\n details: model,\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.reload();\n }\n });\n }\n\n onScroll() {\n if (this.totalItems > this.productMeasures.length) {\n this.currentPage += 1;\n this.loadData();\n }\n }\n\n assignFilter(column: any, direction: string) {\n if (column) {\n return this.filterFormGroup\n .get(\"sort_by\")\n ?.setValue(column + \"|\" + direction);\n }\n }\n\n sortColumn(event: any) {\n var direction = event.direction.toString().toUpperCase();\n this.assignFilter(event.active, direction);\n }\n\n // eslint-disable-next-line @angular-eslint/use-lifecycle-interface\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n }\n}\n","<div fxLayout=\"column\">\n <div class=\"text-center\" fxLayoutAlign=\"center center\">\n <h3 fxLayout>\n <span class=\"mt-1\"> Product Measures </span>\n <button\n mat-raised-button\n class=\"ml-2\"\n color=\"primary\"\n (click)=\"modifyProductMeasure()\"\n >\n <mat-icon>add</mat-icon>\n Product Measure\n </button>\n </h3>\n </div>\n\n <div fxLayout>\n <form [formGroup]=\"filterFormGroup\" fxLayout fxLayoutGap=\"0.5rem\">\n <mat-form-field>\n <input\n matInput\n placeholder=\"Item Name, Description, etc.\"\n formControlName=\"search\"\n />\n </mat-form-field>\n </form>\n\n <mat-form-field class=\"ml-2\" fxFlex=\"0 1 calc(11.11% - 0.5rem)\">\n <mat-label>Columns</mat-label>\n <mat-select [(ngModel)]=\"displayedColumns\" multiple name=\"column\">\n <mat-option\n *ngFor=\"let column of columnDefinitions\"\n [value]=\"column.def\"\n [disabled]=\"!column.isShow\"\n >\n {{ column?.def }}</mat-option\n >\n </mat-select>\n </mat-form-field>\n </div>\n\n <table\n mat-table\n #table\n [dataSource]=\"dataSource\"\n class=\"mat-elevation-z8 w-100 mt-4 table-hover\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\"\n infiniteScrollContainer=\"mat-sidenav-content\"\n matSort\n (matSortChange)=\"sortColumn($event)\"\n matSortDisableClear=\"true\"\n >\n <!-- # Column -->\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <!-- Title Column -->\n <ng-container matColumnDef=\"Title\">\n <th mat-header-cell mat-sort-header *matHeaderCellDef>Title</th>\n <td mat-cell *matCellDef=\"let element\">{{ element.title }}</td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"Description\">\n <th mat-header-cell mat-sort-header *matHeaderCellDef>Description</th>\n <td mat-cell *matCellDef=\"let element\">{{ element.description }}</td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"Actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-secondary\" fxLayoutGap=\"1rem\">\n <button mat-icon-button (click)=\"modifyProductMeasure(element)\">\n <mat-icon>edit</mat-icon>\n </button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n</div>\n","import { Injectable } from \"@angular/core\";\nimport TechlifyFormService from '../services/techlify-form-service';\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class ProductFormService extends TechlifyFormService {\n constructor() {\n super();\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\nimport moment from \"moment\";\nimport { AlertService, FormValidatorService } from \"ngx-techlify-core\";\nimport { ProductService } from \"../product.service\";\nimport { Observable } from \"rxjs\";\nimport { DatePipe } from \"@angular/common\";\nimport { ProductFormService } from \"../product-form.service\";\n\nconst initial_quantity: number = 0;\nconst reorder_point: number = 10;\n\nconst errorMessages: any = {\n type_id: {\n required: \"Please Enter Type\",\n },\n name: {\n required: \"Please Enter Name\",\n },\n sale_price: {\n required: \"Please Enter Sales Price\",\n },\n minimum_price: {\n required: \"Please Enter Minimum Price\",\n },\n reorder_point: {\n required: \"Please Enter Reorder Point\",\n },\n};\n\n@Component({\n selector: \"app-product-form\",\n templateUrl: \"./product-form.component.html\",\n})\nexport class ProductFormComponent implements OnInit {\n public productForm: FormGroup;\n public isWorking: boolean = false;\n public isUpdate: boolean = false;\n @Output() saved: EventEmitter<any> = new EventEmitter();\n @Output() cancelled: EventEmitter<any> = new EventEmitter();\n @Input() product: any;\n @Input() displayedFormFields: any[] = [\n \"name\",\n \"product type\",\n \"sku\",\n \"description\",\n \"product measure\",\n \"reorder point\",\n \"initial quantity\",\n \"initial quantity date\",\n \"sales price\",\n \"minimum price\",\n \"maximum price\",\n \"income account\",\n \"expense account\",\n ];\n\n @Input() displayedFormSections: any[] = [\n \"basic information\",\n \"inventory information\",\n \"sales information\",\n \"accounts information\",\n ];\n\n constructor(\n private productService: ProductService,\n private fb: FormBuilder,\n private formValidatorService: FormValidatorService,\n private alertService: AlertService,\n private datePipe: DatePipe,\n private productFormService: ProductFormService\n ) {\n this.productForm = this.fb.group({\n id: [\"\"],\n type_id: [1, Validators.compose([Validators.required])],\n sku: [\"\"],\n name: [\"\", Validators.compose([Validators.required])],\n initial_quantity: [initial_quantity],\n initial_quantity_date: [moment().format()],\n reorder_point: [reorder_point, Validators.compose([Validators.required])],\n description: [\"\"],\n sale_price: [0, Validators.compose([Validators.required])],\n income_account_id: [\"\"],\n expense_account_id: [\"\"],\n measure_id: [1],\n minimum_price: [\"\", Validators.compose([Validators.required])],\n maximum_price: [\"\"],\n condition_type_id: [1],\n current_quantity: [],\n category_ids: [\"\"],\n });\n }\n\n ngOnInit() {\n if (this.product?.id) {\n this.isUpdate = true;\n let data = { ...this.product };\n if (this.product?.categories?.length > 0) {\n data.category_ids = (this.product.categories as []).map(\n (category: any) => category?.id\n );\n }\n if (data?.initial_quantity_date) {\n data.initial_quantity_date = moment(\n data.initial_quantity_date\n ).toISOString();\n }\n this.productForm.patchValue(data);\n }\n }\n\n async save() {\n this.productForm.markAllAsTouched();\n if (this.productForm.invalid) {\n this.alertService.addAlert(\"Please Fill All Required Fields\", \"warn\");\n return;\n }\n let product = this.productForm.value;\n if (product.maximum_price <= 0 || !product.maximum_price) {\n product.maximum_price = product.minimum_price;\n }\n\n if (product?.initial_quantity_date) {\n product.initial_quantity_date = moment(\n product.initial_quantity_date\n ).format(\"YYYY-MM-DD\");\n }\n this.isWorking = true;\n product.with = \"type,measure,incomeAccount,expenseAccount\";\n\n let request: Observable<any> = this.productService.store(product);\n if (this.isUpdate) {\n request = this.productService.update(product);\n }\n request.subscribe({\n next: (response: any) => {\n this.saved.emit(response?.item);\n this.isWorking = false;\n this.productFormService.listUpdated(true);\n this.alertService.addAlert(\"Product saved successfully!\", \"success\");\n },\n error: () => (this.isWorking = false),\n });\n }\n\n /**\n * Method to evaluate form fields\n */\n isFieldValid(field: string) {\n return this.formValidatorService.isFieldValid(field, this.productForm);\n }\n /**\n * Method to find error in form fields\n */\n getErrorMessage(field: string) {\n return this.formValidatorService.getErrorMessage(\n field,\n this.productForm,\n errorMessages\n );\n }\n\n /**\n * Checks displayed Form Fields array for form field and returns boolean result\n */\n isFormFieldShown(fieldName: string): boolean {\n return (\n this.displayedFormFields.length > 0 &&\n this.displayedFormFields.includes(fieldName)\n );\n }\n\n /**\n * Checks displayed Form Section array for form section and returns boolean result\n */\n isFormSectionShown(sectionName: string): boolean {\n return (\n this.displayedFormSections.length > 0 &&\n this.displayedFormSections.includes(sectionName)\n );\n }\n}\n","<form [formGroup]=\"productForm\" (submit)=\"save()\">\n <h3 class=\"text-center\">{{ product?.id ? \"Update\" : \"Create\" }} Product</h3>\n <div fxLayout=\"column\">\n <div fxLayout=\"column\" *ngIf=\"isFormSectionShown('basic information')\">\n <h3><strong>Basic Information</strong></h3>\n <div fxLayout fxLayoutGap=\"0.5rem\">\n <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('name')\">\n <input matInput placeholder=\"Name\" formControlName=\"name\" required />\n <mat-error *ngIf=\"isFieldValid('name')\"\n >{{ getErrorMessage(\"name\") }}\n </mat-error>\n </mat-form-field>\n <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('product type')\">\n <mat-label>Product Type</mat-label>\n <app-searchable-selector\n apiUrl=\"api/product-types\"\n formControlName=\"type_id\"\n >\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('type_id')\"\n >{{ getErrorMessage(\"type_id\") }}\n </mat-error>\n </mat-form-field>\n </div>\n <div fxLayout fxLayoutGap=\"0.5rem\">\n <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('sku')\">\n <input matInput placeholder=\"SKU\" formControlName=\"sku\" />\n <mat-error *ngIf=\"isFieldValid('sku')\"\n >{{ getErrorMessage(\"sku\") }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"50%\">\n <mat-label>Category</mat-label>\n <app-searchable-selector\n apiUrl=\"api/product-categories\"\n formControlName=\"category_ids\"\n [multiple]=\"true\"\n >\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('category_ids')\">\n {{ getErrorMessage(\"category_ids\") }}\n </mat-error>\n </mat-form-field>\n </div>\n\n <div fxLayout fxLayoutGap=\"0.5rem\">\n <mat-form-field fxFlex=\"100%\" *ngIf=\"isFormFieldShown('description')\">\n <textarea\n matInput\n placeholder=\"Description\"\n formControlName=\"description\"\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n\n <div fxLayout=\"column\" *ngIf=\"isFormSectionShown('inventory information')\">\n <h3><strong>Inventory Information</strong></h3>\n <div fxLayout fxLayoutGap=\"0.5rem\">\n <mat-form-field\n fxFlex=\"50%\"\n *ngIf=\"isFormFieldShown('product measure')\"\n >\n <mat-label>Measure</mat-label>\n <app-searchable-selector\n apiUrl=\"api/product-measures\"\n formControlName=\"measure_id\"\n >\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('measure_id')\"\n >{{ getErrorMessage(\"measure_id\") }}\n </mat-error>\n </mat-form-field>\n <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('reorder point')\">\n <input\n matInput\n placeholder=\"Reorder Point\"\n formControlName=\"reorder_point\"\n type=\"number\"\n />\n <mat-error *ngIf=\"isFieldValid('reorder_point')\"\n >{{ getErrorMessage(\"reorder_point\") }}\n </mat-error>\n </mat-form-field>\n </div>\n <div fxLayout fxLayoutGap=\"0.5rem\">\n <mat-form-field\n fxFlex=\"50%\"\n *ngIf=\"isFormFieldShown('initial quantity')\"\n >\n <input\n matInput\n placeholder=\"Initial Quantity\"\n formControlName=\"initial_quantity\"\n />\n <mat-error *ngIf=\"isFieldValid('initial_quantity')\"\n >{{ getErrorMessage(\"initial_quantity\") }}\n </mat-error>\n </mat-form-field>\n <mat-form-field\n fxFlex=\"50%\"\n *ngIf=\"isFormFieldShown('initial quantity date')\"\n >\n <input\n matInput\n [matDatepicker]=\"pickerInitialQuantityDate\"\n placeholder=\"Initial Quantity Date\"\n formControlName=\"initial_quantity_date\"\n />\n <mat-datepicker-toggle\n matSuffix\n [for]=\"pickerInitialQuantityDate\"\n ></mat-datepicker-toggle>\n <mat-datepicker #pickerInitialQuantityDate></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('initial_quantity_date')\"\n >{{ getErrorMessage(\"initial_quantity_date\") }}\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <div fxLayout=\"column\" *ngIf=\"isFormSectionShown('sales information')\">\n <h3><strong>Sale Information</strong></h3>\n <div fxLayout fxLayoutGap=\"0.5rem\">\n <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('sales price')\">\n <input\n matInput\n placeholder=\"Selling Price\"\n formControlName=\"sale_price\"\n required\n type=\"number\"\n step=\"any\"\n />\n <mat-error *ngIf=\"isFieldValid('sale_price')\"\n >{{ getErrorMessage(\"sale_price\") }}\n </mat-error>\n </mat-form-field>\n <mat-form-field\n fxFlex=\"50%\"\n *ngIf=\"isFormFieldShown('condition types')\"\n >\n <mat-label>Condition</mat-label>\n <app-searchable-selector\n apiUrl=\"api/condition-types\"\n formControlName=\"condition_type_id\"\n ></app-searchable-selector>\n </mat-form-field>\n </div>\n <div fxLayout fxLayoutGap=\"0.5rem\">\n <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('minimum price')\">\n <input\n matInput\n placeholder=\"Minimum Price\"\n formControlName=\"minimum_price\"\n required\n type=\"number\"\n step=\"any\"\n />\n <mat-error *ngIf=\"isFieldValid('minimum_price')\"\n >{{ getErrorMessage(\"minimum_price\") }}\n </mat-error>\n </mat-form-field>\n <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('maximum price')\">\n <input\n matInput\n placeholder=\"Maximum Price\"\n formControlName=\"maximum_price\"\n type=\"number\"\n step=\"any\"\n />\n </mat-form-field>\n </div>\n </div>\n <!-- <div fxLayout=\"column\" *ngIf=\"isFormSectionShown('accounts information')\">-->\n <!-- <h3><strong>Accounts Information</strong></h3>-->\n <!-- <div fxLayout fxLayoutGap=\"0.5rem\">-->\n <!-- <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('income account')\">-->\n <!-- <mat-label>Income Account</mat-label>-->\n <!-- <app-searchable-selector apiUrl=\"api/accounts\" formControlName=\"income_account_id\"> </app-searchable-selector>-->\n <!-- </mat-form-field>-->\n <!-- <mat-form-field fxFlex=\"50%\" *ngIf=\"isFormFieldShown('expense account')\">-->\n <!-- <mat-label>Expense Account</mat-label>-->\n <!-- <app-searchable-selector apiUrl=\"api/accounts\" formControlName=\"expense_account_id\">-->\n <!-- </app-searchable-selector>-->\n <!-- </mat-form-field>-->\n <!-- </div>-->\n <!-- </div>-->\n <div fxFlex=\"100%\" fxLayout fxLayoutAlign=\"end\" fxLayoutGap=\"1rem\">\n <button\n [disabled]=\"isWorking\"\n mat-button\n class=\"mt-2\"\n type=\"button\"\n (click)=\"cancelled.emit(true)\"\n >\n Cancel\n </button>\n <button\n [disabled]=\"isWorking\"\n mat-raised-button\n color=\"primary\"\n class=\"mt-2\"\n type=\"submit\"\n >\n Save\n </button>\n </div>\n </div>\n</form>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from \"@angular/core\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { ProductFormService } from \"../product-form.service\";\n\n@Component({\n selector: \"app-product-form-button\",\n templateUrl: \"./product-form-button.component.html\",\n styleUrls: [\"./product-form-button.component.scss\"],\n})\nexport class ProductFormButtonComponent {\n @Input() product: any;\n @Output() saved = new EventEmitter();\n\n constructor(\n public matDialog: MatDialog,\n private productFormService: ProductFormService\n ) {}\n\n showForm(templateRef: TemplateRef<any>) {\n this.matDialog.open(templateRef, { width: \"600px\" });\n }\n\n /**\n * Handle on product saved event.\n *\n * @param product\n */\n onProductSaved(product: any) {\n this.saved.emit(product);\n this.matDialog?.closeAll();\n this.productFormService.listUpdated(true);\n }\n}\n","<mat-icon\n color=\"primary\"\n class=\"cursor-pointer\"\n [class.text-secondary]=\"product\"\n (click)=\"showForm(addProductForm)\"\n>\n {{ product ? \"edit\" : \"add\" }}\n</mat-icon>\n\n<ng-template #addProductForm>\n <app-product-form\n [product]=\"product\"\n mat-dialog-content\n (saved)=\"onProductSaved($event)\"\n (cancelled)=\"matDialog.closeAll()\"\n ></app-product-form>\n</ng-template>\n","import { Component, OnInit } from \"@angular/core\";\nimport { FormBuilder, FormControl, FormGroup } from \"@angular/forms\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { MatTableDataSource } from \"@angular/material/table\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport {ColumnConfig, RequestHelperService} from \"ngx-techlify-core\";\nimport { ProductService } from \"../product.service\";\nimport { UntilDestroy } from \"@ngneat/until-destroy\";\nimport { debounceTime } from \"rxjs/operators\";\nimport { ProductFormComponent } from \"../product-form/product-form.component\";\nimport { ProductFormService } from \"../product-form.service\";\n@UntilDestroy()\n@Component({\n selector: \"app-product-list\",\n templateUrl: \"./product-list.component.html\",\n})\nexport class ProductListComponent implements OnInit {\n public filterForm: FormGroup;\n public lastPage!: number;\n public page: number = 1;\n public perPage: number = 25;\n public totalItems = 0;\n public currentPage = 1;\n public num_items = 25;\n public routeFilters: any;\n public products: any[] = [];\n public dataSource = new MatTableDataSource();\n isLoading: boolean = false;\n\n columnConfig: ColumnConfig[] = [\n { label: '#', def: '#', isSelected: true, isEditable: true },\n { label: 'Name', def: 'name', isSelected: true, isEditable: true },\n { label: 'SKU', def: 'sku', isSelected: true, isEditable: true },\n { label: 'Categories', def: 'categories', isSelected: true, isEditable: true },\n { label: 'Initial Quantity', def: 'initial_quantity', isSelected: true, isEditable: true },\n { label: 'Reorder Point', def: 'reorder_point', isSelected: true, isEditable: true },\n { label: 'Stock Receipts', def: 'stock_receipts', isSelected: true, isEditable: true },\n { label: 'Stock Issuances', def: 'stock_issuances', isSelected: true, isEditable: true },\n { label: 'On Hand', def: 'on_hand', isSelected: true, isEditable: true },\n { label: 'Sale Price', def: 'sale_price', isSelected: true, isEditable: true },\n { label: 'Income Account', def: 'income_account', isSelected: false, isEditable: true },\n { label: 'Expense Account', def: 'expense_account', isSelected: false, isEditable: true },\n { label: 'Creator', def: 'creator', isSelected: false, isEditable: true },\n { label: 'Actions', def: 'Actions', isSelected: true, isEditable: true },\n ];\n\n selectedColumns: ColumnConfig[] = this.columnConfig.filter(col => col.isSelected);\n\n get displayedColumns(): string[] {\n return this.selectedColumns.map(col => col.def);\n }\n\n importId!: number;\n\n constructor(\n private fb: FormBuilder,\n private dialog: MatDialog,\n private activatedRoute: ActivatedRoute,\n private productService: ProductService,\n private requestHelperService: RequestHelperService,\n private productFormService: ProductFormService\n ) {\n this.filterForm = this.fb.group({\n search: [\"\"],\n category_ids: [\"\"],\n type_ids: [\"\"],\n income_account_ids: [\"\"],\n expense_account_ids: [\"\"],\n sort_by: [\"\"],\n });\n }\n\n ngOnInit(): void {\n if (this.activatedRoute.snapshot.params?.[\"import_id\"]) {\n this.importId = parseInt(\n this.activatedRoute.snapshot.params?.[\"import_id\"]\n );\n }\n // update form with URL query params\n this.requestHelperService.updateFormWithQueryParams(this.filterForm, {\n type_ids: { multiple: true },\n category_ids: { multiple: true },\n income_account_ids: { multiple: true },\n expense_account_ids: { multiple: true },\n });\n // Update URL query params on filter change\n this.filterForm.valueChanges.pipe(debounceTime(800)).subscribe(() => {\n this.requestHelperService.updateQueryParams(\n this.requestHelperService.convertToFormData({\n ...this.filterForm.value,\n })\n );\n });\n // fetch task on params change\n this.activatedRoute.queryParams\n .pipe(debounceTime(800))\n .subscribe(() => this.reload());\n // listen form product add or update event and reload.\n this.productFormService.isListUpdated().subscribe((val: boolean) => {\n if (val && !this.isLoading) {\n this.reload();\n }\n });\n }\n\n loadData() {\n let params: any = {\n ...this.requestHelperService.convertToFormData(this.filterForm.value),\n };\n params.page = this.page;\n params.perPage = this.perPage;\n params.num_items = this.num_items + \"|\" + this.currentPage;\n params.with = \"categories,lastStockReceipt,lastStockIssuance,creator\";\n if (this.importId) {\n params.import_id = this.importId;\n }\n this.isLoading = true;\n\n this.productService.index(params).subscribe({\n next: (res: any) => {\n this.isLoading = false;\n this.dataSource = new MatTableDataSource(\n this.dataSource.data.concat(res?.data)\n );\n this.totalItems = res.total;\n // stop reloading data once data loaded.\n this.productFormService.listUpdated(false);\n },\n error: () => (this.isLoading = false),\n });\n }\n\n reload() {\n if (this.isLoading) return;\n this.dataSource = new MatTableDataSource();\n this.currentPage = 1;\n this.loadData();\n }\n\n modifyProduct(model?: any) {\n const dialogRef = this.dialog.open(ProductFormComponent, {\n width: \"600px\",\n data: {\n details: model,\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.reload();\n }\n });\n }\n\n assignFilter(column: any, direction: string) {\n if (column) {\n return this.filterForm.get(\"sort_by\")?.setValue(column + \"|\" + direction);\n }\n }\n\n sortColumn(event: any) {\n var direction = event.direction.toString().toUpperCase();\n this.assignFilter(event.active, direction);\n }\n\n onScroll() {\n if (this.totalItems > this.dataSource.data.length) {\n this.currentPage += 1;\n this.loadData();\n }\n }\n}\n","<mat-card class=\"mb-3\">\n <mat-card-content>\n <form\n [formGroup]=\"filterForm\"\n class=\"d-flex justify-content-between align-items-center gap-2\"\n >\n <div class=\"d-flex justify-content-center align-items-center gap-2\">\n <h3 class=\"mb-0\">Products</h3>\n <app-product-form-button class=\"mt-2\"></app-product-form-button>\n <span matTooltip=\"Import\" routerLink=\"import\" class=\"cursor-pointer mt-1 material-symbols-outlined\">\n file_save\n </span>\n <app-column-selector\n mode=\"icon\"\n class=\"mb-2 d-print-none\"\n [columnConfigs]=\"columnConfig\"\n [(selectedColumns)]=\"selectedColumns\"\n ></app-column-selector>\n </div>\n\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <mat-form-field style=\"width: 120px\">\n <input matInput placeholder=\"Product\" formControlName=\"search\" />\n </mat-form-field>\n\n <mat-form-field style=\"width: 120px\">\n <mat-label>Category</mat-label>\n <app-searchable-selector\n apiUrl=\"api/product-categories\"\n formControlName=\"category_ids\"\n [multiple]=\"true\"\n >\n </app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field style=\"width: 120px\">\n <mat-label>Type</mat-label>\n <app-searchable-selector\n apiUrl=\"api/product-types\"\n formControlName=\"type_ids\"\n titleField=\"title\"\n [multiple]=\"true\"\n >\n </app-searchable-selector>\n </mat-form-field>\n <!-- <mat-form-field style=\"width: 150px\">-->\n <!-- <mat-label>Income Account</mat-label>-->\n <!-- <app-searchable-selector-->\n <!-- apiUrl=\"api/accounts\"-->\n <!-- formControlName=\"income_account_ids\"-->\n <!-- titleField=\"title\"-->\n <!-- [multiple]=\"true\"-->\n <!-- >-->\n <!-- </app-searchable-selector>-->\n <!-- </mat-form-field>-->\n <!-- <mat-form-field style=\"width: 150px\">-->\n <!-- <mat-label>Expense Account</mat-label>-->\n <!-- <app-searchable-selector-->\n <!-- apiUrl=\"api/accounts\"-->\n <!-- formControlName=\"expense_account_ids\"-->\n <!-- titleField=\"title\"-->\n <!-- [multiple]=\"true\"-->\n <!-- >-->\n <!-- </app-searchable-selector>-->\n <!-- </mat-form-field>-->\n </div>\n </form>\n </mat-card-content>\n</mat-card>\n\n<mat-card>\n <mat-card-content class=\"p-0\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n class=\"w-100\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\"\n matSort\n (matSortChange)=\"sortColumn($event)\"\n matSortDisableClear=\"true\"\n aria-describedby=\"Products List\"\n >\n <!-- # Column -->\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell mat-sort-header *matHeaderCellDef>Name</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-column gap-1\">\n <a class=\"text-decoration-none text-dark\" [routerLink]=\"[element?.id, 'view']\">{{ element.name }}</a>\n <small class=\"text-secondary\" *ngIf=\"element.type\">{{ element.type?.title }}</small>\n </div>\n </td>\n </ng-container>\n\n <!-- Categories Column -->\n <ng-container matColumnDef=\"categories\">\n <th mat-header-cell *matHeaderCellDef>Categories</th>\n <td mat-cell *matCellDef=\"let element\" style=\"max-width: 200px\">\n <div\n *ngIf=\"element?.categories?.length > 0\"\n class=\"d-flex justify-content-start align-items-center gap-1 flex-wrap\"\n >\n <span\n class=\"badge bg-secondary\"\n *ngFor=\"let category of element?.categories\"\n >\n {{ category?.title }}\n </span>\n </div>\n </td>\n </ng-container>\n\n <!-- SKU Column -->\n <ng-container matColumnDef=\"sku\">\n <th mat-header-cell mat-sort-header *matHeaderCellDef>SKU</th>\n <td mat-cell *matCellDef=\"let element\">{{ element.sku }}</td>\n </ng-container>\n\n <!-- Initial Quantity Column -->\n <ng-container matColumnDef=\"initial_quantity\">\n <th mat-header-cell mat-sort-header *matHeaderCellDef>\n Initial Quantity\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{ element.initial_quantity }}</p>\n <small class=\"text-secondary\" *ngIf=\"element?.initial_quantity_date\">\n on {{ element?.initial_quantity_date | date }}\n </small>\n </td>\n </ng-container>\n\n <!-- Stock Receipts Column -->\n <ng-container matColumnDef=\"stock_receipts\">\n <th mat-header-cell mat-sort-header=\"stock_receipts_sum_quantity\" *matHeaderCellDef>\n Stock Receipts\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{ element?.stock_receipts_sum_quantity }}</p>\n <small class=\"text-secondary\" *ngIf=\"element?.last_stock_receipt\">\n last added on {{ element?.last_stock_receipt?.date | date }}\n </small>\n </td>\n </ng-container>\n\n <!-- Stock Issuances Column -->\n <ng-container matColumnDef=\"stock_issuances\">\n <th mat-header-cell mat-sort-header=\"stock_issuances_sum_quantity\" *matHeaderCellDef>\n Stock Issuances\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{ element?.stock_issuances_sum_quantity }}</p>\n <small class=\"text-secondary\" *ngIf=\"element?.last_stock_issuance\">\n last issued on {{ element?.last_stock_issuance?.date | date }}\n </small>\n </td>\n </ng-container>\n\n <!-- On Hand Column -->\n <ng-container matColumnDef=\"on_hand\">\n <th mat-header-cell mat-sort-header=\"stock_balance\" *matHeaderCellDef>On Hand</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.stock_balance }}\n </td>\n </ng-container>\n\n <!-- Reorder Point Column -->\n <ng-container matColumnDef=\"reorder_point\">\n <th mat-header-cell mat-sort-header *matHeaderCellDef>Reorder Point</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element.reorder_point }}\n </td>\n </ng-container>\n\n <!-- Selling Price Column -->\n <ng-container matColumnDef=\"sale_price\">\n <th mat-header-cell mat-sort-header *matHeaderCellDef>Selling Price</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element.sale_price | currency }}\n </td>\n </ng-container>\n\n <!-- Income Account Column -->\n <ng-container matColumnDef=\"income_account\">\n <th mat-header-cell *matHeaderCellDef>Income Account</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.income_account?.title }}\n </td>\n </ng-container>\n\n <!-- Expense Account Column -->\n <ng-container matColumnDef=\"expense_account\">\n <th mat-header-cell *matHeaderCellDef>Expense Account</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.expense_account?.title }}\n </td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef>Creator</th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n <small class=\"text-secondary\">{{ element?.created_at | date }}</small>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"Actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-secondary d-flex gap-1\">\n <app-product-form-button\n [product]=\"element\"\n ></app-product-form-button>\n <mat-icon\n class=\"cursor-pointer\"\n matTooltip=\"View\"\n [routerLink]=\"[element.id, 'view']\"\n routerLinkActive=\"route-link-active\"\n >\n remove_red_eye\n </mat-icon>\n\n <app-stock-receipt-form-button\n [product]=\"element\"\n (saved)=\"reload()\"\n ></app-stock-receipt-form-button>\n\n <app-stock-issue-form-button\n [product]=\"element\"\n (saved)=\"reload()\"\n ></app-stock-issue-form-button>\n </div>\n </td>\n </ng-container>\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns; sticky: true\"\n ></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"app-product-nav-bar\",\n templateUrl: \"./product-nav-bar.component.html\",\n})\nexport class ProductNavBarComponent {}\n","<div>\n <router-outlet></router-outlet>\n</div>\n","import { Injectable } from \"@angular/core\";\nimport { HttpService, TechlifyServiceBaseClass } from \"ngx-techlify-core\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class ProductTaxService extends TechlifyServiceBaseClass {\n constructor(httpService: HttpService) {\n super(httpService, \"product-taxes\");\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n} from \"@angular/core\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport {\n AlertService,\n FormValidatorService,\n TechlifyFormComponentInterface,\n} from \"ngx-techlify-core\";\nimport { FormBuilder, Validators } from \"@angular/forms\";\nimport { ProductTaxService } from \"../product-tax.service\";\n\n@Component({\n selector: \"app-product-tax-form-button\",\n templateUrl: \"./product-tax-form-button.component.html\",\n})\nexport class ProductTaxFormButtonComponent\n extends TechlifyFormComponentInterface\n implements OnInit\n{\n @Input() product: any;\n @Output() saved: EventEmitter<any> = new EventEmitter();\n\n isSaving!: boolean;\n\n constructor(\n public matDialog: MatDialog,\n private productTaxService: ProductTaxService,\n formValidatorService: FormValidatorService,\n private formBuilder: FormBuilder,\n private alertService: AlertService\n ) {\n super(formValidatorService);\n this.errorMessages = {\n tax_id: {\n required: \"The tax field is required.\",\n },\n };\n\n this.form = this.formBuilder.group({\n product_id: [\"\"],\n tax_id: [\"\", Validators.required],\n });\n }\n\n ngOnInit() {\n if (this.product) {\n this.form.get(\"product_id\")?.setValue(this.product?.id);\n }\n }\n\n showForm(templateRef: TemplateRef<any>) {\n this.matDialog.open(templateRef, { width: \"400px\" });\n }\n\n save() {\n this.form.markAllAsTouched();\n if (this.form.invalid) {\n this.alertService.addAlert(\"Please check the form for errors.\", \"error\");\n return;\n }\n\n const data: any = { ...this.form.value };\n const params: any = {\n with: \"tax.type\",\n };\n this.isSaving = true;\n\n this.productTaxService.store(data, params).subscribe({\n next: (response: any) => {\n this.isSaving = false;\n this.matDialog.closeAll();\n this.alertService.addAlert(\n \"Product tax saved successfully!\",\n \"success\"\n );\n this.saved.emit(response?.item);\n },\n error: () => (this.isSaving = false),\n });\n }\n}\n","<mat-icon\n color=\"primary\"\n class=\"cursor-pointer\"\n (click)=\"showForm(formTemplate)\"\n>\n add\n</mat-icon>\n\n<ng-template #formTemplate>\n <form\n [formGroup]=\"form\"\n (submit)=\"save()\"\n mat-dialog-content\n class=\"d-flex flex-column gap-2\"\n >\n <h3 class=\"text-dark\">Add tax for {{ product?.name }}</h3>\n <mat-form-field>\n <mat-label>Tax</mat-label>\n <app-searchable-selector\n formControlName=\"tax_id\"\n required\n apiUrl=\"api/taxes\"\n [enableSearch]=\"false\"\n ></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('tax_id')\">\n {{ getErrorMessage(\"tax_id\") }}\n </mat-error>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-3\">\n <button\n [disabled]=\"isSaving\"\n type=\"submit\"\n mat-raised-button\n color=\"primary\"\n >\n Save\n </button>\n <button\n [disabled]=\"isSaving\"\n type=\"button\"\n mat-flat-button\n mat-dialog-close\n >\n Cancel\n </button>\n </div>\n </form>\n</ng-template>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from \"@angular/core\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { AlertService } from \"ngx-techlify-core\";\nimport { ProductTaxService } from \"../product-tax.service\";\n\n@Component({\n selector: \"app-product-tax-delete-button\",\n templateUrl: \"./product-tax-delete-button.component.html\",\n})\nexport class ProductTaxDeleteButtonComponent {\n @Input() productTax: any;\n @Output() deleted = new EventEmitter();\n\n isDeleting!: boolean;\n\n constructor(\n private matDialog: MatDialog,\n private productTaxService: ProductTaxService,\n private alertService: AlertService\n ) {}\n\n /**\n * Delete the product.\n */\n delete() {\n this.isDeleting = true;\n this.productTaxService.delete(this.productTax).subscribe({\n next: () => {\n this.matDialog?.closeAll();\n this.deleted.emit();\n this.isDeleting = false;\n this.alertService.addAlert(\n \"Product tax deleted successfully!\",\n \"success\"\n );\n },\n error: () => (this.isDeleting = false),\n });\n }\n\n /**\n * Show delete product dialog.\n *\n * @param templateRef\n */\n showDeleteDialog(templateRef: TemplateRef<any>) {\n this.matDialog.open(templateRef, { width: \"500px\" });\n }\n}\n","<mat-icon\n class=\"cursor-pointer text-secondary\"\n (click)=\"showDeleteDialog(deleteConfirmDialog)\"\n>\n delete\n</mat-icon>\n\n<ng-template #deleteConfirmDialog>\n <h3 mat-dialog-title>Delete Product Tax</h3>\n <div mat-dialog-content>\n Are you sure? You want to delete the product tax?\n </div>\n <div mat-dialog-actions class=\"d-flex justify-content-end gap-1 mb-2\">\n <button\n [disabled]=\"isDeleting\"\n type=\"button\"\n mat-raised-button\n color=\"warn\"\n (click)=\"delete()\"\n >\n Delete\n </button>\n <button\n [disabled]=\"isDeleting\"\n type=\"button\"\n mat-flat-button\n mat-dialog-close\n >\n Cancel\n </button>\n </div>\n</ng-template>\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { TechlifyListingControllerInterface } from \"ngx-techlify-core\";\n\n@Component({\n selector: \"app-product-tax-list\",\n templateUrl: \"./product-tax-list.component.html\",\n})\nexport class ProductTaxListComponent\n extends TechlifyListingControllerInterface\n implements OnInit\n{\n @Input() product!: any;\n\n displayedColumns: string[] = [\"#\", \"Tax\", \"Actions\"];\n\n ngOnInit() {\n this.loadData();\n }\n\n loadData(): void {\n this.models = this.product?.taxes ?? [];\n }\n\n onCreated(productTax: any) {\n this.models.unshift(productTax);\n this.models = [...this.models];\n }\n\n onDeleted(index: number) {\n this.models.splice(index, 1);\n this.models = [...this.models];\n }\n}\n","<mat-card>\n <mat-card-content\n class=\"pb-3 d-flex justify-content-between align-items-center gap-3\"\n >\n <div class=\"d-flex justify-content-start gap-2\">\n <span class=\"material-symbols-outlined\"> percent </span>\n <strong class=\"mb-0 text-dark\">Product Taxes</strong>\n </div>\n <app-product-tax-form-button\n [product]=\"product\"\n (saved)=\"onCreated($event)\"\n ></app-product-tax-form-button>\n </mat-card-content>\n <mat-divider></mat-divider>\n <mat-card-content class=\"p-0\">\n <table mat-table [dataSource]=\"models\" class=\"w-100\">\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"Tax\">\n <th mat-header-cell *matHeaderCellDef>Tax</th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">\n {{ element?.tax?.title }} ({{ element?.tax?.code }})\n </p>\n <small class=\"text-secondary\"\n >{{ element?.tax?.value }} - {{ element?.tax?.type?.title }}</small\n >\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"Actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">\n <app-product-tax-delete-button\n [productTax]=\"element\"\n (deleted)=\"onDeleted(i)\"\n ></app-product-tax-delete-button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n </mat-card-content>\n</mat-card>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from \"@angular/core\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { ProductService } from \"../product.service\";\nimport { AlertService } from \"ngx-techlify-core\";\n\n@Component({\n selector: \"app-product-delete-button\",\n templateUrl: \"./product-delete-button.component.html\",\n styleUrls: [\"./product-delete-button.component.scss\"],\n})\nexport class ProductDeleteButtonComponent {\n @Input() product: any;\n @Output() deleted = new EventEmitter();\n\n isDeleting!: boolean;\n\n constructor(\n private matDialog: MatDialog,\n private productService: ProductService,\n private alertService: AlertService\n ) {}\n\n /**\n * Delete the product.\n */\n deleteProduct() {\n this.isDeleting = true;\n this.productService.delete(this.product).subscribe({\n next: () => {\n this.deleted.emit();\n this.isDeleting = false;\n this.matDialog.closeAll();\n this.alertService.addAlert(\"Product deleted successfully!\", \"success\");\n },\n error: () => (this.isDeleting = false),\n });\n }\n\n /**\n * Show delete product dialog.\n *\n * @param templateRef\n */\n showDeleteDialog(templateRef: TemplateRef<any>) {\n this.matDialog.open(templateRef, { width: \"500px\" });\n }\n}\n","<mat-icon\n class=\"cursor-pointer text-secondary\"\n (click)=\"showDeleteDialog(deleteProductDialog)\"\n>\n delete\n</mat-icon>\n\n<ng-template #deleteProductDialog>\n <h3 mat-dialog-title>Delete Product</h3>\n <div mat-dialog-content>\n Are you sure? You want to delete the\n <strong>{{ product?.name }}</strong> ?\n </div>\n <div mat-dialog-actions class=\"d-flex justify-content-end gap-1 mb-2\">\n <button\n [disabled]=\"isDeleting\"\n type=\"button\"\n mat-raised-button\n color=\"warn\"\n (click)=\"deleteProduct()\"\n >\n Delete\n </button>\n <button\n [disabled]=\"isDeleting\"\n type=\"button\"\n mat-flat-button\n mat-dialog-close\n >\n Cancel\n </button>\n </div>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport { StockSummaryService } from \"../../stock-summary.service\";\n\n@Component({\n selector: \"app-product-basic-info\",\n templateUrl: \"./product-basic-info.component.html\",\n styleUrls: [\"./product-basic-info.component.scss\"],\n})\nexport class ProductBasicInfoComponent implements OnInit {\n @Input() product: any;\n @Output() saved: EventEmitter<any> = new EventEmitter<any>();\n @Output() deleted: EventEmitter<any> = new EventEmitter<any>();\n stockSummary!: any;\n\n constructor(private stockSummaryService: StockSummaryService) {}\n\n ngOnInit() {\n if (this.product) {\n this.loadProductStocksSummary();\n }\n }\n\n onProductSaved(product: any) {\n this.product = product;\n this.saved.emit(this.product);\n }\n\n /**\n * Load product stocks summary.\n */\n loadProductStocksSummary() {\n const params: any = {\n product_ids: this.product?.id,\n include:\n \"stock_receipts_quantity_sum,stock_issuances_quantity_sum,stock_quantity_remaining\",\n };\n this.stockSummaryService.summary(params).subscribe({\n next: (response: any) => {\n this.stockSummary = response;\n },\n });\n }\n}\n","<mat-card *ngIf=\"product\" class=\"w-100\">\n <mat-card-content\n class=\"d-flex justify-content-between align-items-center mb-1 mb-2\"\n >\n <div class=\"d-flex justify-content-start gap-2\">\n <span class=\"material-symbols-outlined\"> campaign </span>\n <strong class=\"mb-0 text-dark\">Product Information</strong>\n </div>\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-product-form-button\n [product]=\"product\"\n (saved)=\"onProductSaved($event)\"\n ></app-product-form-button>\n <app-product-delete-button\n [product]=\"product\"\n (deleted)=\"deleted.emit()\"\n ></app-product-delete-button>\n </div>\n </mat-card-content>\n <mat-divider></mat-divider>\n <mat-card-content class=\"mt-3\">\n <h3 class=\"mb-1 font-weight-bold\">{{ product?.name }}</h3>\n <div class=\"d-flex flex-wrap gap-1\">\n <span\n class=\"badge badge-primary\"\n *ngFor=\"let category of product?.categories\"\n >\n {{ category?.title }}\n </span>\n </div>\n </mat-card-content>\n\n <mat-card-content\n class=\"mt-3 d-flex justify-content-between align-items-start\"\n >\n <div\n class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n >\n <small class=\"text-secondary\">SKU</small>\n <p class=\"mb-0\">{{ product?.sku }}</p>\n </div>\n <div\n class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n >\n <small class=\"text-secondary\">Measure</small>\n <p class=\"mb-0\">{{ product?.measure?.title }}</p>\n </div>\n <div\n class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n >\n <small class=\"text-secondary\">Reorder Point</small>\n <p class=\"mb-0\">{{ product?.reorder_point }}</p>\n </div>\n </mat-card-content>\n\n <mat-card-content\n class=\"mt-3 d-flex flex-column justify-content-start align-items-start gap-1\"\n >\n <small class=\"text-secondary\">Description</small>\n <p class=\"mb-0\">{{ product?.description }}</p>\n </mat-card-content>\n\n <mat-card-content\n class=\"mt-5 d-flex justify-content-between align-items-start\"\n >\n <div\n *ngIf=\"stockSummary\"\n class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n >\n <small class=\"text-secondary\">Stock Receipts</small>\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\"> arrow_downward </span>\n <p class=\"mb-0\" style=\"font-size: 24px\">\n {{ stockSummary?.stock_receipts_quantity_sum }}\n </p>\n </div>\n <small *ngIf=\"product?.last_stock_receipt\" class=\"text-secondary\">\n Last Added On {{ product?.last_stock_receipt?.date | date }}\n </small>\n </div>\n <div\n *ngIf=\"stockSummary\"\n class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n >\n <small class=\"text-secondary\">Stock Issuances</small>\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\"> ungroup </span>\n <p class=\"mb-0\" style=\"font-size: 24px\">\n {{ stockSummary?.stock_issuances_quantity_sum }}\n </p>\n </div>\n <small *ngIf=\"product?.last_stock_issuance\" class=\"text-secondary\">\n Last Added On {{ product?.last_stock_issuance?.date | date }}\n </small>\n </div>\n </mat-card-content>\n\n <mat-card-content\n *ngIf=\"stockSummary\"\n class=\"mt-3 d-flex justify-content-center align-items-center\"\n >\n <div\n class=\"d-flex flex-column justify-content-start align-items-start gap-1\"\n >\n <small class=\"text-secondary\">On Hand</small>\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\"> inventory_2 </span>\n <p class=\"mb-0\" style=\"font-size: 24px\">\n {{ stockSummary?.stock_quantity_remaining }}\n </p>\n </div>\n </div>\n </mat-card-content>\n</mat-card>\n","import { Component, OnInit } from \"@angular/core\";\nimport { ProductService } from \"../product.service\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { Location } from \"@angular/common\";\n\n@Component({\n selector: \"app-product-view-page\",\n templateUrl: \"./product-view-page.component.html\",\n})\nexport class ProductViewPageComponent implements OnInit {\n public product: any;\n id: number;\n isLoading!: boolean;\n\n constructor(\n private productService: ProductService,\n private activatedRoute: ActivatedRoute,\n private location: Location\n ) {\n this.id = this.activatedRoute.snapshot.params?.[\"id\"];\n }\n\n ngOnInit(): void {\n if (this.id) {\n this.getProduct(this.id);\n }\n }\n\n /**\n * Get the product details.\n *\n * @param productId\n */\n getProduct(productId: any) {\n this.isLoading = true;\n const params: any = {\n with: \"type,measure,incomeAccount,expenseAccount,categories,lastStockReceipt,lastStockIssuance,taxes.tax.type\",\n };\n this.productService.show(productId, params).subscribe({\n next: (result: any) => {\n this.isLoading = false;\n this.product = result?.item;\n },\n error: () => (this.isLoading = false),\n });\n }\n\n /**\n * Handle the on product update event.\n *\n * @param product\n */\n onProductUpdated(product: any) {\n this.getProduct(this.id);\n }\n\n /**\n * Handle on product delete event.\n */\n onProductDeleted() {\n this.location.back();\n }\n}\n","<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n\n<div\n *ngIf=\"product\"\n class=\"d-flex justify-content-start align-items-start gap-3\"\n>\n <div style=\"width: calc(25% - 1rem)\" class=\"d-flex flex-column gap-3\">\n <app-product-basic-info\n [product]=\"product\"\n #productBasicInfoComponent\n (deleted)=\"onProductDeleted()\"\n (saved)=\"onProductUpdated($event)\"\n ></app-product-basic-info>\n\n <app-product-tax-list [product]=\"product\"></app-product-tax-list>\n </div>\n <div style=\"width: calc(75%)\" class=\"d-flex flex-column gap-3\">\n <app-stock-receipts-list-page\n [product]=\"product\"\n (listUpdated)=\"\n getProduct(this.id);\n productBasicInfoComponent.loadProductStocksSummary()\n \"\n ></app-stock-receipts-list-page>\n\n <app-stock-issuances-list\n [product]=\"product\"\n (listUpdated)=\"\n getProduct(this.id);\n productBasicInfoComponent.loadProductStocksSummary()\n \"\n ></app-stock-issuances-list>\n </div>\n</div>\n","import { Component, OnInit } from \"@angular/core\";\nimport { ImportCsvConfig } from \"ngx-techlify-core\";\n\n@Component({\n selector: \"app-product-import-page\",\n templateUrl: \"./product-import-page.component.html\",\n styleUrls: [\"./product-import-page.component.scss\"],\n})\nexport class ProductImportPageComponent implements OnInit {\n importConfig: ImportCsvConfig = {\n apiUrl: \"api/products-import\",\n title: \"Products\",\n importType: \"product\",\n properties: [\n {\n label: \"Name\",\n value: \"name\",\n type: \"text\",\n },\n {\n label: \"SKU\",\n value: \"sku\",\n type: \"text\",\n },\n {\n label: \"Initial Quantity\",\n value: \"initial_quantity\",\n type: \"number\",\n },\n {\n label: \"Initial Quantity Date\",\n value: \"initial_quantity_date\",\n type: \"date\",\n },\n {\n label: \"Reorder Point\",\n value: \"reorder_point\",\n type: \"number\",\n },\n {\n label: \"Measure\",\n value: \"measure\",\n type: \"text\",\n },\n {\n label: \"Categories\",\n value: \"categories\",\n type: \"text\",\n },\n ],\n sampleFile: {\n name: \"Products Import\",\n path: \"assets/product/product-import-sample.csv\",\n },\n importHistory: {\n isEnabled: true,\n type: \"product\",\n apiUrl: \"api/import-histories\",\n },\n viewRouterLink: \"/inventory/products/\",\n };\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<app-import-csv [config]=\"importConfig\"></app-import-csv>\n","import { ProductMeasuresListComponent } from \"./product-measures-list/product-measures-list.component\";\nimport { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\nimport { AuthenticationGuard } from \"ngx-techlify-core\";\nimport { ProductListComponent } from \"./product-list/product-list.component\";\nimport { ProductNavBarComponent } from \"./product-nav-bar/product-nav-bar.component\";\nimport { ProductViewPageComponent } from \"./product-view-page/product-view-page.component\";\nimport { ProductImportPageComponent } from \"./product-import-page/product-import-page.component\";\n\nconst routes: Routes = [\n {\n path: \"\",\n component: ProductNavBarComponent,\n children: [\n {\n path: \"\",\n component: ProductListComponent,\n canLoad: [AuthenticationGuard],\n },\n {\n path: \"import\",\n component: ProductImportPageComponent,\n canLoad: [AuthenticationGuard],\n },\n {\n path: \"measure\",\n component: ProductMeasuresListComponent,\n canLoad: [AuthenticationGuard],\n },\n {\n path: \":id/view\",\n component: ProductViewPageComponent,\n canLoad: [AuthenticationGuard],\n },\n {\n path: \"**\",\n redirectTo: \"\",\n pathMatch: \"full\",\n canLoad: [AuthenticationGuard],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ProductRoutingModule {}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { MaterialModule, SearchableSelectorModule } from \"ngx-techlify-core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { ProductTaxListComponent } from './product-tax-list/product-tax-list.component';\nimport { ProductTaxFormButtonComponent } from './product-tax-form-button/product-tax-form-button.component';\nimport { ProductTaxDeleteButtonComponent } from './product-tax-delete-button/product-tax-delete-button.component';\n\n@NgModule({\n declarations: [\n ProductTaxListComponent,\n ProductTaxFormButtonComponent,\n ProductTaxDeleteButtonComponent,\n ],\n imports: [\n CommonModule,\n MaterialModule,\n ReactiveFormsModule,\n SearchableSelectorModule,\n ],\n exports: [ProductTaxListComponent],\n})\nexport class ProductTaxModule {}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ProductRoutingModule } from \"./product-routing.module\";\nimport { ProductListComponent } from \"./product-list/product-list.component\";\nimport { ProductFormComponent } from \"./product-form/product-form.component\";\nimport {\n ColumnSelectorModule,\n ImportCsvModule,\n MaterialModule,\n SearchableSelectorModule,\n TimelineFilterModule,\n} from \"ngx-techlify-core\";\nimport { ProductNavBarComponent } from \"./product-nav-bar/product-nav-bar.component\";\nimport { ProductMeasuresListComponent } from \"./product-measures-list/product-measures-list.component\";\nimport { ProductMeasureFormComponent } from \"./product-measure-form/product-measure-form.component\";\nimport { ProductViewPageComponent } from \"./product-view-page/product-view-page.component\";\nimport { ProductFormButtonComponent } from \"./product-form-button/product-form-button.component\";\nimport { ProductDeleteButtonComponent } from \"./product-delete-button/product-delete-button.component\";\nimport { ProductBasicInfoComponent } from \"./product-basic-info/product-basic-info.component\";\nimport { StockReceiptFormModule } from \"../stock-receipts/stock-receipt-form/stock-receipt-form.module\";\nimport { StockIssueFormModule } from \"../stock-issuances/stock-issue-form/stock-issue-form.module\";\nimport { ProductImportPageComponent } from \"./product-import-page/product-import-page.component\";\nimport { StockReceiptsModule } from \"../stock-receipts/stock-receipts.module\";\nimport { StockIssuancesListModule } from \"../stock-issuances/stock-issuances-list/stock-issuances-list.module\";\nimport { MatProgressBarModule } from \"@angular/material/progress-bar\";\nimport { InfiniteScrollModule } from \"ngx-infinite-scroll\";\nimport { FlexModule } from \"@angular/flex-layout\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { ProductTaxModule } from './product-tax/product-tax.module';\n\n@NgModule({\n declarations: [\n ProductListComponent,\n ProductFormComponent,\n ProductNavBarComponent,\n ProductMeasuresListComponent,\n ProductMeasureFormComponent,\n ProductViewPageComponent,\n ProductFormButtonComponent,\n ProductDeleteButtonComponent,\n ProductBasicInfoComponent,\n ProductImportPageComponent,\n ],\n imports: [\n CommonModule,\n ProductRoutingModule,\n SearchableSelectorModule,\n TimelineFilterModule,\n StockReceiptFormModule,\n StockIssueFormModule,\n ImportCsvModule,\n StockReceiptsModule,\n StockIssuancesListModule,\n ProductTaxModule,\n MaterialModule,\n MatProgressBarModule,\n InfiniteScrollModule,\n FlexModule,\n ReactiveFormsModule,\n FormsModule,\n ColumnSelectorModule,\n ],\n exports: [\n ProductFormComponent,\n ProductBasicInfoComponent,\n ProductFormButtonComponent,\n ],\n})\nexport class ProductModule {}\n"],"names":["errorMessages","i4","i5","i6","i8","i9","i1","i2","i3","i5.ProductService","i10","i11","i12","i13","i14","i15","i16","i1.ProductService","i5.ProductFormService","i7","i2.ProductFormService","i4.ProductFormComponent","i4.ProductService","i6.ProductFormService","i8.StockReceiptFormButtonComponent","i9.StockIssueFormButtonComponent","i17","i18","i19.ProductFormButtonComponent","i2.ProductTaxService","i4.ProductTaxFormButtonComponent","i5.ProductTaxDeleteButtonComponent","i2.ProductService","i1.StockSummaryService","i5.ProductFormButtonComponent","i6.ProductDeleteButtonComponent","i4.StockReceiptsListPageComponent","i5.StockIssuancesListComponent","i6.ProductTaxListComponent","i8.ProductBasicInfoComponent"],"mappings":"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"}