@social-mail/social-mail-web-server 1.8.321 → 1.8.323
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/server/model/entities/StoreAccount.d.ts +1 -0
- package/dist/server/model/entities/StoreAccount.d.ts.map +1 -1
- package/dist/server/model/entities/StoreAccount.js +14 -10
- package/dist/server/model/entities/StoreAccount.js.map +1 -1
- package/dist/server/model/entities/User.d.ts +1 -1
- package/dist/server/model/entities/User.d.ts.map +1 -1
- package/dist/server/model/events/VerificationTokenEvents.d.ts.map +1 -1
- package/dist/server/model/events/VerificationTokenEvents.js +4 -5
- package/dist/server/model/events/VerificationTokenEvents.js.map +1 -1
- package/dist/server/seed/ui/seed-ui.js +1 -1
- package/dist/server/services/accounts/JournalService.d.ts.map +1 -1
- package/dist/server/services/accounts/JournalService.js +12 -2
- package/dist/server/services/accounts/JournalService.js.map +1 -1
- package/dist/server/services/accounts/chart-of-accounts/ChartOfAccounts.d.ts +4 -2
- package/dist/server/services/accounts/chart-of-accounts/ChartOfAccounts.d.ts.map +1 -1
- package/dist/server/services/accounts/chart-of-accounts/ChartOfAccounts.js +10 -2
- package/dist/server/services/accounts/chart-of-accounts/ChartOfAccounts.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/server/model/entities/StoreAccount.ts +12 -9
- package/src/server/model/entities/User.ts +1 -1
- package/src/server/model/events/VerificationTokenEvents.ts +5 -9
- package/src/server/seed/ui/seed-ui.ts +1 -1
- package/src/server/services/accounts/JournalService.ts +13 -2
- package/src/server/services/accounts/chart-of-accounts/ChartOfAccounts.ts +13 -2
package/package.json
CHANGED
|
@@ -55,15 +55,7 @@ import type StorePaymentGateway from "./StorePaymentGateway.js";
|
|
|
55
55
|
})
|
|
56
56
|
export class StoreAccount {
|
|
57
57
|
|
|
58
|
-
@Column({ dataType: "BigInt", key: true})
|
|
59
|
-
@RelateToOne(User, {
|
|
60
|
-
property: (x) => x.user,
|
|
61
|
-
inverseProperty: (x) => x.storeAccount,
|
|
62
|
-
foreignKeyConstraint: {
|
|
63
|
-
name: "FC_StoreAccounts_Customer_UserID",
|
|
64
|
-
onDelete: "restrict"
|
|
65
|
-
}
|
|
66
|
-
})
|
|
58
|
+
@Column({ dataType: "BigInt", key: true, generated: "identity"})
|
|
67
59
|
public accountID: number;
|
|
68
60
|
|
|
69
61
|
@Column({ dataType: "Char", length: 400, nullable: true })
|
|
@@ -80,6 +72,17 @@ export class StoreAccount {
|
|
|
80
72
|
})
|
|
81
73
|
public storeID: number;
|
|
82
74
|
|
|
75
|
+
@Column({ dataType: "BigInt", nullable: true })
|
|
76
|
+
@RelateTo(User, {
|
|
77
|
+
property: (x) => x.user,
|
|
78
|
+
inverseProperty: (x) => x.storeAccounts,
|
|
79
|
+
foreignKeyConstraint: {
|
|
80
|
+
name: "FC_StoreAccounts_Customer_UserID",
|
|
81
|
+
onDelete: "restrict"
|
|
82
|
+
}
|
|
83
|
+
})
|
|
84
|
+
public userID: number;
|
|
85
|
+
|
|
83
86
|
@Column({ dataType: "BigInt", nullable: true })
|
|
84
87
|
@RelateTo(StoreAccount, {
|
|
85
88
|
property: (x) => x.parent,
|
|
@@ -190,7 +190,7 @@ export class User {
|
|
|
190
190
|
// storeOrders: StoreBill[];
|
|
191
191
|
closedEmails: Email[];
|
|
192
192
|
hostedZones: HostedZoneUser[];
|
|
193
|
-
|
|
193
|
+
storeAccounts: StoreAccount[];
|
|
194
194
|
groups: UserGroupMember[];
|
|
195
195
|
groupMembers: UserGroupMember[];
|
|
196
196
|
appPasswords: AppPassword[];
|
|
@@ -159,11 +159,9 @@ export default class VerificationTokenEvents extends AuthenticatedEvents<Verific
|
|
|
159
159
|
const { email } = entity;
|
|
160
160
|
webSiteFolderID = w.folderID;
|
|
161
161
|
const user = await db.users.where({ webSiteFolderID, email }, (p) => (x) =>
|
|
162
|
-
x.
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
)
|
|
166
|
-
)
|
|
162
|
+
x.contactEmail === p.email
|
|
163
|
+
&& x.storeAccounts.some((s) => s.storeID === p.webSiteFolderID)
|
|
164
|
+
)
|
|
167
165
|
.first();
|
|
168
166
|
if (user) {
|
|
169
167
|
entity.userID = user.userID;
|
|
@@ -219,10 +217,8 @@ export default class VerificationTokenEvents extends AuthenticatedEvents<Verific
|
|
|
219
217
|
}
|
|
220
218
|
|
|
221
219
|
const { userID } = await db.users.where({ storeID, addresses }, (p) => (x) =>
|
|
222
|
-
x.
|
|
223
|
-
&& x.
|
|
224
|
-
|| x.storeAccount.phones.some((e) => Sql.in(e.phoneNumberE64, p.addresses))
|
|
225
|
-
)
|
|
220
|
+
Sql.in(x.contactEmail, p.addresses)
|
|
221
|
+
&& x.storeAccounts.some((s) => s.storeID === p.storeID))
|
|
226
222
|
.firstOrFail();
|
|
227
223
|
|
|
228
224
|
await db.verificationTokens.statements.update({ verified: true }, { verificationID: entity.verificationID });
|
|
@@ -17,7 +17,7 @@ export default async function seedUI(config: DBConfig) {
|
|
|
17
17
|
await config.saveVersion(UIPackageConfig, {
|
|
18
18
|
package: "@social-mail/social-mail-client",
|
|
19
19
|
view: "dist/web/AppIndex",
|
|
20
|
-
version: "1.9.
|
|
20
|
+
version: "1.9.24"
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
await config.saveVersion(WebComponentsPackageConfig, {
|
|
@@ -16,7 +16,18 @@ export default class JournalService {
|
|
|
16
16
|
|
|
17
17
|
async syncEntries(entry: ChangeEntry<StoreJournal>, entity: StoreJournal) {
|
|
18
18
|
|
|
19
|
-
const { total } = entity;
|
|
19
|
+
const { total, storeID } = entity;
|
|
20
|
+
|
|
21
|
+
// create an anonymous customer
|
|
22
|
+
// if buyerID is null
|
|
23
|
+
if (!entity.buyerID) {
|
|
24
|
+
const account = await this.chartOfAccounts.ensureAccount({
|
|
25
|
+
storeID,
|
|
26
|
+
name: "Customer",
|
|
27
|
+
head: "Customers"
|
|
28
|
+
});
|
|
29
|
+
entity.buyerID = account.accountID;
|
|
30
|
+
}
|
|
20
31
|
|
|
21
32
|
await this.addEntry({
|
|
22
33
|
entity,
|
|
@@ -33,7 +44,7 @@ export default class JournalService {
|
|
|
33
44
|
await ce.loadNavigationAsync((x) => x.item);
|
|
34
45
|
await ce.loadNavigationAsync((x) => x.itemPrice);
|
|
35
46
|
|
|
36
|
-
if(!lineItem.source) {
|
|
47
|
+
if(!lineItem.source && !lineItem.taxFor) {
|
|
37
48
|
await this.addEntry({
|
|
38
49
|
account: AccountNames.Sales,
|
|
39
50
|
lineItem,
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import Inject, { RegisterTransient } from "@entity-access/entity-access/dist/di/di.js";
|
|
2
2
|
import SocialMailContext from "../../../model/SocialMailContext.js";
|
|
3
|
+
import EntityAccessError from "@entity-access/entity-access/dist/common/EntityAccessError.js";
|
|
4
|
+
import { randomUUID } from "node:crypto";
|
|
5
|
+
import CryptoService from "../../CryptoService.js";
|
|
6
|
+
import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
|
|
3
7
|
|
|
4
8
|
@RegisterTransient
|
|
5
9
|
export default class ChartOfAccounts {
|
|
@@ -7,19 +11,26 @@ export default class ChartOfAccounts {
|
|
|
7
11
|
@Inject
|
|
8
12
|
db: SocialMailContext;
|
|
9
13
|
|
|
10
|
-
|
|
14
|
+
@Inject
|
|
15
|
+
cryptoService: CryptoService;
|
|
16
|
+
|
|
17
|
+
async ensureAccount({storeID , name , parentID = null, parentName = null, userID = null, head = null}) {
|
|
18
|
+
|
|
19
|
+
let path = name;
|
|
11
20
|
|
|
12
21
|
if (parentName) {
|
|
13
22
|
const parent = await this.ensureAccount({ storeID, name: parentName, head });
|
|
14
23
|
parentID = parent.accountID;
|
|
15
24
|
head = parent.head;
|
|
25
|
+
path = `${parentName}/${name}`;
|
|
16
26
|
}
|
|
17
27
|
|
|
18
28
|
return await this.db.storeAccounts.statements.selectOrInsert({
|
|
19
29
|
parentID,
|
|
20
30
|
storeID,
|
|
21
31
|
name,
|
|
22
|
-
|
|
32
|
+
path,
|
|
33
|
+
accountID: userID,
|
|
23
34
|
head,
|
|
24
35
|
});
|
|
25
36
|
}
|