From 6d5de8e52a0de5ca2590e7ce2925c6e4e97b5433 Mon Sep 17 00:00:00 2001 From: fro1991 Date: Wed, 14 May 2025 22:36:43 +0700 Subject: [PATCH] brilink update --- ...rilink_merchant_settlement_transactions.ts | 79 +++++++++++++ src/entity/brilink_merchant_settlements.ts | 89 +++++++++++++++ src/entity/brilink_transactions.ts | 105 ++++++++++++++++++ src/index.ts | 28 ++++- src/types/brilink.ts | 24 ++++ 5 files changed, 324 insertions(+), 1 deletion(-) create mode 100644 src/entity/brilink_merchant_settlement_transactions.ts create mode 100644 src/entity/brilink_merchant_settlements.ts create mode 100644 src/entity/brilink_transactions.ts diff --git a/src/entity/brilink_merchant_settlement_transactions.ts b/src/entity/brilink_merchant_settlement_transactions.ts new file mode 100644 index 0000000..20a0360 --- /dev/null +++ b/src/entity/brilink_merchant_settlement_transactions.ts @@ -0,0 +1,79 @@ +import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinTable, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; +import { BrilinkMerchantSettlementStatus } from '../types/brilink'; +import { BrilinkMerchant } from './brilink_merchants'; + +@Entity('brilink_merchant_settlement_transactions', { schema: 'brilinks' }) +export class BrilinkMerchantSettlementTransaction { + @PrimaryGeneratedColumn('uuid') + id: string; + + @ManyToOne(() => BrilinkMerchant, { onDelete: 'RESTRICT' }) + @JoinTable() + merchant: BrilinkMerchant + + @Column({ + type: 'float8', + nullable: false, + default: 0 + }) + amount: number; + + @Column({ + type: 'float8', + nullable: false, + default: 0 + }) + fee: number; + + @Column({ + type: 'float8', + nullable: false, + default: 0 + }) + total: number; + + @Column({ + nullable: false, + length: 64 + }) + status: BrilinkMerchantSettlementStatus; + + @Column({ + length: 128, + nullable: true, + }) + reference: string; + + @Column({ + length: 1024, + nullable: true, + }) + remarks: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + approve_by: string; + + @Column({ nullable: true }) + approve_at: Date; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} \ No newline at end of file diff --git a/src/entity/brilink_merchant_settlements.ts b/src/entity/brilink_merchant_settlements.ts new file mode 100644 index 0000000..cfde6f3 --- /dev/null +++ b/src/entity/brilink_merchant_settlements.ts @@ -0,0 +1,89 @@ +import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinTable, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; +import { BrilinkMerchantSettlementStatus } from '../types/brilink'; +import { BrilinkMerchant } from './brilink_merchants'; + +@Entity('brilink_merchant_settlements', { schema: 'brilinks' }) +export class BrilinkMerchantSettlement { + @PrimaryGeneratedColumn('uuid') + id: string; + + @ManyToOne(() => BrilinkMerchant, { onDelete: 'RESTRICT' }) + @JoinTable() + merchant: BrilinkMerchant + + @Column({ + nullable: false, + length: 128 + }) + code: string; + + @Column({ + type: 'float8', + nullable: false, + default: 0 + }) + amount: number; + + @Column({ + type: 'float8', + nullable: false, + default: 0 + }) + fee: number; + + @Column({ + type: 'float8', + nullable: false, + default: 0 + }) + total: number; + + @Column({ + nullable: false, + length: 64 + }) + status: BrilinkMerchantSettlementStatus; + + @Column({ + length: 128, + nullable: true, + }) + reference: string; + + @Column({ + length: 1024, + nullable: true, + }) + remarks: string; + + @Column() + @CreateDateColumn() + settlement_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + approve_by: string; + + @Column({ nullable: true }) + approve_at: Date; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} \ No newline at end of file diff --git a/src/entity/brilink_transactions.ts b/src/entity/brilink_transactions.ts new file mode 100644 index 0000000..dd98c5d --- /dev/null +++ b/src/entity/brilink_transactions.ts @@ -0,0 +1,105 @@ +import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinTable, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; +import { BrilinkMerchant } from './brilink_merchants'; +import { BrilinkBalanceCode, BrilinkBalanceType, BrilinkTransactionActivity, BrilinkTransactionType } from '../types/brilink'; +import { BrilinkMerchantTerminal } from './brilink_merchant_terminals'; +import { BrilinkTerminal } from './brilink_terminals'; +import { BrilinkBalance } from './brilink_balances.ts'; +import { BrilinkBalanceMutation } from './brilink_balance_mutations'; +import { BrilinkMerchantSettlement } from './brilink_merchant_settlements'; + +@Entity('brilink_transactions', { schema: 'brilinks' }) +export class BrilinkTransaction { + @PrimaryGeneratedColumn('uuid') + id: string; + + @ManyToOne(() => BrilinkMerchant, { onDelete: 'RESTRICT' }) + @JoinTable() + merchant: BrilinkMerchant + + @ManyToOne(() => BrilinkMerchantTerminal, { onDelete: 'RESTRICT' }) + @JoinTable() + merchant_terminal: BrilinkMerchantTerminal + + @ManyToOne(() => BrilinkBalanceMutation, { onDelete: 'RESTRICT', nullable: true }) + @JoinTable() + balance_mutation: BrilinkBalanceMutation + + @Column({ + nullable: false, + length: 128 + }) + code: string; + + @Column({ + nullable: false, + length: 64 + }) + type: BrilinkTransactionType + + @Column({ + nullable: false, + length: 64 + }) + activity: BrilinkTransactionActivity; + + @Column({ nullable: false }) + activity_at: Date; + + @Column({ + type: 'float8', + nullable: false, + default: 0 + }) + amount: number; + + @Column({ + type: 'float8', + nullable: false, + default: 0 + }) + fee: number; + + @Column({ + type: 'float8', + nullable: false, + default: 0 + }) + total: number; + + @Column({ + nullable: false, + length: 64 + }) + status: BrilinkTransactionActivity; + + @Column({ + nullable: false, + default: false + }) + is_merchant_settlement: boolean; + + @ManyToOne(() => BrilinkMerchantSettlement, { onDelete: 'RESTRICT', nullable: true }) + @JoinTable() + merchant_settlement: BrilinkMerchantSettlement + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 6032b4c..7bb25e7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -101,7 +101,23 @@ import { BrizziBatch } from "./entity/brizzi_batchs"; import { BrizziCard } from "./entity/brizzi_cards"; import { BrizziHistory } from "./entity/brizzi_history"; -import { BrilinkMerchantStatus, BrilinkTerminalType, BrilinkTerminalCondition, BrilinkTerminalOnline, BrilinkBalanceType, BrilinkBalanceCode, BrilinkBalanceMutationType, BrilinkBalanceMutationActvity, BrilinkBalanceSourceType, BrilinkBalanceDestinationType, BrilinkBalanceMutationStatus } from "./types/brilink"; +import { + BrilinkMerchantStatus, + BrilinkTerminalType, + BrilinkTerminalCondition, + BrilinkTerminalOnline, + BrilinkBalanceType, + BrilinkBalanceCode, + BrilinkBalanceMutationType, + BrilinkBalanceMutationActvity, + BrilinkBalanceSourceType, + BrilinkBalanceDestinationType, + BrilinkBalanceMutationStatus, + BrilinkTransactionType, + BrilinkTransactionActivity, + BrilinkTransactionStatus, + BrilinkMerchantSettlementStatus +} from "./types/brilink"; import { BrilinkMerchant } from "./entity/brilink_merchants"; import { BrilinkMerchantUser } from "./entity/brilink_merchant_users"; @@ -118,6 +134,9 @@ import { BrilinkBalance } from "./entity/brilink_balances.ts"; import { BrilinkBalanceMutation } from "./entity/brilink_balance_mutations"; import { BrilinkBalanceTopup } from "./entity/brilink_balance_topup"; import { BrilinkTerminalLanguage } from "./entity/brilink_terminal_languages"; +import { BrilinkTransaction } from "./entity/brilink_transactions"; +import { BrilinkMerchantSettlement } from "./entity/brilink_merchant_settlements"; +import { BrilinkMerchantSettlementTransaction } from "./entity/brilink_merchant_settlement_transactions"; import { BriapiConfig } from "./entity/briapi_configs"; import { BriapiLog } from "./entity/briapi_logs"; @@ -244,6 +263,10 @@ export { BrilinkBalanceSourceType, BrilinkBalanceDestinationType, BrilinkBalanceMutationStatus, + BrilinkTransactionType, + BrilinkTransactionActivity, + BrilinkTransactionStatus, + BrilinkMerchantSettlementStatus, BrilinkMerchant, BrilinkMerchantUser, BrilinkMerchantUserRefreshToken, @@ -259,6 +282,9 @@ export { BrilinkBalanceMutation, BrilinkBalanceTopup, BrilinkTerminalLanguage, + BrilinkTransaction, + BrilinkMerchantSettlement, + BrilinkMerchantSettlementTransaction, RemitBank, RemitConfigTransaction, RemitConfigAllocation, diff --git a/src/types/brilink.ts b/src/types/brilink.ts index 8919873..dd54c82 100644 --- a/src/types/brilink.ts +++ b/src/types/brilink.ts @@ -65,3 +65,27 @@ export enum BrilinkBalanceMutationStatus { "reject" = "reject" } +export enum BrilinkTransactionType { + "brizzi" = "brizzi", + "remittance" = "remittance" +} + +export enum BrilinkTransactionActivity { + "topup" = "topup", + "payment" = "payment", + "purchase" = "purchase" +} + +export enum BrilinkTransactionStatus { + "pending" = "pending", + "process" = "process", + "success" = "success", + "fail" = "fail", +} + +export enum BrilinkMerchantSettlementStatus { + "pending" = "pending", + "process" = "process", + "success" = "success", + "fail" = "fail", +}