techlify-inventory-common 18.4.1 → 18.4.2

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 (31) hide show
  1. package/esm2022/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.mjs +8 -8
  2. package/esm2022/lib/inventory-common/product/product-measure-form/product-measure-form.component.mjs +9 -9
  3. package/esm2022/lib/inventory-common/product/product-measures-list/product-measures-list.component.mjs +8 -8
  4. package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.mjs +8 -8
  5. package/esm2022/lib/inventory-common/product/product-summary.service.mjs +20 -0
  6. package/esm2022/lib/inventory-common/product/product.service.mjs +4 -33
  7. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-import-page/stock-issue-import-page.component.mjs +2 -2
  8. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-import-page/stock-receipt-import-page.component.mjs +2 -2
  9. package/fesm2022/{techlify-inventory-common-category.module-isHvDgRZ.mjs → techlify-inventory-common-category.module-B9v8ocCM.mjs} +2 -2
  10. package/fesm2022/{techlify-inventory-common-category.module-isHvDgRZ.mjs.map → techlify-inventory-common-category.module-B9v8ocCM.mjs.map} +1 -1
  11. package/fesm2022/{techlify-inventory-common-location.module-DI57PYtO.mjs → techlify-inventory-common-location.module-DW-rsXCW.mjs} +2 -2
  12. package/fesm2022/{techlify-inventory-common-location.module-DI57PYtO.mjs.map → techlify-inventory-common-location.module-DW-rsXCW.mjs.map} +1 -1
  13. package/fesm2022/{techlify-inventory-common-measure.module-eEfRzXya.mjs → techlify-inventory-common-measure.module-SGEdmXgY.mjs} +4 -18
  14. package/fesm2022/techlify-inventory-common-measure.module-SGEdmXgY.mjs.map +1 -0
  15. package/fesm2022/{techlify-inventory-common-stock-issuances.module-BnpAew18.mjs → techlify-inventory-common-stock-issuances.module-CGmQAuu8.mjs} +3 -3
  16. package/fesm2022/techlify-inventory-common-stock-issuances.module-CGmQAuu8.mjs.map +1 -0
  17. package/fesm2022/{techlify-inventory-common-supplier.module-CbKK7WeC.mjs → techlify-inventory-common-supplier.module-BesSBedb.mjs} +2 -2
  18. package/fesm2022/{techlify-inventory-common-supplier.module-CbKK7WeC.mjs.map → techlify-inventory-common-supplier.module-BesSBedb.mjs.map} +1 -1
  19. package/fesm2022/{techlify-inventory-common-techlify-inventory-common-BCHHzF2b.mjs → techlify-inventory-common-techlify-inventory-common-Dsfl8cl6.mjs} +66 -65
  20. package/fesm2022/techlify-inventory-common-techlify-inventory-common-Dsfl8cl6.mjs.map +1 -0
  21. package/fesm2022/techlify-inventory-common.mjs +1 -1
  22. package/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.d.ts +3 -3
  23. package/lib/inventory-common/product/product-measure-form/product-measure-form.component.d.ts +3 -3
  24. package/lib/inventory-common/product/product-measures-list/product-measures-list.component.d.ts +3 -3
  25. package/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.d.ts +3 -3
  26. package/lib/inventory-common/product/product-summary.service.d.ts +8 -0
  27. package/lib/inventory-common/product/product.service.d.ts +2 -13
  28. package/package.json +1 -1
  29. package/fesm2022/techlify-inventory-common-measure.module-eEfRzXya.mjs.map +0 -1
  30. package/fesm2022/techlify-inventory-common-stock-issuances.module-BnpAew18.mjs.map +0 -1
  31. package/fesm2022/techlify-inventory-common-techlify-inventory-common-BCHHzF2b.mjs.map +0 -1
@@ -77,42 +77,29 @@ import moment$1 from 'moment/moment';
77
77
  import * as i13 from 'ngx-permissions';
78
78
  import { NgxPermissionsModule } from 'ngx-permissions';
79
79
 
80
+ class ProductSummaryService extends TechlifyServiceBaseClass {
81
+ httpService;
82
+ constructor(httpService) {
83
+ super(httpService, 'products-summary');
84
+ this.httpService = httpService;
85
+ }
86
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductSummaryService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
87
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductSummaryService, providedIn: 'root' });
88
+ }
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductSummaryService, decorators: [{
90
+ type: Injectable,
91
+ args: [{
92
+ providedIn: 'root'
93
+ }]
94
+ }], ctorParameters: () => [{ type: i1.HttpService }] });
95
+
80
96
  class ProductService extends TechlifyServiceBaseClass {
81
- dataManager;
82
97
  httpService;
83
- constructor(dataManager, httpService) {
98
+ constructor(httpService) {
84
99
  super(httpService, 'products');
85
- this.dataManager = dataManager;
86
100
  this.httpService = httpService;
87
101
  }
88
- getProducts(filters) {
89
- return this.dataManager.GET(`api/products`, filters);
90
- }
91
- getProduct(id) {
92
- return this.dataManager.GET(`api/products/${id}`);
93
- }
94
- createProduct(model) {
95
- return this.dataManager.POST(`api/products`, model);
96
- }
97
- updateProducts(model) {
98
- return this.dataManager.PUT(`api/products/${model.id}`, model);
99
- }
100
- deleteProduct(id) {
101
- return this.dataManager.DELETE(`api/products/${id}`);
102
- }
103
- getProductMeasures(filters) {
104
- return this.dataManager.GET(`api/product-measures`, filters);
105
- }
106
- createProductMeasure(model) {
107
- return this.dataManager.POST(`api/product-measures`, model);
108
- }
109
- updateProductMeasure(model) {
110
- return this.dataManager.PUT(`api/product-measures/${model.id}`, model);
111
- }
112
- summary(params) {
113
- return this.httpService.get('api/products-summary', { params });
114
- }
115
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductService, deps: [{ token: i1.DataManager }, { token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
102
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
116
103
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductService, providedIn: 'root' });
117
104
  }
118
105
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductService, decorators: [{
@@ -120,7 +107,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
120
107
  args: [{
121
108
  providedIn: 'root',
122
109
  }]
123
- }], ctorParameters: () => [{ type: i1.DataManager }, { type: i1.HttpService }] });
110
+ }], ctorParameters: () => [{ type: i1.HttpService }] });
124
111
 
125
112
  class LowStockProductsWidgetComponent extends TechlifyListingControllerInterface {
126
113
  productService;
@@ -160,11 +147,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
160
147
  }], ctorParameters: () => [{ type: ProductService }] });
161
148
 
162
149
  class ProductSummaryChartComponent {
163
- productService;
150
+ productSummaryService;
164
151
  height = 400;
165
152
  title = 'Product Summary';
166
- constructor(productService) {
167
- this.productService = productService;
153
+ constructor(productSummaryService) {
154
+ this.productSummaryService = productSummaryService;
168
155
  }
169
156
  chart = {
170
157
  title: 'Pie Chart',
@@ -184,7 +171,7 @@ class ProductSummaryChartComponent {
184
171
  group_by: 'category_id',
185
172
  };
186
173
  this.isLoading = true;
187
- this.productService.summary(params).subscribe({
174
+ this.productSummaryService.index(params).subscribe({
188
175
  next: (response) => {
189
176
  let data = [];
190
177
  response?.products_aggregated?.forEach((item) => {
@@ -196,18 +183,32 @@ class ProductSummaryChartComponent {
196
183
  error: () => (this.isLoading = false),
197
184
  });
198
185
  }
199
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductSummaryChartComponent, deps: [{ token: ProductService }], target: i0.ɵɵFactoryTarget.Component });
186
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductSummaryChartComponent, deps: [{ token: ProductSummaryService }], target: i0.ɵɵFactoryTarget.Component });
200
187
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProductSummaryChartComponent, isStandalone: true, selector: "app-product-summary-chart", inputs: { height: "height", title: "title" }, ngImport: i0, template: "<mat-card>\n <mat-card-content>\n <h3>{{ title }}</h3>\n </mat-card-content>\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n <mat-card-content *ngIf=\"chart.data?.length > 0\">\n <google-chart\n class=\"w-100\"\n [height]=\"height\"\n [type]=\"chart.type\"\n [data]=\"chart.data\"\n [columns]=\"chart.columns\"\n [options]=\"chart.options\"\n >\n </google-chart>\n </mat-card-content>\n</mat-card>\n", styles: [""], dependencies: [{ kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: GoogleChartsModule }, { kind: "component", type: i2$1.GoogleChartComponent, selector: "google-chart", inputs: ["type", "data", "columns", "title", "width", "height", "options", "formatters", "dynamicResize"], outputs: ["ready", "error", "select", "mouseover", "mouseleave"], exportAs: ["googleChart"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], preserveWhitespaces: true });
201
188
  }
202
189
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductSummaryChartComponent, decorators: [{
203
190
  type: Component,
204
191
  args: [{ selector: 'app-product-summary-chart', standalone: true, imports: [MatCard, MatCardContent, GoogleChartsModule, MatProgressBar, NgIf], template: "<mat-card>\n <mat-card-content>\n <h3>{{ title }}</h3>\n </mat-card-content>\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n <mat-card-content *ngIf=\"chart.data?.length > 0\">\n <google-chart\n class=\"w-100\"\n [height]=\"height\"\n [type]=\"chart.type\"\n [data]=\"chart.data\"\n [columns]=\"chart.columns\"\n [options]=\"chart.options\"\n >\n </google-chart>\n </mat-card-content>\n</mat-card>\n" }]
205
- }], ctorParameters: () => [{ type: ProductService }], propDecorators: { height: [{
192
+ }], ctorParameters: () => [{ type: ProductSummaryService }], propDecorators: { height: [{
206
193
  type: Input
207
194
  }], title: [{
208
195
  type: Input
209
196
  }] } });
210
197
 
198
+ class MeasureService extends TechlifyServiceBaseClass {
199
+ constructor(httpService) {
200
+ super(httpService, 'product-measures');
201
+ }
202
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MeasureService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
203
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MeasureService, providedIn: 'root' });
204
+ }
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MeasureService, decorators: [{
206
+ type: Injectable,
207
+ args: [{
208
+ providedIn: 'root',
209
+ }]
210
+ }], ctorParameters: () => [{ type: i1.HttpService }] });
211
+
211
212
  const errorMessages$1 = {
212
213
  title: {
213
214
  required: 'Please Enter Title',
@@ -217,7 +218,7 @@ const errorMessages$1 = {
217
218
  },
218
219
  };
219
220
  class ProductMeasureFormComponent {
220
- productService;
221
+ measureService;
221
222
  fb;
222
223
  dialogRef;
223
224
  data;
@@ -228,8 +229,8 @@ class ProductMeasureFormComponent {
228
229
  productMeasureForm;
229
230
  isWorking = false;
230
231
  isUpdate = false;
231
- constructor(productService, fb, dialogRef, data, spinnerService, formValidatorService, errorService, alertService) {
232
- this.productService = productService;
232
+ constructor(measureService, fb, dialogRef, data, spinnerService, formValidatorService, errorService, alertService) {
233
+ this.measureService = measureService;
233
234
  this.fb = fb;
234
235
  this.dialogRef = dialogRef;
235
236
  this.data = data;
@@ -260,8 +261,8 @@ class ProductMeasureFormComponent {
260
261
  this.spinnerService.show();
261
262
  this.isWorking = true;
262
263
  let result = this.isUpdate
263
- ? await this.productService.updateProductMeasure(productMeasure)
264
- : await this.productService.createProductMeasure(productMeasure);
264
+ ? await this.measureService.update(productMeasure).toPromise()
265
+ : await this.measureService.store(productMeasure).toPromise();
265
266
  this.dialogRef.close(result);
266
267
  }
267
268
  catch (error) {
@@ -284,13 +285,13 @@ class ProductMeasureFormComponent {
284
285
  getErrorMessage(field) {
285
286
  return this.formValidatorService.getErrorMessage(field, this.productMeasureForm, errorMessages$1);
286
287
  }
287
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductMeasureFormComponent, deps: [{ token: ProductService }, { token: i2$2.FormBuilder }, { token: i1$1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i4$2.NgxSpinnerService }, { token: i1.FormValidatorService }, { token: i1.ErrorHandlerService }, { token: i1.AlertService }], target: i0.ɵɵFactoryTarget.Component });
288
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductMeasureFormComponent, deps: [{ token: MeasureService }, { token: i2$2.FormBuilder }, { token: i1$1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i4$2.NgxSpinnerService }, { token: i1.FormValidatorService }, { token: i1.ErrorHandlerService }, { token: i1.AlertService }], target: i0.ɵɵFactoryTarget.Component });
288
289
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProductMeasureFormComponent, selector: "app-product-measure-form", ngImport: i0, template: "<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 matInput placeholder=\"Title\" formControlName=\"title\" required />\n <mat-error *ngIf=\"isFieldValid('title')\">{{ getErrorMessage('title') }} </mat-error>\n </mat-form-field>\n <mat-form-field>\n <input matInput placeholder=\"Description\" formControlName=\"description\" required />\n <mat-error *ngIf=\"isFieldValid('description')\">{{ getErrorMessage('description') }} </mat-error>\n </mat-form-field>\n <div fxFlex=\"100%\" fxLayout fxLayoutGap=\"1rem\">\n <button mat-button class=\"mt-2\" type=\"button\" (click)=\"dialogRef.close()\">Cancel</button>\n <button mat-raised-button color=\"primary\" class=\"mt-2\" type=\"submit\">Save</button>\n </div>\n </div>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i10$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i10$1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i10$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], preserveWhitespaces: true });
289
290
  }
290
291
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductMeasureFormComponent, decorators: [{
291
292
  type: Component,
292
293
  args: [{ selector: 'app-product-measure-form', template: "<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 matInput placeholder=\"Title\" formControlName=\"title\" required />\n <mat-error *ngIf=\"isFieldValid('title')\">{{ getErrorMessage('title') }} </mat-error>\n </mat-form-field>\n <mat-form-field>\n <input matInput placeholder=\"Description\" formControlName=\"description\" required />\n <mat-error *ngIf=\"isFieldValid('description')\">{{ getErrorMessage('description') }} </mat-error>\n </mat-form-field>\n <div fxFlex=\"100%\" fxLayout fxLayoutGap=\"1rem\">\n <button mat-button class=\"mt-2\" type=\"button\" (click)=\"dialogRef.close()\">Cancel</button>\n <button mat-raised-button color=\"primary\" class=\"mt-2\" type=\"submit\">Save</button>\n </div>\n </div>\n </div>\n </form>\n</div>\n" }]
293
- }], ctorParameters: () => [{ type: ProductService }, { type: i2$2.FormBuilder }, { type: i1$1.MatDialogRef }, { type: undefined, decorators: [{
294
+ }], ctorParameters: () => [{ type: MeasureService }, { type: i2$2.FormBuilder }, { type: i1$1.MatDialogRef }, { type: undefined, decorators: [{
294
295
  type: Inject,
295
296
  args: [MAT_DIALOG_DATA]
296
297
  }] }, { type: i4$2.NgxSpinnerService }, { type: i1.FormValidatorService }, { type: i1.ErrorHandlerService }, { type: i1.AlertService }] });
@@ -300,7 +301,7 @@ let ProductMeasuresListComponent = class ProductMeasuresListComponent {
300
301
  dialog;
301
302
  filterService;
302
303
  activatedRoute;
303
- productService;
304
+ measureService;
304
305
  filterFormGroup;
305
306
  lastPage;
306
307
  page = 1;
@@ -318,12 +319,12 @@ let ProductMeasuresListComponent = class ProductMeasuresListComponent {
318
319
  ];
319
320
  displayedColumns = ['#', 'Title', 'Description', 'Actions'];
320
321
  dataSource = new MatTableDataSource();
321
- constructor(fb, dialog, filterService, activatedRoute, productService) {
322
+ constructor(fb, dialog, filterService, activatedRoute, measureService) {
322
323
  this.fb = fb;
323
324
  this.dialog = dialog;
324
325
  this.filterService = filterService;
325
326
  this.activatedRoute = activatedRoute;
326
- this.productService = productService;
327
+ this.measureService = measureService;
327
328
  this.filterFormGroup = this.fb.group({
328
329
  num_items: [this.num_items + '|' + this.currentPage],
329
330
  search: [''],
@@ -355,7 +356,7 @@ let ProductMeasuresListComponent = class ProductMeasuresListComponent {
355
356
  filters.per_page = this.perPage;
356
357
  filters.type_ids = filters.type_ids.toString();
357
358
  filters.num_items = this.num_items + '|' + this.currentPage;
358
- let res = await this.productService.getProductMeasures(filters);
359
+ let res = await this.measureService.index(filters).toPromise();
359
360
  if (this.productMeasures.length < 1) {
360
361
  this.productMeasures = res.data;
361
362
  }
@@ -405,7 +406,7 @@ let ProductMeasuresListComponent = class ProductMeasuresListComponent {
405
406
  //Called once, before the instance is destroyed.
406
407
  //Add 'implements OnDestroy' to the class.
407
408
  }
408
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductMeasuresListComponent, deps: [{ token: i2$2.FormBuilder }, { token: i1$1.MatDialog }, { token: i1.FilterService }, { token: i2.ActivatedRoute }, { token: ProductService }], target: i0.ɵɵFactoryTarget.Component });
409
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductMeasuresListComponent, deps: [{ token: i2$2.FormBuilder }, { token: i1$1.MatDialog }, { token: i1.FilterService }, { token: i2.ActivatedRoute }, { token: MeasureService }], target: i0.ɵɵFactoryTarget.Component });
409
410
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProductMeasuresListComponent, selector: "app-product-measure-list", ngImport: i0, template: "<div fxLayout=\"column\">\n <div class=\"text-center\" fxLayoutAlign=\"center center\">\n <h3 fxLayout>\n <span class=\"mt-1\"> Product Measures </span>\n <button mat-raised-button class=\"ml-2\" color=\"primary\" (click)=\"modifyProductMeasure()\">\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 matInput placeholder=\"Item Name, Description, etc.\" formControlName=\"search\" />\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 *ngFor=\"let column of columnDefinitions\" [value]=\"column.def\" [disabled]=\"!column.isShow\">\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", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4$3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4$3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6$1.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i11.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i14.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i14.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i15.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i15.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i15.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i15.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i15.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i15.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i15.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i15.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i15.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i15.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i10.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: i10$1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i10$1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i10$1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i10$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], preserveWhitespaces: true });
410
411
  };
411
412
  ProductMeasuresListComponent = __decorate([
@@ -414,7 +415,7 @@ ProductMeasuresListComponent = __decorate([
414
415
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductMeasuresListComponent, decorators: [{
415
416
  type: Component,
416
417
  args: [{ selector: 'app-product-measure-list', template: "<div fxLayout=\"column\">\n <div class=\"text-center\" fxLayoutAlign=\"center center\">\n <h3 fxLayout>\n <span class=\"mt-1\"> Product Measures </span>\n <button mat-raised-button class=\"ml-2\" color=\"primary\" (click)=\"modifyProductMeasure()\">\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 matInput placeholder=\"Item Name, Description, etc.\" formControlName=\"search\" />\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 *ngFor=\"let column of columnDefinitions\" [value]=\"column.def\" [disabled]=\"!column.isShow\">\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" }]
417
- }], ctorParameters: () => [{ type: i2$2.FormBuilder }, { type: i1$1.MatDialog }, { type: i1.FilterService }, { type: i2.ActivatedRoute }, { type: ProductService }] });
418
+ }], ctorParameters: () => [{ type: i2$2.FormBuilder }, { type: i1$1.MatDialog }, { type: i1.FilterService }, { type: i2.ActivatedRoute }, { type: MeasureService }] });
418
419
 
419
420
  class TechlifyFormService {
420
421
  _isListUpdated = new BehaviorSubject(false);
@@ -2628,7 +2629,7 @@ class StockReceiptImportPageComponent {
2628
2629
  type: 'stock-receipt',
2629
2630
  apiUrl: 'api/import-histories',
2630
2631
  },
2631
- viewRouterLink: '/stock-receipts',
2632
+ viewRouterLink: '/inventory/stock-receipts',
2632
2633
  };
2633
2634
  constructor() { }
2634
2635
  ngOnInit() {
@@ -3275,12 +3276,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3275
3276
  }], ctorParameters: () => [{ type: ProductService }] });
3276
3277
 
3277
3278
  class InventoryDashboardPageComponent {
3278
- productService;
3279
+ productSummaryService;
3279
3280
  lowStockProductsCount;
3280
3281
  stockReceiptsQtySum;
3281
3282
  stockIssuanceQtySum;
3282
- constructor(productService) {
3283
- this.productService = productService;
3283
+ constructor(productSummaryService) {
3284
+ this.productSummaryService = productSummaryService;
3284
3285
  }
3285
3286
  ngOnInit() {
3286
3287
  this.loadProductSummary();
@@ -3291,7 +3292,7 @@ class InventoryDashboardPageComponent {
3291
3292
  date_from: moment().startOf('month').format('YYYY-MM-DD'),
3292
3293
  date_to: moment().endOf('month').format('YYYY-MM-DD'),
3293
3294
  };
3294
- this.productService.summary(params).subscribe({
3295
+ this.productSummaryService.index(params).subscribe({
3295
3296
  next: (response) => {
3296
3297
  this.lowStockProductsCount = response?.low_stock_products_count;
3297
3298
  this.stockReceiptsQtySum = response?.stock_receipts_quantity_sum;
@@ -3299,13 +3300,13 @@ class InventoryDashboardPageComponent {
3299
3300
  },
3300
3301
  });
3301
3302
  }
3302
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InventoryDashboardPageComponent, deps: [{ token: ProductService }], target: i0.ɵɵFactoryTarget.Component });
3303
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InventoryDashboardPageComponent, deps: [{ token: ProductSummaryService }], target: i0.ɵɵFactoryTarget.Component });
3303
3304
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InventoryDashboardPageComponent, selector: "app-inventory-dashboard-page", ngImport: i0, template: "<div class=\"d-flex justify-content-start align-items-start gap-3 vh-100\">\n <div class=\"row\" style=\"width: calc(100% - 300px)\">\n <div class=\"col-lg-4 mb-3\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-center align-items-center gap-3\">\n <span class=\"material-symbols-outlined fs-1 fw-bold\" style=\"color: #f5222d !important\"> inventory_2 </span>\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Low Stock Products</small>\n <h1 class=\"mb-0 fw-bold\">{{ lowStockProductsCount | number }}</h1>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div class=\"col-lg-4 mb-3\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-center align-items-center gap-3\">\n <span class=\"material-symbols-outlined fs-1 fw-bold\"> arrow_circle_down </span>\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Products Received This Month</small>\n <h1 class=\"mb-0 fw-bold\">{{ stockReceiptsQtySum | number }}</h1>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div class=\"col-lg-4 mb-3\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-center align-items-center gap-3\">\n <span class=\"material-symbols-outlined fs-1 fw-bold\"> arrow_circle_up </span>\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Products Issued This Month</small>\n <h1 class=\"mb-0 fw-bold\">{{ stockIssuanceQtySum | number }}</h1>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div class=\"col-lg-6 mb-3\">\n <app-product-quick-search></app-product-quick-search>\n </div>\n <div class=\"col-lg-6 mb-3\">\n <app-low-stock-products-widget></app-low-stock-products-widget>\n </div>\n <div class=\"col-lg-6 mb-3\">\n <app-product-summary-chart title=\"Product By Category\"></app-product-summary-chart>\n </div>\n </div>\n <div style=\"width: 300px\" class=\"d-flex flex-column gap-3 h-100\">\n <mat-card class=\"h-100\">\n <mat-card-content>\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <mat-icon>flag</mat-icon>\n <h3 class=\"mb-0 fw-bold\">Reports</h3>\n </div>\n </mat-card-content>\n <mat-card-content class=\"mt-3 d-flex flex-column justify-content-start gap-3\">\n <a\n class=\"d-flex justify-content-start align-items-center gap-2 text-decoration-none text-dark\"\n routerLink=\"/inventory/reports/low-stock-report\"\n >\n <span class=\"material-symbols-outlined fs-3\"> description </span>\n <h3 class=\"mb-0\">Low Stock Report</h3>\n <span class=\"material-symbols-outlined\"> chevron_forward </span>\n </a>\n <a\n class=\"d-flex justify-content-start align-items-center gap-2 text-decoration-none text-dark cursor-pointer\"\n routerLink=\"/inventory/reports/inventory-value-report\"\n >\n <span class=\"material-symbols-outlined fs-3\"> description </span>\n <h3 class=\"mb-0\">Inventory Value Report</h3>\n <span class=\"material-symbols-outlined\"> chevron_forward </span>\n </a>\n </mat-card-content>\n </mat-card>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: LowStockProductsWidgetComponent, selector: "app-low-stock-products-widget" }, { kind: "component", type: ProductSummaryChartComponent, selector: "app-product-summary-chart", inputs: ["height", "title"] }, { kind: "component", type: ProductQuickSearchComponent, selector: "app-product-quick-search" }, { kind: "pipe", type: i4.DecimalPipe, name: "number" }], preserveWhitespaces: true });
3304
3305
  }
3305
3306
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InventoryDashboardPageComponent, decorators: [{
3306
3307
  type: Component,
3307
3308
  args: [{ selector: 'app-inventory-dashboard-page', template: "<div class=\"d-flex justify-content-start align-items-start gap-3 vh-100\">\n <div class=\"row\" style=\"width: calc(100% - 300px)\">\n <div class=\"col-lg-4 mb-3\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-center align-items-center gap-3\">\n <span class=\"material-symbols-outlined fs-1 fw-bold\" style=\"color: #f5222d !important\"> inventory_2 </span>\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Low Stock Products</small>\n <h1 class=\"mb-0 fw-bold\">{{ lowStockProductsCount | number }}</h1>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div class=\"col-lg-4 mb-3\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-center align-items-center gap-3\">\n <span class=\"material-symbols-outlined fs-1 fw-bold\"> arrow_circle_down </span>\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Products Received This Month</small>\n <h1 class=\"mb-0 fw-bold\">{{ stockReceiptsQtySum | number }}</h1>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div class=\"col-lg-4 mb-3\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-center align-items-center gap-3\">\n <span class=\"material-symbols-outlined fs-1 fw-bold\"> arrow_circle_up </span>\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Products Issued This Month</small>\n <h1 class=\"mb-0 fw-bold\">{{ stockIssuanceQtySum | number }}</h1>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div class=\"col-lg-6 mb-3\">\n <app-product-quick-search></app-product-quick-search>\n </div>\n <div class=\"col-lg-6 mb-3\">\n <app-low-stock-products-widget></app-low-stock-products-widget>\n </div>\n <div class=\"col-lg-6 mb-3\">\n <app-product-summary-chart title=\"Product By Category\"></app-product-summary-chart>\n </div>\n </div>\n <div style=\"width: 300px\" class=\"d-flex flex-column gap-3 h-100\">\n <mat-card class=\"h-100\">\n <mat-card-content>\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <mat-icon>flag</mat-icon>\n <h3 class=\"mb-0 fw-bold\">Reports</h3>\n </div>\n </mat-card-content>\n <mat-card-content class=\"mt-3 d-flex flex-column justify-content-start gap-3\">\n <a\n class=\"d-flex justify-content-start align-items-center gap-2 text-decoration-none text-dark\"\n routerLink=\"/inventory/reports/low-stock-report\"\n >\n <span class=\"material-symbols-outlined fs-3\"> description </span>\n <h3 class=\"mb-0\">Low Stock Report</h3>\n <span class=\"material-symbols-outlined\"> chevron_forward </span>\n </a>\n <a\n class=\"d-flex justify-content-start align-items-center gap-2 text-decoration-none text-dark cursor-pointer\"\n routerLink=\"/inventory/reports/inventory-value-report\"\n >\n <span class=\"material-symbols-outlined fs-3\"> description </span>\n <h3 class=\"mb-0\">Inventory Value Report</h3>\n <span class=\"material-symbols-outlined\"> chevron_forward </span>\n </a>\n </mat-card-content>\n </mat-card>\n </div>\n</div>\n" }]
3308
- }], ctorParameters: () => [{ type: ProductService }] });
3309
+ }], ctorParameters: () => [{ type: ProductSummaryService }] });
3309
3310
 
3310
3311
  class LowStockReportService extends TechlifyServiceBaseClass {
3311
3312
  httpService;
@@ -3652,19 +3653,19 @@ const routes = [
3652
3653
  },
3653
3654
  {
3654
3655
  path: 'suppliers',
3655
- loadChildren: () => import('./techlify-inventory-common-supplier.module-CbKK7WeC.mjs').then((m) => m.SupplierModule),
3656
+ loadChildren: () => import('./techlify-inventory-common-supplier.module-BesSBedb.mjs').then((m) => m.SupplierModule),
3656
3657
  },
3657
3658
  {
3658
3659
  path: 'locations',
3659
- loadChildren: () => import('./techlify-inventory-common-location.module-DI57PYtO.mjs').then((mod) => mod.LocationModule),
3660
+ loadChildren: () => import('./techlify-inventory-common-location.module-DW-rsXCW.mjs').then((mod) => mod.LocationModule),
3660
3661
  },
3661
3662
  {
3662
3663
  path: "measures",
3663
- loadChildren: () => import('./techlify-inventory-common-measure.module-eEfRzXya.mjs').then((mod) => mod.MeasureModule),
3664
+ loadChildren: () => import('./techlify-inventory-common-measure.module-SGEdmXgY.mjs').then((mod) => mod.MeasureModule),
3664
3665
  },
3665
3666
  {
3666
3667
  path: 'stock-issuances',
3667
- loadChildren: () => import('./techlify-inventory-common-stock-issuances.module-BnpAew18.mjs').then((mod) => mod.StockIssuancesModule),
3668
+ loadChildren: () => import('./techlify-inventory-common-stock-issuances.module-CGmQAuu8.mjs').then((mod) => mod.StockIssuancesModule),
3668
3669
  },
3669
3670
  {
3670
3671
  path: 'stock-receipts',
@@ -3672,7 +3673,7 @@ const routes = [
3672
3673
  },
3673
3674
  {
3674
3675
  path: 'categories',
3675
- loadChildren: () => import('./techlify-inventory-common-category.module-isHvDgRZ.mjs').then((mod) => mod.CategoryModule),
3676
+ loadChildren: () => import('./techlify-inventory-common-category.module-B9v8ocCM.mjs').then((mod) => mod.CategoryModule),
3676
3677
  },
3677
3678
  {
3678
3679
  path: 'products',
@@ -3768,5 +3769,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3768
3769
  * Generated bundle index. Do not edit.
3769
3770
  */
3770
3771
 
3771
- export { InventoryCommonRoutingModule as I, MaterialModule as M, ProductModule as P, SupplierFormComponent as S, TechlifyFormService as T, SupplierService as a, ProductCategoryBadgesComponent as b, StockTransferFormButtonComponent as c, TechlifyFilterComponent as d, TechlifyFilterModule as e, StockIssuancesListComponent as f, StockReceiptFormModule as g, StockIssueFormModule as h, StockIssuancesListModule as i, InventoryCommonModule as j, StockSummaryService as k };
3772
- //# sourceMappingURL=techlify-inventory-common-techlify-inventory-common-BCHHzF2b.mjs.map
3772
+ export { InventoryCommonRoutingModule as I, MaterialModule as M, ProductModule as P, SupplierFormComponent as S, TechlifyFormService as T, SupplierService as a, ProductCategoryBadgesComponent as b, StockTransferFormButtonComponent as c, MeasureService as d, TechlifyFilterComponent as e, TechlifyFilterModule as f, StockIssuancesListComponent as g, StockReceiptFormModule as h, StockIssueFormModule as i, StockIssuancesListModule as j, InventoryCommonModule as k, StockSummaryService as l };
3773
+ //# sourceMappingURL=techlify-inventory-common-techlify-inventory-common-Dsfl8cl6.mjs.map