@merkaly/api 0.5.11 → 0.5.13
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/finance/invoice/invoice.entity.d.ts +0 -1
- package/dist/finance/payment/payment.entity.d.ts +1 -2
- package/dist/finance/refund/refund.entity.d.ts +0 -1
- package/dist/finance/subscription/subscription.entity.d.ts +0 -1
- package/dist/index.d.ts +1 -0
- package/dist/inventory/stock/transfer/transfer.entity.d.ts +0 -1
- package/dist/order/purchase/transaction/transaction.entity.d.ts +2 -13
- package/dist/order/purchase/transaction/transaction.validator.js +1 -1
- package/dist/order/sale/item/item.entity.d.ts +1 -0
- package/dist/order/sale/transaction/transaction.entity.d.ts +3 -13
- package/dist/order/service/item/index.d.ts +2 -0
- package/dist/order/service/item/index.js +1 -0
- package/dist/order/service/item/item.entity.d.ts +14 -0
- package/dist/order/service/item/item.validator.d.ts +9 -0
- package/dist/order/service/item/item.validator.js +51 -0
- package/dist/order/service/transaction/index.d.ts +4 -0
- package/dist/order/service/transaction/index.js +3 -0
- package/dist/order/service/transaction/transaction.entity.d.ts +9 -0
- package/dist/order/service/transaction/transaction.enum.d.ts +8 -0
- package/dist/order/service/transaction/transaction.enum.js +9 -0
- package/dist/order/service/transaction/transaction.transition.d.ts +6 -0
- package/dist/order/service/transaction/transaction.transition.js +13 -0
- package/dist/order/service/transaction/transaction.validator.d.ts +17 -0
- package/dist/order/service/transaction/transaction.validator.js +75 -0
- package/dist/transaction.entity.d.ts +13 -0
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PurchaseTransactionEntity } from '../../order/purchase/transaction';
|
|
2
2
|
import { SaleTransactionEntity } from '../../order/sale/transaction';
|
|
3
|
-
import { ServiceTransactionEntity } from '
|
|
3
|
+
import { ServiceTransactionEntity } from '../../order/service/transaction';
|
|
4
4
|
import { AbstractEntity, MongoEntity } from '../..';
|
|
5
5
|
import { StatusEntity } from '../..';
|
|
6
6
|
import { FinancePaymentMethodEnum, FinancePaymentStatusEnum, FinancePaymentTypeEnum } from './payment.enum.js';
|
|
@@ -14,6 +14,5 @@ export declare class FinancePaymentEntity extends AbstractEntity {
|
|
|
14
14
|
method?: FinancePaymentMethodEnum;
|
|
15
15
|
status: FinancePaymentStatusEnum;
|
|
16
16
|
history: StatusEntity<FinancePaymentStatusEnum>[];
|
|
17
|
-
sequence: number;
|
|
18
17
|
readonly number: string;
|
|
19
18
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from './abstract.validator';
|
|
|
4
4
|
export * from './abstract.repository';
|
|
5
5
|
export * from './not-equal-to.decorator';
|
|
6
6
|
export * from './address.entity';
|
|
7
|
+
export * from './transaction.entity';
|
|
7
8
|
export * from './address.validator';
|
|
8
9
|
export type { StatusEntity } from './status.plugin';
|
|
9
10
|
export type { CreateEntityArgs } from './repository.types';
|
|
@@ -1,20 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FinancePaymentEntity } from '../../../finance/payment';
|
|
3
|
-
import { AbstractEntity } from '../../..';
|
|
4
|
-
import { StatusEntity } from '../../..';
|
|
1
|
+
import { TransactionEntity } from '../../..';
|
|
5
2
|
import { PurchaseTransactionStatusEnum } from './transaction.enum.js';
|
|
6
3
|
import { PurchaseItemEntity } from '../item';
|
|
7
4
|
import { PurchaseVendorEntity } from '../vendor';
|
|
8
5
|
import type { MongoEntity } from '../../..';
|
|
9
|
-
export declare class PurchaseTransactionEntity extends
|
|
10
|
-
user: MongoEntity<AccountUserEntity>;
|
|
6
|
+
export declare class PurchaseTransactionEntity extends TransactionEntity<PurchaseTransactionStatusEnum> {
|
|
11
7
|
vendor: MongoEntity<PurchaseVendorEntity>;
|
|
12
8
|
items: PurchaseItemEntity[];
|
|
13
|
-
notes?: string;
|
|
14
|
-
status: PurchaseTransactionStatusEnum;
|
|
15
|
-
history: StatusEntity<PurchaseTransactionStatusEnum>[];
|
|
16
|
-
sequence: number;
|
|
17
|
-
readonly number: string;
|
|
18
|
-
readonly total: number;
|
|
19
|
-
readonly payment: FinancePaymentEntity;
|
|
20
9
|
}
|
|
@@ -33,7 +33,7 @@ export class SavePurchaseTransactionValidator extends abstract_validator_1.Abstr
|
|
|
33
33
|
warehouse: (0, abstract_validator_1.toId)(item.warehouse),
|
|
34
34
|
}));
|
|
35
35
|
this.notes = entity.notes;
|
|
36
|
-
this.payment = payment?.status;
|
|
36
|
+
this.payment = typeof payment !== 'string' ? payment?.status : undefined;
|
|
37
37
|
this.vendor = (0, abstract_validator_1.toId)(entity.vendor);
|
|
38
38
|
}
|
|
39
39
|
items = [];
|
|
@@ -1,21 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FinancePaymentEntity } from '../../../finance/payment';
|
|
3
|
-
import { AbstractEntity } from '../../..';
|
|
4
|
-
import { StatusEntity } from '../../..';
|
|
1
|
+
import { TransactionEntity } from '../../..';
|
|
5
2
|
import { SaleTransactionStatusEnum } from './transaction.enum.js';
|
|
6
3
|
import { SaleCustomerEntity } from '../customer';
|
|
7
4
|
import { SaleItemEntity } from '../item';
|
|
8
5
|
import type { MongoEntity } from '../../..';
|
|
9
|
-
export declare class SaleTransactionEntity extends
|
|
10
|
-
user: MongoEntity<AccountUserEntity>;
|
|
6
|
+
export declare class SaleTransactionEntity extends TransactionEntity<SaleTransactionStatusEnum> {
|
|
11
7
|
customer: MongoEntity<SaleCustomerEntity>;
|
|
12
8
|
items: SaleItemEntity[];
|
|
13
|
-
notes?: string;
|
|
14
|
-
status: SaleTransactionStatusEnum;
|
|
15
|
-
history: StatusEntity<SaleTransactionStatusEnum>[];
|
|
16
|
-
sequence: number;
|
|
17
|
-
readonly number: string;
|
|
18
9
|
readonly subtotal: number;
|
|
19
|
-
readonly
|
|
20
|
-
readonly payment?: MongoEntity<FinancePaymentEntity>;
|
|
10
|
+
readonly isProcessable: boolean;
|
|
21
11
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './item.validator.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CatalogProductEntity } from '../../../inventory/catalog/product';
|
|
2
|
+
import { CatalogVariantEntity } from '../../../inventory/catalog/variant';
|
|
3
|
+
import { StockWarehouseEntity } from '../../../inventory/stock/warehouse';
|
|
4
|
+
import { AbstractEntity } from '../../..';
|
|
5
|
+
import type { MongoEntity } from '../../..';
|
|
6
|
+
export declare class ServiceItemEntity extends AbstractEntity {
|
|
7
|
+
product: MongoEntity<CatalogProductEntity>;
|
|
8
|
+
variant: MongoEntity<CatalogVariantEntity>;
|
|
9
|
+
warehouse: MongoEntity<StockWarehouseEntity>;
|
|
10
|
+
quantity: number;
|
|
11
|
+
price: number;
|
|
12
|
+
notes?: string;
|
|
13
|
+
readonly total: number;
|
|
14
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
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_transformer_1 from "class-transformer";
|
|
11
|
+
import * as class_validator_1 from "class-validator";
|
|
12
|
+
export class ServiceItemValidator {
|
|
13
|
+
product;
|
|
14
|
+
variant;
|
|
15
|
+
warehouse;
|
|
16
|
+
quantity = 1;
|
|
17
|
+
price = 0;
|
|
18
|
+
notes;
|
|
19
|
+
get total() {
|
|
20
|
+
return Math.trunc(this.quantity * this.price) || 0;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, class_validator_1.IsMongoId)(),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], ServiceItemValidator.prototype, "product", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, class_validator_1.IsMongoId)(),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], ServiceItemValidator.prototype, "variant", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, class_validator_1.IsMongoId)(),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], ServiceItemValidator.prototype, "warehouse", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, class_validator_1.IsInt)(),
|
|
37
|
+
(0, class_validator_1.Min)(1),
|
|
38
|
+
__metadata("design:type", Object)
|
|
39
|
+
], ServiceItemValidator.prototype, "quantity", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, class_transformer_1.Transform)(({ obj, value }) => value ?? obj?.cost ?? 0),
|
|
42
|
+
(0, class_validator_1.IsNumber)(),
|
|
43
|
+
(0, class_validator_1.Min)(0),
|
|
44
|
+
__metadata("design:type", Object)
|
|
45
|
+
], ServiceItemValidator.prototype, "price", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
(0, class_validator_1.IsString)(),
|
|
48
|
+
(0, class_validator_1.Length)(0, 500),
|
|
49
|
+
(0, class_validator_1.IsOptional)(),
|
|
50
|
+
__metadata("design:type", String)
|
|
51
|
+
], ServiceItemValidator.prototype, "notes", void 0);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SaleCustomerEntity } from '../../sale/customer';
|
|
2
|
+
import { TransactionEntity } from '../../..';
|
|
3
|
+
import { ServiceTransactionStatusEnum } from './transaction.enum.js';
|
|
4
|
+
import { ServiceItemEntity } from '../item';
|
|
5
|
+
import type { MongoEntity } from '../../..';
|
|
6
|
+
export declare class ServiceTransactionEntity extends TransactionEntity<ServiceTransactionStatusEnum> {
|
|
7
|
+
customer?: MongoEntity<SaleCustomerEntity>;
|
|
8
|
+
items: ServiceItemEntity[];
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export var ServiceTransactionStatusEnum;
|
|
2
|
+
(function (ServiceTransactionStatusEnum) {
|
|
3
|
+
ServiceTransactionStatusEnum["OPEN"] = "OPEN";
|
|
4
|
+
ServiceTransactionStatusEnum["SCHEDULED"] = "SCHEDULED";
|
|
5
|
+
ServiceTransactionStatusEnum["IN_PROGRESS"] = "IN_PROGRESS";
|
|
6
|
+
ServiceTransactionStatusEnum["PAUSED"] = "PAUSED";
|
|
7
|
+
ServiceTransactionStatusEnum["FINISHED"] = "FINISHED";
|
|
8
|
+
ServiceTransactionStatusEnum["CANCELLED"] = "CANCELLED";
|
|
9
|
+
})(ServiceTransactionStatusEnum || (ServiceTransactionStatusEnum = {}));
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AbstractTransition } from '../../../abstract.transition.js';
|
|
2
|
+
import { ServiceTransactionStatusEnum as Status } from './transaction.enum.js';
|
|
3
|
+
|
|
4
|
+
export declare class ServiceTransactionTransition extends AbstractTransition<Status, unknown> {
|
|
5
|
+
protected readonly $states: Readonly<Record<Status, readonly Status[]>>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AbstractTransition } from '../../../abstract.transition.js';
|
|
2
|
+
import * as transaction_enum_1 from './transaction.enum.js';
|
|
3
|
+
|
|
4
|
+
export class ServiceTransactionTransition extends AbstractTransition {
|
|
5
|
+
$states = {
|
|
6
|
+
[transaction_enum_1.ServiceTransactionStatusEnum.OPEN]: [transaction_enum_1.ServiceTransactionStatusEnum.SCHEDULED, transaction_enum_1.ServiceTransactionStatusEnum.CANCELLED],
|
|
7
|
+
[transaction_enum_1.ServiceTransactionStatusEnum.SCHEDULED]: [transaction_enum_1.ServiceTransactionStatusEnum.IN_PROGRESS, transaction_enum_1.ServiceTransactionStatusEnum.CANCELLED],
|
|
8
|
+
[transaction_enum_1.ServiceTransactionStatusEnum.IN_PROGRESS]: [transaction_enum_1.ServiceTransactionStatusEnum.PAUSED, transaction_enum_1.ServiceTransactionStatusEnum.FINISHED, transaction_enum_1.ServiceTransactionStatusEnum.CANCELLED],
|
|
9
|
+
[transaction_enum_1.ServiceTransactionStatusEnum.PAUSED]: [transaction_enum_1.ServiceTransactionStatusEnum.IN_PROGRESS, transaction_enum_1.ServiceTransactionStatusEnum.CANCELLED],
|
|
10
|
+
[transaction_enum_1.ServiceTransactionStatusEnum.FINISHED]: [],
|
|
11
|
+
[transaction_enum_1.ServiceTransactionStatusEnum.CANCELLED]: [],
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ServiceTransactionEntity } from './';
|
|
2
|
+
import { ServiceTransactionStatusEnum } from './';
|
|
3
|
+
import { AbstractValidator, ReadValidator, SearchValidator } from '../../..';
|
|
4
|
+
import { ServiceItemValidator } from '../item';
|
|
5
|
+
export declare class SearchServiceTransactionValidator extends SearchValidator<ServiceTransactionEntity> {
|
|
6
|
+
}
|
|
7
|
+
export declare class ReadServiceTransactionValidator extends ReadValidator<ServiceTransactionEntity> {
|
|
8
|
+
}
|
|
9
|
+
export declare class SaveServiceTransactionValidator extends AbstractValidator {
|
|
10
|
+
constructor(entity?: ServiceTransactionEntity);
|
|
11
|
+
items: ServiceItemValidator[];
|
|
12
|
+
notes: string;
|
|
13
|
+
customer?: string;
|
|
14
|
+
user?: string;
|
|
15
|
+
status?: ServiceTransactionStatusEnum;
|
|
16
|
+
get total(): number;
|
|
17
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
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_transformer_1 from "class-transformer";
|
|
11
|
+
import * as class_validator_1 from "class-validator";
|
|
12
|
+
import * as transaction_enum_1 from './transaction.enum.js';
|
|
13
|
+
import * as abstract_validator_1 from '../../..';
|
|
14
|
+
import * as item_validator_1 from '../item';
|
|
15
|
+
export class SearchServiceTransactionValidator extends abstract_validator_1.SearchValidator {
|
|
16
|
+
}
|
|
17
|
+
export class ReadServiceTransactionValidator extends abstract_validator_1.ReadValidator {
|
|
18
|
+
}
|
|
19
|
+
export class SaveServiceTransactionValidator extends abstract_validator_1.AbstractValidator {
|
|
20
|
+
constructor(entity) {
|
|
21
|
+
super();
|
|
22
|
+
if (!entity)
|
|
23
|
+
return;
|
|
24
|
+
this.items = (entity.items || []).map((item) => ({
|
|
25
|
+
price: item.price ?? item.cost,
|
|
26
|
+
notes: item.notes,
|
|
27
|
+
product: (0, abstract_validator_1.toId)(item.product),
|
|
28
|
+
quantity: item.quantity,
|
|
29
|
+
total: item.total,
|
|
30
|
+
variant: (0, abstract_validator_1.toId)(item.variant),
|
|
31
|
+
warehouse: (0, abstract_validator_1.toId)(item.warehouse),
|
|
32
|
+
}));
|
|
33
|
+
this.customer = (0, abstract_validator_1.toId)(entity.customer);
|
|
34
|
+
this.user = (0, abstract_validator_1.toId)(entity.user);
|
|
35
|
+
this.notes = entity.notes;
|
|
36
|
+
}
|
|
37
|
+
items = [];
|
|
38
|
+
notes;
|
|
39
|
+
customer;
|
|
40
|
+
user;
|
|
41
|
+
status;
|
|
42
|
+
get total() {
|
|
43
|
+
return this.items.reduce((sum, item) => sum + item.total, 0);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
__decorate([
|
|
47
|
+
(0, class_validator_1.IsArray)(),
|
|
48
|
+
(0, class_validator_1.ArrayNotEmpty)(),
|
|
49
|
+
(0, class_transformer_1.Type)(() => item_validator_1.ServiceItemValidator),
|
|
50
|
+
(0, class_validator_1.ValidateNested)(),
|
|
51
|
+
(0, class_validator_1.IsOptional)({ groups: ['update'] }),
|
|
52
|
+
__metadata("design:type", Array)
|
|
53
|
+
], SaveServiceTransactionValidator.prototype, "items", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, class_validator_1.IsString)(),
|
|
56
|
+
(0, class_validator_1.Length)(0, 500),
|
|
57
|
+
(0, class_validator_1.IsOptional)(),
|
|
58
|
+
__metadata("design:type", String)
|
|
59
|
+
], SaveServiceTransactionValidator.prototype, "notes", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, class_validator_1.IsMongoId)(),
|
|
62
|
+
(0, class_validator_1.IsOptional)(),
|
|
63
|
+
__metadata("design:type", String)
|
|
64
|
+
], SaveServiceTransactionValidator.prototype, "customer", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
(0, class_validator_1.IsMongoId)(),
|
|
67
|
+
(0, class_validator_1.IsOptional)(),
|
|
68
|
+
__metadata("design:type", String)
|
|
69
|
+
], SaveServiceTransactionValidator.prototype, "user", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, class_validator_1.IsEnum)(transaction_enum_1.ServiceTransactionStatusEnum),
|
|
72
|
+
(0, class_validator_1.IsDefined)({ groups: ['create'] }),
|
|
73
|
+
(0, class_validator_1.IsOptional)(),
|
|
74
|
+
__metadata("design:type", String)
|
|
75
|
+
], SaveServiceTransactionValidator.prototype, "status", void 0);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AccountUserEntity } from './account/user';
|
|
2
|
+
import { FinancePaymentEntity } from './finance/payment';
|
|
3
|
+
import { AbstractEntity, type MongoEntity } from './';
|
|
4
|
+
import { StatusEntity } from './status.plugin.js';
|
|
5
|
+
export declare class TransactionEntity<S extends string = string> extends AbstractEntity {
|
|
6
|
+
user: MongoEntity<AccountUserEntity>;
|
|
7
|
+
notes?: string;
|
|
8
|
+
status: S;
|
|
9
|
+
readonly number: string;
|
|
10
|
+
readonly total: number;
|
|
11
|
+
readonly payment?: MongoEntity<FinancePaymentEntity>;
|
|
12
|
+
readonly history: StatusEntity<S>[];
|
|
13
|
+
}
|