bmc_hub/scripts/fix_economic_numbers.sh
Christian 42b766b31e Add scripts for managing e-conomic customer numbers
- Implemented fix_economic_numbers.sh to correct invalid 10-digit economic_customer_number entries in the database.
- Created import_economic_csv.py for importing customers from a CSV file into the Hub database, handling updates and new entries.
- Developed match_all_customers.sh to match all customers from a CSV file to the Hub database, updating or creating records as necessary.
- Added simple_match.sh for a straightforward matching process of customers from a CSV file to the Hub database.
2026-01-06 19:59:07 +01:00

84 lines
2.8 KiB
Bash

#!/bin/bash
# Script til at rette forkerte 10-cifrede e-conomic kundenumre
# Baseret på CSV eksport fra e-conomic
set -e
CONTAINER_NAME="bmc-hub-postgres-prod"
DB_USER="bmc_hub"
DB_NAME="bmc_hub"
# Farver til output
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
echo -e "${GREEN}🔍 Finder kunder med forkerte 10-cifrede economic_customer_number...${NC}"
# Find alle kunder med 10+ cifrede numre (over 999999999)
echo "SELECT id, name, economic_customer_number FROM customers WHERE economic_customer_number > 999999999 ORDER BY economic_customer_number;" | \
sudo podman exec -i "$CONTAINER_NAME" psql -U "$DB_USER" -d "$DB_NAME"
echo ""
echo -e "${YELLOW}⚠️ Disse numre er ugyldige i e-conomic (max 9 cifre tilladt)${NC}"
echo ""
# Ret specifikke kendte cases fra CSV
echo -e "${GREEN}🔧 Retter kendte forkerte numre...${NC}"
# PFA kunder med forkerte numre - baseret på mønstre i CSV
# 2065328011 skal være 20653280X (find det rigtige i e-conomic)
# 2065328014 skal være 206532814 eller lignende
# Først: Fjern sidste ciffer hvis det er 1 og nummeret eksisterer i e-conomic
echo -e "${YELLOW}📋 Strategi: Fjerner sidste ciffer fra 10-cifrede numre${NC}"
# Hent alle 10-cifrede numre
INVALID_NUMBERS=$(sudo podman exec -i "$CONTAINER_NAME" psql -U "$DB_USER" -d "$DB_NAME" -t -c \
"SELECT id, economic_customer_number FROM customers WHERE economic_customer_number > 999999999;")
if [ -z "$INVALID_NUMBERS" ]; then
echo -e "${GREEN}✅ Ingen forkerte numre fundet!${NC}"
exit 0
fi
# For hver forkert nummer, prøv at rette det
echo "$INVALID_NUMBERS" | while IFS='|' read -r id number; do
id=$(echo "$id" | xargs)
number=$(echo "$number" | xargs)
if [ -z "$id" ] || [ -z "$number" ]; then
continue
fi
# Fjern sidste ciffer
corrected=$((number / 10))
echo -e "${YELLOW}Kunde ID $id: $number$corrected${NC}"
# Opdater i database
sudo podman exec -i "$CONTAINER_NAME" psql -U "$DB_USER" -d "$DB_NAME" -c \
"UPDATE customers SET economic_customer_number = $corrected WHERE id = $id;"
echo -e "${GREEN}✅ Opdateret kunde $id${NC}"
done
echo ""
echo -e "${GREEN}✅ Rettelser komplet!${NC}"
echo ""
echo -e "${YELLOW}📋 Verificer resultatet:${NC}"
sudo podman exec -i "$CONTAINER_NAME" psql -U "$DB_USER" -d "$DB_NAME" -c \
"SELECT id, name, economic_customer_number FROM customers WHERE economic_customer_number > 999999999;"
REMAINING=$(sudo podman exec -i "$CONTAINER_NAME" psql -U "$DB_USER" -d "$DB_NAME" -t -c \
"SELECT COUNT(*) FROM customers WHERE economic_customer_number > 999999999;")
if [ "$REMAINING" -eq 0 ]; then
echo -e "${GREEN}✅ Alle kundenumre er nu gyldige!${NC}"
else
echo -e "${RED}⚠️ $REMAINING kunder har stadig ugyldige numre${NC}"
fi