@@ -7,11 +7,14 @@ import com.ffii.fpsms.modules.jobOrder.entity.JobOrder | |||||
import com.ffii.fpsms.modules.master.entity.BomMaterial | import com.ffii.fpsms.modules.master.entity.BomMaterial | ||||
import com.ffii.fpsms.modules.pickOrder.enums.PickOrderStatus | import com.ffii.fpsms.modules.pickOrder.enums.PickOrderStatus | ||||
import com.ffii.fpsms.modules.pickOrder.enums.PickOrderStatusConverter | import com.ffii.fpsms.modules.pickOrder.enums.PickOrderStatusConverter | ||||
import com.ffii.fpsms.modules.pickOrder.enums.PickOrderType | |||||
import com.ffii.fpsms.modules.pickOrder.enums.PickOrderTypeConverter | |||||
import com.ffii.fpsms.modules.user.entity.User | import com.ffii.fpsms.modules.user.entity.User | ||||
import jakarta.persistence.* | import jakarta.persistence.* | ||||
import jakarta.validation.constraints.NotNull | import jakarta.validation.constraints.NotNull | ||||
import jakarta.validation.constraints.Size | import jakarta.validation.constraints.Size | ||||
import org.hibernate.annotations.Formula | import org.hibernate.annotations.Formula | ||||
import java.time.Instant | |||||
import java.time.LocalDateTime | import java.time.LocalDateTime | ||||
@Entity | @Entity | ||||
@@ -41,8 +44,9 @@ open class PickOrder: BaseEntity<Long>() { | |||||
open var completeDate: LocalDateTime? = null | open var completeDate: LocalDateTime? = null | ||||
@Size(max = 30) | @Size(max = 30) | ||||
@Convert(converter = PickOrderTypeConverter::class) | |||||
@Column(name = "type", length = 30) | @Column(name = "type", length = 30) | ||||
open var type: String? = null | |||||
open var type: PickOrderType? = null | |||||
@NotNull | @NotNull | ||||
@Convert(converter = PickOrderStatusConverter::class) | @Convert(converter = PickOrderStatusConverter::class) | ||||
@@ -56,4 +60,11 @@ open class PickOrder: BaseEntity<Long>() { | |||||
@JsonManagedReference | @JsonManagedReference | ||||
@OneToMany(mappedBy = "pickOrder", cascade = [CascadeType.ALL], orphanRemoval = true) | @OneToMany(mappedBy = "pickOrder", cascade = [CascadeType.ALL], orphanRemoval = true) | ||||
open var pickOrderLines: MutableList<PickOrderLine> = mutableListOf() | open var pickOrderLines: MutableList<PickOrderLine> = mutableListOf() | ||||
@Column(name = "releasedDate") | |||||
open var releasedDate: LocalDateTime? = null | |||||
@ManyToOne | |||||
@JoinColumn(name = "assignTo", referencedColumnName = "id") | |||||
open var assignTo: User? = null | |||||
} | } |
@@ -1,8 +1,12 @@ | |||||
package com.ffii.fpsms.modules.pickOrder.entity | package com.ffii.fpsms.modules.pickOrder.entity | ||||
import com.fasterxml.jackson.annotation.JsonBackReference | |||||
import com.fasterxml.jackson.annotation.JsonManagedReference | |||||
import com.ffii.core.entity.BaseEntity | import com.ffii.core.entity.BaseEntity | ||||
import com.ffii.fpsms.modules.master.entity.Items | import com.ffii.fpsms.modules.master.entity.Items | ||||
import com.ffii.fpsms.modules.master.entity.UomConversion | import com.ffii.fpsms.modules.master.entity.UomConversion | ||||
import com.ffii.fpsms.modules.stock.entity.StockOutLine | |||||
import com.ffii.fpsms.modules.stock.entity.SuggestedPickLot | |||||
import jakarta.persistence.* | import jakarta.persistence.* | ||||
import jakarta.validation.constraints.NotNull | import jakarta.validation.constraints.NotNull | ||||
import jakarta.validation.constraints.Size | import jakarta.validation.constraints.Size | ||||
@@ -12,6 +16,7 @@ import java.math.BigDecimal | |||||
@Table(name = "pick_order_line") | @Table(name = "pick_order_line") | ||||
open class PickOrderLine : BaseEntity<Long>() { | open class PickOrderLine : BaseEntity<Long>() { | ||||
@JsonBackReference | |||||
@NotNull | @NotNull | ||||
@ManyToOne | @ManyToOne | ||||
@JoinColumn(name = "poId", nullable = false) | @JoinColumn(name = "poId", nullable = false) | ||||
@@ -35,4 +40,12 @@ open class PickOrderLine : BaseEntity<Long>() { | |||||
@NotNull | @NotNull | ||||
@Column(name = "status", nullable = false, length = 30) | @Column(name = "status", nullable = false, length = 30) | ||||
open var status: String? = null | open var status: String? = null | ||||
@JsonManagedReference | |||||
@OneToMany(mappedBy = "pickOrderLine", cascade = [CascadeType.ALL], orphanRemoval = true) | |||||
open var stockOutLines: MutableList<StockOutLine> = mutableListOf() | |||||
@JsonManagedReference | |||||
@OneToMany(mappedBy = "pickOrderLine", cascade = [CascadeType.ALL], orphanRemoval = true) | |||||
open var suggestedPickLots: MutableList<SuggestedPickLot> = mutableListOf() | |||||
} | } |
@@ -1,7 +1,9 @@ | |||||
package com.ffii.fpsms.modules.stock.entity | package com.ffii.fpsms.modules.stock.entity | ||||
import com.fasterxml.jackson.annotation.JsonBackReference | |||||
import com.ffii.core.entity.BaseEntity | import com.ffii.core.entity.BaseEntity | ||||
import com.ffii.fpsms.modules.master.entity.Items | import com.ffii.fpsms.modules.master.entity.Items | ||||
import com.ffii.fpsms.modules.pickOrder.entity.PickOrderLine | |||||
import jakarta.persistence.* | import jakarta.persistence.* | ||||
import jakarta.validation.constraints.NotNull | import jakarta.validation.constraints.NotNull | ||||
import java.time.LocalDateTime | import java.time.LocalDateTime | ||||
@@ -37,4 +39,9 @@ open class StockOutLine: BaseEntity<Long>() { | |||||
@Column(name = "pickerId") | @Column(name = "pickerId") | ||||
open var pickerId: Long? = null | open var pickerId: Long? = null | ||||
@JsonBackReference | |||||
@ManyToOne | |||||
@JoinColumn(name = "pickOrderLineId") | |||||
open var pickOrderLine: PickOrderLine? = null | |||||
} | } |
@@ -1,30 +1,42 @@ | |||||
package com.ffii.fpsms.modules.stock.entity | package com.ffii.fpsms.modules.stock.entity | ||||
import com.fasterxml.jackson.annotation.JsonBackReference | |||||
import com.ffii.core.entity.BaseEntity | import com.ffii.core.entity.BaseEntity | ||||
import com.ffii.fpsms.modules.master.entity.Warehouse | import com.ffii.fpsms.modules.master.entity.Warehouse | ||||
import com.ffii.fpsms.modules.pickOrder.entity.PickOrderLine | |||||
import com.ffii.fpsms.modules.stock.enums.SuggestedPickLotType | |||||
import com.ffii.fpsms.modules.stock.enums.SuggestedPickLotTypeConverter | |||||
import jakarta.persistence.* | import jakarta.persistence.* | ||||
import jakarta.validation.constraints.NotNull | import jakarta.validation.constraints.NotNull | ||||
import jakarta.validation.constraints.Size | import jakarta.validation.constraints.Size | ||||
import java.math.BigDecimal | |||||
@Entity | @Entity | ||||
@Table(name = "suggested_pick_lot") | @Table(name = "suggested_pick_lot") | ||||
open class SuggestedPickLot: BaseEntity<Long>() { | open class SuggestedPickLot: BaseEntity<Long>() { | ||||
@Size(max = 100) | |||||
@NotNull | @NotNull | ||||
@Convert(converter = SuggestedPickLotTypeConverter::class) | |||||
@Column(name = "type", nullable = false, length = 100) | @Column(name = "type", nullable = false, length = 100) | ||||
open var type: String? = null | |||||
open var type: SuggestedPickLotType? = null | |||||
@JsonBackReference | |||||
@ManyToOne | @ManyToOne | ||||
@JoinColumn(name = "stockOutLineId") | @JoinColumn(name = "stockOutLineId") | ||||
open var stockOutLine: StockOutLine? = null | open var stockOutLine: StockOutLine? = null | ||||
@NotNull | |||||
@JsonBackReference | |||||
@ManyToOne | @ManyToOne | ||||
@JoinColumn(name = "suggestedLotId", nullable = false) | |||||
open var suggestedLot: InventoryLot? = null | |||||
@JoinColumn(name = "suggestedLotLineId", nullable = false) | |||||
open var suggestedLotLine: InventoryLotLine? = null | |||||
@NotNull | |||||
@JsonBackReference | |||||
@ManyToOne | @ManyToOne | ||||
@JoinColumn(name = "suggestedLocId", nullable = false) | |||||
open var suggestedLoc: Warehouse? = null | |||||
@JoinColumn(name = "pickOrderLineId") | |||||
open var pickOrderLine: PickOrderLine? = null | |||||
@Column(name = "qty", precision = 14, scale = 2) | |||||
open var qty: BigDecimal? = null | |||||
@Column(name = "pickSuggested") | |||||
open var pickSuggested: Boolean? = null | |||||
} | } |
@@ -0,0 +1,6 @@ | |||||
package com.ffii.fpsms.modules.stock.enums | |||||
enum class SuggestedPickLotType(val value: String) { | |||||
PICK_ORDER ("po"), | |||||
DELIVERY_ORDER ("do"), | |||||
} |
@@ -0,0 +1,18 @@ | |||||
package com.ffii.fpsms.modules.stock.enums | |||||
import jakarta.persistence.AttributeConverter | |||||
import jakarta.persistence.Converter | |||||
// Suggested Pick Lot Type | |||||
@Converter(autoApply = true) | |||||
class SuggestedPickLotTypeConverter : AttributeConverter<SuggestedPickLotType, String>{ | |||||
override fun convertToDatabaseColumn(status: SuggestedPickLotType?): String? { | |||||
return status?.value | |||||
} | |||||
override fun convertToEntityAttribute(value: String?): SuggestedPickLotType? { | |||||
return value?.let { v -> | |||||
SuggestedPickLotType.entries.find { it.value == v } | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,14 @@ | |||||
-- liquibase formatted sql | |||||
-- changeset cyril:update_pick_order | |||||
ALTER TABLE `pick_order` | |||||
ADD COLUMN `releasedDate` DATETIME NULL DEFAULT NULL AFTER `targetDate`, | |||||
ADD COLUMN `assignTo` INT NULL DEFAULT NULL AFTER `releasedBy`, | |||||
ADD INDEX `FK_PICK_ORDER_ON_ASSIGNTO` (`assignTo` ASC) VISIBLE; | |||||
; | |||||
ALTER TABLE `pick_order` | |||||
ADD CONSTRAINT `FK_PICK_ORDER_ON_ASSIGNTO` | |||||
FOREIGN KEY (`assignTo`) | |||||
REFERENCES `user` (`id`) | |||||
ON DELETE RESTRICT | |||||
ON UPDATE RESTRICT; |
@@ -0,0 +1,21 @@ | |||||
-- liquibase formatted sql | |||||
-- changeset cyril:update_suggested_pick_lot | |||||
ALTER TABLE `suggested_pick_lot` | |||||
DROP FOREIGN KEY `FK_SUGGESTED_PICK_LOT_ON_SUGGESTEDLOTLINEID`; | |||||
ALTER TABLE `suggested_pick_lot` | |||||
ADD COLUMN `pickOrderLineId` INT NULL AFTER `suggestedLotLineId`, | |||||
ADD COLUMN `qty` DECIMAL(14,2) NULL AFTER `pickOrderLineId`, | |||||
ADD COLUMN `pickSuggested` TINYINT(1) NULL AFTER `qty`, | |||||
CHANGE COLUMN `suggestedLotLineId` `suggestedLotLineId` INT NULL , | |||||
ADD INDEX `FK_SUGGESTED_PICK_LOT_ON_PICKORDERLINEID` (`pickOrderLineId` ASC) VISIBLE; | |||||
; | |||||
ALTER TABLE `suggested_pick_lot` | |||||
ADD CONSTRAINT `FK_SUGGESTED_PICK_LOT_ON_SUGGESTEDLOTLINEID` | |||||
FOREIGN KEY (`suggestedLotLineId`) | |||||
REFERENCES `inventory_lot_line` (`id`), | |||||
ADD CONSTRAINT `FK_SUGGESTED_PICK_LOT_ON_PICKORDERLINEID` | |||||
FOREIGN KEY (`pickOrderLineId`) | |||||
REFERENCES `pick_order_line` (`id`) | |||||
ON DELETE RESTRICT | |||||
ON UPDATE RESTRICT; |
@@ -0,0 +1,13 @@ | |||||
-- liquibase formatted sql | |||||
-- changeset cyril:update_stock_out_line | |||||
ALTER TABLE `stock_out_line` | |||||
ADD COLUMN `pickOrderLineId` INT NULL DEFAULT NULL AFTER `stockOutId`, | |||||
ADD INDEX `FK_STOCKOUT_LINE_PICKORDERLINE_ID_idx` (`pickOrderLineId` ASC) VISIBLE; | |||||
; | |||||
ALTER TABLE `stock_out_line` | |||||
ADD CONSTRAINT `FK_STOCKOUT_LINE_PICKORDERLINE_ID` | |||||
FOREIGN KEY (`pickOrderLineId`) | |||||
REFERENCES `pick_order_line` (`id`) | |||||
ON DELETE NO ACTION | |||||
ON UPDATE NO ACTION; |