131 lines
5.9 KiB
Go
131 lines
5.9 KiB
Go
package dto
|
|
|
|
import (
|
|
"github.com/Caknoooo/go-gin-clean-starter/database/entities"
|
|
pkgdto "github.com/Caknoooo/go-gin-clean-starter/pkg/dto"
|
|
"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"`
|
|
Warehouse pkgdto.IdNameResponse `json:"warehouse"`
|
|
Zona pkgdto.IdNameResponse `json:"zona"`
|
|
Client pkgdto.IdNameResponse `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 pkgdto.IdNameResponse `json:"product"`
|
|
Storage pkgdto.IdNameResponse `json:"storage"`
|
|
Quarantine pkgdto.IdNameResponse `json:"quarantine"`
|
|
Client pkgdto.IdNameResponse `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,
|
|
Warehouse: pkgdto.IdNameResponse{ID: entity.WarehouseID.String(), Name: entity.Warehouse.Name},
|
|
Zona: pkgdto.IdNameResponse{ID: entity.ZonaID.String(), Name: entity.Zona.Name},
|
|
Client: pkgdto.IdNameResponse{ID: entity.ClientID.String(), Name: 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: pkgdto.IdNameResponse{ID: line.ProductID.String(), Name: line.Product.Name},
|
|
Storage: pkgdto.IdNameResponse{ID: line.StorageID.String(), Name: "line.Storage.Name"},
|
|
Quarantine: pkgdto.IdNameResponse{ID: line.QuarantineID.String(), Name: line.Quarantine.DocumentNumber},
|
|
Client: pkgdto.IdNameResponse{ID: line.ClientID.String(), Name: 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
|
|
}
|