#!/bin/bash
set -e

CFG_FILE="/etc/opt/bukts/bukts-kassa.cfg"

# ===============================
# 1) Проверка root
# ===============================
if [[ "$EUID" -ne 0 ]]; then
  echo "Ошибка: скрипт должен быть запущен от root"
  exit 1
fi

# ===============================
# 2) Debian 8 -> i386, иначе -> amd64
# ===============================
DEBIAN_VERSION=""
if [[ -f /etc/os-release ]]; then
  . /etc/os-release
  DEBIAN_VERSION="$VERSION_ID"
fi

if [[ "$DEBIAN_VERSION" == "8" ]]; then
  echo "Обнаружен Debian 8 (jessie)"
  wget -q http://repo-tn.bukts.ru/pool/bukts-current/bukts-kassa_11.5.10-0_i386.deb
  dpkg -i bukts-kassa_11.5.10-0_i386.deb
else
  echo "Обнаружен Debian $DEBIAN_VERSION"
  wget -q http://repo-tn.bukts.ru/pool/bukts-current/bukts-kassa_11.5.10-0_amd64.deb
  dpkg -i bukts-kassa_11.5.10-0_amd64.deb
fi

# ===============================
# 3) Проверка конфига
# ===============================
if [[ ! -f "$CFG_FILE" ]]; then
  echo "Ошибка: файл $CFG_FILE не найден"
  exit 1
fi

TYP_VALUE=$(sed -n 's/^[[:space:]]*[Tt][Yy][Pp]=\([^#[:space:]]*\).*/\1/p' "$CFG_FILE" | head -n1)

if [[ -z "$TYP_VALUE" ]]; then
  echo "Ошибка: не найдено TYP= в $CFG_FILE"
  exit 1
fi

# ===============================
# 4) ЖЁСТКАЯ очистка и установка TAX
# ===============================
apply_tax_block() {
  local tax_line="$1"
  local tax2_line="$2"

  # Удаляем ВСЕ tax/tax2 в любом регистре
  sed -i '/^[[:space:]]*#*[[:space:]]*tax2=/Id' "$CFG_FILE"
  sed -i '/^[[:space:]]*#*[[:space:]]*tax=/Id'  "$CFG_FILE"

  # Добавляем ровно один корректный блок
  {
    echo
    echo "$tax_line"
    echo "$tax2_line"
  } >> "$CFG_FILE"
}

KASSA_TYPE=""

# ===============================
# 5) Логика по TYP
# ===============================
if [[ "$TYP_VALUE" == "11" ]]; then
  apply_tax_block "TAX=0,5,4,10" "TAX2=0,10,4,10"
  KASSA_TYPE="ПРИМ"

elif [[ "$TYP_VALUE" == "12" ]]; then
  get_kassa_model() {
  printf '%s\r\n' '@!SIMPL;KOD=252' \
  | nc -w 1 127.0.0.1 65522 2>/dev/null \
  | sed -n 's/.*TXT=\([^;$]*\).*/\1/p' \
  | sed 's/../& /g' \
  | awk '{for(i=7;i<NF;i++) printf "%s", $i}' \
  | xxd -r -p \
  | iconv -f CP1251 -t UTF-8
}

MODEL_RAW=""

for attempt in 1 2 3 4 5; do
  MODEL_RAW="$(get_kassa_model)"

  if [[ -n "$MODEL_RAW" ]]; then
    break
  fi

  if [[ "$attempt" -lt 5 ]]; then
    echo "Касса не ответила, повторная попытка через 5 секунд (попытка $attempt/5)"
    sleep 5
  fi
done

if [[ -z "$MODEL_RAW" ]]; then
  echo "Предупреждение: касса не ответила после 3 попыток"
  echo "Используем настройки ШТРИХ по умолчанию"
  MODEL_RAW="ШТРИХ (по умолчанию)"
fi

  if [[ "$MODEL_RAW" == ШТРИХ* ]]; then
    apply_tax_block "TAX=3,1,2,203" "TAX2=3,203,2,203"
    KASSA_TYPE="ШТРИХ ($MODEL_RAW)"

  elif [[ "$MODEL_RAW" == РИТЕЙЛ* ]]; then
    apply_tax_block "TAX=3,1,2,144" "TAX2=3,144,2,144"
    KASSA_TYPE="РИТЕЙЛ ($MODEL_RAW)"

  else
    echo "Ошибка: неизвестный тип кассы: $MODEL_RAW"
    exit 1
  fi

else
  echo "Ошибка: неизвестное значение TYP=$TYP_VALUE"
  exit 1
fi

# ===============================
# 6) Финальный вывод
# ===============================
echo "===================================="
echo "Настройки успешно обновлены"
echo "Тип кассы: $KASSA_TYPE"
echo "===================================="

echo
echo "===== Текущее содержимое $CFG_FILE ====="
echo
cat "$CFG_FILE"
echo
echo "===== Конец файла ====="

rm -- "$0"
