From e27bd221fe9353b02b69a862bcd991ec31092237 Mon Sep 17 00:00:00 2001 From: fro1991 Date: Thu, 13 Feb 2025 01:42:49 +0700 Subject: [PATCH] update --- src/entity/asset_purchase.ts | 65 +++++++++++ src/entity/asset_purchase_goods_receipt.ts | 61 ++++++++++ .../asset_purchase_goods_receipt_good.ts | 78 +++++++++++++ src/entity/asset_purchase_invoice.ts | 108 ++++++++++++++++++ ...purchase_purchase_bond_realization_good.ts | 84 ++++++++++++++ src/entity/asset_purchase_realization.ts | 63 ++++++++++ src/entity/asset_purchase_request_order.ts | 29 +++++ src/entity/asset_supplier.ts | 2 +- src/index.ts | 16 ++- 9 files changed, 504 insertions(+), 2 deletions(-) create mode 100644 src/entity/asset_purchase.ts create mode 100644 src/entity/asset_purchase_goods_receipt.ts create mode 100644 src/entity/asset_purchase_goods_receipt_good.ts create mode 100644 src/entity/asset_purchase_invoice.ts create mode 100644 src/entity/asset_purchase_purchase_bond_realization_good.ts create mode 100644 src/entity/asset_purchase_realization.ts create mode 100644 src/entity/asset_purchase_request_order.ts diff --git a/src/entity/asset_purchase.ts b/src/entity/asset_purchase.ts new file mode 100644 index 0000000..6cf605d --- /dev/null +++ b/src/entity/asset_purchase.ts @@ -0,0 +1,65 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, JoinTable, ManyToOne, DeleteDateColumn } from "typeorm"; +import { AssetSupplier } from "./asset_supplier"; + +@Entity("asset_purchases") +export class AssetPurchase { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => AssetSupplier, { onDelete: 'RESTRICT' }) + @JoinTable() + supplier: AssetSupplier; + + @Column({ type: "varchar", length: 255 }) + code: string; + + @Column({ + nullable: true, + }) + purchase_at: Date; + + @Column("uuid") + department_id: string; + + @Column({ type: "varchar", length: 255 }) + department_name: string; + + @Column({ type: "varchar", length: 255 }) + type: string; + + @Column({ + type: 'int2', + nullable: false, + }) + quantity: number; + + @Column({ + type: 'float8', + nullable: false, + }) + total: number; + + @Column({ type: "varchar", length: 255 }) + status: string; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} diff --git a/src/entity/asset_purchase_goods_receipt.ts b/src/entity/asset_purchase_goods_receipt.ts new file mode 100644 index 0000000..e22d90d --- /dev/null +++ b/src/entity/asset_purchase_goods_receipt.ts @@ -0,0 +1,61 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, JoinTable, ManyToOne, DeleteDateColumn } from "typeorm"; +import { AssetPurchase } from "./asset_purchase"; +import { AssetRequestOrder } from "./asset_request_order"; + + +@Entity("asset_purchase_goods_receipts") +export class AssetPurchaseGoodsReceipt { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => AssetPurchase, { onDelete: 'RESTRICT' }) + @JoinTable() + purchase: AssetPurchase; + + @Column({ type: "varchar", length: 255 }) + code: string; + + @Column({ + nullable: true, + }) + receipt_at: Date; + + @Column({ + type: 'int2', + nullable: false, + }) + quantity: number; + + @Column({ + type: 'float8', + nullable: false, + }) + total: number; + + @Column({ + type: 'float8', + nullable: false, + }) + balance: number; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} diff --git a/src/entity/asset_purchase_goods_receipt_good.ts b/src/entity/asset_purchase_goods_receipt_good.ts new file mode 100644 index 0000000..db3c0f9 --- /dev/null +++ b/src/entity/asset_purchase_goods_receipt_good.ts @@ -0,0 +1,78 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, JoinTable, ManyToOne, DeleteDateColumn } from "typeorm"; +import { AssetPurchase } from "./asset_purchase"; +import { AssetRequestOrder } from "./asset_request_order"; +import { AssetPurchaseGoodsReceipt } from "./asset_purchase_goods_receipt"; +import { AssetPurchaseRequestOrder } from "./asset_purchase_request_order"; +import { AssetRequestOrderGood } from "./asset_request_order_good"; +import { AssetGood } from "./asset_good"; + + +@Entity("asset_purchase_good_receipt_goods") +export class AssetPurchaseGoodReceiptGood { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => AssetPurchaseGoodsReceipt, { onDelete: 'RESTRICT' }) + @JoinTable() + purchase_goods_receipt: AssetPurchaseGoodsReceipt; + + @ManyToOne(() => AssetPurchase, { onDelete: 'RESTRICT' }) + @JoinTable() + purchase: AssetPurchase; + + @ManyToOne(() => AssetPurchaseRequestOrder, { onDelete: 'RESTRICT' }) + @JoinTable() + purchase_request_order: AssetPurchaseRequestOrder; + + @ManyToOne(() => AssetRequestOrder, { onDelete: 'RESTRICT' }) + @JoinTable() + request_order: AssetRequestOrder; + + @ManyToOne(() => AssetRequestOrderGood, { onDelete: 'RESTRICT' }) + @JoinTable() + request_order_good: AssetRequestOrderGood; + + @ManyToOne(() => AssetGood, { onDelete: 'RESTRICT' }) + @JoinTable() + good: AssetGood; + + @Column({ + type: 'int2', + nullable: false, + }) + quantity: number; + + @Column({ + type: 'float8', + nullable: false, + }) + total: number; + + @Column({ + type: 'float8', + nullable: false, + }) + balance: number; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} + diff --git a/src/entity/asset_purchase_invoice.ts b/src/entity/asset_purchase_invoice.ts new file mode 100644 index 0000000..402b930 --- /dev/null +++ b/src/entity/asset_purchase_invoice.ts @@ -0,0 +1,108 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, JoinTable, ManyToOne, DeleteDateColumn } from "typeorm"; +import { AssetPurchase } from "./asset_purchase"; +import { AssetRequestOrder } from "./asset_request_order"; +import { AssetPurchaseGoodsReceipt } from "./asset_purchase_goods_receipt"; +import { AssetPurchaseRequestOrder } from "./asset_purchase_request_order"; +import { AssetRequestOrderGood } from "./asset_request_order_good"; +import { AssetGood } from "./asset_good"; +import { AssetSupplier } from "./asset_supplier"; + + +@Entity("asset_purchase_invoice") +export class AssetPurchaseInvoice { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => AssetPurchase, { onDelete: 'RESTRICT' }) + @JoinTable() + purchase: AssetPurchase; + + @ManyToOne(() => AssetPurchaseGoodsReceipt, { onDelete: 'RESTRICT' }) + @JoinTable() + purchase_goods_receipt: AssetPurchaseGoodsReceipt + + @ManyToOne(() => AssetSupplier, { onDelete: 'RESTRICT' }) + @JoinTable() + supplier: AssetSupplier; + + @Column({ type: "varchar", length: 255, unique: true }) + code: string; + + @Column({ nullable: false }) + invoice_at: Date; + + @Column({ nullable: false }) + received_at: Date; + + @Column({ nullable: false }) + due_at: Date; + + @Column({ + type: 'float8', + nullable: false, + }) + amount: number; + + @Column({ + type: 'float8', + nullable: false, + }) + discount: number; + + @Column({ + type: 'float8', + nullable: false, + }) + tax: number; + + @Column({ + type: 'float8', + nullable: false, + }) + total: number; + + @Column({ type: "varchar", length: 255 }) + status: string; + + @Column({ + nullable: true, + length: 4096 + }) + file: string; + + @Column({ nullable: true }) + payment_at: Date; + + @Column({ + nullable: true, + length: 4096 + }) + payment_proof: string; + + @Column({ + nullable: true, + length: 255 + }) + payment_by: string; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} \ No newline at end of file diff --git a/src/entity/asset_purchase_purchase_bond_realization_good.ts b/src/entity/asset_purchase_purchase_bond_realization_good.ts new file mode 100644 index 0000000..ee9c20d --- /dev/null +++ b/src/entity/asset_purchase_purchase_bond_realization_good.ts @@ -0,0 +1,84 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, JoinTable, ManyToOne, DeleteDateColumn } from "typeorm"; +import { AssetPurchase } from "./asset_purchase"; +import { AssetRequestOrder } from "./asset_request_order"; +import { AssetPurchaseGoodsReceipt } from "./asset_purchase_goods_receipt"; +import { AssetPurchaseRequestOrder } from "./asset_purchase_request_order"; +import { AssetRequestOrderGood } from "./asset_request_order_good"; +import { AssetGood } from "./asset_good"; + + +@Entity("asset_purchase_purchase_bond_realization_goods") +export class AssetPurchaseBondRealizationGood { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => AssetPurchaseGoodsReceipt, { onDelete: 'RESTRICT' }) + @JoinTable() + purchase_goods_receipt: AssetPurchaseGoodsReceipt; + + @ManyToOne(() => AssetPurchase, { onDelete: 'RESTRICT' }) + @JoinTable() + purchase: AssetPurchase; + + @ManyToOne(() => AssetPurchaseRequestOrder, { onDelete: 'RESTRICT' }) + @JoinTable() + purchase_request_order: AssetPurchaseRequestOrder; + + @ManyToOne(() => AssetRequestOrder, { onDelete: 'RESTRICT' }) + @JoinTable() + request_order: AssetRequestOrder; + + @ManyToOne(() => AssetRequestOrderGood, { onDelete: 'RESTRICT' }) + @JoinTable() + request_order_good: AssetRequestOrderGood; + + @ManyToOne(() => AssetGood, { onDelete: 'RESTRICT' }) + @JoinTable() + good: AssetGood; + + @Column({ + type: 'int2', + nullable: false, + }) + quantity: number; + + @Column({ + type: 'float8', + nullable: false, + }) + price: number; + + @Column({ + type: 'float8', + nullable: false, + }) + total: number; + + @Column({ + type: 'float8', + nullable: false, + }) + difference: number; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} + diff --git a/src/entity/asset_purchase_realization.ts b/src/entity/asset_purchase_realization.ts new file mode 100644 index 0000000..ad943ac --- /dev/null +++ b/src/entity/asset_purchase_realization.ts @@ -0,0 +1,63 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, JoinTable, ManyToOne, DeleteDateColumn } from "typeorm"; +import { AssetPurchase } from "./asset_purchase"; +import { AssetRequestOrder } from "./asset_request_order"; +import { AssetPurchaseGoodsReceipt } from "./asset_purchase_goods_receipt"; +import { AssetPurchaseRequestOrder } from "./asset_purchase_request_order"; +import { AssetRequestOrderGood } from "./asset_request_order_good"; +import { AssetGood } from "./asset_good"; + + +@Entity("asset_purchase_realizations") +export class AssetPurchaseRealization { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => AssetPurchase, { onDelete: 'RESTRICT' }) + @JoinTable() + purchase: AssetPurchase; + + @Column({ type: "varchar", length: 255, unique: true }) + code: string; + + @Column({ nullable: false }) + realization_at: Date; + + @Column({ + type: 'int2', + nullable: false, + }) + quantity: number; + + @Column({ + type: 'float8', + nullable: false, + }) + total: number; + + @Column({ + type: 'float8', + nullable: false, + }) + difference: number; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ type: "varchar", length: 255 }) + created_by: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + updated_by: string; + + @Column({ type: "varchar", length: 255, nullable: true }) + deleted_by: string; +} \ No newline at end of file diff --git a/src/entity/asset_purchase_request_order.ts b/src/entity/asset_purchase_request_order.ts new file mode 100644 index 0000000..1444ed2 --- /dev/null +++ b/src/entity/asset_purchase_request_order.ts @@ -0,0 +1,29 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, JoinTable, ManyToOne, DeleteDateColumn } from "typeorm"; +import { AssetPurchase } from "./asset_purchase"; +import { AssetRequestOrder } from "./asset_request_order"; + +@Entity("asset_purchase_request_orders") +export class AssetPurchaseRequestOrder { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => AssetPurchase, { onDelete: 'RESTRICT' }) + @JoinTable() + purchase: AssetPurchase; + + @ManyToOne(() => AssetRequestOrder, { onDelete: 'RESTRICT' }) + @JoinTable() + request_order: AssetRequestOrder; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; +} \ No newline at end of file diff --git a/src/entity/asset_supplier.ts b/src/entity/asset_supplier.ts index c084f97..e3b4081 100644 --- a/src/entity/asset_supplier.ts +++ b/src/entity/asset_supplier.ts @@ -12,7 +12,7 @@ export class AssetSupplier { @PrimaryGeneratedColumn('uuid') id: string; - @Column({ length: 256, nullable: true }) + @Column({ length: 256, nullable: true, unique: true }) code: string; @Column({ length: 256, nullable: true }) diff --git a/src/index.ts b/src/index.ts index 822b0b8..554fa9e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -65,6 +65,13 @@ import { AssetGood } from './entity/asset_good' import { AssetRequestOrderCategory } from './entity/asset_request_order_category' import { AssetRequestOrder } from './entity/asset_request_order' import { AssetRequestOrderGood } from './entity/asset_request_order_good' +import { AssetPurchase } from './entity/asset_purchase' +import { AssetPurchaseRequestOrder } from './entity/asset_purchase_request_order' +import { AssetPurchaseGoodsReceipt } from './entity/asset_purchase_goods_receipt' +import { AssetPurchaseGoodReceiptGood } from './entity/asset_purchase_goods_receipt_good' +import { AssetPurchaseRealization } from './entity/asset_purchase_realization' +import { AssetPurchaseBondRealizationGood } from './entity/asset_purchase_purchase_bond_realization_good' +import { AssetPurchaseInvoice } from './entity/asset_purchase_invoice' export { User, // @@ -140,5 +147,12 @@ export { AssetGood, AssetRequestOrderCategory, AssetRequestOrder, - AssetRequestOrderGood + AssetRequestOrderGood, + AssetPurchase, + AssetPurchaseRequestOrder, + AssetPurchaseGoodsReceipt, + AssetPurchaseGoodReceiptGood, + AssetPurchaseRealization, + AssetPurchaseBondRealizationGood, + AssetPurchaseInvoice };