Pārlūkot izejas kodu

add stock in

create_edit_user
cyril.tsui pirms 4 mēnešiem
vecāks
revīzija
c50f165949
19 mainītis faili ar 488 papildinājumiem un 0 dzēšanām
  1. +63
    -0
      src/main/java/com/ffii/fpsms/modules/master/entity/Shop.kt
  2. +8
    -0
      src/main/java/com/ffii/fpsms/modules/master/entity/ShopRepository.kt
  3. +32
    -0
      src/main/java/com/ffii/fpsms/modules/master/entity/Warehouse.kt
  4. +8
    -0
      src/main/java/com/ffii/fpsms/modules/master/entity/WarehouseRepository.kt
  5. +15
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/Inventory.kt
  6. +25
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/InventoryLotNo.kt
  7. +8
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/InventoryLotNoRepository.kt
  8. +33
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/M18DataLog.kt
  9. +8
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/M18DataLogRepository.kt
  10. +50
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/StockIn.kt
  11. +64
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLine.kt
  12. +8
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLineRepository.kt
  13. +8
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/StockInRepository.kt
  14. +10
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/enum/StockInLineStatus.kt
  15. +7
    -0
      src/main/java/com/ffii/fpsms/modules/stock/entity/enum/StockInStatus.kt
  16. +43
    -0
      src/main/resources/db/changelog/changes/20250409_01_cyril/01_master_data.sql
  17. +18
    -0
      src/main/resources/db/changelog/changes/20250409_01_cyril/02_m18_data_log.sql
  18. +55
    -0
      src/main/resources/db/changelog/changes/20250409_01_cyril/03_stock_in.sql
  19. +25
    -0
      src/main/resources/db/changelog/changes/20250409_01_cyril/04_inventory.sql

+ 63
- 0
src/main/java/com/ffii/fpsms/modules/master/entity/Shop.kt Parādīt failu

@@ -0,0 +1,63 @@
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 = "shop")
open class Shop : BaseEntity<Long>() {

@Size(max = 30)
@NotNull
@Column(name = "code", nullable = false, length = 30)
open var code: String? = null

@Size(max = 30)
@NotNull
@Column(name = "name", nullable = false, length = 30)
open var name: String? = null

@Size(max = 30)
@Column(name = "brNo", length = 30)
open var brNo: String? = null

@Size(max = 30)
@Column(name = "contactNo", length = 30)
open var contactNo: String? = null

@Size(max = 30)
@Column(name = "contactEmail", length = 30)
open var contactEmail: String? = null

@Size(max = 30)
@Column(name = "contactName", length = 30)
open var contactName: String? = null

@Size(max = 30)
@Column(name = "addr1", length = 30)
open var addr1: String? = null

@Size(max = 30)
@Column(name = "addr2", length = 30)
open var addr2: String? = null

@Size(max = 30)
@Column(name = "addr3", length = 30)
open var addr3: String? = null

@Size(max = 30)
@Column(name = "addr4", length = 30)
open var addr4: String? = null

@Size(max = 30)
@Column(name = "district", length = 30)
open var district: String? = null

@Size(max = 10)
@Column(name = "type", length = 10)
open var type: String? = null
}

+ 8
- 0
src/main/java/com/ffii/fpsms/modules/master/entity/ShopRepository.kt Parādīt failu

@@ -0,0 +1,8 @@
package com.ffii.fpsms.modules.master.entity

import com.ffii.core.support.AbstractRepository
import org.springframework.stereotype.Repository

@Repository
interface ShopRepository : AbstractRepository<Shop, Long> {
}

+ 32
- 0
src/main/java/com/ffii/fpsms/modules/master/entity/Warehouse.kt Parādīt failu

@@ -0,0 +1,32 @@
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
import java.math.BigDecimal

@Entity
@Table(name = "warehouse")
open class Warehouse : BaseEntity<Long>() {
@Size(max = 30)
@NotNull
@Column(name = "code", nullable = false, length = 30)
open var code: String? = null

@Size(max = 30)
@NotNull
@Column(name = "name", nullable = false, length = 30)
open var name: String? = null

@Size(max = 30)
@NotNull
@Column(name = "description", nullable = false, length = 30)
open var description: String? = null

@NotNull
@Column(name = "capacity", nullable = false, precision = 14, scale = 2)
open var capacity: BigDecimal? = null
}

+ 8
- 0
src/main/java/com/ffii/fpsms/modules/master/entity/WarehouseRepository.kt Parādīt failu

@@ -0,0 +1,8 @@
package com.ffii.fpsms.modules.master.entity

import com.ffii.core.support.AbstractRepository
import org.springframework.stereotype.Repository

@Repository
interface WarehouseRepository : AbstractRepository<Warehouse, Long> {
}

+ 15
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/Inventory.kt Parādīt failu

@@ -2,8 +2,11 @@ package com.ffii.fpsms.modules.stock.entity

import com.ffii.core.entity.BaseEntity
import com.ffii.fpsms.modules.master.entity.Items
import com.ffii.fpsms.modules.master.entity.Warehouse
import jakarta.persistence.*
import jakarta.validation.constraints.NotNull
import jakarta.validation.constraints.Size
import java.math.BigDecimal
import java.time.LocalDate

@Entity
@@ -36,4 +39,16 @@ open class Inventory: BaseEntity<Long>(){
// @NotNull
@Column(name = "status")
open var status: String? = null

@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "warehouseId", nullable = false)
open var warehouse: Warehouse? = 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
}

+ 25
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/InventoryLotNo.kt Parādīt failu

@@ -0,0 +1,25 @@
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 org.hibernate.annotations.JdbcTypeCode
import org.hibernate.type.SqlTypes

@Entity
@Table(name = "inventory_lot_no")
open class InventoryLotNo : BaseEntity<Long>() {
@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "inventoryId", nullable = false)
open var inventory: Inventory? = null

@Size(max = 30)
@Column(name = "lotNo", length = 30)
open var lotNo: String? = null

@JdbcTypeCode(SqlTypes.JSON)
@Column(name = "qrCodeJson")
open var qrCodeJson: MutableMap<String, Any>? = null
}

+ 8
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/InventoryLotNoRepository.kt Parādīt failu

@@ -0,0 +1,8 @@
package com.ffii.fpsms.modules.stock.entity

import com.ffii.core.support.AbstractRepository
import org.springframework.stereotype.Repository

@Repository
interface InventoryLotNoRepository : AbstractRepository<InventoryLotNo, Long> {
}

+ 33
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/M18DataLog.kt Parādīt failu

@@ -0,0 +1,33 @@
package com.ffii.fpsms.modules.stock.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
import org.hibernate.annotations.JdbcTypeCode
import org.hibernate.type.SqlTypes

@Entity
@Table(name = "m18_data_log")
open class M18DataLog : BaseEntity<Long>() {
@Size(max = 10)
@NotNull
@Column(name = "refType", nullable = false, length = 10)
open var refType: String? = null

@NotNull
@Column(name = "m18Key", nullable = false)
open var m18Key: Int? = null

@NotNull
@JdbcTypeCode(SqlTypes.JSON)
@Column(name = "dataLog", nullable = false)
open var dataLog: MutableMap<String, Any>? = null

@Size(max = 5)
@NotNull
@Column(name = "status", nullable = false, length = 5)
open var status: String? = null
}

+ 8
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/M18DataLogRepository.kt Parādīt failu

@@ -0,0 +1,8 @@
package com.ffii.fpsms.modules.stock.entity

import com.ffii.core.support.AbstractRepository
import org.springframework.stereotype.Repository

@Repository
interface M18DataLogRepository : AbstractRepository<M18DataLog, Long> {
}

+ 50
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/StockIn.kt Parādīt failu

@@ -0,0 +1,50 @@
package com.ffii.fpsms.modules.stock.entity

import com.ffii.core.entity.BaseEntity
import com.ffii.fpsms.modules.master.entity.Shop
import com.ffii.fpsms.modules.stock.entity.enum.StockInStatus
import jakarta.persistence.*
import jakarta.validation.constraints.NotNull
import jakarta.validation.constraints.Size
import java.time.Instant
import java.time.LocalDate
import java.time.LocalDateTime

@Entity
@Table(name = "stock_in")
open class StockIn : BaseEntity<Long>() {
@Size(max = 30)
@NotNull
@Column(name = "code", nullable = false, length = 30)
open var code: String? = null

@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "supplierId")
open var supplier: Shop? = null

@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "shopId")
open var shop: Shop? = null

@Column(name = "refId")
open var refId: Int? = null

@Size(max = 5)
@Column(name = "refType", length = 5)
open var refType: String? = 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)
@Enumerated(EnumType.STRING)
open var status: StockInStatus? = null
}

+ 64
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLine.kt Parādīt failu

@@ -0,0 +1,64 @@
package com.ffii.fpsms.modules.stock.entity

import com.ffii.core.entity.BaseEntity
import com.ffii.fpsms.modules.master.entity.Items
import com.ffii.fpsms.modules.stock.entity.enum.StockInLineStatus
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 = "stock_in_line")
open class StockInLine : 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 = "stockInId", nullable = false)
open var stockIn: StockIn? = null

@Column(name = "demandQty", precision = 14, scale = 2)
open var demandQty: BigDecimal? = null

@Column(name = "acceptedQty", precision = 14, scale = 2)
open var acceptedQty: 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

@Column(name = "productDate")
open var productDate: Instant? = null

@Column(name = "shelfLifeDate")
open var shelfLifeDate: Instant? = null

@Size(max = 10)
@NotNull
@Column(name = "status", nullable = false, length = 10)
@Enumerated(EnumType.STRING)
open var status: StockInLineStatus? = null

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "userId")
open var user: User? = null

@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "m18DataLogId", nullable = false)
open var m18DataLog: M18DataLog? = null
}

+ 8
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLineRepository.kt Parādīt failu

@@ -0,0 +1,8 @@
package com.ffii.fpsms.modules.stock.entity

import com.ffii.core.support.AbstractRepository
import org.springframework.stereotype.Repository

@Repository
interface StockInLineRepository : AbstractRepository<StockInLine, Long> {
}

+ 8
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/StockInRepository.kt Parādīt failu

@@ -0,0 +1,8 @@
package com.ffii.fpsms.modules.stock.entity

import com.ffii.core.support.AbstractRepository
import org.springframework.stereotype.Repository

@Repository
interface StockInRepository : AbstractRepository<StockIn, Long> {
}

+ 10
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/enum/StockInLineStatus.kt Parādīt failu

@@ -0,0 +1,10 @@
package com.ffii.fpsms.modules.stock.entity.enum

enum class StockInLineStatus(val status: String) {
PENDING("pending"),
QC1("qc1"),
QC2("qc2"),
QC3("qc3"),
RECEIVING("receiving"),
COMPLETED("completed")
}

+ 7
- 0
src/main/java/com/ffii/fpsms/modules/stock/entity/enum/StockInStatus.kt Parādīt failu

@@ -0,0 +1,7 @@
package com.ffii.fpsms.modules.stock.entity.enum

enum class StockInStatus(val status: String) {
PENDING("pending"),
RECEIVING("receiving"),
COMPLETED("completed")
}

+ 43
- 0
src/main/resources/db/changelog/changes/20250409_01_cyril/01_master_data.sql Parādīt failu

@@ -0,0 +1,43 @@
--liquibase formatted sql

--changeset cyril:master data for shop and warehouse
CREATE TABLE `shop`
(
`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,
`name` VARCHAR(30) NOT NULL,
`brNo` VARCHAR(30) NULL,
`contactNo` VARCHAR(30) NULL,
`contactEmail` VARCHAR(30) NULL,
`contactName` VARCHAR(30) NULL,
`addr1` VARCHAR(30) NULL,
`addr2` VARCHAR(30) NULL,
`addr3` VARCHAR(30) NULL,
`addr4` VARCHAR(30) NULL,
`district` VARCHAR(30) NULL,
`type` VARCHAR(10) NULL,
`m18Id` INT NOT NULL,
CONSTRAINT pk_shop PRIMARY KEY (id)
);

CREATE TABLE `warehouse`
(
`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,
`name` VARCHAR(30) NOT NULL,
`description` VARCHAR(30) NOT NULL,
`capacity` DECIMAL(14, 2) NOT NULL,
CONSTRAINT pk_warehouse PRIMARY KEY (id)
);

+ 18
- 0
src/main/resources/db/changelog/changes/20250409_01_cyril/02_m18_data_log.sql Parādīt failu

@@ -0,0 +1,18 @@
--liquibase formatted sql

--changeset cyril:m18 data log
CREATE TABLE `m18_data_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',
`refType` VARCHAR(10) NOT NULL,
`m18Key` INT NOT NULL,
`dataLog` JSON NOT NULL,
`status` VARCHAR(5) NOT NULL,
CONSTRAINT pk_m18_data_log PRIMARY KEY (id)
);

+ 55
- 0
src/main/resources/db/changelog/changes/20250409_01_cyril/03_stock_in.sql Parādīt failu

@@ -0,0 +1,55 @@
--liquibase formatted sql

--changeset cyril:stock in
CREATE TABLE `stock_in`
(
`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,
`shopId` INT NULL,
`refId` INT NULL,
`refType` VARCHAR(5) NULL,
`orderDate` DATETIME NULL,
`estimatedCompleteDate` DATETIME NULL,
`completeDate` DATETIME NULL,
`status` VARCHAR(10) NOT NULL DEFAULT 'pending',
`m18DataLogId` INT NOT NULL,
CONSTRAINT pk_stock_in PRIMARY KEY (id),
CONSTRAINT FK_STOCK_IN_ON_SUPPLIERID FOREIGN KEY (supplierId) REFERENCES shop (id),
CONSTRAINT FK_STOCK_IN_ON_SHOPID FOREIGN KEY (shopId) REFERENCES shop (id),
CONSTRAINT FK_STOCK_IN_ON_M18DATALOGID FOREIGN KEY (m18DataLogId) REFERENCES m18_data_log (id)
);

CREATE TABLE `stock_in_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',
`itemId` INT NOT NULL,
`itemNo` VARCHAR(20) NOT NULL,
`stockInId` INT NOT NULL,
`demandQty` DECIMAL(14, 2) NULL,
`acceptedQty` DECIMAL(14, 2) NULL,
`price` DECIMAL(14, 2) NULL,
`priceUnit` VARCHAR(5) NULL,
`productDate` DATETIME NULL,
`shelfLifeDate` DATETIME NULL,
`status` VARCHAR(10) NOT NULL DEFAULT 'pending',
`userId` INT NULL,
`m18DataLogId` INT NOT NULL,
CONSTRAINT pk_stock_in_line PRIMARY KEY (id),
CONSTRAINT FK_STOCK_IN_LINE_ON_ITEMID FOREIGN KEY (itemId) REFERENCES items (id),
CONSTRAINT FK_STOCK_IN_LINE_ON_STOCKINID FOREIGN KEY (stockInId) REFERENCES stock_in (id),
CONSTRAINT FK_STOCK_IN_LINE_ON_USERID FOREIGN KEY (userId) REFERENCES user (id),
CONSTRAINT FK_STOCK_IN_LINE_ON_M18DATALOGID FOREIGN KEY (m18DataLogId) REFERENCES m18_data_log (id)
);

+ 25
- 0
src/main/resources/db/changelog/changes/20250409_01_cyril/04_inventory.sql Parādīt failu

@@ -0,0 +1,25 @@
--liquibase formatted sql

--changeset cyril:inventory
ALTER TABLE `inventory`
ADD COLUMN `price` DECIMAL(14, 2) NULL AFTER `qty`,
ADD COLUMN `priceUnit` VARCHAR(5) NULL AFTER `price`,
ADD COLUMN `warehouseId` INT NOT NULL AFTER `stockInLineId`,
ADD CONSTRAINT FK_INVENTORY_STOCKINLINEID FOREIGN KEY (stockInLineId) REFERENCES stock_in_line (id),
ADD CONSTRAINT FK_INVENTORY_WAREHOUSEID FOREIGN KEY (warehouseId) REFERENCES warehouse (id);

CREATE TABLE `inventory_lot_no`
(
`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',
`inventoryId` INT NOT NULL,
`lotNo` VARCHAR(30) NULL,
`qrCodeJson` JSON NULL,
CONSTRAINT pk_inventory_lot_no PRIMARY KEY (id),
CONSTRAINT FK_INVENTORY_LOT_NO_INVENTORYID FOREIGN KEY (inventoryId) REFERENCES inventory (id)
);

Notiek ielāde…
Atcelt
Saglabāt