update due date and range date

This commit is contained in:
2026-05-29 18:24:14 +07:00
parent d26f5c5354
commit dc13bb5f93
23 changed files with 640 additions and 84 deletions
+33 -27
View File
@@ -47,18 +47,19 @@ func (v *PurchaseOrderValidatorImpl) ValidateCreatePurchaseOrderRequest(req *con
return errors.New("transaction_date must be in YYYY-MM-DD format"), constants.MalformedFieldErrorCode
}
// Validate due date
if strings.TrimSpace(req.DueDate) == "" {
return errors.New("due_date is required"), constants.MissingFieldErrorCode
}
dueDate, err := time.Parse("2006-01-02", req.DueDate)
if err != nil {
return errors.New("due_date must be in YYYY-MM-DD format"), constants.MalformedFieldErrorCode
}
if req.DueDate != nil {
if strings.TrimSpace(*req.DueDate) == "" {
return errors.New("due_date cannot be empty"), constants.MalformedFieldErrorCode
}
// Check if due date is after transaction date
if dueDate.Before(transactionDate) {
return errors.New("due_date must be after transaction_date"), constants.MalformedFieldErrorCode
dueDate, err := time.Parse("2006-01-02", *req.DueDate)
if err != nil {
return errors.New("due_date must be in YYYY-MM-DD format"), constants.MalformedFieldErrorCode
}
if dueDate.Before(transactionDate) {
return errors.New("due_date must be after transaction_date"), constants.MalformedFieldErrorCode
}
}
if req.Reference != nil && len(*req.Reference) > 100 {
@@ -100,22 +101,27 @@ func (v *PurchaseOrderValidatorImpl) ValidateUpdatePurchaseOrderRequest(req *con
}
}
// Validate dates if both are provided
if req.TransactionDate != nil && req.DueDate != nil {
if *req.TransactionDate != "" && *req.DueDate != "" {
transactionDate, err := time.Parse("2006-01-02", *req.TransactionDate)
if err != nil {
return errors.New("transaction_date must be in YYYY-MM-DD format"), constants.MalformedFieldErrorCode
}
dueDate, err := time.Parse("2006-01-02", *req.DueDate)
if err != nil {
return errors.New("due_date must be in YYYY-MM-DD format"), constants.MalformedFieldErrorCode
}
if dueDate.Before(transactionDate) {
return errors.New("due_date must be after transaction_date"), constants.MalformedFieldErrorCode
}
var transactionDate *time.Time
if req.TransactionDate != nil && *req.TransactionDate != "" {
parsedDate, err := time.Parse("2006-01-02", *req.TransactionDate)
if err != nil {
return errors.New("transaction_date must be in YYYY-MM-DD format"), constants.MalformedFieldErrorCode
}
transactionDate = &parsedDate
}
if req.DueDate != nil {
if strings.TrimSpace(*req.DueDate) == "" {
return errors.New("due_date cannot be empty"), constants.MalformedFieldErrorCode
}
dueDate, err := time.Parse("2006-01-02", *req.DueDate)
if err != nil {
return errors.New("due_date must be in YYYY-MM-DD format"), constants.MalformedFieldErrorCode
}
if transactionDate != nil && dueDate.Before(*transactionDate) {
return errors.New("due_date must be after transaction_date"), constants.MalformedFieldErrorCode
}
}