| @@ -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<Long>() { | |||||
| @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 | |||||
| } | |||||
| @@ -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<Long>(){ | |||||
| @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 | |||||
| } | |||||
| @@ -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<PurchaseOrderItem, Long> { | |||||
| } | |||||
| @@ -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<PurchaseOrder, Long> { | |||||
| } | |||||
| @@ -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<PurchaseOrder> { | |||||
| return purchaseOrderRepository.findAll() | |||||
| } | |||||
| } | |||||
| @@ -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) | |||||
| ); | |||||