#!/usr/bin/env bash
# Seed date de test pentru smoke testing
# Creeaza: 1 Customer, 3 Sales Invoices (paid), 1 Payment Log, 1 Service Agreement, 1 Lead
set -euo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")"
source .env 2>/dev/null || true
ERP_URL="${ERP_URL:-http://localhost:${ERPNEXT_PORT:-8080}}"
ADMIN_PWD="${ADMIN_PASSWORD:-admin}"
log() { printf '\033[1;36m[seed]\033[0m %s\n' "$*"; }
# Login si get cookies
COOKIES=$(mktemp)
trap "rm -f $COOKIES" EXIT
curl -sf -c "$COOKIES" -X POST "$ERP_URL/api/method/login" \
-d "usr=Administrator&pwd=$ADMIN_PWD" >/dev/null || {
echo "Login esuat. Verifica ca ERPNext ruleaza la $ERP_URL si parola e $ADMIN_PWD"
exit 1
}
# Helper
erp() {
local method="$1" path="$2" body="${3:-}"
if [ -n "$body" ]; then
curl -sf -b "$COOKIES" -X "$method" "$ERP_URL$path" \
-H "Content-Type: application/json" -d "$body"
else
curl -sf -b "$COOKIES" -X "$method" "$ERP_URL$path"
fi
}
KEYCLOAK_ID="${KEYCLOAK_ID:-14142351-ad1e-466b-ac5d-4a7a0ff562bf}"
# ── 1. Customer Test ────────────────────────────────────────
log "1/5 Creez Customer 'Test User'..."
if erp GET "/api/resource/Customer/Test%20User" >/dev/null 2>&1; then
log " Test User exista deja, skip"
else
erp POST "/api/resource/Customer" "$(cat < /dev/null && log " OK"
fi
# ── 2. Sales Invoices (3 bucati) ────────────────────────────
log "2/5 Creez 3 Sales Invoices..."
for i in 1 2 3; do
INV_JSON=$(erp POST "/api/resource/Sales%20Invoice" "$(cat </dev/null) || { log " Esec creare factura #$i"; continue; }
INV_NAME=$(echo "$INV_JSON" | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['name'])")
# Submit
FULL=$(erp GET "/api/resource/Sales%20Invoice/$INV_NAME")
erp POST "/api/method/frappe.client.submit" "$(echo "$FULL" | python3 -c "
import sys, json
d = json.load(sys.stdin)['data']
print(json.dumps({'doc': d}))
")" > /dev/null
log " ${INV_NAME} - Paid"
done
# ── 3. Mark all invoices as paid (cheat for demo) ───────────
log "3/5 Marchez ca platite..."
DB_NAME=$(docker exec didi-erpnext python3 -c "import json; print(json.load(open('/home/frappe/frappe-bench/sites/didi-erp/site_config.json'))['db_name'])" 2>/dev/null)
docker exec didi-mariadb mariadb -uroot -p"${MYSQL_ROOT_PASSWORD:?seteaza MYSQL_ROOT_PASSWORD in .env}" "$DB_NAME" -e "
UPDATE \`tabSales Invoice\` SET status='Paid', outstanding_amount=0 WHERE customer='Test User';
" 2>/dev/null
# ── 4. Payment Log (Stripe simulat) ─────────────────────────
log "4/5 Creez Payment Log..."
erp POST "/api/resource/Payment%20Log" "$(cat < /dev/null && log " OK"
# ── 5. Service Agreement ────────────────────────────────────
log "5/5 Creez Service Agreement..."
erp POST "/api/resource/Service%20Agreement" "$(cat <Acord servicii test - generat de seed-data.sh
"
}
JSON
)" > /dev/null && log " OK"
# ── 6. Lead (din formularul de contact) ─────────────────────
log "Bonus: Creez 1 Lead..."
erp POST "/api/resource/Lead" "$(cat < /dev/null && log " OK"
# ── Summary ─────────────────────────────────────────────────
log "============================================="
log "Date seedate:"
log " 1 Customer (Test User, paid_tier)"
log " 3 Sales Invoices (DIDI-INV-2026-xxxxx, Paid)"
log " 1 Payment Log (Stripe simulat)"
log " 1 Service Agreement"
log " 1 Lead (Prospect Demo)"
log ""
log "Verificare: http://localhost:${ERPNEXT_PORT:-8080}/app/customer"
log "============================================="