mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-23 14:55:42 +00:00
fix purchase due date
This commit is contained in:
@@ -309,21 +309,17 @@ func (s *purchaseService) CreateOne(c *fiber.Ctx, req *validation.CreatePurchase
|
||||
indexMap[key] = len(aggregated) - 1
|
||||
}
|
||||
|
||||
// var dueDate *time.Time
|
||||
// if req.DueDate != nil && strings.TrimSpace(*req.DueDate) != "" {
|
||||
// parsed, err := utils.ParseDateString(strings.TrimSpace(*req.DueDate))
|
||||
// if err != nil {
|
||||
// return nil, utils.BadRequest("Invalid due_date, expected YYYY-MM-DD")
|
||||
// }
|
||||
// parsed = parsed.UTC()
|
||||
// dueDate = &parsed
|
||||
// }
|
||||
var dueDate *time.Time
|
||||
now := time.Now().UTC()
|
||||
d := now.AddDate(0, 0, req.CreditTerm)
|
||||
dueDate = &d
|
||||
|
||||
purchase := &entity.Purchase{
|
||||
SupplierId: uint(req.SupplierID),
|
||||
// DueDate: dueDate,
|
||||
Notes: req.Notes,
|
||||
CreatedBy: uint(actorID),
|
||||
CreditTerm: req.CreditTerm,
|
||||
DueDate: dueDate,
|
||||
Notes: req.Notes,
|
||||
CreatedBy: uint(actorID),
|
||||
}
|
||||
|
||||
items := make([]*entity.PurchaseItem, 0, len(aggregated))
|
||||
@@ -683,6 +679,7 @@ func (s *purchaseService) ReceiveProducts(c *fiber.Ctx, id uint, req *validation
|
||||
|
||||
visitedItems := make(map[uint]struct{}, len(req.Items))
|
||||
prepared := make([]preparedReceiving, 0, len(req.Items))
|
||||
var earliestReceived *time.Time
|
||||
for _, payload := range req.Items {
|
||||
item, exists := itemMap[payload.PurchaseItemID]
|
||||
if !exists {
|
||||
@@ -694,6 +691,10 @@ func (s *purchaseService) ReceiveProducts(c *fiber.Ctx, id uint, req *validation
|
||||
return nil, utils.BadRequest(fmt.Sprintf("Invalid received_date for item %d", payload.PurchaseItemID))
|
||||
}
|
||||
receivedDate = receivedDate.UTC()
|
||||
if earliestReceived == nil || receivedDate.Before(*earliestReceived) {
|
||||
copy := receivedDate
|
||||
earliestReceived = ©
|
||||
}
|
||||
|
||||
warehouseID := uint(item.WarehouseId)
|
||||
overrideWarehouse := false
|
||||
@@ -869,6 +870,16 @@ func (s *purchaseService) ReceiveProducts(c *fiber.Ctx, id uint, req *validation
|
||||
return err
|
||||
}
|
||||
|
||||
// Update due_date based on earliest received date when receiving approved.
|
||||
if earliestReceived != nil {
|
||||
due := earliestReceived.AddDate(0, 0, purchase.CreditTerm)
|
||||
if err := tx.Model(&entity.Purchase{}).
|
||||
Where("id = ?", purchase.Id).
|
||||
Update("due_date", due).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if s.FifoSvc != nil {
|
||||
for _, adj := range fifoAdds {
|
||||
if adj.pwID == 0 || adj.qty <= 0 {
|
||||
|
||||
Reference in New Issue
Block a user