@freedom_sky/feige-lib 5.21.0 → 5.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +2 -2
- package/.eslintrc.js +15 -15
- package/.prettierrc.js +6 -6
- package/AGENTS.md +75 -75
- package/CHANGE.md +38 -32
- package/azure-pipelines-release.yml +56 -0
- package/dist/announcement/enum/announcement.enum.d.ts +11 -11
- package/dist/announcement/enum/announcement.enum.js +15 -15
- package/dist/buffet/index.d.ts +46 -46
- package/dist/buffet/index.js +95 -95
- package/dist/const/const.d.ts +372 -370
- package/dist/const/const.js +2387 -2374
- package/dist/enum/ai-token.enum.d.ts +10 -10
- package/dist/enum/ai-token.enum.js +14 -14
- package/dist/enum/checkout.enum.d.ts +13 -13
- package/dist/enum/checkout.enum.js +17 -17
- package/dist/enum/common.enum.d.ts +18 -14
- package/dist/enum/common.enum.js +23 -18
- package/dist/enum/continent.enum.d.ts +8 -8
- package/dist/enum/continent.enum.js +11 -11
- package/dist/enum/dish.enum.d.ts +4 -4
- package/dist/enum/dish.enum.js +7 -7
- package/dist/enum/from.enum.d.ts +14 -14
- package/dist/enum/from.enum.js +17 -17
- package/dist/enum/member.enum.d.ts +16 -16
- package/dist/enum/member.enum.js +21 -21
- package/dist/enum/menu-io.enum.d.ts +4 -4
- package/dist/enum/menu-io.enum.js +7 -7
- package/dist/enum/order.enum.d.ts +7 -7
- package/dist/enum/order.enum.js +10 -10
- package/dist/enum/pay-company.enum.d.ts +4 -4
- package/dist/enum/pay-company.enum.js +7 -7
- package/dist/enum/printer.enum.d.ts +36 -36
- package/dist/enum/printer.enum.js +45 -45
- package/dist/enum/receptionist.enum.d.ts +8 -8
- package/dist/enum/receptionist.enum.js +11 -11
- package/dist/enum/reservation.enum.d.ts +5 -5
- package/dist/enum/reservation.enum.js +8 -8
- package/dist/enum/role.enum.d.ts +7 -7
- package/dist/enum/role.enum.js +10 -10
- package/dist/enum/sms.enum.d.ts +14 -14
- package/dist/enum/sms.enum.js +18 -18
- package/dist/enum/tax.enum.d.ts +4 -4
- package/dist/enum/tax.enum.js +7 -7
- package/dist/enum/time-menu.enum.d.ts +4 -4
- package/dist/enum/time-menu.enum.js +7 -7
- package/dist/enum/timezone.emum.d.ts +33 -33
- package/dist/enum/timezone.emum.js +36 -36
- package/dist/enum/user-status.enum.d.ts +9 -9
- package/dist/enum/user-status.enum.js +12 -12
- package/dist/enum/visit-task.enum.d.ts +13 -13
- package/dist/enum/visit-task.enum.js +17 -17
- package/dist/enum/yeepay.enum.d.ts +22 -22
- package/dist/enum/yeepay.enum.js +30 -30
- package/dist/index.d.ts +203 -201
- package/dist/index.js +564 -562
- package/dist/interfaces/common/language.interface.d.ts +13 -13
- package/dist/interfaces/common/language.interface.js +2 -2
- package/dist/interfaces/member/member-transaction.interface.d.ts +27 -27
- package/dist/interfaces/member/member-transaction.interface.js +2 -2
- package/dist/interfaces/member/member.interface.d.ts +16 -16
- package/dist/interfaces/member/member.interface.js +2 -2
- package/dist/interfaces/order/baseOrder.interface.d.ts +84 -84
- package/dist/interfaces/order/baseOrder.interface.js +2 -2
- package/dist/interfaces/order/buffetOrder.interface.d.ts +13 -13
- package/dist/interfaces/order/buffetOrder.interface.js +2 -2
- package/dist/interfaces/order/deliveryOrder.interface.d.ts +9 -9
- package/dist/interfaces/order/deliveryOrder.interface.js +2 -2
- package/dist/interfaces/order/index.d.ts +7 -7
- package/dist/interfaces/order/index.js +6 -6
- package/dist/interfaces/order/order.interface.d.ts +75 -75
- package/dist/interfaces/order/order.interface.js +17 -17
- package/dist/interfaces/order/pickupOrder.interface.d.ts +8 -8
- package/dist/interfaces/order/pickupOrder.interface.js +2 -2
- package/dist/interfaces/order/serialOrder.interface.d.ts +4 -4
- package/dist/interfaces/order/serialOrder.interface.js +2 -2
- package/dist/interfaces/order/tableOrder.interface.d.ts +7 -7
- package/dist/interfaces/order/tableOrder.interface.js +2 -2
- package/dist/interfaces/reservation/reservation.interface.d.ts +46 -0
- package/dist/interfaces/reservation/reservation.interface.js +2 -0
- package/dist/interfaces/store/classification.interface.d.ts +7 -7
- package/dist/interfaces/store/classification.interface.js +2 -2
- package/dist/interfaces/store/dish.interface.d.ts +18 -18
- package/dist/interfaces/store/dish.interface.js +2 -2
- package/dist/interfaces/store/dishSnapshot.interface.d.ts +11 -11
- package/dist/interfaces/store/dishSnapshot.interface.js +2 -2
- package/dist/interfaces/store/member.interface.d.ts +8 -8
- package/dist/interfaces/store/member.interface.js +2 -2
- package/dist/interfaces/store/menu-export.interface.d.ts +12 -12
- package/dist/interfaces/store/menu-export.interface.js +2 -2
- package/dist/interfaces/store/specification.interface.d.ts +17 -17
- package/dist/interfaces/store/specification.interface.js +2 -2
- package/dist/interfaces/store/store.interface.d.ts +300 -300
- package/dist/interfaces/store/store.interface.js +2 -2
- package/dist/interfaces/store/subscription.interface.d.ts +43 -43
- package/dist/interfaces/store/subscription.interface.js +2 -2
- package/dist/interfaces/user/user.interface.d.ts +139 -139
- package/dist/interfaces/user/user.interface.js +2 -2
- package/dist/interfaces/visit-task/visit-task.interface.d.ts +17 -17
- package/dist/interfaces/visit-task/visit-task.interface.js +2 -2
- package/dist/order/index.d.ts +22 -22
- package/dist/order/index.js +58 -58
- package/jest.config.js +189 -189
- package/josn-hub/orders/tax-have-price-bind-order.ts +381 -381
- package/josn-hub/orders/tax-order.ts +371 -371
- package/josn-hub/orders//346/225/264/345/215/225/344/273/267/346/240/274/351/203/275/346/230/257/350/264/237/346/225/260/347/232/204/346/203/205/345/206/265.ts +321 -321
- package/josn-hub/orders//346/234/211/344/270/200/344/270/252/350/217/234/347/232/204/344/273/267/346/240/274/346/230/257/350/264/237/346/225/260/347/232/204/346/203/205/345/206/265.ts +348 -348
- package/josn-hub/orders//347/202/271/344/272/206/344/270/215/345/212/240/344/273/267/345/222/214/345/233/272/345/256/232/345/212/240/345/207/217/344/273/267/350/247/204/346/240/274/347/232/204/350/256/242/345/215/225.ts +350 -350
- package/josn-hub/orders//347/202/271/344/272/206/345/233/272/345/256/232/345/212/240/344/273/267-/347/231/276/345/210/206/346/257/224/345/212/240/344/273/267/350/247/204/346/240/274/347/232/204/350/256/242/345/215/225.ts +301 -301
- package/josn-hub/orders//347/202/271/344/272/206/346/234/252/345/212/240/344/273/267/350/247/204/346/240/274/347/232/204/350/256/242/345/215/225.ts +321 -321
- package/josn-hub/orders//347/202/271/344/272/206/346/234/252/345/212/240/344/273/267/350/247/204/346/240/274/347/232/204/350/256/242/345/215/225/345/271/266/346/234/211/351/205/215/351/200/201/350/264/271.ts +159 -159
- package/josn-hub/orders//350/207/252/345/212/251/351/244/220/347/232/204/346/203/205/345/206/265.ts +665 -665
- package/josn-hub/orders//351/203/250/345/210/206/351/200/200/350/217/234/347/232/204/346/203/205/345/206/265.ts +73 -73
- package/package.json +59 -59
- package/src/announcement/enum/announcement.enum.ts +12 -12
- package/src/buffet/index.ts +123 -123
- package/src/const/const.ts +2407 -2394
- package/src/enum/ai-token.enum.ts +10 -10
- package/src/enum/checkout.enum.ts +14 -14
- package/src/enum/common.enum.ts +20 -15
- package/src/enum/continent.enum.ts +8 -8
- package/src/enum/dish.enum.ts +4 -4
- package/src/enum/from.enum.ts +14 -14
- package/src/enum/member.enum.ts +16 -16
- package/src/enum/menu-io.enum.ts +4 -4
- package/src/enum/order.enum.ts +7 -7
- package/src/enum/pay-company.enum.ts +4 -4
- package/src/enum/printer.enum.ts +40 -40
- package/src/enum/receptionist.enum.ts +8 -8
- package/src/enum/reservation.enum.ts +5 -5
- package/src/enum/role.enum.ts +7 -7
- package/src/enum/sms.enum.ts +14 -14
- package/src/enum/tax.enum.ts +4 -4
- package/src/enum/time-menu.enum.ts +4 -4
- package/src/enum/timezone.emum.ts +33 -33
- package/src/enum/user-status.enum.ts +9 -9
- package/src/enum/visit-task.enum.ts +14 -14
- package/src/enum/yeepay.enum.ts +27 -27
- package/src/index.spec.ts +1082 -1082
- package/src/index.ts +616 -613
- package/src/interfaces/common/language.interface.ts +13 -13
- package/src/interfaces/member/member-transaction.interface.ts +32 -32
- package/src/interfaces/member/member.interface.ts +16 -16
- package/src/interfaces/order/baseOrder.interface.ts +89 -89
- package/src/interfaces/order/buffetOrder.interface.ts +14 -14
- package/src/interfaces/order/deliveryOrder.interface.ts +10 -10
- package/src/interfaces/order/index.ts +7 -7
- package/src/interfaces/order/order.interface.ts +84 -84
- package/src/interfaces/order/pickupOrder.interface.ts +9 -9
- package/src/interfaces/order/serialOrder.interface.ts +5 -5
- package/src/interfaces/order/tableOrder.interface.ts +8 -8
- package/src/interfaces/reservation/reservation.interface.ts +48 -0
- package/src/interfaces/store/classification.interface.ts +7 -7
- package/src/interfaces/store/dish.interface.ts +18 -18
- package/src/interfaces/store/dishSnapshot.interface.ts +12 -12
- package/src/interfaces/store/member.interface.ts +9 -9
- package/src/interfaces/store/menu-export.interface.ts +13 -13
- package/src/interfaces/store/specification.interface.ts +17 -17
- package/src/interfaces/store/store.interface.ts +316 -316
- package/src/interfaces/store/subscription.interface.ts +43 -43
- package/src/interfaces/user/user.interface.ts +139 -139
- package/src/interfaces/visit-task/visit-task.interface.ts +17 -17
- package/src/order/currency-settlement.spec.ts +72 -0
- package/src/order/index.ts +91 -91
- package/tsconfig.json +12 -12
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
export interface Subscription {
|
|
2
|
-
base: {
|
|
3
|
-
expires: string | Date;
|
|
4
|
-
permanent: boolean;
|
|
5
|
-
note?: string;
|
|
6
|
-
activation?: Activation;
|
|
7
|
-
};
|
|
8
|
-
waiter: {
|
|
9
|
-
expires: string | Date;
|
|
10
|
-
permanent: boolean;
|
|
11
|
-
};
|
|
12
|
-
kds: {
|
|
13
|
-
expires: string | Date;
|
|
14
|
-
permanent: boolean;
|
|
15
|
-
};
|
|
16
|
-
baseTakeaway: {
|
|
17
|
-
expires: string | Date;
|
|
18
|
-
permanent: boolean;
|
|
19
|
-
};
|
|
20
|
-
multiLanguage: {
|
|
21
|
-
expires: string | Date;
|
|
22
|
-
permanent: boolean;
|
|
23
|
-
allow: string[];
|
|
24
|
-
};
|
|
25
|
-
superMultiLanguage: {
|
|
26
|
-
expires: string | Date;
|
|
27
|
-
permanent: boolean;
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
export interface Activation {
|
|
31
|
-
readonly receptionPrinterCountLimit: number;
|
|
32
|
-
readonly chefPrinterCountLimit: number;
|
|
33
|
-
readonly labelPrinterCountLimit: number;
|
|
34
|
-
readonly dishCountLimit: number;
|
|
35
|
-
readonly tableCountLimit: number;
|
|
36
|
-
readonly memberFunction: boolean;
|
|
37
|
-
readonly deliveryFunction: boolean;
|
|
38
|
-
readonly buffetFunction: boolean;
|
|
39
|
-
readonly waiterCountLimit: number;
|
|
40
|
-
readonly kdsCountLimit: number;
|
|
41
|
-
readonly multiLanguageCountLimit: number;
|
|
42
|
-
readonly renewPrice: number;
|
|
43
|
-
}
|
|
1
|
+
export interface Subscription {
|
|
2
|
+
base: {
|
|
3
|
+
expires: string | Date;
|
|
4
|
+
permanent: boolean;
|
|
5
|
+
note?: string;
|
|
6
|
+
activation?: Activation;
|
|
7
|
+
};
|
|
8
|
+
waiter: {
|
|
9
|
+
expires: string | Date;
|
|
10
|
+
permanent: boolean;
|
|
11
|
+
};
|
|
12
|
+
kds: {
|
|
13
|
+
expires: string | Date;
|
|
14
|
+
permanent: boolean;
|
|
15
|
+
};
|
|
16
|
+
baseTakeaway: {
|
|
17
|
+
expires: string | Date;
|
|
18
|
+
permanent: boolean;
|
|
19
|
+
};
|
|
20
|
+
multiLanguage: {
|
|
21
|
+
expires: string | Date;
|
|
22
|
+
permanent: boolean;
|
|
23
|
+
allow: string[];
|
|
24
|
+
};
|
|
25
|
+
superMultiLanguage: {
|
|
26
|
+
expires: string | Date;
|
|
27
|
+
permanent: boolean;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export interface Activation {
|
|
31
|
+
readonly receptionPrinterCountLimit: number;
|
|
32
|
+
readonly chefPrinterCountLimit: number;
|
|
33
|
+
readonly labelPrinterCountLimit: number;
|
|
34
|
+
readonly dishCountLimit: number;
|
|
35
|
+
readonly tableCountLimit: number;
|
|
36
|
+
readonly memberFunction: boolean;
|
|
37
|
+
readonly deliveryFunction: boolean;
|
|
38
|
+
readonly buffetFunction: boolean;
|
|
39
|
+
readonly waiterCountLimit: number;
|
|
40
|
+
readonly kdsCountLimit: number;
|
|
41
|
+
readonly multiLanguageCountLimit: number;
|
|
42
|
+
readonly renewPrice: number;
|
|
43
|
+
}
|
|
@@ -1,139 +1,139 @@
|
|
|
1
|
-
import { YeepayTypeEnum } from '../../enum/yeepay.enum';
|
|
2
|
-
import { FromEnum } from '../../enum/from.enum';
|
|
3
|
-
import { UserStatusEnum } from '../../enum/user-status.enum';
|
|
4
|
-
import { PayCompanyEnum } from '../../enum/pay-company.enum';
|
|
5
|
-
export interface CertificatePath {
|
|
6
|
-
origin: string;
|
|
7
|
-
yeepay: string;
|
|
8
|
-
fubei: string;
|
|
9
|
-
}
|
|
10
|
-
export interface UserSafe {
|
|
11
|
-
readonly mobile?: string;
|
|
12
|
-
readonly email?: string;
|
|
13
|
-
readonly countryCode: string;
|
|
14
|
-
readonly password: string;
|
|
15
|
-
readonly salt: string;
|
|
16
|
-
readonly _id: string;
|
|
17
|
-
readonly deviceId: string;
|
|
18
|
-
readonly arrearsCountdown: number;
|
|
19
|
-
readonly online: boolean;
|
|
20
|
-
readonly clientId: string;
|
|
21
|
-
readonly originAgentId: string;
|
|
22
|
-
readonly responseAgentId: string;
|
|
23
|
-
readonly status: UserStatusEnum;
|
|
24
|
-
readonly abandonReason: string;
|
|
25
|
-
readonly lostReason: string;
|
|
26
|
-
readonly from: FromEnum;
|
|
27
|
-
readonly visitCycle: number;
|
|
28
|
-
readonly purchased: boolean;
|
|
29
|
-
readonly disabled: boolean;
|
|
30
|
-
readonly geoIp: {
|
|
31
|
-
ip: string;
|
|
32
|
-
city: string;
|
|
33
|
-
region: string;
|
|
34
|
-
country: string;
|
|
35
|
-
loc: string;
|
|
36
|
-
org: string;
|
|
37
|
-
postal: string;
|
|
38
|
-
timezone: string;
|
|
39
|
-
lastUpdateDate: Date;
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
export interface User extends UserSafe {
|
|
43
|
-
readonly certificate: {
|
|
44
|
-
IDCARD_FRONT: CertificatePath;
|
|
45
|
-
IDCARD_BACK: CertificatePath;
|
|
46
|
-
UNI_CREDIT_CODE: CertificatePath;
|
|
47
|
-
OP_BANK_CODE: CertificatePath;
|
|
48
|
-
HAND_IDCARD: CertificatePath;
|
|
49
|
-
SETTLE_BANKCARD: CertificatePath;
|
|
50
|
-
CORP_CODE: CertificatePath;
|
|
51
|
-
BUSINESS_PLACE: CertificatePath;
|
|
52
|
-
BUSINESS_SITE: CertificatePath;
|
|
53
|
-
CASHIER_SCENE: CertificatePath;
|
|
54
|
-
OTHER_IDCARD_FRONT?: CertificatePath;
|
|
55
|
-
OTHER_IDCARD_BACK?: CertificatePath;
|
|
56
|
-
OTHER_AUTH_PHOTO?: CertificatePath;
|
|
57
|
-
FOOD_SAFETY_LICENSE?: CertificatePath;
|
|
58
|
-
};
|
|
59
|
-
readonly realInfo: {
|
|
60
|
-
type: YeepayTypeEnum;
|
|
61
|
-
toOther: boolean;
|
|
62
|
-
legalName: string;
|
|
63
|
-
merLegalPhone: string;
|
|
64
|
-
legalIdCard: string;
|
|
65
|
-
merAddress: string;
|
|
66
|
-
merProvince: string;
|
|
67
|
-
merCity: string;
|
|
68
|
-
merDistrict: string;
|
|
69
|
-
cardNo: string;
|
|
70
|
-
merFullName: string;
|
|
71
|
-
merShortName: string;
|
|
72
|
-
merCertNo: string;
|
|
73
|
-
merCertType: string;
|
|
74
|
-
merContactName: string;
|
|
75
|
-
merContactPhone: string;
|
|
76
|
-
accountLicense: string;
|
|
77
|
-
headBankCode: string;
|
|
78
|
-
bankCode: string;
|
|
79
|
-
serviceTel: string;
|
|
80
|
-
contactName: string;
|
|
81
|
-
contactPhone: string;
|
|
82
|
-
contactMobile: string;
|
|
83
|
-
contactEmail: string;
|
|
84
|
-
contactType: string;
|
|
85
|
-
bankCardPhone: string;
|
|
86
|
-
toOtherName?: string;
|
|
87
|
-
toOtherIdCard?: string;
|
|
88
|
-
licenseTimeBegin: string;
|
|
89
|
-
licenseTimeEnd: string;
|
|
90
|
-
legalTimeBegin?: string;
|
|
91
|
-
legalTimeEnd?: string;
|
|
92
|
-
merCertAddress?: string;
|
|
93
|
-
};
|
|
94
|
-
readonly pay: {
|
|
95
|
-
active: boolean;
|
|
96
|
-
company: PayCompanyEnum;
|
|
97
|
-
};
|
|
98
|
-
readonly yeepay: {
|
|
99
|
-
payRate: number;
|
|
100
|
-
userEditLock: boolean;
|
|
101
|
-
merchantNo: string;
|
|
102
|
-
merNetInOutStatus: string;
|
|
103
|
-
merNetInOutStatusRemark: string;
|
|
104
|
-
merHmacKey: string;
|
|
105
|
-
reportStatus: string;
|
|
106
|
-
configStatus: string;
|
|
107
|
-
active: boolean;
|
|
108
|
-
};
|
|
109
|
-
readonly fubei: {
|
|
110
|
-
payRate: number;
|
|
111
|
-
merchant_id: number; // 付呗商户号
|
|
112
|
-
merchant_code: string; // 付呗登陆账号
|
|
113
|
-
app_id: string;
|
|
114
|
-
app_secret: string;
|
|
115
|
-
store_id: number; // 门店id
|
|
116
|
-
sub_mch_id: string; // 当前渠道下对应的微信子商户号
|
|
117
|
-
alipay_msid: string; // 当前渠道下对应的支付宝子商户号
|
|
118
|
-
merchant_status: number; // 商户实名认证状态:0 未认证、1 认证中、2 认证成功、3 认证失败
|
|
119
|
-
wechat_auth_status: string; // 商户微信认证状态:UNAUTHORIZED 未认证、AUTHORIZED 已认证、UNKNOWN 未知
|
|
120
|
-
store_status: number; // 门店状态:1 待审核、2 审核通过、3 审核驳回
|
|
121
|
-
error_msg: string; // 错误信息
|
|
122
|
-
};
|
|
123
|
-
readonly mpAlipay?: {
|
|
124
|
-
authAppId: string;
|
|
125
|
-
componentAppId: string;
|
|
126
|
-
appRefreshToken: string;
|
|
127
|
-
appAuthToken: string;
|
|
128
|
-
templateVersion: string;
|
|
129
|
-
pid: string;
|
|
130
|
-
};
|
|
131
|
-
readonly mpWechat?: {
|
|
132
|
-
fasteRegisterStatus: string;
|
|
133
|
-
fasteRegisterMsg: string;
|
|
134
|
-
authAppId: string;
|
|
135
|
-
componentAppId: string;
|
|
136
|
-
appRefreshToken: string;
|
|
137
|
-
templateVersion: string;
|
|
138
|
-
};
|
|
139
|
-
}
|
|
1
|
+
import { YeepayTypeEnum } from '../../enum/yeepay.enum';
|
|
2
|
+
import { FromEnum } from '../../enum/from.enum';
|
|
3
|
+
import { UserStatusEnum } from '../../enum/user-status.enum';
|
|
4
|
+
import { PayCompanyEnum } from '../../enum/pay-company.enum';
|
|
5
|
+
export interface CertificatePath {
|
|
6
|
+
origin: string;
|
|
7
|
+
yeepay: string;
|
|
8
|
+
fubei: string;
|
|
9
|
+
}
|
|
10
|
+
export interface UserSafe {
|
|
11
|
+
readonly mobile?: string;
|
|
12
|
+
readonly email?: string;
|
|
13
|
+
readonly countryCode: string;
|
|
14
|
+
readonly password: string;
|
|
15
|
+
readonly salt: string;
|
|
16
|
+
readonly _id: string;
|
|
17
|
+
readonly deviceId: string;
|
|
18
|
+
readonly arrearsCountdown: number;
|
|
19
|
+
readonly online: boolean;
|
|
20
|
+
readonly clientId: string;
|
|
21
|
+
readonly originAgentId: string;
|
|
22
|
+
readonly responseAgentId: string;
|
|
23
|
+
readonly status: UserStatusEnum;
|
|
24
|
+
readonly abandonReason: string;
|
|
25
|
+
readonly lostReason: string;
|
|
26
|
+
readonly from: FromEnum;
|
|
27
|
+
readonly visitCycle: number;
|
|
28
|
+
readonly purchased: boolean;
|
|
29
|
+
readonly disabled: boolean;
|
|
30
|
+
readonly geoIp: {
|
|
31
|
+
ip: string;
|
|
32
|
+
city: string;
|
|
33
|
+
region: string;
|
|
34
|
+
country: string;
|
|
35
|
+
loc: string;
|
|
36
|
+
org: string;
|
|
37
|
+
postal: string;
|
|
38
|
+
timezone: string;
|
|
39
|
+
lastUpdateDate: Date;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export interface User extends UserSafe {
|
|
43
|
+
readonly certificate: {
|
|
44
|
+
IDCARD_FRONT: CertificatePath;
|
|
45
|
+
IDCARD_BACK: CertificatePath;
|
|
46
|
+
UNI_CREDIT_CODE: CertificatePath;
|
|
47
|
+
OP_BANK_CODE: CertificatePath;
|
|
48
|
+
HAND_IDCARD: CertificatePath;
|
|
49
|
+
SETTLE_BANKCARD: CertificatePath;
|
|
50
|
+
CORP_CODE: CertificatePath;
|
|
51
|
+
BUSINESS_PLACE: CertificatePath;
|
|
52
|
+
BUSINESS_SITE: CertificatePath;
|
|
53
|
+
CASHIER_SCENE: CertificatePath;
|
|
54
|
+
OTHER_IDCARD_FRONT?: CertificatePath;
|
|
55
|
+
OTHER_IDCARD_BACK?: CertificatePath;
|
|
56
|
+
OTHER_AUTH_PHOTO?: CertificatePath;
|
|
57
|
+
FOOD_SAFETY_LICENSE?: CertificatePath;
|
|
58
|
+
};
|
|
59
|
+
readonly realInfo: {
|
|
60
|
+
type: YeepayTypeEnum;
|
|
61
|
+
toOther: boolean;
|
|
62
|
+
legalName: string;
|
|
63
|
+
merLegalPhone: string;
|
|
64
|
+
legalIdCard: string;
|
|
65
|
+
merAddress: string;
|
|
66
|
+
merProvince: string;
|
|
67
|
+
merCity: string;
|
|
68
|
+
merDistrict: string;
|
|
69
|
+
cardNo: string;
|
|
70
|
+
merFullName: string;
|
|
71
|
+
merShortName: string;
|
|
72
|
+
merCertNo: string;
|
|
73
|
+
merCertType: string;
|
|
74
|
+
merContactName: string;
|
|
75
|
+
merContactPhone: string;
|
|
76
|
+
accountLicense: string;
|
|
77
|
+
headBankCode: string;
|
|
78
|
+
bankCode: string;
|
|
79
|
+
serviceTel: string;
|
|
80
|
+
contactName: string;
|
|
81
|
+
contactPhone: string;
|
|
82
|
+
contactMobile: string;
|
|
83
|
+
contactEmail: string;
|
|
84
|
+
contactType: string;
|
|
85
|
+
bankCardPhone: string;
|
|
86
|
+
toOtherName?: string;
|
|
87
|
+
toOtherIdCard?: string;
|
|
88
|
+
licenseTimeBegin: string;
|
|
89
|
+
licenseTimeEnd: string;
|
|
90
|
+
legalTimeBegin?: string;
|
|
91
|
+
legalTimeEnd?: string;
|
|
92
|
+
merCertAddress?: string;
|
|
93
|
+
};
|
|
94
|
+
readonly pay: {
|
|
95
|
+
active: boolean;
|
|
96
|
+
company: PayCompanyEnum;
|
|
97
|
+
};
|
|
98
|
+
readonly yeepay: {
|
|
99
|
+
payRate: number;
|
|
100
|
+
userEditLock: boolean;
|
|
101
|
+
merchantNo: string;
|
|
102
|
+
merNetInOutStatus: string;
|
|
103
|
+
merNetInOutStatusRemark: string;
|
|
104
|
+
merHmacKey: string;
|
|
105
|
+
reportStatus: string;
|
|
106
|
+
configStatus: string;
|
|
107
|
+
active: boolean;
|
|
108
|
+
};
|
|
109
|
+
readonly fubei: {
|
|
110
|
+
payRate: number;
|
|
111
|
+
merchant_id: number; // 付呗商户号
|
|
112
|
+
merchant_code: string; // 付呗登陆账号
|
|
113
|
+
app_id: string;
|
|
114
|
+
app_secret: string;
|
|
115
|
+
store_id: number; // 门店id
|
|
116
|
+
sub_mch_id: string; // 当前渠道下对应的微信子商户号
|
|
117
|
+
alipay_msid: string; // 当前渠道下对应的支付宝子商户号
|
|
118
|
+
merchant_status: number; // 商户实名认证状态:0 未认证、1 认证中、2 认证成功、3 认证失败
|
|
119
|
+
wechat_auth_status: string; // 商户微信认证状态:UNAUTHORIZED 未认证、AUTHORIZED 已认证、UNKNOWN 未知
|
|
120
|
+
store_status: number; // 门店状态:1 待审核、2 审核通过、3 审核驳回
|
|
121
|
+
error_msg: string; // 错误信息
|
|
122
|
+
};
|
|
123
|
+
readonly mpAlipay?: {
|
|
124
|
+
authAppId: string;
|
|
125
|
+
componentAppId: string;
|
|
126
|
+
appRefreshToken: string;
|
|
127
|
+
appAuthToken: string;
|
|
128
|
+
templateVersion: string;
|
|
129
|
+
pid: string;
|
|
130
|
+
};
|
|
131
|
+
readonly mpWechat?: {
|
|
132
|
+
fasteRegisterStatus: string;
|
|
133
|
+
fasteRegisterMsg: string;
|
|
134
|
+
authAppId: string;
|
|
135
|
+
componentAppId: string;
|
|
136
|
+
appRefreshToken: string;
|
|
137
|
+
templateVersion: string;
|
|
138
|
+
};
|
|
139
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
export interface VisitTask {
|
|
2
|
-
readonly _id: string;
|
|
3
|
-
readonly userId: string;
|
|
4
|
-
readonly createDate: string | Date;
|
|
5
|
-
readonly effectiveDate: string | Date;
|
|
6
|
-
readonly endDate: string | Date;
|
|
7
|
-
readonly status: string;
|
|
8
|
-
readonly countryCode: string;
|
|
9
|
-
readonly mobile: string;
|
|
10
|
-
readonly storeId: string;
|
|
11
|
-
readonly storeName: string;
|
|
12
|
-
readonly storeCreateDate: string | Date;
|
|
13
|
-
readonly userStatus: string;
|
|
14
|
-
readonly type: string;
|
|
15
|
-
readonly result: string;
|
|
16
|
-
readonly fileList: string[];
|
|
17
|
-
}
|
|
1
|
+
export interface VisitTask {
|
|
2
|
+
readonly _id: string;
|
|
3
|
+
readonly userId: string;
|
|
4
|
+
readonly createDate: string | Date;
|
|
5
|
+
readonly effectiveDate: string | Date;
|
|
6
|
+
readonly endDate: string | Date;
|
|
7
|
+
readonly status: string;
|
|
8
|
+
readonly countryCode: string;
|
|
9
|
+
readonly mobile: string;
|
|
10
|
+
readonly storeId: string;
|
|
11
|
+
readonly storeName: string;
|
|
12
|
+
readonly storeCreateDate: string | Date;
|
|
13
|
+
readonly userStatus: string;
|
|
14
|
+
readonly type: string;
|
|
15
|
+
readonly result: string;
|
|
16
|
+
readonly fileList: string[];
|
|
17
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { calcLeft, calcReceivablePrice, CONST, Order, TaxTypeEnum } from '../index';
|
|
2
|
+
import { order as taxOrder } from '../../josn-hub/orders/tax-order';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @param withTax
|
|
6
|
+
*/
|
|
7
|
+
function createOrder(withTax = false): Order {
|
|
8
|
+
return {
|
|
9
|
+
...taxOrder,
|
|
10
|
+
checkout: [],
|
|
11
|
+
content: [
|
|
12
|
+
{
|
|
13
|
+
...taxOrder.content[0],
|
|
14
|
+
count: 1,
|
|
15
|
+
dishSnapshot: {
|
|
16
|
+
...taxOrder.content[0].dishSnapshot,
|
|
17
|
+
price: 123,
|
|
18
|
+
selectedSpecifications: [],
|
|
19
|
+
noFullOrderDiscount: false,
|
|
20
|
+
taxes: withTax ? [{ name: 'Tax', rate: 0.11 }] : [],
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
taxType: TaxTypeEnum.PriceNoTaxBindDish,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
describe('currency settlement precision', () => {
|
|
29
|
+
it.each(CONST.LARGE_CURRENCY)('floors all fractional boundaries for %s', (currency) => {
|
|
30
|
+
[0.01, 0.49, 0.5, 0.99].forEach((fraction) => {
|
|
31
|
+
expect(calcLeft(123 + fraction, 0, currency)).toBe(123);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('keeps discount and tax precision until settling the final balance', () => {
|
|
36
|
+
const discount = [{ type: CONST.RECEIVABLE_PROCESSING_TYPE.DISCOUNT.TYPE, value: 7.7 }];
|
|
37
|
+
const discounted = calcReceivablePrice(createOrder(), discount);
|
|
38
|
+
expect(discounted.receivablePrice).toBe(94.71);
|
|
39
|
+
expect(calcLeft(discounted.receivablePrice, 0, '¥')).toBe(94);
|
|
40
|
+
|
|
41
|
+
const taxed = calcReceivablePrice(createOrder(true), []);
|
|
42
|
+
expect(taxed.receivablePrice).toBe(136.53);
|
|
43
|
+
expect(calcLeft(taxed.receivablePrice, 0, '¥')).toBe(136);
|
|
44
|
+
|
|
45
|
+
const both = calcReceivablePrice(createOrder(true), discount);
|
|
46
|
+
expect(both.taxArr).toEqual([{ name: 'Tax(11%)', volume: 10.42 }]);
|
|
47
|
+
expect(both.receivablePrice).toBe(105.13);
|
|
48
|
+
expect(calcLeft(both.receivablePrice, 0, '¥')).toBe(105);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('settles partial payments and change using integer amounts', () => {
|
|
52
|
+
expect(calcLeft(94.71, 40, '¥')).toBe(54);
|
|
53
|
+
expect(calcLeft(94.71, 94, '¥')).toBe(0);
|
|
54
|
+
expect(calcLeft(100, calcLeft(94.71, 0, '¥'))).toBe(6);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('preserves historical fractional payments before settling the remaining balance', () => {
|
|
58
|
+
expect(calcLeft(94.71, 40.71, '¥')).toBe(54);
|
|
59
|
+
expect(calcLeft(94.71, 94.71, '¥')).toBe(0);
|
|
60
|
+
expect(calcLeft(94.71, 95, '¥')).toBe(-1);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it('does not hide a negative balance smaller than one unit', () => {
|
|
64
|
+
expect(calcLeft(0, 0.01, '¥')).toBe(-1);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('preserves two-decimal precision for ordinary currencies and existing callers', () => {
|
|
68
|
+
expect(calcLeft(94.71, 40, '$')).toBe(54.71);
|
|
69
|
+
expect(calcLeft(94.71, 40)).toBe(54.71);
|
|
70
|
+
expect(calcLeft(100.5, 94.71, '$')).toBe(5.79);
|
|
71
|
+
});
|
|
72
|
+
});
|
package/src/order/index.ts
CHANGED
|
@@ -1,91 +1,91 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DishType,
|
|
3
|
-
Order,
|
|
4
|
-
CONST,
|
|
5
|
-
getNameFromNames,
|
|
6
|
-
Content,
|
|
7
|
-
calcBuffetTotalPrice,
|
|
8
|
-
calcContentPrice,
|
|
9
|
-
OrderTypeEnum,
|
|
10
|
-
} from '../index';
|
|
11
|
-
|
|
12
|
-
export interface PrinteDishInfo {
|
|
13
|
-
name: string;
|
|
14
|
-
count: number;
|
|
15
|
-
price: number;
|
|
16
|
-
specifications: string[];
|
|
17
|
-
note?: string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
*
|
|
22
|
-
*/
|
|
23
|
-
export function getDishArrFromContents({
|
|
24
|
-
contents,
|
|
25
|
-
lang,
|
|
26
|
-
order,
|
|
27
|
-
showBuffet,
|
|
28
|
-
text,
|
|
29
|
-
addSpecificationsAfterName,
|
|
30
|
-
}: {
|
|
31
|
-
contents: Content[];
|
|
32
|
-
lang: string;
|
|
33
|
-
order: Order;
|
|
34
|
-
showBuffet?: boolean;
|
|
35
|
-
text?: {
|
|
36
|
-
adult: string;
|
|
37
|
-
child: string;
|
|
38
|
-
};
|
|
39
|
-
addSpecificationsAfterName?: boolean;
|
|
40
|
-
}): PrinteDishInfo[] {
|
|
41
|
-
const result: PrinteDishInfo[] = contents.map((dishGroup) => {
|
|
42
|
-
const selectedNames = [];
|
|
43
|
-
dishGroup.dishSnapshot.selectedSpecifications.forEach((selectedItems) => {
|
|
44
|
-
selectedItems.content.forEach((tag) => {
|
|
45
|
-
selectedNames.push(tag.name);
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
let name = getNameFromNames(dishGroup.dishSnapshot.names, lang, CONST.DEFALUT_LANGUAGE) || '';
|
|
49
|
-
if (dishGroup.dishSnapshot.type === DishType.Weigh) {
|
|
50
|
-
name += `(${dishGroup.weight}${
|
|
51
|
-
getNameFromNames(dishGroup.dishSnapshot.units, lang, CONST.DEFALUT_LANGUAGE) || ''
|
|
52
|
-
})`;
|
|
53
|
-
}
|
|
54
|
-
return {
|
|
55
|
-
name,
|
|
56
|
-
count: dishGroup.count,
|
|
57
|
-
price:
|
|
58
|
-
calcContentPrice({
|
|
59
|
-
orderContentItem: dishGroup,
|
|
60
|
-
buffetItem: order.buffet?.snapshot,
|
|
61
|
-
orderType: order.type,
|
|
62
|
-
adultNum: order.adultNum,
|
|
63
|
-
childNum: order.childNum,
|
|
64
|
-
contents: order.content,
|
|
65
|
-
}) / dishGroup.count,
|
|
66
|
-
specifications: selectedNames,
|
|
67
|
-
note: dishGroup.note,
|
|
68
|
-
};
|
|
69
|
-
});
|
|
70
|
-
if (showBuffet && order.type === OrderTypeEnum.Buffet) {
|
|
71
|
-
const specifications = [];
|
|
72
|
-
if (order.adultNum) {
|
|
73
|
-
specifications.push(`${text?.adult}${order.adultNum}`);
|
|
74
|
-
}
|
|
75
|
-
if (order.childNum) {
|
|
76
|
-
specifications.push(`${text?.child}${order.childNum}`);
|
|
77
|
-
}
|
|
78
|
-
result.unshift({
|
|
79
|
-
name: getNameFromNames(order.buffet.snapshot.names, lang, CONST.DEFALUT_LANGUAGE),
|
|
80
|
-
count: 1,
|
|
81
|
-
price: calcBuffetTotalPrice(order.buffet.snapshot, order.adultNum, order.childNum),
|
|
82
|
-
specifications: specifications,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
if (addSpecificationsAfterName) {
|
|
86
|
-
result.forEach((item) => {
|
|
87
|
-
item.name += item.specifications.length > 0 ? `(${item.specifications.join()})` : '';
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
return result;
|
|
91
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
DishType,
|
|
3
|
+
Order,
|
|
4
|
+
CONST,
|
|
5
|
+
getNameFromNames,
|
|
6
|
+
Content,
|
|
7
|
+
calcBuffetTotalPrice,
|
|
8
|
+
calcContentPrice,
|
|
9
|
+
OrderTypeEnum,
|
|
10
|
+
} from '../index';
|
|
11
|
+
|
|
12
|
+
export interface PrinteDishInfo {
|
|
13
|
+
name: string;
|
|
14
|
+
count: number;
|
|
15
|
+
price: number;
|
|
16
|
+
specifications: string[];
|
|
17
|
+
note?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
export function getDishArrFromContents({
|
|
24
|
+
contents,
|
|
25
|
+
lang,
|
|
26
|
+
order,
|
|
27
|
+
showBuffet,
|
|
28
|
+
text,
|
|
29
|
+
addSpecificationsAfterName,
|
|
30
|
+
}: {
|
|
31
|
+
contents: Content[];
|
|
32
|
+
lang: string;
|
|
33
|
+
order: Order;
|
|
34
|
+
showBuffet?: boolean;
|
|
35
|
+
text?: {
|
|
36
|
+
adult: string;
|
|
37
|
+
child: string;
|
|
38
|
+
};
|
|
39
|
+
addSpecificationsAfterName?: boolean;
|
|
40
|
+
}): PrinteDishInfo[] {
|
|
41
|
+
const result: PrinteDishInfo[] = contents.map((dishGroup) => {
|
|
42
|
+
const selectedNames = [];
|
|
43
|
+
dishGroup.dishSnapshot.selectedSpecifications.forEach((selectedItems) => {
|
|
44
|
+
selectedItems.content.forEach((tag) => {
|
|
45
|
+
selectedNames.push(tag.name);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
let name = getNameFromNames(dishGroup.dishSnapshot.names, lang, CONST.DEFALUT_LANGUAGE) || '';
|
|
49
|
+
if (dishGroup.dishSnapshot.type === DishType.Weigh) {
|
|
50
|
+
name += `(${dishGroup.weight}${
|
|
51
|
+
getNameFromNames(dishGroup.dishSnapshot.units, lang, CONST.DEFALUT_LANGUAGE) || ''
|
|
52
|
+
})`;
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
name,
|
|
56
|
+
count: dishGroup.count,
|
|
57
|
+
price:
|
|
58
|
+
calcContentPrice({
|
|
59
|
+
orderContentItem: dishGroup,
|
|
60
|
+
buffetItem: order.buffet?.snapshot,
|
|
61
|
+
orderType: order.type,
|
|
62
|
+
adultNum: order.adultNum,
|
|
63
|
+
childNum: order.childNum,
|
|
64
|
+
contents: order.content,
|
|
65
|
+
}) / dishGroup.count,
|
|
66
|
+
specifications: selectedNames,
|
|
67
|
+
note: dishGroup.note,
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
if (showBuffet && order.type === OrderTypeEnum.Buffet) {
|
|
71
|
+
const specifications = [];
|
|
72
|
+
if (order.adultNum) {
|
|
73
|
+
specifications.push(`${text?.adult}${order.adultNum}`);
|
|
74
|
+
}
|
|
75
|
+
if (order.childNum) {
|
|
76
|
+
specifications.push(`${text?.child}${order.childNum}`);
|
|
77
|
+
}
|
|
78
|
+
result.unshift({
|
|
79
|
+
name: getNameFromNames(order.buffet.snapshot.names, lang, CONST.DEFALUT_LANGUAGE),
|
|
80
|
+
count: 1,
|
|
81
|
+
price: calcBuffetTotalPrice(order.buffet.snapshot, order.adultNum, order.childNum),
|
|
82
|
+
specifications: specifications,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (addSpecificationsAfterName) {
|
|
86
|
+
result.forEach((item) => {
|
|
87
|
+
item.name += item.specifications.length > 0 ? `(${item.specifications.join()})` : '';
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|