From 4d16d58f9a85eae1941737a4519b00a32ca5e01d Mon Sep 17 00:00:00 2001 From: fadlydev Date: Fri, 10 Jan 2025 12:09:44 +0700 Subject: [PATCH] add goods receipt and add relation to goods --- src/entity/goods.ts | 15 +++++- src/entity/goods_receipt.ts | 104 ++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 src/entity/goods_receipt.ts diff --git a/src/entity/goods.ts b/src/entity/goods.ts index df31510..0aeae9a 100644 --- a/src/entity/goods.ts +++ b/src/entity/goods.ts @@ -14,7 +14,7 @@ import { Status } from '../types/status'; import { User } from './users'; import { Supplier } from './supplier'; import { AssetCategory } from './asset_category'; - +import { GoodsReceipt } from './goods_receipt'; @Entity('goods') export class Goods { @PrimaryGeneratedColumn('uuid') @@ -88,12 +88,23 @@ export class Goods { @ManyToOne(() => Supplier, { nullable: false }) @JoinColumn({ name: 'supplier_id' }) supplier: Supplier; + + @ManyToOne(() => GoodsReceipt, (goodsReceipt) => goodsReceipt.goods, { nullable: false }) + @JoinColumn({ name: 'goods_receipt_id' }) + goodsReceipt: GoodsReceipt; - @Index() @Column({ nullable: false, type: 'uuid', }) + + goods_receipt_id: string; + @Index() + @Column({ + nullable: false, + type: 'uuid', + }) + supplier_id: string; @Column({ diff --git a/src/entity/goods_receipt.ts b/src/entity/goods_receipt.ts new file mode 100644 index 0000000..c0ce377 --- /dev/null +++ b/src/entity/goods_receipt.ts @@ -0,0 +1,104 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, + DeleteDateColumn, + ManyToOne, + JoinColumn, + OneToMany, + Index, +} from 'typeorm'; + +import { User } from './users'; +import { Supplier } from './supplier'; +import { RequestOrder } from './request_orders'; +import { Department } from './department'; +import { Goods } from './goods'; + +@Entity('goods_receipts') +export class GoodsReceipt { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ + nullable: false, + length: 128, + }) + receipt_number: string; + + @Column({ + nullable: false, + type: 'date', + }) + receipt_date: Date; + + @ManyToOne(() => RequestOrder, (requestOrder) => requestOrder.id, { nullable: true }) + @JoinColumn({ name: 'request_order_id' }) + requestOrder: RequestOrder; + + @Column({ + nullable: true, + type: 'uuid', + }) + request_order_id: string; + + @ManyToOne(() => Supplier, (supplier) => supplier.id, { nullable: false }) + @JoinColumn({ name: 'supplier_id' }) + supplier: Supplier; + + @Column({ + nullable: false, + type: 'uuid', + }) + supplier_id: string; + + @ManyToOne(() => Department, (department) => department.id, { nullable: false }) + @JoinColumn({ name: 'department_id' }) + department: Department; + + @Column({ + nullable: false, + type: 'uuid', + }) + department_id: string; + + @OneToMany(() => Goods, (goods) => goods.goodsReceipt, { cascade: true }) + goods: Goods[]; + + @Column({ + nullable: true, + type: 'text', + }) + remarks: string; + + @Column({ + nullable: false, + length: 64, + }) + status: string; + + @ManyToOne(() => User, (user) => user.id, { nullable: false }) + @JoinColumn({ name: 'received_by' }) + receivedBy: User; + + @Index() + @Column({ + nullable: false, + type: 'uuid', + }) + received_by: string; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; +}