Added missing fields - scraper and worker fixes

This commit is contained in:
Mazyar
2026-05-11 00:09:37 +03:30
parent e136f0eaa7
commit eb6706e061
12 changed files with 667 additions and 174 deletions
+51
View File
@@ -7,6 +7,57 @@ import (
"time"
)
// ParseIssueDateTimeToUnix combines cbc:IssueDate and cbc:IssueTime (with timezone offsets) into one Unix timestamp.
func ParseIssueDateTimeToUnix(issueDate, issueTime string) int64 {
issueDate = strings.TrimSpace(issueDate)
issueTime = strings.TrimSpace(issueTime)
if issueDate == "" {
return 0
}
if issueTime == "" {
return ParseDateToUnix(issueDate)
}
dateCore := issueDate
if len(issueDate) >= 10 && issueDate[4] == '-' && issueDate[7] == '-' {
dateCore = issueDate[:10]
}
combined := dateCore + "T" + issueTime
if t, err := ParseDate(combined); err == nil {
return t.Unix()
}
return ParseDateToUnix(issueDate)
}
// TransmissionDispatchUnix reads BT-803 (eSender) transmission date/time from extension content (root or eForms extension).
func TransmissionDispatchUnix(ext *UBLExtensions) int64 {
if ext == nil || ext.UBLExtension == nil || ext.UBLExtension.ExtensionContent == nil {
return 0
}
ec := ext.UBLExtension.ExtensionContent
if u := ParseIssueDateTimeToUnix(ec.TransmissionDate, ec.TransmissionTime); u != 0 {
return u
}
if ec.EformsExtension != nil {
if u := ParseIssueDateTimeToUnix(ec.EformsExtension.TransmissionDate, ec.EformsExtension.TransmissionTime); u != 0 {
return u
}
}
return 0
}
// ParseEuropeanAmount normalizes TED amount strings (spaces, comma decimal) for strconv.ParseFloat.
func ParseEuropeanAmount(raw string) (float64, bool) {
s := strings.TrimSpace(raw)
s = strings.ReplaceAll(s, "\u00a0", "")
s = strings.ReplaceAll(s, " ", "")
s = strings.ReplaceAll(s, ",", ".")
if s == "" {
return 0, false
}
v, err := strconv.ParseFloat(s, 64)
return v, err == nil
}
// parseDate parses various date formats used in TED XML
func ParseDate(dateStr string) (time.Time, error) {
if dateStr == "" {