From 451cdbe42be8cf59807588939a599c3e05de1f1a Mon Sep 17 00:00:00 2001 From: "cyril.tsui" Date: Tue, 27 May 2025 18:14:30 +0800 Subject: [PATCH] [Create table from data dict] create delivery order, item category, job planning log, job order, stock take, suggest pick lot, supervision approval, company --- .../deliveryOrder/entity/DeliveryOrder.kt | 48 ++++++++++ .../deliveryOrder/entity/DeliveryOrderLine.kt | 37 ++++++++ .../entity/DeliveryOrderLineRepository.kt | 8 ++ .../entity/DeliveryOrderRepository.kt | 8 ++ .../fpsms/modules/jobOrder/entity/JobOrder.kt | 65 +++++++++++++ .../jobOrder/entity/JobOrderMaterial.kt | 42 ++++++++ .../entity/JobOrderMaterialRepository.kt | 8 ++ .../jobOrder/entity/JobOrderProcess.kt | 39 ++++++++ .../jobOrder/entity/JobOrderProcessDetail.kt | 38 ++++++++ .../entity/JobOrderProcessDetailRepository.kt | 8 ++ .../entity/JobOrderProcessRepository.kt | 8 ++ .../jobOrder/entity/JobOrderRepository.kt | 8 ++ .../jobPlanningLog/entity/JobPlanningLog.kt | 64 +++++++++++++ .../entity/JobPlanningLogRepository.kt | 8 ++ .../fpsms/modules/master/entity/Company.kt | 50 ++++++++++ .../master/entity/CompanyRepository.kt | 8 ++ .../modules/master/entity/ItemCategory.kt | 15 +++ .../master/entity/ItemCategoryRepository.kt | 8 ++ .../fpsms/modules/stock/entity/StockTake.kt | 39 ++++++++ .../modules/stock/entity/StockTakeLine.kt | 45 +++++++++ .../stock/entity/StockTakeLineRepository.kt | 8 ++ .../stock/entity/StockTakeRepository.kt | 8 ++ .../stock/entity/SuggestPickLotRepository.kt | 8 ++ .../modules/stock/entity/SuggestedPickLot.kt | 30 ++++++ .../stock/entity/SupervisionApprovalLog.kt | 43 +++++++++ .../SupervisionApprovalLogRepository.kt | 8 ++ .../02_create_delivery_order.sql | 45 +++++++++ .../03_create_item_category.sql | 15 +++ .../04_create_job_planning_log.sql | 30 ++++++ .../20250527_01_cyril/05_create_job_order.sql | 95 +++++++++++++++++++ .../06_create_stock_take.sql | 44 +++++++++ .../07_create_suggested_pick_lot.sql | 21 ++++ .../08_create_supervision_approval_log.sql | 24 +++++ .../20250527_01_cyril/09_create_company.sql | 23 +++++ 34 files changed, 956 insertions(+) create mode 100644 src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrder.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderLine.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderLineRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrder.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderMaterial.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderMaterialRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcess.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcessDetail.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcessDetailRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcessRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/jobPlanningLog/entity/JobPlanningLog.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/jobPlanningLog/entity/JobPlanningLogRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/master/entity/Company.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/master/entity/CompanyRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/master/entity/ItemCategory.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/master/entity/ItemCategoryRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/stock/entity/StockTake.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeLine.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeLineRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/stock/entity/SuggestPickLotRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/stock/entity/SuggestedPickLot.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLog.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLogRepository.kt create mode 100644 src/main/resources/db/changelog/changes/20250527_01_cyril/02_create_delivery_order.sql create mode 100644 src/main/resources/db/changelog/changes/20250527_01_cyril/03_create_item_category.sql create mode 100644 src/main/resources/db/changelog/changes/20250527_01_cyril/04_create_job_planning_log.sql create mode 100644 src/main/resources/db/changelog/changes/20250527_01_cyril/05_create_job_order.sql create mode 100644 src/main/resources/db/changelog/changes/20250527_01_cyril/06_create_stock_take.sql create mode 100644 src/main/resources/db/changelog/changes/20250527_01_cyril/07_create_suggested_pick_lot.sql create mode 100644 src/main/resources/db/changelog/changes/20250527_01_cyril/08_create_supervision_approval_log.sql create mode 100644 src/main/resources/db/changelog/changes/20250527_01_cyril/09_create_company.sql diff --git a/src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrder.kt b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrder.kt new file mode 100644 index 0000000..853b44a --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrder.kt @@ -0,0 +1,48 @@ +package com.ffii.fpsms.modules.deliveryOrder.entity + +import com.ffii.core.entity.BaseEntity +import com.ffii.fpsms.modules.master.entity.Shop +import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder +import com.ffii.fpsms.modules.user.entity.User +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size +import java.time.Instant + +@Entity +@Table(name = "delivery_order") +open class DeliveryOrder: BaseEntity() { + @ManyToOne + @JoinColumn(name = "purchaseOrderId") + open var purchaseOrder: PurchaseOrder? = null + + @Size(max = 100) + @NotNull + @Column(name = "code", nullable = false, length = 100) + open var code: String? = null + + @Size(max = 100) + @Column(name = "consoCode", length = 100) + open var consoCode: String? = null + + @Size(max = 500) + @Column(name = "remarks", length = 500) + open var remarks: String? = null + + @NotNull + @Column(name = "targetDate", nullable = false) + open var targetDate: Instant? = null + + @ManyToOne + @JoinColumn(name = "shopId") + open var shop: Shop? = null + + @Size(max = 30) + @NotNull + @Column(name = "status", nullable = false, length = 30) + open var status: String? = null + + @ManyToOne + @JoinColumn(name = "handlerId", referencedColumnName = "id") + open var handler: User? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderLine.kt b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderLine.kt new file mode 100644 index 0000000..2e55f21 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderLine.kt @@ -0,0 +1,37 @@ +package com.ffii.fpsms.modules.deliveryOrder.entity + +import com.ffii.core.entity.BaseEntity +import com.ffii.fpsms.modules.master.entity.Items +import com.ffii.fpsms.modules.master.entity.UomConversion +import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLine +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size +import java.math.BigDecimal + +@Entity +@Table(name = "delivery_order_line") +open class DeliveryOrderLine: BaseEntity() { + @ManyToOne + @JoinColumn(name = "purchaseOrderLineId") + open var purchaseOrderLine: PurchaseOrderLine? = null + + @NotNull + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "itemId", nullable = false) + open var item: Items? = null + + @NotNull + @Column(name = "qty", nullable = false, precision = 14, scale = 2) + open var qty: BigDecimal? = null + + @NotNull + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "uomId", nullable = false) + open var uom: UomConversion? = null + + @Size(max = 30) + @NotNull + @Column(name = "status", nullable = false, length = 30) + open var status: String? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderLineRepository.kt b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderLineRepository.kt new file mode 100644 index 0000000..1057b71 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderLineRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.deliveryOrder.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface DeliveryOrderLineRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderRepository.kt b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderRepository.kt new file mode 100644 index 0000000..93fbfa8 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/entity/DeliveryOrderRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.deliveryOrder.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface DeliveryOrderRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrder.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrder.kt new file mode 100644 index 0000000..0db9254 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrder.kt @@ -0,0 +1,65 @@ +package com.ffii.fpsms.modules.jobOrder.entity + +import com.ffii.core.entity.BaseEntity +import com.ffii.fpsms.modules.jobPlanningLog.entity.JobPlanningLog +import com.ffii.fpsms.modules.master.entity.Bom +import com.ffii.fpsms.modules.user.entity.User +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size +import java.math.BigDecimal +import java.time.LocalDateTime + +@Entity +@Table(name = "job_order") +open class JobOrder: BaseEntity() { + @Size(max = 100) + @NotNull + @Column(name = "code", nullable = false, length = 100) + open var code: String? = null + + @NotNull + @ManyToOne + @JoinColumn(name = "bomId", nullable = false) + open var bom: Bom? = null + + @Column(name = "planStart") + open var planStart: LocalDateTime? = null + + @Column(name = "actualStart") + open var actualStart: LocalDateTime? = null + + @Column(name = "planEnd") + open var planEnd: LocalDateTime? = null + + @Column(name = "actualEnd") + open var actualEnd: LocalDateTime? = null + + @Column(name = "reqQty", precision = 14, scale = 2) + open var reqQty: BigDecimal? = null + + @Column(name = "actualQty", precision = 14, scale = 2) + open var actualQty: BigDecimal? = null + + @Size(max = 100) + @NotNull + @Column(name = "status", nullable = false, length = 100) + open var status: String? = null + + @Size(max = 500) + @Column(name = "remarks", length = 500) + open var remarks: String? = null + + @Size(max = 20) + @NotNull + @Column(name = "type", nullable = false, length = 20) + open var type: String? = null + + @ManyToOne + @JoinColumn(name = "approverId", referencedColumnName = "id") + open var approver: User? = null + + @ManyToOne + @JoinColumn(name = "jobPlanningLogId") + open var jobPlanningLog: JobPlanningLog? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderMaterial.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderMaterial.kt new file mode 100644 index 0000000..a634f1e --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderMaterial.kt @@ -0,0 +1,42 @@ +package com.ffii.fpsms.modules.jobOrder.entity + +import com.ffii.core.entity.BaseEntity +import com.ffii.fpsms.modules.master.entity.Items +import com.ffii.fpsms.modules.master.entity.UomConversion +import com.ffii.fpsms.modules.stock.entity.InventoryLotLine +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import java.math.BigDecimal + +@Entity +@Table(name = "job_order_material") +open class JobOrderMaterial : BaseEntity() { + + @NotNull + @ManyToOne + @JoinColumn(name = "jopId", nullable = false) + open var jop: JobOrderProcess? = null + + @NotNull + @ManyToOne + @JoinColumn(name = "itemId", nullable = false) + open var item: Items? = null + + @NotNull + @Column(name = "qty", nullable = false, precision = 14, scale = 2) + open var qty: BigDecimal? = null + + @NotNull + @ManyToOne + @JoinColumn(name = "uomId", nullable = false) + open var uom: UomConversion? = null + + @ManyToOne + @JoinColumn(name = "inventoryLotLineId") + open var inventoryLotLine: InventoryLotLine? = null + + @NotNull + @ManyToOne + @JoinColumn(name = "joProcessDetailId", nullable = false) + open var joProcessDetail: JobOrderProcessDetail? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderMaterialRepository.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderMaterialRepository.kt new file mode 100644 index 0000000..11137ac --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderMaterialRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.jobOrder.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface JobOrderMaterialRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcess.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcess.kt new file mode 100644 index 0000000..4b6d817 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcess.kt @@ -0,0 +1,39 @@ +package com.ffii.fpsms.modules.jobOrder.entity + +import com.ffii.core.entity.BaseEntity +import com.ffii.fpsms.modules.master.entity.Process +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size +import java.time.LocalDateTime + +@Entity +@Table(name = "job_order_process") +open class JobOrderProcess : BaseEntity() { + @NotNull + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "joId", nullable = false) + open var jo: JobOrder? = null + + @NotNull + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "processId", nullable = false) + open var process: Process? = null + + @Column(name = "startTime") + open var startTime: LocalDateTime? = null + + @Column(name = "endTime") + open var endTime: LocalDateTime? = null + + @Size(max = 20) + @Column(name = "status", length = 20) + open var status: String? = null + + @Column(name = "seqNo") + open var seqNo: Long? = null + + @Size(max = 500) + @Column(name = "remarks", length = 500) + open var remarks: String? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcessDetail.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcessDetail.kt new file mode 100644 index 0000000..ac539be --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcessDetail.kt @@ -0,0 +1,38 @@ +package com.ffii.fpsms.modules.jobOrder.entity + +import com.ffii.core.entity.BaseEntity +import com.ffii.fpsms.modules.master.entity.Equipment +import com.ffii.fpsms.modules.user.entity.User +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size +import java.time.LocalDateTime + +@Entity +@Table(name = "job_order_process_detail") +open class JobOrderProcessDetail: BaseEntity() { + @NotNull + @ManyToOne + @JoinColumn(name = "jopId", nullable = false) + open var jop: JobOrderProcess? = null + + @NotNull + @ManyToOne + @JoinColumn(name = "equipmentId", nullable = false) + open var equipment: Equipment? = null + + @NotNull + @ManyToOne + @JoinColumn(name = "operatorId", nullable = false, referencedColumnName = "id") + open var operator: User? = null + + @Column(name = "operatingStart") + open var operatingStart: LocalDateTime? = null + + @Column(name = "operatingEnd") + open var operatingEnd: LocalDateTime? = null + + @Size(max = 500) + @Column(name = "remarks", length = 500) + open var remarks: String? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcessDetailRepository.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcessDetailRepository.kt new file mode 100644 index 0000000..519328e --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcessDetailRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.jobOrder.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface JobOrderProcessDetailRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcessRepository.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcessRepository.kt new file mode 100644 index 0000000..857aa3d --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderProcessRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.jobOrder.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface JobOrderProcessRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderRepository.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderRepository.kt new file mode 100644 index 0000000..4dc9510 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/entity/JobOrderRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.jobOrder.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface JobOrderRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/jobPlanningLog/entity/JobPlanningLog.kt b/src/main/java/com/ffii/fpsms/modules/jobPlanningLog/entity/JobPlanningLog.kt new file mode 100644 index 0000000..7493fb6 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/jobPlanningLog/entity/JobPlanningLog.kt @@ -0,0 +1,64 @@ +package com.ffii.fpsms.modules.jobPlanningLog.entity + +import com.ffii.core.entity.BaseEntity +import com.ffii.fpsms.modules.master.entity.Bom +import com.ffii.fpsms.modules.user.entity.User +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size +import java.math.BigDecimal +import java.time.Instant + +@Entity +@Table(name = "job_planning_log") +open class JobPlanningLog: BaseEntity() { + @Size(max = 100) + @NotNull + @Column(name = "code", nullable = false, length = 100) + open var code: String? = null + + @NotNull + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "bomId", nullable = false) + open var bom: Bom? = null + + @Column(name = "planStart") + open var planStart: Instant? = null + + @Column(name = "actualStart") + open var actualStart: Instant? = null + + @Column(name = "planEnd") + open var planEnd: Instant? = null + + @Column(name = "actualEnd") + open var actualEnd: Instant? = null + + @Column(name = "reqQty", precision = 14, scale = 2) + open var reqQty: BigDecimal? = null + + @Column(name = "actualQty", precision = 14, scale = 2) + open var actualQty: BigDecimal? = null + + @Size(max = 100) + @NotNull + @Column(name = "status", nullable = false, length = 100) + open var status: String? = null + + @Size(max = 500) + @Column(name = "remarks", length = 500) + open var remarks: String? = null + + @Size(max = 20) + @NotNull + @Column(name = "type", nullable = false, length = 20) + open var type: String? = null + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "approverId", referencedColumnName = "id") + open var approver: User? = null + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "lastLogId") + open var lastLog: JobPlanningLog? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/jobPlanningLog/entity/JobPlanningLogRepository.kt b/src/main/java/com/ffii/fpsms/modules/jobPlanningLog/entity/JobPlanningLogRepository.kt new file mode 100644 index 0000000..a0157cd --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/jobPlanningLog/entity/JobPlanningLogRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.jobPlanningLog.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface JobPlanningLogRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/Company.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/Company.kt new file mode 100644 index 0000000..d60c864 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/Company.kt @@ -0,0 +1,50 @@ +package com.ffii.fpsms.modules.master.entity + +import com.ffii.core.entity.BaseEntity +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.Table +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size + +@Entity +@Table(name = "company") +open class Company : BaseEntity() { + @Size(max = 100) + @NotNull + @Column(name = "code", nullable = false, length = 100) + open var code: String? = null + + @Size(max = 100) + @NotNull + @Column(name = "name", nullable = false, length = 100) + open var name: String? = null + + @Size(max = 100) + @Column(name = "brNo", length = 100) + open var brNo: String? = null + + @Size(max = 100) + @Column(name = "contactNo", length = 100) + open var contactNo: String? = null + + @Size(max = 100) + @Column(name = "email", length = 100) + open var email: String? = null + + @Size(max = 500) + @Column(name = "addr1", length = 500) + open var addr1: String? = null + + @Size(max = 500) + @Column(name = "addr2", length = 500) + open var addr2: String? = null + + @Size(max = 500) + @Column(name = "addr3", length = 500) + open var addr3: String? = null + + @Size(max = 500) + @Column(name = "addr4", length = 500) + open var addr4: String? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/CompanyRepository.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/CompanyRepository.kt new file mode 100644 index 0000000..8ec1199 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/CompanyRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.master.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface CompanyRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemCategory.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemCategory.kt new file mode 100644 index 0000000..e1c26c1 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemCategory.kt @@ -0,0 +1,15 @@ +package com.ffii.fpsms.modules.master.entity + +import com.ffii.core.entity.BaseEntity +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size + +@Entity +@Table(name = "item_category") +open class ItemCategory : BaseEntity() { + @Size(max = 50) + @NotNull + @Column(name = "name", nullable = false, length = 50) + open var name: String? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemCategoryRepository.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemCategoryRepository.kt new file mode 100644 index 0000000..cfada3e --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemCategoryRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.master.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface ItemCategoryRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTake.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTake.kt new file mode 100644 index 0000000..f0e5d70 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTake.kt @@ -0,0 +1,39 @@ +package com.ffii.fpsms.modules.stock.entity + +import com.ffii.core.entity.BaseEntity +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size +import java.time.LocalDateTime + +@Entity +@Table(name = "stock_take") +open class StockTake: BaseEntity() { + @Size(max = 50) + @NotNull + @Column(name = "code", nullable = false, length = 50) + open var code: String? = null + + @NotNull + @Column(name = "planStart", nullable = false) + open var planStart: LocalDateTime? = null + + @NotNull + @Column(name = "planEnd", nullable = false) + open var planEnd: LocalDateTime? = null + + @Column(name = "actualStart") + open var actualStart: LocalDateTime? = null + + @Column(name = "actualEnd") + open var actualEnd: LocalDateTime? = null + + @Size(max = 20) + @NotNull + @Column(name = "status", nullable = false, length = 20) + open var status: String? = null + + @Size(max = 500) + @Column(name = "remarks", length = 500) + open var remarks: String? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeLine.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeLine.kt new file mode 100644 index 0000000..9bbc03a --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeLine.kt @@ -0,0 +1,45 @@ +package com.ffii.fpsms.modules.stock.entity + +import com.ffii.core.entity.BaseEntity +import com.ffii.fpsms.modules.master.entity.UomConversion +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size +import java.math.BigDecimal +import java.time.LocalDateTime + +@Entity +@Table(name = "stock_take_line") +open class StockTakeLine : BaseEntity() { + @NotNull + @ManyToOne + @JoinColumn(name = "stockTakeId", nullable = false) + open var stockTake: StockTake? = null + + @NotNull + @ManyToOne + @JoinColumn(name = "inventoryLotLineId", nullable = false) + open var inventoryLotLine: InventoryLotLine? = null + + @Column(name = "initialQty", precision = 14, scale = 2) + open var initialQty: BigDecimal? = null + + @Column(name = "finalQty", precision = 14, scale = 2) + open var finalQty: BigDecimal? = null + + @ManyToOne + @JoinColumn(name = "uomId") + open var uom: UomConversion? = null + + @Column(name = "completeDate") + open var completeDate: LocalDateTime? = null + + @Size(max = 20) + @NotNull + @Column(name = "status", nullable = false, length = 20) + open var status: String? = null + + @Size(max = 500) + @Column(name = "remarks", length = 500) + open var remarks: String? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeLineRepository.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeLineRepository.kt new file mode 100644 index 0000000..72bc64f --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeLineRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.stock.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface StockTakeLineRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeRepository.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeRepository.kt new file mode 100644 index 0000000..0636461 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockTakeRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.stock.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface StockTakeRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/SuggestPickLotRepository.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/SuggestPickLotRepository.kt new file mode 100644 index 0000000..23ca200 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/SuggestPickLotRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.stock.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface SuggestPickLotRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/SuggestedPickLot.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/SuggestedPickLot.kt new file mode 100644 index 0000000..7ccdc8e --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/SuggestedPickLot.kt @@ -0,0 +1,30 @@ +package com.ffii.fpsms.modules.stock.entity + +import com.ffii.core.entity.BaseEntity +import com.ffii.fpsms.modules.master.entity.Warehouse +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size + +@Entity +@Table(name = "suggested_pick_lot") +open class SuggestedPickLot: BaseEntity() { + @Size(max = 100) + @NotNull + @Column(name = "type", nullable = false, length = 100) + open var type: String? = null + + @ManyToOne + @JoinColumn(name = "stockOutLineId") + open var stockOutLine: StockOutLine? = null + + @NotNull + @ManyToOne + @JoinColumn(name = "suggestedLotId", nullable = false) + open var suggestedLot: InventoryLot? = null + + @NotNull + @ManyToOne + @JoinColumn(name = "suggestedLocId", nullable = false) + open var suggestedLoc: Warehouse? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLog.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLog.kt new file mode 100644 index 0000000..5a8343e --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLog.kt @@ -0,0 +1,43 @@ +package com.ffii.fpsms.modules.stock.entity + +import com.ffii.core.entity.BaseEntity +import com.ffii.fpsms.modules.user.entity.User +import jakarta.persistence.* +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Size +import java.time.LocalDateTime + +@Entity +@Table(name = "supervision_approval_log") +open class SupervisionApprovalLog : BaseEntity() { + @NotNull + @ManyToOne + @JoinColumn(name = "personInCharge", nullable = false, referencedColumnName = "id") + open var personInCharge: User? = null + + @Size(max = 100) + @NotNull + @Column(name = "type", nullable = false, length = 100) + open var type: String? = null + + @ManyToOne + @JoinColumn(name = "stockInLineId") + open var stockInLine: StockInLine? = null + + @ManyToOne + @JoinColumn(name = "stockOutLineId") + open var stockOutLine: StockOutLine? = null + + @Column(name = "recordDate") + open var recordDate: LocalDateTime? = null + + @Size(max = 100) + @NotNull + @Column(name = "status", nullable = false, length = 100) + open var status: String? = null + + @Size(max = 500) + @NotNull + @Column(name = "reason", nullable = false, length = 500) + open var reason: String? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLogRepository.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLogRepository.kt new file mode 100644 index 0000000..7e42bd6 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLogRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.stock.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface SupervisionApprovalLogRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250527_01_cyril/02_create_delivery_order.sql b/src/main/resources/db/changelog/changes/20250527_01_cyril/02_create_delivery_order.sql new file mode 100644 index 0000000..d365090 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250527_01_cyril/02_create_delivery_order.sql @@ -0,0 +1,45 @@ +-- liquibase formatted sql +-- changeset cyril:delivery order + +CREATE TABLE `delivery_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', + `purchaseOrderId` INT NULL, + `code` varchar(100) NOT NULL, + `consoCode` varchar(100) NULL, + `remarks` varchar(500) NULL, + `targetDate` DATETIME NOT NULL, + `shopId` INT NULL, + `status` VARCHAR(30) NOT NULL DEFAULT 'pending', + `handlerId` INT NULL, + CONSTRAINT pk_delivery_order PRIMARY KEY (id), + CONSTRAINT `FK_DELIVERY_ORDER_ON_PURCHASEORDERID` FOREIGN KEY (`purchaseOrderId`) REFERENCES `purchase_order` (`id`), + CONSTRAINT `FK_DELIVERY_ORDER_ON_SHOPID` FOREIGN KEY (`shopId`) REFERENCES `shop` (`id`), + CONSTRAINT `FK_DELIVERY_ORDER_ON_HANDLERID` FOREIGN KEY (`handlerId`) REFERENCES `user` (`id`) +); + +CREATE TABLE `delivery_order_line` +( + `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', + `purchaseOrderLineId` INT NULL, + `itemId` INT NOT NULL, + `qty` DECIMAL(14, 2) NOT NULL, + `uomId` INT NOT NULL, + `status` VARCHAR(30) NOT NULL DEFAULT 'pending', + CONSTRAINT pk_delivery_order_line PRIMARY KEY (id), + CONSTRAINT `FK_DELIVERY_ORDER_LINE_ON_PURCHASEORDERLINEID` FOREIGN KEY (`purchaseOrderLineId`) REFERENCES `purchase_order_line` (`id`), + CONSTRAINT `FK_DELIVERY_ORDER_LINE_ON_ITEMID` FOREIGN KEY (`itemId`) REFERENCES `items` (`id`), + CONSTRAINT `FK_DELIVERY_ORDER_LINE_ON_UOMID` FOREIGN KEY (`uomId`) REFERENCES `uom_conversion` (`id`) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250527_01_cyril/03_create_item_category.sql b/src/main/resources/db/changelog/changes/20250527_01_cyril/03_create_item_category.sql new file mode 100644 index 0000000..44fe460 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250527_01_cyril/03_create_item_category.sql @@ -0,0 +1,15 @@ +-- liquibase formatted sql +-- changeset cyril:item category + +CREATE TABLE `item_category` +( + `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', + `name` VARCHAR(50) NOT NULL, + CONSTRAINT pk_item_category PRIMARY KEY (id) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250527_01_cyril/04_create_job_planning_log.sql b/src/main/resources/db/changelog/changes/20250527_01_cyril/04_create_job_planning_log.sql new file mode 100644 index 0000000..d64f0d7 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250527_01_cyril/04_create_job_planning_log.sql @@ -0,0 +1,30 @@ +-- liquibase formatted sql +-- changeset cyril:job planning log + +CREATE TABLE `job_planning_log` +( + `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(100) NOT NULL, + `bomId` INT NOT NULL, + `planStart` DATETIME NULL, + `actualStart` DATETIME NULL, + `planEnd` DATETIME NULL, + `actualEnd` DATETIME NULL, + `reqQty` DECIMAL(14, 2) NULL, + `actualQty` DECIMAL(14, 2) NULL, + `status` VARCHAR(100) NOT NULL default 'planning', + `remarks` VARCHAR(500) NULL, + `type` VARCHAR(20) NOT NULL default 'rough', + `approverId` INT NULL, + `lastLogId` INT NULL, + CONSTRAINT pk_job_planning_log PRIMARY KEY (id), + CONSTRAINT `FK_JOB_PLANNING_LOG_ON_BOMID` FOREIGN KEY (`bomId`) REFERENCES `bom` (`id`), + CONSTRAINT `FK_JOB_PLANNING_LOG_ON_APPROVERID` FOREIGN KEY (`approverId`) REFERENCES `user` (`id`), + CONSTRAINT `FK_JOB_PLANNING_LOG_ON_LASTLOGID` FOREIGN KEY (`lastLogId`) REFERENCES `job_planning_log` (`id`) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250527_01_cyril/05_create_job_order.sql b/src/main/resources/db/changelog/changes/20250527_01_cyril/05_create_job_order.sql new file mode 100644 index 0000000..b885b69 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250527_01_cyril/05_create_job_order.sql @@ -0,0 +1,95 @@ +-- liquibase formatted sql +-- changeset cyril:job order + +CREATE TABLE `job_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(100) NOT NULL, + `bomId` INT NOT NULL, + `planStart` DATETIME NULL, + `actualStart` DATETIME NULL, + `planEnd` DATETIME NULL, + `actualEnd` DATETIME NULL, + `reqQty` DECIMAL(14, 2) NULL, + `actualQty` DECIMAL(14, 2) NULL, + `status` VARCHAR(100) NOT NULL default 'planning', + `remarks` VARCHAR(500) NULL, + `type` VARCHAR(20) NOT NULL default 'rough', + `approverId` INT NULL, + `jobPlanningLogId` INt NULL, + CONSTRAINT pk_job_order PRIMARY KEY (id), + CONSTRAINT `FK_JOB_ORDER_ON_BOMID` FOREIGN KEY (`bomId`) REFERENCES `bom` (`id`), + CONSTRAINT `FK_JOB_ORDER_ON_APPROVERID` FOREIGN KEY (`approverId`) REFERENCES `user` (`id`), + CONSTRAINT `FK_JOB_ORDER_ON_JOBPLANNINGLOGID` FOREIGN KEY (`jobPlanningLogId`) REFERENCES `job_planning_log` (`id`) +); + +CREATE TABLE `job_order_process` +( + `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', + `joId` INT NOT NULL, + `processId` INT NOT NULL, + `startTime` DATETIME NULL, + `endTime` DATETIME NULL, + `status` VARCHAR(20) NULL, + `seqNo` INT NULL, + `remarks` VARCHAR(500) NULL, + CONSTRAINT pk_job_order_process PRIMARY KEY (id), + CONSTRAINT `FK_JOB_ORDER_PROCESS_ON_JOID` FOREIGN KEY (`joId`) REFERENCES `job_order` (`id`), + CONSTRAINT `FK_JOB_ORDER_PROCESS_ON_PROCESSID` FOREIGN KEY (`processId`) REFERENCES `process` (`id`) +); + +CREATE TABLE `job_order_process_detail` +( + `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', + `jopId` INT NOT NULL, + `equipmentId` INT NOT NULL, + `operatorId` INT NOT NULL, + `operatingStart` DATETIME NULL, + `operatingEnd` DATETIME NULL, + `remarks` VARCHAR(500) NULL, + CONSTRAINT pk_job_order_process_detail PRIMARY KEY (id), + CONSTRAINT `FK_JOB_ORDER_PROCESS_DETAIL_ON_JOPID` FOREIGN KEY (`jopId`) REFERENCES `job_order_process` (`id`), + CONSTRAINT `FK_JOB_ORDER_PROCESS_DETAIL_ON_EQUIPMENTID` FOREIGN KEY (`equipmentId`) REFERENCES `equipment` (`id`), + CONSTRAINT `FK_JOB_ORDER_PROCESS_DETAIL_ON_OPERATORID` FOREIGN KEY (`operatorId`) REFERENCES `user` (`id`) +); + +CREATE TABLE `job_order_material` +( + `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', + `jopId` INT NOT NULL, + `itemId` INT NOT NULL, + `qty` DECIMAL(14, 2) NOT NULL, + `uomId` INT NOT NULL, + `inventoryLotLineId` INT NULL, + `joProcessDetailId` INT NOT NULL, + CONSTRAINT pk_job_order_material PRIMARY KEY (id), + CONSTRAINT `FK_JOB_ORDER_MATERIAL_ON_JOPID` FOREIGN KEY (`jopId`) REFERENCES `job_order_process` (`id`), + CONSTRAINT `FK_JOB_ORDER_MATERIAL_ON_ITEMID` FOREIGN KEY (`itemId`) REFERENCES `items` (`id`), + CONSTRAINT `FK_JOB_ORDER_MATERIAL_ON_UOMID` FOREIGN KEY (`uomId`) REFERENCES `uom_conversion` (`id`), + CONSTRAINT `FK_JOB_ORDER_MATERIAL_ON_LOTLINEID` FOREIGN KEY (`inventoryLotLineId`) REFERENCES `inventory_lot_line` (`id`), + CONSTRAINT `FK_JOB_ORDER_MATERIAL_ON_JOPROCESSDETAILID` FOREIGN KEY (`joProcessDetailId`) REFERENCES `job_order_process_detail` (`id`) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250527_01_cyril/06_create_stock_take.sql b/src/main/resources/db/changelog/changes/20250527_01_cyril/06_create_stock_take.sql new file mode 100644 index 0000000..f0c61b4 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250527_01_cyril/06_create_stock_take.sql @@ -0,0 +1,44 @@ +-- liquibase formatted sql +-- changeset cyril:stock take + +CREATE TABLE `stock_take` +( + `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(50) NOT NULL, + `planStart` DATETIME NOT NULL, + `planEnd` DATETIME NOT NULL, + `actualStart` DATETIME NULL, + `actualEnd` DATETIME NULL, + `status` VARCHAR(20) NOT NULL DEFAULT 'pending', + `remarks` VARCHAR(500) NULL, + CONSTRAINT pk_stock_take PRIMARY KEY (id) +); + +CREATE TABLE `stock_take_line` +( + `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', + `stockTakeId` INT NOT NULL, + `inventoryLotLineId` INT NOT NULL, + `initialQty` DECIMAL(14, 2) NULL, + `finalQty` DECIMAL(14, 2) NULL, + `uomId` INT NULL, + `completeDate` DATETIME NULL, + `status` VARCHAR(20) NOT NULL DEFAULT 'pending', + `remarks` VARCHAR(500) NULL, + CONSTRAINT pk_stock_take_line PRIMARY KEY (id), + CONSTRAINT `FK_STOCK_TAKE_LINE_ON_STOCKTAKEID` FOREIGN KEY (`stockTakeId`) REFERENCES `stock_take` (`id`), + CONSTRAINT `FK_STOCK_TAKE_LINE_ON_INVENTORYLOTLINEID` FOREIGN KEY (`inventoryLotLineId`) REFERENCES `inventory_lot_line` (`id`), + CONSTRAINT `FK_STOCK_TAKE_LINE_ON_UOMID` FOREIGN KEY (`uomId`) REFERENCES `uom_conversion` (`id`) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250527_01_cyril/07_create_suggested_pick_lot.sql b/src/main/resources/db/changelog/changes/20250527_01_cyril/07_create_suggested_pick_lot.sql new file mode 100644 index 0000000..ff076fd --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250527_01_cyril/07_create_suggested_pick_lot.sql @@ -0,0 +1,21 @@ +-- liquibase formatted sql +-- changeset cyril:suggested pick lot + +CREATE TABLE `suggested_pick_lot` +( + `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', + `type` VARCHAR(100) NOT NULL, + `stockOutLineId` INT NULL, + `suggestedLotId` INT NOT NULL, + `suggestedLocId` INT NOT NULL, + CONSTRAINT pk_suggested_pick_lot PRIMARY KEY (id), + CONSTRAINT `FK_SUGGESTED_PICK_LOT_ON_STOCKOUTLINEID` FOREIGN KEY (`stockOutLineId`) REFERENCES `stock_out_line` (`id`), + CONSTRAINT `FK_SUGGESTED_PICK_LOT_ON_SUGGESTEDLOTID` FOREIGN KEY (`suggestedLotId`) REFERENCES `inventory_lot` (`id`), + CONSTRAINT `FK_SUGGESTED_PICK_LOT_ON_SUGGESTEDLOCID` FOREIGN KEY (`suggestedLocId`) REFERENCES `warehouse` (`id`) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250527_01_cyril/08_create_supervision_approval_log.sql b/src/main/resources/db/changelog/changes/20250527_01_cyril/08_create_supervision_approval_log.sql new file mode 100644 index 0000000..84e2122 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250527_01_cyril/08_create_supervision_approval_log.sql @@ -0,0 +1,24 @@ +-- liquibase formatted sql +-- changeset cyril:supervision approval log + +CREATE TABLE `supervision_approval_log` +( + `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', + `personInCharge` INT NOT NULL, + `type` VARCHAR(100) NOT NULL, + `stockInLineId` INT NULL, + `stockOutLineId` INT NULL, + `recordDate` DATETIME NULL, + `status` VARCHAR(100) NOT NULL, + `reason` VARCHAR(500) NOT NULL, + CONSTRAINT pk_supervision_approval_log PRIMARY KEY (id), + CONSTRAINT `FK_SUPERVISION_APPROVAL_LOG_ON_PERSONINCHARGE` FOREIGN KEY (`personInCharge`) REFERENCES `user` (`id`), + CONSTRAINT `FK_SUPERVISION_APPROVAL_LOG_ON_STOCKINLINEID` FOREIGN KEY (`stockInLineId`) REFERENCES `stock_in_line` (`id`), + CONSTRAINT `FK_SUPERVISION_APPROVAL_LOG_ON_STOCKOUTLINEID` FOREIGN KEY (`stockOutLineId`) REFERENCES `stock_out_line` (`id`) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250527_01_cyril/09_create_company.sql b/src/main/resources/db/changelog/changes/20250527_01_cyril/09_create_company.sql new file mode 100644 index 0000000..5b33e53 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250527_01_cyril/09_create_company.sql @@ -0,0 +1,23 @@ +-- liquibase formatted sql +-- changeset cyril:company + +CREATE TABLE `company` +( + `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(100) NOT NULL, + `name` VARCHAR(100) NOT NULL, + `brNo` VARCHAR(100) NULL, + `contactNo` VARCHAR(100) NULL, + `email` VARCHAR(100) NULL, + `addr1` VARCHAR(500) NULL, + `addr2` VARCHAR(500) NULL, + `addr3` VARCHAR(500) NULL, + `addr4` VARCHAR(500) NULL, + CONSTRAINT pk_company PRIMARY KEY (id) +); \ No newline at end of file