implement bop for expedition must recheck and qty in staff purchase need info

This commit is contained in:
ragilap
2025-12-05 14:08:54 +07:00
parent c064fb1765
commit ee2db748ea
15 changed files with 1062 additions and 292 deletions
+34 -1
View File
@@ -1,8 +1,9 @@
package utils
import (
"time"
"errors"
"strings"
"time"
)
// ParseDateString mengubah string "YYYY-MM-DD" menjadi time.Time
@@ -23,3 +24,35 @@ func ParseDateString(dateStr string) (time.Time, error) {
func FormatDate(t time.Time) string {
return t.Format("2006-01-02")
}
// ParseDateRangeForQuery parses optional YYYY-MM-DD from/to strings for list filters.
// It returns a start pointer (inclusive) and an end pointer advanced by one day
// so callers can safely use "< end" to achieve an inclusive upper bound.
func ParseDateRangeForQuery(fromStr, toStr string) (*time.Time, *time.Time, error) {
var fromPtr *time.Time
var toPtr *time.Time
if strings.TrimSpace(fromStr) != "" {
parsed, err := ParseDateString(strings.TrimSpace(fromStr))
if err != nil {
return nil, nil, errors.New("created_from must use format YYYY-MM-DD")
}
fromValue := parsed
fromPtr = &fromValue
}
if strings.TrimSpace(toStr) != "" {
parsed, err := ParseDateString(strings.TrimSpace(toStr))
if err != nil {
return nil, nil, errors.New("created_to must use format YYYY-MM-DD")
}
nextDay := parsed.AddDate(0, 0, 1)
toPtr = &nextDay
}
if fromPtr != nil && toPtr != nil && fromPtr.After(*toPtr) {
return nil, nil, errors.New("created_from must be earlier than created_to")
}
return fromPtr, toPtr, nil
}