@pax2pay/model-banking 0.1.271 → 0.1.273
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/Transaction/index.ts
CHANGED
|
@@ -16,6 +16,8 @@ export interface Transaction extends Transaction.Creatable {
|
|
|
16
16
|
accountId: string
|
|
17
17
|
accountName?: string
|
|
18
18
|
account: Rail.Address
|
|
19
|
+
type?: Transaction.Types
|
|
20
|
+
direction?: Transaction.Direction
|
|
19
21
|
readonly id: cryptly.Identifier
|
|
20
22
|
readonly reference?: Transaction.Reference
|
|
21
23
|
readonly posted: isoly.DateTime
|
|
@@ -35,6 +37,10 @@ export interface Transaction extends Transaction.Creatable {
|
|
|
35
37
|
risk?: number
|
|
36
38
|
}
|
|
37
39
|
export namespace Transaction {
|
|
40
|
+
export const types = ["card", "internal", "external", "system"] as const
|
|
41
|
+
export type Types = typeof types[number]
|
|
42
|
+
export const directions = ["inbound", "outbound"] as const
|
|
43
|
+
export type Direction = typeof directions[number]
|
|
38
44
|
export type Creatable = TransactionCreatable
|
|
39
45
|
export const Creatable = TransactionCreatable
|
|
40
46
|
export type Collect = TransactionCollect
|
|
@@ -58,6 +64,8 @@ export namespace Transaction {
|
|
|
58
64
|
accountId: isly.string(),
|
|
59
65
|
accountName: isly.string().optional(),
|
|
60
66
|
account: isly.fromIs("Rail", Rail.Address.is),
|
|
67
|
+
type: isly.string(types).optional(),
|
|
68
|
+
direction: isly.string(directions).optional(),
|
|
61
69
|
id: isly.fromIs("cryptly.Identifier", cryptly.Identifier.is).readonly(),
|
|
62
70
|
reference: Reference.type.readonly().optional(),
|
|
63
71
|
posted: isly.string(),
|
|
@@ -85,7 +93,7 @@ export namespace Transaction {
|
|
|
85
93
|
accountName: string,
|
|
86
94
|
account: Rail.Address,
|
|
87
95
|
rail: Rail,
|
|
88
|
-
|
|
96
|
+
creatable: Creatable,
|
|
89
97
|
operations: Operation.Creatable[],
|
|
90
98
|
balance: {
|
|
91
99
|
actual: number
|
|
@@ -95,8 +103,12 @@ export namespace Transaction {
|
|
|
95
103
|
by?: string
|
|
96
104
|
): Transaction {
|
|
97
105
|
const id = Identifier.generate()
|
|
106
|
+
const amount = -creatable.amount
|
|
98
107
|
return {
|
|
99
|
-
...
|
|
108
|
+
...creatable,
|
|
109
|
+
amount,
|
|
110
|
+
type: getType(creatable, accountName),
|
|
111
|
+
direction: getDirection(amount),
|
|
100
112
|
organization,
|
|
101
113
|
accountId,
|
|
102
114
|
accountName,
|
|
@@ -128,6 +140,8 @@ export namespace Transaction {
|
|
|
128
140
|
const id = Identifier.generate()
|
|
129
141
|
return {
|
|
130
142
|
...transaction,
|
|
143
|
+
type: getType(transaction, accountName),
|
|
144
|
+
direction: "inbound",
|
|
131
145
|
organization,
|
|
132
146
|
accountId,
|
|
133
147
|
accountName,
|
|
@@ -158,4 +172,24 @@ export namespace Transaction {
|
|
|
158
172
|
transaction.flags = Array.from(current)
|
|
159
173
|
transaction.oldFlags = Array.from(old)
|
|
160
174
|
}
|
|
175
|
+
export function getType(transaction: TransactionCreatable, accountName: string): Types {
|
|
176
|
+
let result: Types
|
|
177
|
+
if (accountName.startsWith("settlement-") || accountName.startsWith("fee-"))
|
|
178
|
+
result = "system"
|
|
179
|
+
else if (transaction.counterpart.type == "internal")
|
|
180
|
+
result = "internal"
|
|
181
|
+
else if (transaction.counterpart.type == "card")
|
|
182
|
+
result = "card"
|
|
183
|
+
else
|
|
184
|
+
result = "external"
|
|
185
|
+
return result
|
|
186
|
+
}
|
|
187
|
+
export function getDirection(amount: number): Direction {
|
|
188
|
+
let result: Direction
|
|
189
|
+
if (amount < 0)
|
|
190
|
+
result = "outbound"
|
|
191
|
+
else
|
|
192
|
+
result = "inbound"
|
|
193
|
+
return result
|
|
194
|
+
}
|
|
161
195
|
}
|
|
@@ -14,6 +14,8 @@ export interface Transaction extends Transaction.Creatable {
|
|
|
14
14
|
accountId: string;
|
|
15
15
|
accountName?: string;
|
|
16
16
|
account: Rail.Address;
|
|
17
|
+
type?: Transaction.Types;
|
|
18
|
+
direction?: Transaction.Direction;
|
|
17
19
|
readonly id: cryptly.Identifier;
|
|
18
20
|
readonly reference?: Transaction.Reference;
|
|
19
21
|
readonly posted: isoly.DateTime;
|
|
@@ -33,6 +35,10 @@ export interface Transaction extends Transaction.Creatable {
|
|
|
33
35
|
risk?: number;
|
|
34
36
|
}
|
|
35
37
|
export declare namespace Transaction {
|
|
38
|
+
const types: readonly ["card", "internal", "external", "system"];
|
|
39
|
+
type Types = typeof types[number];
|
|
40
|
+
const directions: readonly ["inbound", "outbound"];
|
|
41
|
+
type Direction = typeof directions[number];
|
|
36
42
|
type Creatable = TransactionCreatable;
|
|
37
43
|
const Creatable: typeof TransactionCreatable;
|
|
38
44
|
type Collect = TransactionCollect;
|
|
@@ -55,7 +61,7 @@ export declare namespace Transaction {
|
|
|
55
61
|
const is: isly.Type.IsFunction<Transaction>;
|
|
56
62
|
const flaw: isly.Type.FlawFunction;
|
|
57
63
|
const get: isly.Type.GetFunction<Transaction>;
|
|
58
|
-
function fromCreatable(organization: string, accountId: string, accountName: string, account: Rail.Address, rail: Rail,
|
|
64
|
+
function fromCreatable(organization: string, accountId: string, accountName: string, account: Rail.Address, rail: Rail, creatable: Creatable, operations: Operation.Creatable[], balance: {
|
|
59
65
|
actual: number;
|
|
60
66
|
reserved: number;
|
|
61
67
|
available: number;
|
|
@@ -67,4 +73,6 @@ export declare namespace Transaction {
|
|
|
67
73
|
}): Transaction;
|
|
68
74
|
function isIdentifier(value: string | any): value is string;
|
|
69
75
|
function flag(transaction: Transaction, flags: string[] | undefined): void;
|
|
76
|
+
function getType(transaction: TransactionCreatable, accountName: string): Types;
|
|
77
|
+
function getDirection(amount: number): Direction;
|
|
70
78
|
}
|
|
@@ -12,6 +12,8 @@ import { Reference as TransactionReference } from "./Reference";
|
|
|
12
12
|
import { Status as TransactionStatus } from "./Status";
|
|
13
13
|
export var Transaction;
|
|
14
14
|
(function (Transaction) {
|
|
15
|
+
Transaction.types = ["card", "internal", "external", "system"];
|
|
16
|
+
Transaction.directions = ["inbound", "outbound"];
|
|
15
17
|
Transaction.Creatable = TransactionCreatable;
|
|
16
18
|
Transaction.Collect = TransactionCollect;
|
|
17
19
|
Transaction.Incoming = TransactionIncoming;
|
|
@@ -23,6 +25,8 @@ export var Transaction;
|
|
|
23
25
|
accountId: isly.string(),
|
|
24
26
|
accountName: isly.string().optional(),
|
|
25
27
|
account: isly.fromIs("Rail", Rail.Address.is),
|
|
28
|
+
type: isly.string(Transaction.types).optional(),
|
|
29
|
+
direction: isly.string(Transaction.directions).optional(),
|
|
26
30
|
id: isly.fromIs("cryptly.Identifier", cryptly.Identifier.is).readonly(),
|
|
27
31
|
reference: Transaction.Reference.type.readonly().optional(),
|
|
28
32
|
posted: isly.string(),
|
|
@@ -44,10 +48,14 @@ export var Transaction;
|
|
|
44
48
|
Transaction.is = Transaction.type.is;
|
|
45
49
|
Transaction.flaw = Transaction.type.flaw;
|
|
46
50
|
Transaction.get = Transaction.type.get;
|
|
47
|
-
function fromCreatable(organization, accountId, accountName, account, rail,
|
|
51
|
+
function fromCreatable(organization, accountId, accountName, account, rail, creatable, operations, balance, by) {
|
|
48
52
|
const id = Identifier.generate();
|
|
53
|
+
const amount = -creatable.amount;
|
|
49
54
|
return {
|
|
50
|
-
...
|
|
55
|
+
...creatable,
|
|
56
|
+
amount,
|
|
57
|
+
type: getType(creatable, accountName),
|
|
58
|
+
direction: getDirection(amount),
|
|
51
59
|
organization,
|
|
52
60
|
accountId,
|
|
53
61
|
accountName,
|
|
@@ -69,6 +77,8 @@ export var Transaction;
|
|
|
69
77
|
const id = Identifier.generate();
|
|
70
78
|
return {
|
|
71
79
|
...transaction,
|
|
80
|
+
type: getType(transaction, accountName),
|
|
81
|
+
direction: "inbound",
|
|
72
82
|
organization,
|
|
73
83
|
accountId,
|
|
74
84
|
accountName,
|
|
@@ -103,5 +113,27 @@ export var Transaction;
|
|
|
103
113
|
transaction.oldFlags = Array.from(old);
|
|
104
114
|
}
|
|
105
115
|
Transaction.flag = flag;
|
|
116
|
+
function getType(transaction, accountName) {
|
|
117
|
+
let result;
|
|
118
|
+
if (accountName.startsWith("settlement-") || accountName.startsWith("fee-"))
|
|
119
|
+
result = "system";
|
|
120
|
+
else if (transaction.counterpart.type == "internal")
|
|
121
|
+
result = "internal";
|
|
122
|
+
else if (transaction.counterpart.type == "card")
|
|
123
|
+
result = "card";
|
|
124
|
+
else
|
|
125
|
+
result = "external";
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
Transaction.getType = getType;
|
|
129
|
+
function getDirection(amount) {
|
|
130
|
+
let result;
|
|
131
|
+
if (amount < 0)
|
|
132
|
+
result = "outbound";
|
|
133
|
+
else
|
|
134
|
+
result = "inbound";
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
137
|
+
Transaction.getDirection = getDirection;
|
|
106
138
|
})(Transaction || (Transaction = {}));
|
|
107
139
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Transaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EAAE,SAAS,IAAI,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,IAAI,IAAI,eAAe,EAAE,MAAM,QAAQ,CAAA;AAChD,OAAO,EAAE,SAAS,IAAI,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Transaction/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@ import { isly } from "isly";
|
|
|
2
2
|
export type Category = typeof Category.name[number];
|
|
3
3
|
export declare namespace Category {
|
|
4
4
|
const name: readonly ["safeguarded", "unsafe", "buffer", "other", "external"];
|
|
5
|
-
const type: isly.Type<"buffer" | "other" | "
|
|
5
|
+
const type: isly.Type<"buffer" | "other" | "external" | "safeguarded" | "unsafe">;
|
|
6
6
|
}
|