mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 21:41:55 +00:00
FEAT[BE]: update warehouse DTO references in product warehouse and add UOM preload
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
|||||||
|
|
||||||
entity "gitlab.com/mbugroup/lti-api.git/internal/entities"
|
entity "gitlab.com/mbugroup/lti-api.git/internal/entities"
|
||||||
productDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/products/dto"
|
productDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/products/dto"
|
||||||
|
warehouseDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/warehouses/dto"
|
||||||
)
|
)
|
||||||
|
|
||||||
// === DTO Structs ===
|
// === DTO Structs ===
|
||||||
@@ -16,60 +17,29 @@ type ProductWarehouseRelationDTO struct {
|
|||||||
Quantity float64 `json:"quantity"`
|
Quantity float64 `json:"quantity"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProductWarehousNestedDTO struct {
|
|
||||||
Id uint `json:"id"`
|
|
||||||
Product *productDTO.ProductRelationDTO `json:"product,omitempty"`
|
|
||||||
Warehouse *WarehouseRelationDTO `json:"warehouse,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ProductWarehouseListDTO struct {
|
type ProductWarehouseListDTO struct {
|
||||||
ProductWarehouseRelationDTO
|
ProductWarehouseRelationDTO
|
||||||
Product *productDTO.ProductRelationDTO `json:"product,omitempty"`
|
Product *productDTO.ProductRelationDTO `json:"product,omitempty"`
|
||||||
Warehouse *WarehouseRelationDTO `json:"warehouse,omitempty"`
|
Warehouse *warehouseDTO.WarehouseRelationDTO `json:"warehouse,omitempty"`
|
||||||
ProjectFlockKandang *ProjectFlockKandangRelationDTO `json:"project_flock_kandang,omitempty"`
|
ProjectFlockKandang *ProjectFlockKandangRelationDTO `json:"project_flock_kandang,omitempty"`
|
||||||
CreatedUser *UserRelationDTO `json:"created_user,omitempty"`
|
CreatedUser *UserRelationDTO `json:"created_user,omitempty"`
|
||||||
CreatedAt time.Time `json:"created_at"`
|
CreatedAt time.Time `json:"created_at"`
|
||||||
UpdatedAt time.Time `json:"updated_at"`
|
UpdatedAt time.Time `json:"updated_at"`
|
||||||
}
|
|
||||||
|
|
||||||
type UserRelationDTO struct {
|
|
||||||
Id uint `json:"id"`
|
|
||||||
Username string `json:"username"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProductWarehouseDetailDTO struct {
|
type ProductWarehouseDetailDTO struct {
|
||||||
ProductWarehouseListDTO
|
ProductWarehouseListDTO
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nested DTOs for relations
|
type ProductWarehousNestedDTO struct {
|
||||||
type ProductRelationDTO struct {
|
Id uint `json:"id"`
|
||||||
Id uint `json:"id"`
|
Product *productDTO.ProductRelationDTO `json:"product,omitempty"`
|
||||||
Name string `json:"name"`
|
Warehouse *warehouseDTO.WarehouseRelationDTO `json:"warehouse,omitempty"`
|
||||||
Sku string `json:"sku"`
|
|
||||||
Flags []string `json:"flags"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type WarehouseRelationDTO struct {
|
type UserRelationDTO struct {
|
||||||
Id uint `json:"id"`
|
Id uint `json:"id"`
|
||||||
Name string `json:"name"`
|
Username string `json:"username"`
|
||||||
Kandang *KandangRelationDTO `json:"kandang,omitempty"`
|
|
||||||
Location *LocationRelationDTO `json:"location,omitempty"`
|
|
||||||
Area *AreaRelationDTO `json:"area,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type KandangRelationDTO struct {
|
|
||||||
Id uint `json:"id"`
|
|
||||||
Name string `json:"name"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type LocationRelationDTO struct {
|
|
||||||
Id uint `json:"id"`
|
|
||||||
Name string `json:"name"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type AreaRelationDTO struct {
|
|
||||||
Id uint `json:"id"`
|
|
||||||
Name string `json:"name"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProjectFlockKandangRelationDTO struct {
|
type ProjectFlockKandangRelationDTO struct {
|
||||||
@@ -96,65 +66,28 @@ func ToProductWarehouseRelationDTO(e entity.ProductWarehouse) ProductWarehouseRe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ToProductWarehouseNestedDTO(e entity.ProductWarehouse) ProductWarehousNestedDTO {
|
|
||||||
product := productDTO.ToProductRelationDTO(e.Product)
|
|
||||||
|
|
||||||
return ProductWarehousNestedDTO{
|
|
||||||
Id: e.Id,
|
|
||||||
Product: &product,
|
|
||||||
Warehouse: &WarehouseRelationDTO{
|
|
||||||
Id: e.Warehouse.Id,
|
|
||||||
Name: e.Warehouse.Name,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func ToProductWarehouseListDTO(e entity.ProductWarehouse) ProductWarehouseListDTO {
|
func ToProductWarehouseListDTO(e entity.ProductWarehouse) ProductWarehouseListDTO {
|
||||||
dto := ProductWarehouseListDTO{
|
dto := ProductWarehouseListDTO{
|
||||||
ProductWarehouseRelationDTO: ToProductWarehouseRelationDTO(e),
|
ProductWarehouseRelationDTO: ToProductWarehouseRelationDTO(e),
|
||||||
// CreatedAt: e.CreatedAt,
|
|
||||||
// UpdatedAt: e.UpdatedAt,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Map Product relation jika ada
|
// Map Product relation jika ada
|
||||||
if e.Product.Id != 0 {
|
if e.Product.Id != 0 {
|
||||||
product := productDTO.ToProductRelationDTO(e.Product)
|
product := productDTO.ToProductRelationDTO(e.Product)
|
||||||
|
|
||||||
// Tambahkan flock name ke product name jika ada project flock
|
// Create a copy with flock name appended if exists
|
||||||
if e.ProjectFlockKandang != nil && e.ProjectFlockKandang.ProjectFlock.Id != 0 {
|
if e.ProjectFlockKandang != nil && e.ProjectFlockKandang.ProjectFlock.Id != 0 {
|
||||||
product.Name = product.Name + " (" + e.ProjectFlockKandang.ProjectFlock.FlockName + ")"
|
productCopy := product
|
||||||
|
productCopy.Name = product.Name + " (" + e.ProjectFlockKandang.ProjectFlock.FlockName + ")"
|
||||||
|
dto.Product = &productCopy
|
||||||
|
} else {
|
||||||
|
dto.Product = &product
|
||||||
}
|
}
|
||||||
|
|
||||||
dto.Product = &product
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Map Warehouse relation jika ada
|
// Map Warehouse relation jika ada
|
||||||
if e.Warehouse.Id != 0 {
|
if e.Warehouse.Id != 0 {
|
||||||
warehouse := WarehouseRelationDTO{
|
warehouse := warehouseDTO.ToWarehouseRelationDTO(e.Warehouse)
|
||||||
Id: e.Warehouse.Id,
|
|
||||||
Name: e.Warehouse.Name,
|
|
||||||
}
|
|
||||||
// Map Kandang jika ada
|
|
||||||
if e.Warehouse.Kandang != nil && e.Warehouse.Kandang.Id != 0 {
|
|
||||||
warehouse.Kandang = &KandangRelationDTO{
|
|
||||||
Id: e.Warehouse.Kandang.Id,
|
|
||||||
Name: e.Warehouse.Kandang.Name,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Map Location jika ada
|
|
||||||
if e.Warehouse.Location != nil && e.Warehouse.Location.Id != 0 {
|
|
||||||
warehouse.Location = &LocationRelationDTO{
|
|
||||||
Id: e.Warehouse.Location.Id,
|
|
||||||
Name: e.Warehouse.Location.Name,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if e.Warehouse.Area.Id != 0 {
|
|
||||||
warehouse.Area = &AreaRelationDTO{
|
|
||||||
Id: e.Warehouse.Area.Id,
|
|
||||||
Name: e.Warehouse.Area.Name,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dto.Warehouse = &warehouse
|
dto.Warehouse = &warehouse
|
||||||
}
|
}
|
||||||
@@ -168,7 +101,6 @@ func ToProductWarehouseListDTO(e entity.ProductWarehouse) ProductWarehouseListDT
|
|||||||
Period: e.ProjectFlockKandang.Period,
|
Period: e.ProjectFlockKandang.Period,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Map ProjectFlock jika ada
|
|
||||||
if e.ProjectFlockKandang.ProjectFlock.Id != 0 {
|
if e.ProjectFlockKandang.ProjectFlock.Id != 0 {
|
||||||
pfkDTO.ProjectFlock = &ProjectFlockRelationDTO{
|
pfkDTO.ProjectFlock = &ProjectFlockRelationDTO{
|
||||||
Id: e.ProjectFlockKandang.ProjectFlock.Id,
|
Id: e.ProjectFlockKandang.ProjectFlock.Id,
|
||||||
@@ -179,15 +111,6 @@ func ToProductWarehouseListDTO(e entity.ProductWarehouse) ProductWarehouseListDT
|
|||||||
dto.ProjectFlockKandang = pfkDTO
|
dto.ProjectFlockKandang = pfkDTO
|
||||||
}
|
}
|
||||||
|
|
||||||
// Map CreatedUser relation jika ada
|
|
||||||
// if e.CreatedUser.Id != 0 {
|
|
||||||
// user := UserRelationDTO{
|
|
||||||
// Id: e.CreatedUser.Id,
|
|
||||||
// Username: e.CreatedUser.Name,
|
|
||||||
// }
|
|
||||||
// dto.CreatedUser = &user
|
|
||||||
// }
|
|
||||||
|
|
||||||
return dto
|
return dto
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,23 +128,13 @@ func ToProductWarehouseDetailDTO(e entity.ProductWarehouse) ProductWarehouseDeta
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ToKandangRelationDTO(e entity.Kandang) KandangRelationDTO {
|
func ToProductWarehouseNestedDTO(e entity.ProductWarehouse) ProductWarehousNestedDTO {
|
||||||
return KandangRelationDTO{
|
product := productDTO.ToProductRelationDTO(e.Product)
|
||||||
Id: e.Id,
|
warehouse := warehouseDTO.ToWarehouseRelationDTO(e.Warehouse)
|
||||||
Name: e.Name,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func ToLocationRelationDTO(e entity.Location) LocationRelationDTO {
|
return ProductWarehousNestedDTO{
|
||||||
return LocationRelationDTO{
|
Id: e.Id,
|
||||||
Id: e.Id,
|
Product: &product,
|
||||||
Name: e.Name,
|
Warehouse: &warehouse,
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func ToAreaRelationDTO(e entity.Area) AreaRelationDTO {
|
|
||||||
return AreaRelationDTO{
|
|
||||||
Id: e.Id,
|
|
||||||
Name: e.Name,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ func (s productWarehouseService) withRelations(db *gorm.DB) *gorm.DB {
|
|||||||
return db.
|
return db.
|
||||||
Preload("Product.Flags").
|
Preload("Product.Flags").
|
||||||
Preload("Product").
|
Preload("Product").
|
||||||
|
Preload("Product.Uom").
|
||||||
Preload("Warehouse").
|
Preload("Warehouse").
|
||||||
Preload("Warehouse.Location").
|
Preload("Warehouse.Location").
|
||||||
Preload("Warehouse.Area").
|
Preload("Warehouse.Area").
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
approvalDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/approvals/dto"
|
approvalDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/approvals/dto"
|
||||||
productwarehouseDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/inventory/product-warehouses/dto"
|
productwarehouseDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/inventory/product-warehouses/dto"
|
||||||
customerDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/customers/dto"
|
customerDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/customers/dto"
|
||||||
|
warehouseDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/warehouses/dto"
|
||||||
userDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/users/dto"
|
userDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/users/dto"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -68,10 +69,10 @@ type DeliveryItemDTO struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type DeliveryGroupDTO struct {
|
type DeliveryGroupDTO struct {
|
||||||
DoNumber string `json:"do_number"`
|
DoNumber string `json:"do_number"`
|
||||||
DeliveryDate *time.Time `json:"delivery_date"`
|
DeliveryDate *time.Time `json:"delivery_date"`
|
||||||
Warehouse *productwarehouseDTO.WarehouseRelationDTO `json:"warehouse,omitempty"`
|
Warehouse *warehouseDTO.WarehouseRelationDTO `json:"warehouse,omitempty"`
|
||||||
Deliveries []DeliveryItemDTO `json:"deliveries"`
|
Deliveries []DeliveryItemDTO `json:"deliveries"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type DeliveryMarketingProductDTO struct {
|
type DeliveryMarketingProductDTO struct {
|
||||||
@@ -286,7 +287,7 @@ func groupDeliveryProducts(products []MarketingDeliveryProductDTO, soNumber stri
|
|||||||
if !exists {
|
if !exists {
|
||||||
group = &DeliveryGroupDTO{
|
group = &DeliveryGroupDTO{
|
||||||
DeliveryDate: product.DeliveryDate,
|
DeliveryDate: product.DeliveryDate,
|
||||||
Warehouse: &productwarehouseDTO.WarehouseRelationDTO{
|
Warehouse: &warehouseDTO.WarehouseRelationDTO{
|
||||||
Id: warehouseId,
|
Id: warehouseId,
|
||||||
Name: warehouseName,
|
Name: warehouseName,
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user