From 2ac0fabefc6681bffe7f2f14a1af450e66840fe3 Mon Sep 17 00:00:00 2001 From: "cyril.tsui" Date: Tue, 22 Apr 2025 12:41:24 +0800 Subject: [PATCH] add po --- .../purchaseOrder/entity/PurchaseOrder.kt | 42 ++++++++++++++++ .../purchaseOrder/entity/PurchaseOrderItem.kt | 48 +++++++++++++++++++ .../entity/PurchaseOrderItemRepository.kt | 8 ++++ .../entity/PurchaseOrderRepository.kt | 8 ++++ .../service/PurchaseOrderService.kt | 14 ++++++ .../20250414_01_cyril/01_purchase_order.sql | 46 ++++++++++++++++++ 6 files changed, 166 insertions(+) create mode 100644 src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrder.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderItem.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderItemRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt create mode 100644 src/main/resources/db/changelog/changes/20250414_01_cyril/01_purchase_order.sql diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrder.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrder.kt new file mode 100644 index 0000000..61ba98c --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrder.kt @@ -0,0 +1,42 @@ +package com.ffii.fpsms.modules.purchaseOrder.entity + +import com.ffii.core.entity.BaseEntity +import com.ffii.fpsms.modules.master.entity.Shop +import com.ffii.fpsms.modules.stock.entity.M18DataLog +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size +import java.time.LocalDate +import java.time.LocalDateTime + +@Entity +@Table(name = "purchase_order") +open class PurchaseOrder : BaseEntity() { + @Size(max = 30) + @NotNull + @Column(name = "code", nullable = false, length = 30) + open var code: String? = null + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "supplierId") + open var supplier: Shop? = null + + @Column(name = "orderDate") + open var orderDate: LocalDateTime? = null + + @Column(name = "estimatedCompleteDate") + open var estimatedCompleteDate: LocalDate? = null + + @Column(name = "completeDate") + open var completeDate: LocalDateTime? = null + + @Size(max = 10) + @NotNull + @Column(name = "status", nullable = false, length = 10) + open var status: String? = null + + @NotNull + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "m18DataLogId", nullable = false) + open var m18DataLog: M18DataLog? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderItem.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderItem.kt new file mode 100644 index 0000000..8a551c5 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderItem.kt @@ -0,0 +1,48 @@ +package com.ffii.fpsms.modules.purchaseOrder.entity + +import com.ffii.core.entity.BaseEntity +import com.ffii.fpsms.modules.master.entity.Items +import com.ffii.fpsms.modules.stock.entity.M18DataLog +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size +import java.math.BigDecimal + +@Entity +@Table(name = "purchase_order_item") +class PurchaseOrderItem : BaseEntity(){ + @NotNull + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "itemId", nullable = false) + open var item: Items? = null + + @Size(max = 20) + @NotNull + @Column(name = "itemNo", nullable = false, length = 20) + open var itemNo: String? = null + + @NotNull + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "purchaseOrderId", nullable = false) + open var purchaseOrder: PurchaseOrder? = null + + @Column(name = "qty", precision = 14, scale = 2) + open var qty: BigDecimal? = null + + @Column(name = "price", precision = 14, scale = 2) + open var price: BigDecimal? = null + + @Size(max = 5) + @Column(name = "priceUnit", length = 5) + open var priceUnit: String? = null + + @Size(max = 10) + @NotNull + @Column(name = "status", nullable = false, length = 10) + open var status: String? = null + + @NotNull + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "m18DataLogId", nullable = false) + open var m18DataLog: M18DataLog? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderItemRepository.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderItemRepository.kt new file mode 100644 index 0000000..b7a7258 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderItemRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.purchaseOrder.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface PurchaseOrderItemRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt new file mode 100644 index 0000000..7e28a40 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/PurchaseOrderRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.purchaseOrder.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface PurchaseOrderRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt new file mode 100644 index 0000000..3e9f960 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt @@ -0,0 +1,14 @@ +package com.ffii.fpsms.modules.purchaseOrder.service + +import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder +import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderRepository +import org.springframework.stereotype.Service + +@Service +open class PurchaseOrderService( + val purchaseOrderRepository: PurchaseOrderRepository +) { + open fun allPurchaseOrder(): List { + return purchaseOrderRepository.findAll() + } +} \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250414_01_cyril/01_purchase_order.sql b/src/main/resources/db/changelog/changes/20250414_01_cyril/01_purchase_order.sql new file mode 100644 index 0000000..8a90051 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250414_01_cyril/01_purchase_order.sql @@ -0,0 +1,46 @@ +--liquibase formatted sql + +--changeset cyril:purchase order +CREATE TABLE `purchase_order` +( + `id` INT NOT NULL AUTO_INCREMENT, + `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `createdBy` VARCHAR(30) NULL DEFAULT NULL, + `version` INT NOT NULL DEFAULT '0', + `modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `modifiedBy` VARCHAR(30) NULL DEFAULT NULL, + `deleted` TINYINT(1) NOT NULL DEFAULT '0', + `code` VARCHAR(30) NOT NULL, + `supplierId` INT NULL, + `orderDate` DATETIME NULL, + `estimatedCompleteDate` DATETIME NULL, + `completeDate` DATETIME NULL, + `status` VARCHAR(10) NOT NULL DEFAULT 'pending', + `m18DataLogId` INT NOT NULL, + CONSTRAINT pk_purchase_order PRIMARY KEY (id), + CONSTRAINT FK_PURCHASE_ORDER_ON_SUPPLIERID FOREIGN KEY (supplierId) REFERENCES shop (id), + CONSTRAINT FK_PURCHASE_ORDER_ON_M18DATALOGID FOREIGN KEY (m18DataLogId) REFERENCES m18_data_log (id) +); + +CREATE TABLE `purchase_order_item` +( + `id` INT NOT NULL AUTO_INCREMENT, + `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `createdBy` VARCHAR(30) NULL DEFAULT NULL, + `version` INT NOT NULL DEFAULT '0', + `modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `modifiedBy` VARCHAR(30) NULL DEFAULT NULL, + `deleted` TINYINT(1) NOT NULL DEFAULT '0', + `itemId` INT NOT NULL, + `itemNo` VARCHAR(20) NOT NULL, + `purchaseOrderId` INT NOT NULL, + `qty` DECIMAL(14, 2) NULL, + `price` DECIMAL(14, 2) NULL, + `priceUnit` VARCHAR(5) NULL, + `status` VARCHAR(10) NOT NULL DEFAULT 'pending', + `m18DataLogId` INT NOT NULL, + CONSTRAINT pk_purchase_order_line PRIMARY KEY (id), + CONSTRAINT FK_PURCHASE_ORDER_LINE_ON_ITEMID FOREIGN KEY (itemId) REFERENCES items (id), + CONSTRAINT FK_PURCHASE_ORDER_LINE_ON_PURCHASEORDERID FOREIGN KEY (purchaseOrderId) REFERENCES purchase_order (id), + CONSTRAINT FK_PURCHASE_ORDER_LINE_ON_M18DATALOGID FOREIGN KEY (m18DataLogId) REFERENCES m18_data_log (id) +); \ No newline at end of file