@@ -1,12 +1,15 @@ | |||||
package com.ffii.fpsms.modules.purchaseOrder.entity | package com.ffii.fpsms.modules.purchaseOrder.entity | ||||
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.m18.entity.M18DataLog | import com.ffii.fpsms.m18.entity.M18DataLog | ||||
import com.ffii.fpsms.modules.master.entity.BomMaterial | |||||
import com.ffii.fpsms.modules.master.entity.Currency | import com.ffii.fpsms.modules.master.entity.Currency | ||||
import com.ffii.fpsms.modules.master.entity.UomConversion | import com.ffii.fpsms.modules.master.entity.UomConversion | ||||
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderLineStatus | import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderLineStatus | ||||
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderLineStatusConverter | import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderLineStatusConverter | ||||
import com.ffii.fpsms.modules.stock.entity.StockInLine | |||||
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 | ||||
@@ -59,4 +62,8 @@ open class PurchaseOrderLine : BaseEntity<Long>() { | |||||
@Size(max = 20) | @Size(max = 20) | ||||
@Column(name = "m18Lot", length = 20) | @Column(name = "m18Lot", length = 20) | ||||
open var m18Lot: String? = null | open var m18Lot: String? = null | ||||
@JsonManagedReference | |||||
@OneToMany(mappedBy = "purchaseOrderLine", cascade = [CascadeType.ALL], orphanRemoval = true) | |||||
open var stockInLines: MutableList<StockInLine> = mutableListOf() | |||||
} | } |
@@ -1,9 +1,12 @@ | |||||
package com.ffii.fpsms.modules.purchaseOrder.entity.projections | package com.ffii.fpsms.modules.purchaseOrder.entity.projections | ||||
import com.fasterxml.jackson.annotation.JsonManagedReference | |||||
import com.ffii.fpsms.modules.master.entity.QcItem | import com.ffii.fpsms.modules.master.entity.QcItem | ||||
import com.ffii.fpsms.modules.master.entity.UomConversion | import com.ffii.fpsms.modules.master.entity.UomConversion | ||||
import com.ffii.fpsms.modules.stock.entity.StockInLine | import com.ffii.fpsms.modules.stock.entity.StockInLine | ||||
import com.ffii.fpsms.modules.stock.entity.projection.StockInLineInfo | import com.ffii.fpsms.modules.stock.entity.projection.StockInLineInfo | ||||
import jakarta.persistence.CascadeType | |||||
import jakarta.persistence.OneToMany | |||||
import org.springframework.beans.factory.annotation.Value | import org.springframework.beans.factory.annotation.Value | ||||
import java.math.BigDecimal | import java.math.BigDecimal | ||||
@@ -29,6 +32,7 @@ data class PoLineWithStockInLine ( | |||||
val itemName: String?, | val itemName: String?, | ||||
val qty: BigDecimal, | val qty: BigDecimal, | ||||
val processed: BigDecimal, | val processed: BigDecimal, | ||||
val receivedQty: BigDecimal, | |||||
@get:Value("#{target.uom}") | @get:Value("#{target.uom}") | ||||
val uom: UomConversion, | val uom: UomConversion, | ||||
val price: BigDecimal, | val price: BigDecimal, | ||||
@@ -111,8 +111,8 @@ open class PurchaseOrderService( | |||||
" ) sil2 on sil2.purchaseOrderLineId = pol.id" + | " ) sil2 on sil2.purchaseOrderLineId = pol.id" + | ||||
" left join item_uom iu on iu.itemId = pol.itemId and iu.purchaseUnit = true" + | " left join item_uom iu on iu.itemId = pol.itemId and iu.purchaseUnit = true" + | ||||
" left join uom_conversion uc on uc.id = iu.uomId" + | " left join uom_conversion uc on uc.id = iu.uomId" + | ||||
" where po.deleted = false " + | |||||
" and pol.deleted = false " | |||||
" where po.deleted = false " + | |||||
" and pol.deleted = false " | |||||
) | ) | ||||
if (args.containsKey("code")){ | if (args.containsKey("code")){ | ||||
sql.append(" AND po.code like :code "); | sql.append(" AND po.code like :code "); | ||||
@@ -202,6 +202,7 @@ open class PurchaseOrderService( | |||||
itemName = thisPol.item!!.name, | itemName = thisPol.item!!.name, | ||||
qty = thisPol.qty!!, | qty = thisPol.qty!!, | ||||
processed = inLine.filter{ it.status == StockInLineStatus.COMPLETE.status}.sumOf { it.acceptedQty }, | processed = inLine.filter{ it.status == StockInLineStatus.COMPLETE.status}.sumOf { it.acceptedQty }, | ||||
receivedQty = thisPol.stockInLines.sumOf { it.acceptedQty ?: BigDecimal.ZERO }, | |||||
uom = thisPol.uom!!, | uom = thisPol.uom!!, | ||||
price = thisPol.price!!, | price = thisPol.price!!, | ||||
status = thisPol.status!!.toString(), | status = thisPol.status!!.toString(), | ||||
@@ -1,5 +1,6 @@ | |||||
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.purchaseOrder.entity.PurchaseOrder | import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder | ||||
@@ -30,6 +31,7 @@ open class StockInLine : BaseEntity<Long>() { | |||||
@JoinColumn(name = "purchaseOrderId") | @JoinColumn(name = "purchaseOrderId") | ||||
open var purchaseOrder: PurchaseOrder? = null | open var purchaseOrder: PurchaseOrder? = null | ||||
@JsonBackReference | |||||
@ManyToOne | @ManyToOne | ||||
@JoinColumn(name = "purchaseOrderLineId") | @JoinColumn(name = "purchaseOrderLineId") | ||||
open var purchaseOrderLine: PurchaseOrderLine? = null | open var purchaseOrderLine: PurchaseOrderLine? = null | ||||
@@ -23,6 +23,8 @@ interface StockInLineInfo { | |||||
val purchaseOrderId: Long? | val purchaseOrderId: Long? | ||||
val demandQty: BigDecimal? | val demandQty: BigDecimal? | ||||
val acceptedQty: BigDecimal | val acceptedQty: BigDecimal | ||||
@get:Value("#{target.purchaseOrderLine?.qty}") | |||||
val qty: BigDecimal | |||||
val price: BigDecimal? | val price: BigDecimal? | ||||
val priceUnit: BigDecimal? | val priceUnit: BigDecimal? | ||||
@get:Value("#{target.item?.shelfLife}") | @get:Value("#{target.item?.shelfLife}") | ||||