This commit is contained in:
fro1991
2025-06-30 00:34:06 +07:00
parent 3be66f0903
commit 16c93b353a

View File

@ -1,142 +1,146 @@
import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinTable, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'; import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinTable, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm";
import { BrilinkMerchant } from './brilink_merchants'; import { BrilinkMerchant } from "./brilink_merchants";
import { BrilinkBalanceCode, BrilinkBalanceType, BrilinkTransactionActivity, BrilinkTransactionStatus, BrilinkTransactionType } from '../types/brilink'; import { BrilinkBalanceCode, BrilinkBalanceType, BrilinkTransactionActivity, BrilinkTransactionStatus, BrilinkTransactionType } from "../types/brilink";
import { BrilinkMerchantTerminal } from './brilink_merchant_terminals'; import { BrilinkMerchantTerminal } from "./brilink_merchant_terminals";
import { BrilinkTerminal } from './brilink_terminals'; import { BrilinkTerminal } from "./brilink_terminals";
import { BrilinkBalance } from './brilink_balances.ts'; import { BrilinkBalance } from "./brilink_balances.ts";
import { BrilinkBalanceMutation } from './brilink_balance_mutations'; import { BrilinkBalanceMutation } from "./brilink_balance_mutations";
import { BrilinkMerchantSettlement } from './brilink_merchant_settlements'; import { BrilinkMerchantSettlement } from "./brilink_merchant_settlements";
import { BrilinkDiscount } from './brilink_discounts'; import { BrilinkDiscount } from "./brilink_discounts";
import { BrilinkProductItem } from "./brilink_product_items";
@Entity('brilink_transactions', { schema: 'brilinks' }) @Entity("brilink_transactions", { schema: "brilinks" })
export class BrilinkTransaction { export class BrilinkTransaction {
@PrimaryGeneratedColumn('uuid') @PrimaryGeneratedColumn("uuid")
id: string; id: string;
@ManyToOne(() => BrilinkMerchant, { onDelete: 'RESTRICT' }) @ManyToOne(() => BrilinkMerchant, { onDelete: "RESTRICT" })
@JoinTable() @JoinTable()
merchant: BrilinkMerchant merchant: BrilinkMerchant;
@ManyToOne(() => BrilinkMerchantTerminal, { onDelete: 'RESTRICT' }) @ManyToOne(() => BrilinkMerchantTerminal, { onDelete: "RESTRICT" })
@JoinTable() @JoinTable()
merchant_terminal: BrilinkMerchantTerminal merchant_terminal: BrilinkMerchantTerminal;
@ManyToOne(() => BrilinkBalanceMutation, { onDelete: 'RESTRICT', nullable: true }) @ManyToOne(() => BrilinkBalanceMutation, { onDelete: "RESTRICT", nullable: true })
@JoinTable() @JoinTable()
balance_mutation: BrilinkBalanceMutation balance_mutation: BrilinkBalanceMutation;
@Column({ @Column({
nullable: false, nullable: false,
length: 128 length: 128,
}) })
code: string; code: string;
@Column({ @Column({
nullable: false, nullable: false,
length: 64 length: 64,
}) })
type: BrilinkTransactionType type: BrilinkTransactionType;
@Column({ @Column({
nullable: false, nullable: false,
length: 64 length: 64,
}) })
activity: BrilinkTransactionActivity; activity: BrilinkTransactionActivity;
@Column({ nullable: false }) @Column({ nullable: false })
activity_at: Date; activity_at: Date;
@Column({ @Column({
length: 128, length: 128,
nullable: true, nullable: true,
}) })
target: string; target: string;
@Column({ @Column({
type: 'jsonb', type: "jsonb",
nullable: true, nullable: true,
}) })
target_data: Record<string, any>; target_data: Record<string, any>;
@Column({ @Column({
type: 'float8', type: "float8",
nullable: false, nullable: false,
default: 0 default: 0,
}) })
amount: number; amount: number;
@ManyToOne(() => BrilinkDiscount, { onDelete: 'NO ACTION', nullable: true }) @ManyToOne(() => BrilinkDiscount, { onDelete: "NO ACTION", nullable: true })
@JoinTable() @JoinTable()
discount: BrilinkDiscount discount: BrilinkDiscount;
@Column({ @Column({
type: 'float8', type: "float8",
nullable: false, nullable: false,
default: 0 default: 0,
}) })
discount_amount: number; discount_amount: number;
@Column({
type: "float8",
nullable: false,
default: 0,
})
fee: number;
@Column({ @Column({
type: 'float8', type: "float8",
nullable: false, nullable: false,
default: 0 default: 0,
}) })
fee: number; total: number;
@Column({ @Column({
type: 'float8', nullable: false,
nullable: false, length: 64,
default: 0 })
}) status: BrilinkTransactionStatus;
total: number;
@Column({ @Column({
nullable: false, length: 128,
length: 64 nullable: true,
}) })
status: BrilinkTransactionStatus; reference: string;
@Column({ @Column({
length: 128, length: 1024,
nullable: true, nullable: true,
}) })
reference: string; remarks: string;
@Column({ @Column({
length: 1024, nullable: false,
nullable: true, default: false,
}) })
remarks: string; is_merchant_settlement: boolean;
@Column({ @ManyToOne(() => BrilinkMerchantSettlement, { onDelete: "RESTRICT", nullable: true })
nullable: false, @JoinTable()
default: false merchant_settlement: BrilinkMerchantSettlement;
})
is_merchant_settlement: boolean;
@ManyToOne(() => BrilinkMerchantSettlement, { onDelete: 'RESTRICT', nullable: true }) @ManyToOne(() => BrilinkProductItem, { onDelete: "NO ACTION", nullable: true })
@JoinTable() @JoinTable()
merchant_settlement: BrilinkMerchantSettlement product_item: BrilinkProductItem;
@Column() @Column()
@CreateDateColumn() @CreateDateColumn()
created_at: Date; created_at: Date;
@Column({ type: "varchar", length: 255 }) @Column({ type: "varchar", length: 255 })
created_by: string; created_by: string;
@Column({ nullable: true }) @Column({ nullable: true })
@UpdateDateColumn() @UpdateDateColumn()
updated_at: Date; updated_at: Date;
@Column({ type: "varchar", length: 255, nullable: true }) @Column({ type: "varchar", length: 255, nullable: true })
updated_by: string; updated_by: string;
@Column({ nullable: true }) @Column({ nullable: true })
@DeleteDateColumn() @DeleteDateColumn()
deleted_at: Date; deleted_at: Date;
@Column({ type: "varchar", length: 255, nullable: true }) @Column({ type: "varchar", length: 255, nullable: true })
deleted_by: string; deleted_by: string;
} }