mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-23 06:45:43 +00:00
feat/BE/US-304/TASK-292,293-restriction expense not finish and stock not used,add status project flock completed, fix dto purchase, fix dto nonstock supplier, purchase
This commit is contained in:
@@ -42,7 +42,6 @@ type PurchaseDetailDTO struct {
|
||||
LatestApproval *approvalDTO.ApprovalRelationDTO `json:"latest_approval"`
|
||||
}
|
||||
|
||||
|
||||
type PurchaseItemDTO struct {
|
||||
Id uint `json:"id"`
|
||||
ProductID uint `json:"product_id"`
|
||||
@@ -59,9 +58,10 @@ type PurchaseItemDTO struct {
|
||||
TravelNumber *string `json:"travel_number"`
|
||||
TravelDocumentPath *string `json:"travel_document_path"`
|
||||
VehicleNumber *string `json:"vehicle_number"`
|
||||
TransportPerItem *float64 `json:"transport_per_item,omitempty"`
|
||||
ExpeditionVendor *supplierDTO.SupplierRelationDTO `json:"expedition_vendor,omitempty"`
|
||||
}
|
||||
|
||||
|
||||
func ToPurchaseRelationDTO(p *entity.Purchase) PurchaseRelationDTO {
|
||||
return PurchaseRelationDTO{
|
||||
Id: p.Id,
|
||||
@@ -107,6 +107,20 @@ func ToPurchaseItemDTO(item entity.PurchaseItem) PurchaseItemDTO {
|
||||
dto.Warehouse = &summary
|
||||
}
|
||||
|
||||
if item.ExpenseNonstock != nil {
|
||||
priceCopy := item.ExpenseNonstock.Price
|
||||
dto.TransportPerItem = &priceCopy
|
||||
|
||||
if item.ExpenseNonstock.Expense != nil {
|
||||
exp := item.ExpenseNonstock.Expense
|
||||
|
||||
if exp.Supplier != nil && exp.Supplier.Id != 0 {
|
||||
supplierSummary := supplierDTO.ToSupplierRelationDTO(*exp.Supplier)
|
||||
dto.ExpeditionVendor = &supplierSummary
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return dto
|
||||
}
|
||||
|
||||
|
||||
@@ -110,7 +110,10 @@ func (s *purchaseService) withRelations(db *gorm.DB) *gorm.DB {
|
||||
Preload("Items.Product.Flags").
|
||||
Preload("Items.Warehouse.Area").
|
||||
Preload("Items.Warehouse.Location").
|
||||
Preload("Items.ProductWarehouse")
|
||||
Preload("Items.ProductWarehouse").
|
||||
Preload("Items.ExpenseNonstock").
|
||||
Preload("Items.ExpenseNonstock.Expense").
|
||||
Preload("Items.ExpenseNonstock.Expense.Supplier")
|
||||
}
|
||||
|
||||
func (s *purchaseService) GetAll(c *fiber.Ctx, params *validation.Query) ([]entity.Purchase, int64, error) {
|
||||
@@ -319,8 +322,8 @@ func (s *purchaseService) CreateOne(c *fiber.Ctx, req *validation.CreatePurchase
|
||||
purchase := &entity.Purchase{
|
||||
SupplierId: uint(req.SupplierID),
|
||||
// DueDate: dueDate,
|
||||
Notes: req.Notes,
|
||||
CreatedBy: uint(actorID),
|
||||
Notes: req.Notes,
|
||||
CreatedBy: uint(actorID),
|
||||
}
|
||||
|
||||
items := make([]*entity.PurchaseItem, 0, len(aggregated))
|
||||
@@ -432,7 +435,7 @@ func (s *purchaseService) ApproveStaffPurchase(c *fiber.Ctx, id uint, req *valid
|
||||
|
||||
syncReceiving := !isInitialApproval && hasReceivingData
|
||||
|
||||
if len(req.Items) == 0 {
|
||||
if action == entity.ApprovalActionApproved && len(req.Items) == 0 {
|
||||
return nil, utils.BadRequest("Items must not be empty for staff approval")
|
||||
}
|
||||
|
||||
@@ -1397,21 +1400,21 @@ func (s *purchaseService) loadPurchase(
|
||||
}
|
||||
|
||||
func collectPFKIDsFromPurchase(p *entity.Purchase) []uint {
|
||||
seen := make(map[uint]struct{})
|
||||
ids := make([]uint, 0)
|
||||
seen := make(map[uint]struct{})
|
||||
ids := make([]uint, 0)
|
||||
|
||||
for _, item := range p.Items {
|
||||
if item.ProjectFlockKandangId == nil || *item.ProjectFlockKandangId == 0 {
|
||||
continue
|
||||
}
|
||||
id := uint(*item.ProjectFlockKandangId)
|
||||
if _, ok := seen[id]; ok {
|
||||
continue
|
||||
}
|
||||
seen[id] = struct{}{}
|
||||
ids = append(ids, id)
|
||||
}
|
||||
return ids
|
||||
for _, item := range p.Items {
|
||||
if item.ProjectFlockKandangId == nil || *item.ProjectFlockKandangId == 0 {
|
||||
continue
|
||||
}
|
||||
id := uint(*item.ProjectFlockKandangId)
|
||||
if _, ok := seen[id]; ok {
|
||||
continue
|
||||
}
|
||||
seen[id] = struct{}{}
|
||||
ids = append(ids, id)
|
||||
}
|
||||
return ids
|
||||
}
|
||||
func (s *purchaseService) ensureProjectFlockNotClosedForPurchase(
|
||||
ctx context.Context,
|
||||
@@ -1429,5 +1432,3 @@ func (s *purchaseService) ensureProjectFlockNotClosedForPurchase(
|
||||
|
||||
return commonSvc.EnsureProjectFlockNotClosedForProductWarehouses(ctx, db, pfkIDs)
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user