// Read-only audit of terminalid coverage on pos_orders. // // Answers one question: are blank terminal codes still arriving, or do they all // predate the posTerminalFor fix? Touches nothing. // // go run ./scratch/termaudit package main import ( "fmt" "log" "os" "github.com/joho/godotenv" "gorm.io/driver/postgres" "gorm.io/gorm" "gorm.io/gorm/logger" ) func main() { _ = godotenv.Load() dsn := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable", os.Getenv("DB_HOST"), os.Getenv("DB_PORT"), os.Getenv("DB_USER"), os.Getenv("DB_PASSWORD"), os.Getenv("DB_NAME")) db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{Logger: logger.Default.LogMode(logger.Silent)}) if err != nil { log.Fatal(err) } var rows []struct { Day string Blank int Named int Invoice string } db.Raw(`SELECT to_char(receivedat,'YYYY-MM-DD') AS day, COUNT(*) FILTER (WHERE COALESCE(terminalid,'') = '') AS blank, COUNT(*) FILTER (WHERE COALESCE(terminalid,'') <> '') AS named, MIN(invoicenumber) AS invoice FROM pos_orders GROUP BY 1 ORDER BY 1`).Scan(&rows) fmt.Printf("%-12s %7s %7s %s\n", "received", "blank", "named", "sample invoice") for _, r := range rows { fmt.Printf("%-12s %7d %7d %s\n", r.Day, r.Blank, r.Named, r.Invoice) } var last struct { Invoicenumber string Terminalid string Receivedat string } db.Raw(`SELECT invoicenumber, COALESCE(terminalid,'') AS terminalid, to_char(receivedat,'YYYY-MM-DD HH24:MI') AS receivedat FROM pos_orders WHERE COALESCE(terminalid,'') = '' ORDER BY receivedat DESC LIMIT 1`).Scan(&last) fmt.Printf("\nnewest blank bill: %s received %s\n", last.Invoicenumber, last.Receivedat) // Does the invoice number itself carry the terminal code? INV-2608-T5EDD-00116 var recoverable int db.Raw(`SELECT COUNT(*) FROM pos_orders WHERE COALESCE(terminalid,'') = '' AND invoicenumber ~ '^INV-[0-9]+-[A-Z0-9]+-[0-9]+$'`).Scan(&recoverable) fmt.Printf("blank bills whose invoice number encodes a terminal: %d\n", recoverable) }