diff --git a/src/entity/trx_banks.ts b/src/entity/trx_banks.ts index 3fd00d8..f77b3de 100644 --- a/src/entity/trx_banks.ts +++ b/src/entity/trx_banks.ts @@ -29,6 +29,16 @@ export class TrxBank { }) account_validate: boolean; + @Column({ + default: false, + }) + iban: boolean; + + @Column({ + default: false, + }) + bsb: boolean; + @Column() @CreateDateColumn() created_at: Date; diff --git a/src/entity/trx_customer_user_signatures.ts b/src/entity/trx_customer_user_signatures.ts new file mode 100644 index 0000000..2785861 --- /dev/null +++ b/src/entity/trx_customer_user_signatures.ts @@ -0,0 +1,48 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, Index, ManyToOne, JoinTable } from "typeorm"; +import { TrxCustomer } from "./trx_customers"; +import { TrxCustomerUser } from "./trx_customer_users"; + +@Entity("trx_customer_user_signatures", { schema: "trx" }) +export class TrxCustomerUserSignature { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => TrxCustomer, { onDelete: "RESTRICT" }) + @JoinTable() + customer: TrxCustomer; + + @ManyToOne(() => TrxCustomerUser, { onDelete: "RESTRICT" }) + @JoinTable() + customer_user: TrxCustomerUser; + + @Column({ + type: "text", + }) + signature_image: string; + + @Column({ + type: "text", + }) + signature_hash: string; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true, length: 256 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true, length: 256 }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ nullable: true, length: 256 }) + deleted_by: string; +} diff --git a/src/entity/trx_customer_users.ts b/src/entity/trx_customer_users.ts index 58587e7..858f47f 100644 --- a/src/entity/trx_customer_users.ts +++ b/src/entity/trx_customer_users.ts @@ -3,6 +3,9 @@ import { Column, CreateDateColumn, DeleteDateColumn, Entity, Index, JoinTable, M import { Status } from "../types/status"; import { TrxCustomer } from "./trx_customers"; +import { TrxOccupation } from "./trx_occupations"; +import { TrxCountry } from "./trx_countries"; +import { TrxIdentityType } from "../types/trx"; @Entity("trx_customer_users", { schema: "trx" }) export class TrxCustomerUser { @@ -74,6 +77,26 @@ export class TrxCustomerUser { }) status: Status; + @ManyToOne(() => TrxOccupation, { onDelete: "NO ACTION" }) + @JoinTable() + occupation: TrxOccupation; + + @ManyToOne(() => TrxCountry, { onDelete: "NO ACTION" }) + @JoinTable() + country: TrxCountry; + + @Column({ + nullable: true, + length: 256, + }) + identity_number: string; + + @Column({ + nullable: true, + length: 256, + }) + identity_type: TrxIdentityType; + @Column() @CreateDateColumn() created_at: Date; diff --git a/src/entity/trx_customers.ts b/src/entity/trx_customers.ts index 1837764..c3e5578 100644 --- a/src/entity/trx_customers.ts +++ b/src/entity/trx_customers.ts @@ -1,6 +1,7 @@ -import { Column, CreateDateColumn, DeleteDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinTable, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; import { Status } from "../types/status"; import { TrxCustomerType } from "../types/trx"; +import { TrxOccupation } from "./trx_occupations"; @Entity("trx_customers", { schema: "trx" }) export class TrxCustomer { @@ -77,6 +78,16 @@ export class TrxCustomer { }) status: Status; + @ManyToOne(() => TrxOccupation, { onDelete: "NO ACTION" }) + @JoinTable() + occupation: TrxOccupation; + + @Column({ + nullable: true, + length: 256, + }) + identity_number: string; + @Column() @CreateDateColumn() created_at: Date; diff --git a/src/entity/trx_occupations.ts b/src/entity/trx_occupations.ts new file mode 100644 index 0000000..5202817 --- /dev/null +++ b/src/entity/trx_occupations.ts @@ -0,0 +1,42 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, Index, JoinColumn, ManyToOne } from "typeorm"; + +import { Status } from "../types/status"; + +@Entity("trx_occupations", { schema: "trx" }) +export class TrxOccupation { + @PrimaryGeneratedColumn("uuid") + id: string; + + @Column({ + nullable: true, + length: 256, + }) + name: string; + + @Column({ + nullable: false, + length: 64, + }) + status: Status; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true, length: 256 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true, length: 256 }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ nullable: true, length: 256 }) + deleted_by: string; +} diff --git a/src/entity/trx_purposes.ts b/src/entity/trx_purposes.ts new file mode 100644 index 0000000..7053a2d --- /dev/null +++ b/src/entity/trx_purposes.ts @@ -0,0 +1,42 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, Index, JoinColumn, ManyToOne } from "typeorm"; + +import { Status } from "../types/status"; + +@Entity("trx_purposes", { schema: "trx" }) +export class TrxPurposes { + @PrimaryGeneratedColumn("uuid") + id: string; + + @Column({ + nullable: true, + length: 256, + }) + name: string; + + @Column({ + nullable: false, + length: 64, + }) + status: Status; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true, length: 256 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true, length: 256 }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ nullable: true, length: 256 }) + deleted_by: string; +} diff --git a/src/entity/trx_receivers.ts b/src/entity/trx_receivers.ts index 22c1dae..b458efc 100644 --- a/src/entity/trx_receivers.ts +++ b/src/entity/trx_receivers.ts @@ -56,6 +56,18 @@ export class TrxReceiver { }) account_number: string; + @Column({ + nullable: true, + length: 256, + }) + iban: string; + + @Column({ + nullable: true, + length: 256, + }) + bsb: string; + @Column() @CreateDateColumn() created_at: Date; diff --git a/src/entity/trx_transaction_signatures.ts b/src/entity/trx_transaction_signatures.ts new file mode 100644 index 0000000..dbf4071 --- /dev/null +++ b/src/entity/trx_transaction_signatures.ts @@ -0,0 +1,43 @@ +import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { TrxTransaction } from "./trx_transactions"; + +@Entity("trx_transaction_signatures", { schema: "trx" }) +export class TrxTransactionSignature { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => TrxTransaction, { onDelete: "NO ACTION" }) + @JoinColumn() + transaction: TrxTransaction; + + @Column({ + type: "text", + }) + customer_user_signature_image: string; + + @Column({ + type: "text", + }) + customer_user_signature_hash: string; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true, length: 256 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true, length: 256 }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ nullable: true, length: 256 }) + deleted_by: string; +} diff --git a/src/entity/trx_transactions.ts b/src/entity/trx_transactions.ts index 50d0b4c..c728305 100644 --- a/src/entity/trx_transactions.ts +++ b/src/entity/trx_transactions.ts @@ -8,6 +8,7 @@ import { TrxCustomerCost } from "./trx_customer_costs"; import { TrxCustomerUser } from "./trx_customer_users"; import { TrxTransactionPosition, TrxTransactionStatus, TrxTransactionType } from "../types/trx"; import { TrxVerification } from "./trx_verifications"; +import { TrxPurposes } from "./trx_purposes"; @Entity("trx_transactions", { schema: "trx" }) export class TrxTransaction { @@ -115,6 +116,18 @@ export class TrxTransaction { @JoinColumn() signer_verification: TrxVerification; + @Column({ + nullable: true, + length: 256, + }) + teller_file: string; + + @Column({ nullable: true, length: 256 }) + tellered_by: string; + + @Column({ nullable: true }) + tellered_at: Date; + @Column({ nullable: true, length: 256, @@ -149,6 +162,22 @@ export class TrxTransaction { }) remark: string; + @Column({ nullable: true, length: 256 }) + teller_reference_number: string; + + @ManyToOne(() => TrxPurposes, { onDelete: "NO ACTION", nullable: true }) + @JoinColumn() + purpose: TrxPurposes; + + @Column({ nullable: true, length: 256 }) + purpose_label: string; + + @Column({ + nullable: true, + length: 4096, + }) + qrcode_url: string; + @Column() @CreateDateColumn() created_at: Date; diff --git a/src/schema/trx.ts b/src/schema/trx.ts index 093ad0c..7d10b75 100644 --- a/src/schema/trx.ts +++ b/src/schema/trx.ts @@ -1,7 +1,10 @@ +export * from "../entity/trx_purposes"; +export * from "../entity/trx_occupations"; export * from "../entity/trx_verifications"; export * from "../entity/trx_customers"; export * from "../entity/trx_customer_accounts"; export * from "../entity/trx_customer_users"; +export * from "../entity/trx_customer_user_signatures"; export * from "../entity/trx_customer_user_refresh_tokens"; export * from "../entity/trx_customer_user_activities"; export * from "../entity/trx_customer_costs"; @@ -16,4 +19,5 @@ export * from "../entity/trx_receivers"; export * from "../entity/trx_transactions"; export * from "../entity/trx_transaction_slas"; export * from "../entity/trx_transaction_amls"; +export * from "../entity/trx_transaction_signatures"; export * from "../types/trx"; diff --git a/src/types/trx.ts b/src/types/trx.ts index aa3e469..9a8f816 100644 --- a/src/types/trx.ts +++ b/src/types/trx.ts @@ -56,12 +56,19 @@ export enum TrxTransactionStatus { "pending_signer" = "pending_signer", "process_deal_request" = "process_deal_request", "process_deal_approve" = "process_deal_approve", + "process_teller" = "process_teller", "process_settlement" = "process_settlement", "success" = "success", "reject" = "reject", "cancel" = "cancel", } +export enum TrxIdentityType { + "passport" = "passport", + "electoral" = "electoral", + "bi" = "bi", +} + export enum TrxTransactionRemark { "draft" = "Draft", "create" = "Create", @@ -69,6 +76,7 @@ export enum TrxTransactionRemark { "pending_signer" = "Pending Approval Signer", "process_deal_request" = "Deal Request Process", "process_deal_approve" = "Deal Approve Process", + "process_teller" = "process_teller", "process_settlement" = "Settlement on Process", "success" = "Success", "reject" = "Reject",