@pax2pay/model-banking 0.1.448 → 0.1.449

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.
@@ -1,6 +1,6 @@
1
1
  import { isoly } from "isoly"
2
2
  import { isly } from "isly"
3
- import { Rail } from "../Rail"
3
+ import { Card } from "../Card"
4
4
  import { Transaction } from "."
5
5
 
6
6
  export interface Statistics {
@@ -41,34 +41,48 @@ export namespace Statistics {
41
41
  cards: isly.string().array(),
42
42
  cursor: isly.string().optional(),
43
43
  })
44
- export function append(
45
- statistics: Statistics,
46
- transaction: Transaction,
47
- domestic: isoly.CountryCode.Alpha2[],
48
- intraRegion: isoly.CountryCode.Alpha2[],
49
- currency: isoly.Currency
50
- ): Statistics {
51
- const state = transaction.state
52
- if (
53
- state &&
54
- Rail.Address.Card.type.is(transaction.account) &&
55
- Rail.Address.Card.Counterpart.type.is(transaction.counterpart) &&
56
- (state.transaction.kind == "capture" || state.transaction.kind == "refund")
57
- ) {
58
- const region = domestic.includes(transaction.counterpart.merchant.country)
59
- ? "domestic"
60
- : intraRegion.includes(transaction.counterpart.merchant.country)
61
- ? "intraRegion"
62
- : "extraRegion"
63
- statistics[state.transaction.kind][region].count++
64
- statistics[state.transaction.kind][region].amount = isoly.Currency.add(
65
- currency,
66
- statistics[state.transaction.kind][region].amount,
67
- state.transaction.amount
68
- )
69
- statistics.cards.includes(transaction.account.id) || statistics.cards.push(transaction.account.id)
44
+ function empty(): Statistics {
45
+ return {
46
+ capture: {
47
+ domestic: { count: 0, amount: 0 },
48
+ intraRegion: { count: 0, amount: 0 },
49
+ extraRegion: { count: 0, amount: 0 },
50
+ },
51
+ refund: {
52
+ domestic: { count: 0, amount: 0 },
53
+ intraRegion: { count: 0, amount: 0 },
54
+ extraRegion: { count: 0, amount: 0 },
55
+ },
56
+ cards: [],
70
57
  }
71
- return statistics
58
+ }
59
+ export function compile(
60
+ transactions: Transaction[],
61
+ scheme: Card.Scheme,
62
+ regions: Record<"domestic" | "intraRegion", isoly.CountryCode.Alpha2[]>
63
+ ): Statistics {
64
+ const result: Statistics = empty()
65
+ for (const transaction of transactions)
66
+ if (
67
+ Transaction.CardTransaction.type.is(transaction) &&
68
+ transaction.status == "finalized" &&
69
+ transaction.account.scheme == scheme
70
+ ) {
71
+ const region = regions.domestic.includes(transaction.counterpart.merchant.country)
72
+ ? "domestic"
73
+ : regions.intraRegion.includes(transaction.counterpart.merchant.country)
74
+ ? "intraRegion"
75
+ : "extraRegion"
76
+ const kind = transaction.direction == "outbound" ? "capture" : "refund"
77
+ result[kind][region].count++
78
+ result[kind][region].amount = isoly.Currency.add(
79
+ transaction.currency,
80
+ result[kind][region].amount,
81
+ Math.abs(transaction.amount.original)
82
+ )
83
+ result.cards.includes(transaction.account.id) || result.cards.push(transaction.account.id)
84
+ }
85
+ return result
72
86
  }
73
87
  export function combine(accumulation: Statistics, incoming: Statistics, currency: isoly.Currency): Statistics {
74
88
  const [statistics, cards] = (({ cursor, cards, ...rest }) => [rest, cards])(incoming)
@@ -1,5 +1,6 @@
1
1
  import { isoly } from "isoly";
2
2
  import { isly } from "isly";
3
+ import { Card } from "../Card";
3
4
  import { Transaction } from ".";
4
5
  export interface Statistics {
5
6
  capture: Statistics.Regional;
@@ -28,6 +29,6 @@ export declare namespace Statistics {
28
29
  }>;
29
30
  }
30
31
  const type: import("isly/dist/cjs/object").IslyObject<Transaction.Statistics, object>;
31
- function append(statistics: Statistics, transaction: Transaction, domestic: isoly.CountryCode.Alpha2[], intraRegion: isoly.CountryCode.Alpha2[], currency: isoly.Currency): Statistics;
32
+ function compile(transactions: Transaction[], scheme: Card.Scheme, regions: Record<"domestic" | "intraRegion", isoly.CountryCode.Alpha2[]>): Statistics;
32
33
  function combine(accumulation: Statistics, incoming: Statistics, currency: isoly.Currency): Statistics;
33
34
  }
@@ -1,6 +1,6 @@
1
1
  import { isoly } from "isoly";
2
2
  import { isly } from "isly";
3
- import { Rail } from "../Rail";
3
+ import { Transaction } from ".";
4
4
  export var Statistics;
5
5
  (function (Statistics) {
6
6
  let TransactionType;
@@ -24,24 +24,40 @@ export var Statistics;
24
24
  cards: isly.string().array(),
25
25
  cursor: isly.string().optional(),
26
26
  });
27
- function append(statistics, transaction, domestic, intraRegion, currency) {
28
- const state = transaction.state;
29
- if (state &&
30
- Rail.Address.Card.type.is(transaction.account) &&
31
- Rail.Address.Card.Counterpart.type.is(transaction.counterpart) &&
32
- (state.transaction.kind == "capture" || state.transaction.kind == "refund")) {
33
- const region = domestic.includes(transaction.counterpart.merchant.country)
34
- ? "domestic"
35
- : intraRegion.includes(transaction.counterpart.merchant.country)
36
- ? "intraRegion"
37
- : "extraRegion";
38
- statistics[state.transaction.kind][region].count++;
39
- statistics[state.transaction.kind][region].amount = isoly.Currency.add(currency, statistics[state.transaction.kind][region].amount, state.transaction.amount);
40
- statistics.cards.includes(transaction.account.id) || statistics.cards.push(transaction.account.id);
41
- }
42
- return statistics;
27
+ function empty() {
28
+ return {
29
+ capture: {
30
+ domestic: { count: 0, amount: 0 },
31
+ intraRegion: { count: 0, amount: 0 },
32
+ extraRegion: { count: 0, amount: 0 },
33
+ },
34
+ refund: {
35
+ domestic: { count: 0, amount: 0 },
36
+ intraRegion: { count: 0, amount: 0 },
37
+ extraRegion: { count: 0, amount: 0 },
38
+ },
39
+ cards: [],
40
+ };
43
41
  }
44
- Statistics.append = append;
42
+ function compile(transactions, scheme, regions) {
43
+ const result = empty();
44
+ for (const transaction of transactions)
45
+ if (Transaction.CardTransaction.type.is(transaction) &&
46
+ transaction.status == "finalized" &&
47
+ transaction.account.scheme == scheme) {
48
+ const region = regions.domestic.includes(transaction.counterpart.merchant.country)
49
+ ? "domestic"
50
+ : regions.intraRegion.includes(transaction.counterpart.merchant.country)
51
+ ? "intraRegion"
52
+ : "extraRegion";
53
+ const kind = transaction.direction == "outbound" ? "capture" : "refund";
54
+ result[kind][region].count++;
55
+ result[kind][region].amount = isoly.Currency.add(transaction.currency, result[kind][region].amount, Math.abs(transaction.amount.original));
56
+ result.cards.includes(transaction.account.id) || result.cards.push(transaction.account.id);
57
+ }
58
+ return result;
59
+ }
60
+ Statistics.compile = compile;
45
61
  function combine(accumulation, incoming, currency) {
46
62
  const [statistics, cards] = (({ cursor, cards, ...rest }) => [rest, cards])(incoming);
47
63
  Object.entries(statistics).forEach(([kind, statistic]) => Object.entries(statistic).forEach(([region, { count, amount }]) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Statistics.js","sourceRoot":"../","sources":["Transaction/Statistics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Statistics.js","sourceRoot":"../","sources":["Transaction/Statistics.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pax2pay/model-banking",
3
- "version": "0.1.448",
3
+ "version": "0.1.449",
4
4
  "description": "Library containing data model types and functions for the Pax2Pay Banking API.",
5
5
  "author": "Pax2Pay Ltd",
6
6
  "license": "MIT",