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.
- package/esm2022/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.mjs +8 -8
- package/esm2022/lib/inventory-common/product/product-measure-form/product-measure-form.component.mjs +9 -9
- package/esm2022/lib/inventory-common/product/product-measures-list/product-measures-list.component.mjs +8 -8
- package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.mjs +8 -8
- package/esm2022/lib/inventory-common/product/product-summary.service.mjs +20 -0
- package/esm2022/lib/inventory-common/product/product.service.mjs +4 -33
- package/esm2022/lib/inventory-common/stock-issuances/stock-issue-import-page/stock-issue-import-page.component.mjs +2 -2
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-import-page/stock-receipt-import-page.component.mjs +2 -2
- package/fesm2022/{techlify-inventory-common-category.module-isHvDgRZ.mjs → techlify-inventory-common-category.module-B9v8ocCM.mjs} +2 -2
- package/fesm2022/{techlify-inventory-common-category.module-isHvDgRZ.mjs.map → techlify-inventory-common-category.module-B9v8ocCM.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-location.module-DI57PYtO.mjs → techlify-inventory-common-location.module-DW-rsXCW.mjs} +2 -2
- package/fesm2022/{techlify-inventory-common-location.module-DI57PYtO.mjs.map → techlify-inventory-common-location.module-DW-rsXCW.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-measure.module-eEfRzXya.mjs → techlify-inventory-common-measure.module-SGEdmXgY.mjs} +4 -18
- package/fesm2022/techlify-inventory-common-measure.module-SGEdmXgY.mjs.map +1 -0
- package/fesm2022/{techlify-inventory-common-stock-issuances.module-BnpAew18.mjs → techlify-inventory-common-stock-issuances.module-CGmQAuu8.mjs} +3 -3
- package/fesm2022/techlify-inventory-common-stock-issuances.module-CGmQAuu8.mjs.map +1 -0
- package/fesm2022/{techlify-inventory-common-supplier.module-CbKK7WeC.mjs → techlify-inventory-common-supplier.module-BesSBedb.mjs} +2 -2
- package/fesm2022/{techlify-inventory-common-supplier.module-CbKK7WeC.mjs.map → techlify-inventory-common-supplier.module-BesSBedb.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-techlify-inventory-common-BCHHzF2b.mjs → techlify-inventory-common-techlify-inventory-common-Dsfl8cl6.mjs} +66 -65
- package/fesm2022/techlify-inventory-common-techlify-inventory-common-Dsfl8cl6.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common.mjs +1 -1
- package/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.d.ts +3 -3
- package/lib/inventory-common/product/product-measure-form/product-measure-form.component.d.ts +3 -3
- package/lib/inventory-common/product/product-measures-list/product-measures-list.component.d.ts +3 -3
- package/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.d.ts +3 -3
- package/lib/inventory-common/product/product-summary.service.d.ts +8 -0
- package/lib/inventory-common/product/product.service.d.ts +2 -13
- package/package.json +1 -1
- package/fesm2022/techlify-inventory-common-measure.module-eEfRzXya.mjs.map +0 -1
- package/fesm2022/techlify-inventory-common-stock-issuances.module-BnpAew18.mjs.map +0 -1
- 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(
|
|
98
|
+
constructor(httpService) {
|
|
84
99
|
super(httpService, 'products');
|
|
85
|
-
this.dataManager = dataManager;
|
|
86
100
|
this.httpService = httpService;
|
|
87
101
|
}
|
|
88
|
-
|
|
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.
|
|
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
|
-
|
|
150
|
+
productSummaryService;
|
|
164
151
|
height = 400;
|
|
165
152
|
title = 'Product Summary';
|
|
166
|
-
constructor(
|
|
167
|
-
this.
|
|
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.
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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(
|
|
232
|
-
this.
|
|
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.
|
|
264
|
-
: await this.
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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,
|
|
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.
|
|
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.
|
|
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:
|
|
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:
|
|
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
|
-
|
|
3279
|
+
productSummaryService;
|
|
3279
3280
|
lowStockProductsCount;
|
|
3280
3281
|
stockReceiptsQtySum;
|
|
3281
3282
|
stockIssuanceQtySum;
|
|
3282
|
-
constructor(
|
|
3283
|
-
this.
|
|
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.
|
|
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:
|
|
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:
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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,
|
|
3772
|
-
//# sourceMappingURL=techlify-inventory-common-techlify-inventory-common-
|
|
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
|