@merkaly/api 0.5.9 → 0.5.11
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/dist/abstract.entity.d.ts +1 -1
- package/dist/abstract.repository.d.ts +3 -3
- package/dist/abstract.validator.d.ts +3 -1
- package/dist/abstract.validator.js +18 -15
- package/dist/account/user/user.entity.d.ts +2 -0
- package/dist/finance/payment/payment.entity.d.ts +2 -1
- package/dist/finance/payment/payment.enum.d.ts +1 -2
- package/dist/finance/payment/payment.enum.js +0 -1
- package/dist/finance/payment/payment.transition.js +1 -2
- package/dist/index.d.ts +1 -0
- package/dist/inventory/catalog/product/product.validator.d.ts +3 -4
- package/dist/inventory/catalog/product/product.validator.js +1 -8
- package/dist/inventory/catalog/variant/variant.entity.d.ts +4 -2
- package/dist/inventory/catalog/variant/variant.validator.d.ts +0 -1
- package/dist/inventory/catalog/variant/variant.validator.js +0 -7
- package/dist/inventory/stock/balance/balance.entity.d.ts +11 -0
- package/dist/inventory/stock/balance/balance.validator.d.ts +13 -0
- package/dist/inventory/stock/balance/balance.validator.js +46 -0
- package/dist/inventory/stock/balance/index.d.ts +2 -0
- package/dist/inventory/stock/balance/index.js +1 -0
- package/dist/inventory/stock/transfer/transfer.entity.d.ts +1 -1
- package/dist/order/purchase/transaction/transaction.validator.d.ts +4 -0
- package/dist/order/purchase/transaction/transaction.validator.js +17 -0
- package/dist/order/sale/transaction/transaction.validator.d.ts +4 -0
- package/dist/order/sale/transaction/transaction.validator.js +17 -0
- package/dist/status.plugin.d.ts +14 -0
- package/package.json +1 -1
|
@@ -6,7 +6,7 @@ export type MongoEntity<T extends AbstractEntity> = T | string;
|
|
|
6
6
|
export declare abstract class AbstractEntity extends Document<string> {
|
|
7
7
|
_id: string;
|
|
8
8
|
createdAt: Date;
|
|
9
|
-
|
|
9
|
+
updatedAt?: Date;
|
|
10
10
|
deletedAt?: Date;
|
|
11
11
|
toString(): string;
|
|
12
12
|
}
|
|
@@ -4,7 +4,7 @@ import { MongoService } from './mongo.service.js';
|
|
|
4
4
|
import { AbstractEntity } from './abstract.entity.js';
|
|
5
5
|
import { AbstractSchema } from './abstract.schema.js';
|
|
6
6
|
import { AbstractValidator, SearchValidator } from './abstract.validator.js';
|
|
7
|
-
import type { ClientSession, Document, FilterQuery, Model, PopulateOptions, RootFilterQuery, UpdateQuery } from 'mongoose';
|
|
7
|
+
import type { ClientSession, Document, FilterQuery, Model, PipelineStage, PopulateOptions, RootFilterQuery, UpdateQuery } from 'mongoose';
|
|
8
8
|
type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
|
|
9
9
|
type SystemKeys = '_id' | 'createdAt' | 'updatedAt' | 'deletedAt' | keyof Document;
|
|
10
10
|
export type CreateEntityArgs<T> = {
|
|
@@ -45,13 +45,12 @@ export declare abstract class AbstractRepository<E extends AbstractEntity = Abst
|
|
|
45
45
|
protected readonly $logger: LoggerService;
|
|
46
46
|
protected readonly $mongo: MongoService<E>;
|
|
47
47
|
protected readonly $event: EventEmitter2;
|
|
48
|
-
protected readonly $joins: Record<string, AbstractSchema<any> | null>;
|
|
49
48
|
get $builder(): Model<E>;
|
|
50
49
|
get $user(): any;
|
|
51
50
|
get $identity(): string;
|
|
52
51
|
private sanitizePaths;
|
|
53
|
-
private removeNonDeclaredSchemas;
|
|
54
52
|
private applyPopulate;
|
|
53
|
+
private handlePopulateError;
|
|
55
54
|
count(filters?: FilterQuery<E>, session?: ClientSession): Promise<number>;
|
|
56
55
|
search(validator?: SearchValidator<E>, session?: ClientSession): Promise<{
|
|
57
56
|
data: import("mongoose").IfAny<E, any, Document<unknown, {}, E, {}, {}> & (import("mongoose").Require_id<E> extends infer T ? T extends import("mongoose").Require_id<E> ? T extends {
|
|
@@ -63,6 +62,7 @@ export declare abstract class AbstractRepository<E extends AbstractEntity = Abst
|
|
|
63
62
|
pages: number;
|
|
64
63
|
total: number;
|
|
65
64
|
}>;
|
|
65
|
+
aggregate<R = unknown>(pipeline: PipelineStage[], session?: ClientSession): Promise<R[]>;
|
|
66
66
|
read(locator: EntityLocator<E>, options?: ReadMethodOptions): Promise<E>;
|
|
67
67
|
private hasUpdateOperators;
|
|
68
68
|
protected save({ param, payload, join, session }: SaveMethodOptions<E>): Promise<E>;
|
|
@@ -15,12 +15,14 @@ export declare class PaginationValidator {
|
|
|
15
15
|
limit?: number;
|
|
16
16
|
page?: number;
|
|
17
17
|
}
|
|
18
|
-
export declare class
|
|
18
|
+
export declare class QueryValidator<E = AbstractEntity> {
|
|
19
19
|
pagination?: PaginationValidator;
|
|
20
20
|
sort?: {
|
|
21
21
|
[key: string]: SortOrder;
|
|
22
22
|
};
|
|
23
23
|
filters?: FilterQuery<E>;
|
|
24
|
+
}
|
|
25
|
+
export declare class SearchValidator<E = AbstractEntity> extends QueryValidator<E> {
|
|
24
26
|
join?: PopulateOptions[];
|
|
25
27
|
}
|
|
26
28
|
export {};
|
|
@@ -41,6 +41,15 @@ export function transformJoinsIntoPopulate(value) {
|
|
|
41
41
|
}
|
|
42
42
|
return transform(value);
|
|
43
43
|
}
|
|
44
|
+
function transformStructuredValue(value) {
|
|
45
|
+
if (!value) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
if ((0, class_validator_1.isObject)(value) || (0, class_validator_1.isArray)(value)) {
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
return JSON.parse(value);
|
|
52
|
+
}
|
|
44
53
|
export class ReadValidator extends AbstractValidator {
|
|
45
54
|
join = [];
|
|
46
55
|
}
|
|
@@ -65,11 +74,10 @@ __decorate([
|
|
|
65
74
|
(0, class_validator_1.IsOptional)(),
|
|
66
75
|
__metadata("design:type", Number)
|
|
67
76
|
], PaginationValidator.prototype, "page", void 0);
|
|
68
|
-
export class
|
|
77
|
+
export class QueryValidator {
|
|
69
78
|
pagination = new PaginationValidator();
|
|
70
79
|
sort = {};
|
|
71
80
|
filters = {};
|
|
72
|
-
join = [];
|
|
73
81
|
}
|
|
74
82
|
__decorate([
|
|
75
83
|
(0, class_transformer_1.Transform)(({ value }) => {
|
|
@@ -83,27 +91,22 @@ __decorate([
|
|
|
83
91
|
(0, class_transformer_1.Type)(() => PaginationValidator),
|
|
84
92
|
(0, class_validator_1.IsOptional)(),
|
|
85
93
|
__metadata("design:type", PaginationValidator)
|
|
86
|
-
],
|
|
94
|
+
], QueryValidator.prototype, "pagination", void 0);
|
|
87
95
|
__decorate([
|
|
88
|
-
(0, class_transformer_1.Transform)(({ value }) =>
|
|
89
|
-
if ((0, class_validator_1.isObject)(value)) {
|
|
90
|
-
return value;
|
|
91
|
-
}
|
|
92
|
-
return value && JSON.parse(value);
|
|
93
|
-
}),
|
|
96
|
+
(0, class_transformer_1.Transform)(({ value }) => transformStructuredValue(value)),
|
|
94
97
|
(0, class_validator_1.IsOptional)(),
|
|
95
98
|
__metadata("design:type", Object)
|
|
96
|
-
],
|
|
99
|
+
], QueryValidator.prototype, "sort", void 0);
|
|
97
100
|
__decorate([
|
|
98
101
|
(0, class_transformer_1.Transform)(({ value }) => {
|
|
99
|
-
|
|
100
|
-
return value;
|
|
101
|
-
}
|
|
102
|
-
return value && JSON.parse(value);
|
|
102
|
+
return transformStructuredValue(value);
|
|
103
103
|
}),
|
|
104
104
|
(0, class_validator_1.IsOptional)(),
|
|
105
105
|
__metadata("design:type", Object)
|
|
106
|
-
],
|
|
106
|
+
], QueryValidator.prototype, "filters", void 0);
|
|
107
|
+
export class SearchValidator extends QueryValidator {
|
|
108
|
+
join = [];
|
|
109
|
+
}
|
|
107
110
|
__decorate([
|
|
108
111
|
(0, class_validator_1.IsOptional)(),
|
|
109
112
|
(0, class_transformer_1.Transform)(({ value }) => transformJoinsIntoPopulate(value)),
|
|
@@ -4,10 +4,11 @@ import { ServiceTransactionEntity } from '../..';
|
|
|
4
4
|
import { AbstractEntity, MongoEntity } from '../..';
|
|
5
5
|
import { StatusEntity } from '../..';
|
|
6
6
|
import { FinancePaymentMethodEnum, FinancePaymentStatusEnum, FinancePaymentTypeEnum } from './payment.enum.js';
|
|
7
|
+
export type OrderEntity = SaleTransactionEntity | PurchaseTransactionEntity | ServiceTransactionEntity;
|
|
7
8
|
export declare class FinancePaymentEntity extends AbstractEntity {
|
|
8
9
|
type: FinancePaymentTypeEnum;
|
|
9
10
|
target: string;
|
|
10
|
-
order: MongoEntity<
|
|
11
|
+
order: MongoEntity<OrderEntity>;
|
|
11
12
|
total: number;
|
|
12
13
|
fee: number;
|
|
13
14
|
method?: FinancePaymentMethodEnum;
|
|
@@ -3,7 +3,6 @@ export var FinancePaymentStatusEnum;
|
|
|
3
3
|
FinancePaymentStatusEnum["PENDING"] = "PENDING";
|
|
4
4
|
FinancePaymentStatusEnum["PAID"] = "PAID";
|
|
5
5
|
FinancePaymentStatusEnum["CANCELLED"] = "CANCELLED";
|
|
6
|
-
FinancePaymentStatusEnum["REFUNDED"] = "REFUNDED";
|
|
7
6
|
})(FinancePaymentStatusEnum || (FinancePaymentStatusEnum = {}));
|
|
8
7
|
export var FinancePaymentMethodEnum;
|
|
9
8
|
(function (FinancePaymentMethodEnum) {
|
|
@@ -7,8 +7,7 @@ export class FinancePaymentTransition extends AbstractTransition {
|
|
|
7
7
|
payment_enum_1.FinancePaymentStatusEnum.PAID,
|
|
8
8
|
payment_enum_1.FinancePaymentStatusEnum.CANCELLED,
|
|
9
9
|
],
|
|
10
|
-
[payment_enum_1.FinancePaymentStatusEnum.PAID]: [
|
|
11
|
-
[payment_enum_1.FinancePaymentStatusEnum.REFUNDED]: [],
|
|
10
|
+
[payment_enum_1.FinancePaymentStatusEnum.PAID]: [],
|
|
12
11
|
[payment_enum_1.FinancePaymentStatusEnum.CANCELLED]: [],
|
|
13
12
|
};
|
|
14
13
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,4 +5,5 @@ export * from './abstract.repository';
|
|
|
5
5
|
export * from './not-equal-to.decorator';
|
|
6
6
|
export * from './address.entity';
|
|
7
7
|
export * from './address.validator';
|
|
8
|
+
export type { StatusEntity } from './status.plugin';
|
|
8
9
|
export type { CreateEntityArgs } from './repository.types';
|
|
@@ -14,11 +14,10 @@ export declare class SaveCatalogProductValidator extends AbstractValidator {
|
|
|
14
14
|
sku: string;
|
|
15
15
|
description: string;
|
|
16
16
|
price: number;
|
|
17
|
-
stock: number;
|
|
18
17
|
measure: {
|
|
19
|
-
amount:
|
|
20
|
-
kind:
|
|
21
|
-
unit:
|
|
18
|
+
amount: any;
|
|
19
|
+
kind: any;
|
|
20
|
+
unit: any;
|
|
22
21
|
};
|
|
23
22
|
pictures: string[];
|
|
24
23
|
category: string;
|
|
@@ -47,8 +47,7 @@ export class SaveCatalogProductValidator extends abstract_validator_1.AbstractVa
|
|
|
47
47
|
sku;
|
|
48
48
|
description;
|
|
49
49
|
price;
|
|
50
|
-
|
|
51
|
-
measure = { amount: 0, kind: '', unit: '' };
|
|
50
|
+
measure = { amount: undefined, kind: undefined, unit: undefined };
|
|
52
51
|
pictures = [];
|
|
53
52
|
category;
|
|
54
53
|
brand;
|
|
@@ -79,12 +78,6 @@ __decorate([
|
|
|
79
78
|
(0, class_validator_1.IsOptional)({ groups: ['update'] }),
|
|
80
79
|
__metadata("design:type", Number)
|
|
81
80
|
], SaveCatalogProductValidator.prototype, "price", void 0);
|
|
82
|
-
__decorate([
|
|
83
|
-
(0, class_validator_1.IsInt)({ groups: ['create'] }),
|
|
84
|
-
(0, class_validator_1.Min)(0, { groups: ['create'] }),
|
|
85
|
-
(0, class_validator_1.IsOptional)({ groups: ['create'] }),
|
|
86
|
-
__metadata("design:type", Number)
|
|
87
|
-
], SaveCatalogProductValidator.prototype, "stock", void 0);
|
|
88
81
|
__decorate([
|
|
89
82
|
(0, class_validator_1.IsObject)(),
|
|
90
83
|
(0, class_validator_1.IsOptional)({ groups: ['update'] }),
|
|
@@ -2,12 +2,12 @@ import { AssetEntity } from '../../../assets/asset';
|
|
|
2
2
|
import { AbstractEntity } from '../../..';
|
|
3
3
|
import type { CatalogAttributeEntity } from '../attribute';
|
|
4
4
|
import type { CatalogProductEntity } from '../product';
|
|
5
|
+
import type { StockBalanceEntity } from '../../stock/balance';
|
|
5
6
|
import type { MongoEntity } from '../../..';
|
|
6
7
|
export declare class CatalogVariantEntity extends AbstractEntity {
|
|
7
8
|
product?: MongoEntity<CatalogProductEntity>;
|
|
8
9
|
sku?: string;
|
|
9
10
|
price: number;
|
|
10
|
-
stock: number;
|
|
11
11
|
options: {
|
|
12
12
|
type: MongoEntity<CatalogAttributeEntity>;
|
|
13
13
|
value: string;
|
|
@@ -15,5 +15,7 @@ export declare class CatalogVariantEntity extends AbstractEntity {
|
|
|
15
15
|
active: boolean;
|
|
16
16
|
barcode?: string;
|
|
17
17
|
pictures: MongoEntity<AssetEntity>[];
|
|
18
|
-
readonly
|
|
18
|
+
readonly total: number;
|
|
19
|
+
readonly stock: number;
|
|
20
|
+
readonly balances: MongoEntity<StockBalanceEntity>[];
|
|
19
21
|
}
|
|
@@ -32,7 +32,6 @@ export class SaveCatalogVariantValidator extends abstract_validator_1.AbstractVa
|
|
|
32
32
|
product;
|
|
33
33
|
sku;
|
|
34
34
|
price;
|
|
35
|
-
stock;
|
|
36
35
|
options = [];
|
|
37
36
|
active;
|
|
38
37
|
barcode;
|
|
@@ -53,12 +52,6 @@ __decorate([
|
|
|
53
52
|
(0, class_validator_1.IsOptional)(),
|
|
54
53
|
__metadata("design:type", Number)
|
|
55
54
|
], SaveCatalogVariantValidator.prototype, "price", void 0);
|
|
56
|
-
__decorate([
|
|
57
|
-
(0, class_validator_1.IsInt)(),
|
|
58
|
-
(0, class_validator_1.Min)(0),
|
|
59
|
-
(0, class_validator_1.IsOptional)(),
|
|
60
|
-
__metadata("design:type", Number)
|
|
61
|
-
], SaveCatalogVariantValidator.prototype, "stock", void 0);
|
|
62
55
|
__decorate([
|
|
63
56
|
(0, class_validator_1.IsArray)(),
|
|
64
57
|
(0, class_validator_1.IsOptional)(),
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CatalogProductEntity } from '../../catalog/product';
|
|
2
|
+
import { CatalogVariantEntity } from '../../catalog/variant';
|
|
3
|
+
import { StockWarehouseEntity } from '../warehouse';
|
|
4
|
+
import { AbstractEntity } from '../../..';
|
|
5
|
+
import type { MongoEntity } from '../../..';
|
|
6
|
+
export declare class StockBalanceEntity extends AbstractEntity {
|
|
7
|
+
warehouse: MongoEntity<StockWarehouseEntity>;
|
|
8
|
+
product: MongoEntity<CatalogProductEntity>;
|
|
9
|
+
variant: MongoEntity<CatalogVariantEntity>;
|
|
10
|
+
quantity: number;
|
|
11
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StockBalanceEntity } from './';
|
|
2
|
+
import { AbstractValidator, ReadValidator, SearchValidator } from '../../..';
|
|
3
|
+
export declare class SearchStockBalanceValidator extends SearchValidator<StockBalanceEntity> {
|
|
4
|
+
}
|
|
5
|
+
export declare class ReadStockBalanceValidator extends ReadValidator<StockBalanceEntity> {
|
|
6
|
+
}
|
|
7
|
+
export declare class SaveStockBalanceValidator extends AbstractValidator {
|
|
8
|
+
constructor(entity?: Partial<StockBalanceEntity>);
|
|
9
|
+
product: string;
|
|
10
|
+
variant: string;
|
|
11
|
+
warehouse: string;
|
|
12
|
+
quantity: number;
|
|
13
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import * as class_validator_1 from "class-validator";
|
|
11
|
+
import * as abstract_validator_1 from '../../..';
|
|
12
|
+
export class SearchStockBalanceValidator extends abstract_validator_1.SearchValidator {
|
|
13
|
+
}
|
|
14
|
+
export class ReadStockBalanceValidator extends abstract_validator_1.ReadValidator {
|
|
15
|
+
}
|
|
16
|
+
export class SaveStockBalanceValidator extends abstract_validator_1.AbstractValidator {
|
|
17
|
+
constructor(entity) {
|
|
18
|
+
super();
|
|
19
|
+
if (!entity)
|
|
20
|
+
return;
|
|
21
|
+
this.product = entity.product?.toString?.() ?? '';
|
|
22
|
+
this.variant = entity.variant?.toString?.() ?? '';
|
|
23
|
+
this.warehouse = entity.warehouse?.toString?.() ?? '';
|
|
24
|
+
this.quantity = Number(entity.quantity ?? this.quantity);
|
|
25
|
+
}
|
|
26
|
+
product;
|
|
27
|
+
variant;
|
|
28
|
+
warehouse;
|
|
29
|
+
quantity = 0;
|
|
30
|
+
}
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, class_validator_1.IsMongoId)(),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], SaveStockBalanceValidator.prototype, "product", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, class_validator_1.IsMongoId)(),
|
|
37
|
+
__metadata("design:type", String)
|
|
38
|
+
], SaveStockBalanceValidator.prototype, "variant", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, class_validator_1.IsMongoId)(),
|
|
41
|
+
__metadata("design:type", String)
|
|
42
|
+
], SaveStockBalanceValidator.prototype, "warehouse", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, class_validator_1.Min)(0),
|
|
45
|
+
__metadata("design:type", Object)
|
|
46
|
+
], SaveStockBalanceValidator.prototype, "quantity", void 0);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './balance.validator.js';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AccountUserEntity } from '../../../account/user';
|
|
2
2
|
import { CatalogProductEntity } from '../../catalog/product';
|
|
3
|
+
import { CatalogVariantEntity } from '../../catalog/variant';
|
|
3
4
|
import { StockWarehouseEntity } from '../warehouse';
|
|
4
5
|
import { TransferStatusEnum } from './';
|
|
5
6
|
import { AbstractEntity } from '../../..';
|
|
6
7
|
import { StatusEntity } from '../../..';
|
|
7
|
-
import { CatalogVariantEntity } from '../../catalog/variant';
|
|
8
8
|
import type { MongoEntity } from '../../..';
|
|
9
9
|
export declare class StockTransferItemEntity {
|
|
10
10
|
product: MongoEntity<CatalogProductEntity>;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { FinancePaymentStatusEnum } from '../../../finance/payment';
|
|
1
2
|
import { PurchaseTransactionEntity } from './';
|
|
3
|
+
import { PurchaseTransactionStatusEnum } from './';
|
|
2
4
|
import { AbstractValidator, ReadValidator, SearchValidator } from '../../..';
|
|
3
5
|
import { PurchaseItemValidator } from '../item';
|
|
4
6
|
export declare class SearchPurchaseTransactionValidator extends SearchValidator<PurchaseTransactionEntity> {
|
|
@@ -10,5 +12,7 @@ export declare class SavePurchaseTransactionValidator extends AbstractValidator
|
|
|
10
12
|
items: PurchaseItemValidator[];
|
|
11
13
|
notes: string;
|
|
12
14
|
vendor?: string;
|
|
15
|
+
payment?: FinancePaymentStatusEnum;
|
|
16
|
+
status?: PurchaseTransactionStatusEnum;
|
|
13
17
|
get total(): number;
|
|
14
18
|
}
|
|
@@ -9,6 +9,8 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import * as class_transformer_1 from "class-transformer";
|
|
11
11
|
import * as class_validator_1 from "class-validator";
|
|
12
|
+
import * as payment_enum_1 from '../../../finance/payment';
|
|
13
|
+
import * as transaction_enum_1 from './transaction.enum.js';
|
|
12
14
|
import * as abstract_validator_1 from '../../..';
|
|
13
15
|
import * as item_validator_1 from '../item';
|
|
14
16
|
export class SearchPurchaseTransactionValidator extends abstract_validator_1.SearchValidator {
|
|
@@ -20,6 +22,7 @@ export class SavePurchaseTransactionValidator extends abstract_validator_1.Abstr
|
|
|
20
22
|
super();
|
|
21
23
|
if (!entity)
|
|
22
24
|
return;
|
|
25
|
+
const payment = entity.payment;
|
|
23
26
|
this.items = (entity.items || []).map((item) => ({
|
|
24
27
|
notes: item.notes,
|
|
25
28
|
price: item.price,
|
|
@@ -30,11 +33,14 @@ export class SavePurchaseTransactionValidator extends abstract_validator_1.Abstr
|
|
|
30
33
|
warehouse: (0, abstract_validator_1.toId)(item.warehouse),
|
|
31
34
|
}));
|
|
32
35
|
this.notes = entity.notes;
|
|
36
|
+
this.payment = payment?.status;
|
|
33
37
|
this.vendor = (0, abstract_validator_1.toId)(entity.vendor);
|
|
34
38
|
}
|
|
35
39
|
items = [];
|
|
36
40
|
notes;
|
|
37
41
|
vendor;
|
|
42
|
+
payment = payment_enum_1.FinancePaymentStatusEnum.PENDING;
|
|
43
|
+
status;
|
|
38
44
|
get total() {
|
|
39
45
|
return this.items.reduce((sum, item) => sum + item.total, 0);
|
|
40
46
|
}
|
|
@@ -58,3 +64,14 @@ __decorate([
|
|
|
58
64
|
(0, class_validator_1.IsOptional)(),
|
|
59
65
|
__metadata("design:type", String)
|
|
60
66
|
], SavePurchaseTransactionValidator.prototype, "vendor", void 0);
|
|
67
|
+
__decorate([
|
|
68
|
+
(0, class_validator_1.IsEnum)(payment_enum_1.FinancePaymentStatusEnum),
|
|
69
|
+
(0, class_validator_1.IsDefined)({ groups: ['create'] }),
|
|
70
|
+
__metadata("design:type", String)
|
|
71
|
+
], SavePurchaseTransactionValidator.prototype, "payment", void 0);
|
|
72
|
+
__decorate([
|
|
73
|
+
(0, class_validator_1.IsEnum)(transaction_enum_1.PurchaseTransactionStatusEnum),
|
|
74
|
+
(0, class_validator_1.IsDefined)({ groups: ['create'] }),
|
|
75
|
+
(0, class_validator_1.IsOptional)(),
|
|
76
|
+
__metadata("design:type", String)
|
|
77
|
+
], SavePurchaseTransactionValidator.prototype, "status", void 0);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { FinancePaymentStatusEnum } from '../../../finance/payment';
|
|
1
2
|
import { SaleTransactionEntity } from './';
|
|
3
|
+
import { SaleTransactionStatusEnum } from './';
|
|
2
4
|
import { AbstractValidator, ReadValidator, SearchValidator } from '../../..';
|
|
3
5
|
import { SaleItemValidator } from '../item';
|
|
4
6
|
export declare class SearchSaleTransactionValidator extends SearchValidator<SaleTransactionEntity> {
|
|
@@ -10,5 +12,7 @@ export declare class SaveSaleTransactionValidator extends AbstractValidator {
|
|
|
10
12
|
items: SaleItemValidator[];
|
|
11
13
|
notes: string;
|
|
12
14
|
customer?: string;
|
|
15
|
+
payment?: FinancePaymentStatusEnum;
|
|
16
|
+
status?: SaleTransactionStatusEnum;
|
|
13
17
|
get total(): number;
|
|
14
18
|
}
|
|
@@ -9,6 +9,8 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import * as class_transformer_1 from "class-transformer";
|
|
11
11
|
import * as class_validator_1 from "class-validator";
|
|
12
|
+
import * as payment_enum_1 from '../../../finance/payment';
|
|
13
|
+
import * as transaction_enum_1 from './transaction.enum.js';
|
|
12
14
|
import * as abstract_validator_1 from '../../..';
|
|
13
15
|
import * as item_validator_1 from '../item';
|
|
14
16
|
export class SearchSaleTransactionValidator extends abstract_validator_1.SearchValidator {
|
|
@@ -20,6 +22,7 @@ export class SaveSaleTransactionValidator extends abstract_validator_1.AbstractV
|
|
|
20
22
|
super();
|
|
21
23
|
if (!entity)
|
|
22
24
|
return;
|
|
25
|
+
const payment = entity.payment;
|
|
23
26
|
this.items = (entity.items || []).map((item) => ({
|
|
24
27
|
price: item.price,
|
|
25
28
|
product: (0, abstract_validator_1.toId)(item.product),
|
|
@@ -29,11 +32,14 @@ export class SaveSaleTransactionValidator extends abstract_validator_1.AbstractV
|
|
|
29
32
|
warehouse: (0, abstract_validator_1.toId)(item.warehouse),
|
|
30
33
|
}));
|
|
31
34
|
this.notes = entity.notes;
|
|
35
|
+
this.payment = payment?.status;
|
|
32
36
|
this.customer = (0, abstract_validator_1.toId)(entity.customer);
|
|
33
37
|
}
|
|
34
38
|
items = [];
|
|
35
39
|
notes;
|
|
36
40
|
customer;
|
|
41
|
+
payment = payment_enum_1.FinancePaymentStatusEnum.PENDING;
|
|
42
|
+
status;
|
|
37
43
|
get total() {
|
|
38
44
|
return this.items.reduce((sum, item) => sum + item.total, 0);
|
|
39
45
|
}
|
|
@@ -57,3 +63,14 @@ __decorate([
|
|
|
57
63
|
(0, class_validator_1.IsOptional)(),
|
|
58
64
|
__metadata("design:type", String)
|
|
59
65
|
], SaveSaleTransactionValidator.prototype, "customer", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
(0, class_validator_1.IsEnum)(payment_enum_1.FinancePaymentStatusEnum),
|
|
68
|
+
(0, class_validator_1.IsDefined)({ groups: ['create'] }),
|
|
69
|
+
__metadata("design:type", String)
|
|
70
|
+
], SaveSaleTransactionValidator.prototype, "payment", void 0);
|
|
71
|
+
__decorate([
|
|
72
|
+
(0, class_validator_1.IsEnum)(transaction_enum_1.SaleTransactionStatusEnum),
|
|
73
|
+
(0, class_validator_1.IsDefined)({ groups: ['create'] }),
|
|
74
|
+
(0, class_validator_1.IsOptional)(),
|
|
75
|
+
__metadata("design:type", String)
|
|
76
|
+
], SaveSaleTransactionValidator.prototype, "status", void 0);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Schema, Types } from 'mongoose';
|
|
2
|
+
type EnumSource = Record<string, string> | readonly string[];
|
|
3
|
+
interface StatusPluginOptions {
|
|
4
|
+
default: string;
|
|
5
|
+
enum: EnumSource;
|
|
6
|
+
}
|
|
7
|
+
export interface StatusEntity<TEnum extends string = string> {
|
|
8
|
+
_id: Types.ObjectId;
|
|
9
|
+
date: Date;
|
|
10
|
+
name: TEnum;
|
|
11
|
+
user: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function statusPlugin(schema: Schema, options: StatusPluginOptions): void;
|
|
14
|
+
export {};
|