136 lines
5.7 KiB
Go
136 lines
5.7 KiB
Go
package dto
|
|
|
|
import (
|
|
"github.com/Caknoooo/go-gin-clean-starter/database/entities"
|
|
"github.com/Caknoooo/go-gin-clean-starter/pkg/utils"
|
|
)
|
|
|
|
const (
|
|
MESSAGE_FAILED_CREATE_QUARANTINE = "failed create quarantine"
|
|
MESSAGE_FAILED_CREATE_QUARANTINE_LINE = "failed create quarantine line"
|
|
MESSAGE_SUCCESS_CREATE_QUARANTINE = "success create quarantine"
|
|
MESSAGE_SUCCESS_CREATE_QUARANTINE_LINE = "success create quarantine line"
|
|
MESSAGE_FAILED_GET_QUARANTINE = "failed get quarantine"
|
|
MESSAGE_SUCCESS_GET_QUARANTINE = "success get quarantine"
|
|
MESSAGE_FAILED_UPDATE_QUARANTINE = "failed update quarantine"
|
|
MESSAGE_FAILED_UPDATE_QUARANTINE_LINE = "failed update quarantine line"
|
|
MESSAGE_SUCCESS_UPDATE_QUARANTINE = "success update quarantine"
|
|
MESSAGE_SUCCESS_UPDATE_QUARANTINE_LINE = "success update quarantine line"
|
|
MESSAGE_FAILED_DELETE_QUARANTINE = "failed delete quarantine"
|
|
MESSAGE_FAILED_DELETE_QUARANTINE_LINE = "failed delete quarantine line"
|
|
MESSAGE_SUCCESS_DELETE_QUARANTINE = "success delete quarantine"
|
|
MESSAGE_SUCCESS_DELETE_QUARANTINE_LINE = "success delete quarantine line"
|
|
MESSAGE_FAILED_GET_DATA_FROM_BODY = "failed get data from body"
|
|
MESSAGE_SUCCESS_COMPLETE_QUARANTINE = "success complete quarantine"
|
|
MESSAGE_FAILED_COMPLETE_QUARANTINE = "failed complete quarantine"
|
|
MESSAGE_FAILED_GET_QUARANTINE_LINES = "failed get quarantine lines"
|
|
MESSAGE_SUCCESS_GET_QUARANTINE_LINES = "success get quarantine lines"
|
|
)
|
|
|
|
type QuarantineCreateRequest struct {
|
|
ReferenceNumber string `json:"reference_number"`
|
|
DocumentDate string `json:"document_date"`
|
|
Source string `json:"source"`
|
|
QrCodeFile string `json:"qr_code_file"`
|
|
ClientID string `json:"client_id" binding:"required"`
|
|
Status string `json:"status"`
|
|
QuarantineLines []QuarantineLineCreateRequest `json:"quarantine_lines,omitempty" binding:"dive"`
|
|
}
|
|
|
|
type QuarantineLineCreateRequest struct {
|
|
Quantity float64 `json:"quantity"`
|
|
BatchNumber string `json:"batch_number"`
|
|
RepackingSuggestion string `json:"repacking_suggestion"`
|
|
RepackUomID string `json:"repack_uom_id"`
|
|
RepackUomCode string `json:"repack_uom_code"`
|
|
ProductID string `json:"product_id"`
|
|
ProductCode string `json:"product_code"`
|
|
ClientID string `json:"client_id"`
|
|
}
|
|
|
|
type QuarantineUpdateRequest struct {
|
|
ReferenceNumber string `json:"reference_number"`
|
|
DocumentDate string `json:"document_date"`
|
|
Source string `json:"source"`
|
|
QrCodeFile string `json:"qr_code_file"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
type QuarantineLineUpdateRequest struct {
|
|
Quantity float64 `json:"quantity"`
|
|
BatchNumber string `json:"batch_number"`
|
|
RepackingSuggestion string `json:"repacking_suggestion"`
|
|
RepackUomID string `json:"repack_uom_id"`
|
|
RepackUomCode string `json:"repack_uom_code"`
|
|
ProductID string `json:"product_id"`
|
|
ProductCode string `json:"product_code"`
|
|
ClientID string `json:"client_id"`
|
|
}
|
|
|
|
type QuarantineResponse struct {
|
|
ID string `json:"id"`
|
|
DocumentNumber string `json:"document_number"`
|
|
DocumentDate string `json:"document_date"`
|
|
Status string `json:"status"`
|
|
WarehouseID string `json:"warehouse_id"`
|
|
ZonaID string `json:"zona_id"`
|
|
ClientID string `json:"client_id"`
|
|
Warehouse string `json:"warehouse"`
|
|
Zona string `json:"zona"`
|
|
Client string `json:"client"`
|
|
QuarantineLines []QuarantineLineResponse `json:"quarantine_lines,omitempty"`
|
|
}
|
|
|
|
type QuarantineLineResponse struct {
|
|
ID string `json:"id"`
|
|
QuarantineID string `json:"quarantine_id"`
|
|
StorageID string `json:"storage_id"`
|
|
ProductID string `json:"product_id"`
|
|
ClientID string `json:"client_id"`
|
|
Product string `json:"product"`
|
|
Storage string `json:"storage"`
|
|
Quarantine string `json:"quarantine"`
|
|
Client string `json:"client"`
|
|
}
|
|
|
|
func MapQuarantineToResponse(entity entities.TInventoryQuarantineEntity, lines []entities.TInventoryQuarantineLineEntity) QuarantineResponse {
|
|
resp := QuarantineResponse{
|
|
ID: entity.ID.String(),
|
|
DocumentNumber: entity.DocumentNumber,
|
|
DocumentDate: utils.DateTimeToString(entity.DocumentDate),
|
|
Status: entity.Status,
|
|
WarehouseID: entity.WarehouseID.String(),
|
|
ZonaID: entity.ZonaID.String(),
|
|
ClientID: entity.ClientID.String(),
|
|
Warehouse: entity.Warehouse.Name,
|
|
Zona: entity.Zona.Name,
|
|
Client: entity.Client.Name,
|
|
}
|
|
return resp
|
|
}
|
|
|
|
func MapQuarantineLineToResponse(line entities.TInventoryQuarantineLineEntity) QuarantineLineResponse {
|
|
return QuarantineLineResponse{
|
|
ID: line.ID.String(),
|
|
QuarantineID: line.QuarantineID.String(),
|
|
StorageID: line.StorageID.String(),
|
|
ProductID: line.ProductID.String(),
|
|
ClientID: line.ClientID.String(),
|
|
Product: line.Product.Name,
|
|
Storage: line.StorageID.String(), // gunakan StorageID, karena field Name tidak ada
|
|
Quarantine: line.Quarantine.DocumentNumber,
|
|
Client: line.Client.Name,
|
|
}
|
|
}
|
|
|
|
func MapQuarantineLinesToResponse(lines []entities.TInventoryQuarantineLineEntity) []QuarantineLineResponse {
|
|
var responses []QuarantineLineResponse
|
|
for _, e := range lines {
|
|
responses = append(responses, MapQuarantineLineToResponse(e))
|
|
}
|
|
if responses == nil {
|
|
responses = make([]QuarantineLineResponse, 0)
|
|
}
|
|
return responses
|
|
}
|