# ===== Config =====
PHP        ?= php
# Script para productos/categorías/marcas/modelos
SCRIPT_CAT_PROD ?= importar_cat_prod.php
# Script para costos+equivalencias y para stock
SCRIPT_COST_EQ  ?= importar_costos_equivalencias.php
SCRIPT_STOCK    ?= importar_stock.php

# Carpeta donde están los CSV
CSV_DIR    ?= $(CURDIR)

# Paginado
LIMIT      ?= 2000        # cuántas filas por tanda
CHUNK      ?= 500         # commit cada N filas dentro del importador (si aplica)

# Empresa/Sucursal/Almacén por defecto (puedes cambiarlos)
EMPRESA_ID ?= 1
SUCURSAL_ID?= 1
ALMACEN_ID ?= 1

# Logs
LOG_DIR    ?= logs
DATESTAMP  := $(shell date +"%Y%m%d_%H%M%S")

# ===== Helpers =====
# Cuenta filas del CSV de productos, restando la cabecera
PRODUCTS_CSV ?= $(CSV_DIR)/productos.csv
TOTAL_ROWS   := $(shell [ -f "$(PRODUCTS_CSV)" ] && expr `wc -l < "$(PRODUCTS_CSV)"` - 1 || echo 0)
PAGES        := $(shell [ "$(TOTAL_ROWS)" -gt 0 ] && python3 - <<'PY'
import os,math
total=int(os.environ.get("TOTAL_ROWS","0"))
limit=int(os.environ.get("LIMIT","2000"))
print(math.ceil(total/limit) if total>0 else 0)
PY
)

# Genera una lista de offsets: 0, LIMIT, 2*LIMIT, ...
OFFSETS := $(shell [ "$(PAGES)" -gt 0 ] && python3 - <<'PY'
import os
limit=int(os.environ.get("LIMIT","2000"))
pages=int(os.environ.get("PAGES","0"))
print(" ".join(str(i*limit) for i in range(pages)))
PY
)

# ===== Targets =====

.PHONY: help
help:
	@echo "Targets:"
	@echo "  make run-products       # Importa categorias,marcas,modelos,productos en tandas (offset/limit/chunk)"
	@echo "  make run-precios        # Solo recalcula precios_sucursal desde productos.csv"
	@echo "  make run-costos         # Inserta costos iniciales (por empresa/almacen detectados en productos.csv)"
	@echo "  make run-equivalencias  # Importa equivalencias.csv"
	@echo "  make run-stock          # Importa stock.csv (kardex)"
	@echo ""
	@echo "Variables útiles (override con VAR=valor):"
	@echo "  CSV_DIR, LIMIT, CHUNK, EMPRESA_ID, SUCURSAL_ID, ALMACEN_ID, LOG_DIR"
	@echo ""
	@echo "Ejemplo: make run-products CSV_DIR=/ruta/a/csv LIMIT=1000 CHUNK=200"

$(LOG_DIR):
	@mkdir -p $(LOG_DIR)

# 1) Productos (con paginado)
.PHONY: run-products
run-products: $(LOG_DIR)
	@if [ "$(TOTAL_ROWS)" -le 0 ]; then \
	  echo "No se encontró $(PRODUCTS_CSV) o no tiene filas."; exit 1; \
	fi
	@echo "Total filas productos: $(TOTAL_ROWS) | LIMIT=$(LIMIT) | PAGES=$(PAGES)"
	@for off in $(OFFSETS); do \
	  echo "==> Importando productos offset=$$off limit=$(LIMIT)"; \
	  $(PHP) $(SCRIPT_CAT_PROD) \
	    --csv_dir=$(CSV_DIR) \
	    --empresa_id=$(EMPRESA_ID) --sucursal_id=$(SUCURSAL_ID) --almacen_id=$(ALMACEN_ID) \
	    --only=categorias,marcas,modelos,productos \
	    --offset=$$off --limit=$(LIMIT) --chunk_size=$(CHUNK) \
	    > $(LOG_DIR)/prod_$(DATESTAMP)_off$$off.json 2>&1 || exit $$?; \
	done
	@echo "OK. Logs en $(LOG_DIR)/prod_$(DATESTAMP)_*.json"

# 1b) Solo precios_sucursal desde productos.csv (sin paginar)
.PHONY: run-precios
run-precios: $(LOG_DIR)
	@$(PHP) $(SCRIPT_CAT_PROD) \
	  --csv_dir=$(CSV_DIR) \
	  --empresa_id=$(EMPRESA_ID) --sucursal_id=$(SUCURSAL_ID) --almacen_id=$(ALMACEN_ID) \
	  --only=precios_sucursal \
	  > $(LOG_DIR)/precios_$(DATESTAMP).json 2>&1
	@echo "OK. Log en $(LOG_DIR)/precios_$(DATESTAMP).json"

# 2) Costos iniciales (lee productos.csv y detecta almacenes por empresa)
.PHONY: run-costos
run-costos: $(LOG_DIR)
	@$(PHP) $(SCRIPT_COST_EQ) \
	  --csv_dir=$(CSV_DIR) \
	  --empresa_id=$(EMPRESA_ID) --sucursal_id=$(SUCURSAL_ID) --almacen_id=$(ALMACEN_ID) \
	  --only=costos_iniciales \
	  > $(LOG_DIR)/costos_$(DATESTAMP).json 2>&1
	@echo "OK. Log en $(LOG_DIR)/costos_$(DATESTAMP).json"

# 2b) Equivalencias (equivalencias.csv)
.PHONY: run-equivalencias
run-equivalencias: $(LOG_DIR)
	@$(PHP) $(SCRIPT_COST_EQ) \
	  --csv_dir=$(CSV_DIR) \
	  --empresa_id=$(EMPRESA_ID) --sucursal_id=$(SUCURSAL_ID) --almacen_id=$(ALMACEN_ID) \
	  --only=equivalencias \
	  > $(LOG_DIR)/equivalencias_$(DATESTAMP).json 2>&1
	@echo "OK. Log en $(LOG_DIR)/equivalencias_$(DATESTAMP).json"

# 3) Stock / Kardex
.PHONY: run-stock
run-stock: $(LOG_DIR)
	@$(PHP) $(SCRIPT_STOCK) \
	  --csv_dir=$(CSV_DIR) \
	  --empresa_id=$(EMPRESA_ID) --sucursal_id=$(SUCURSAL_ID) --almacen_id=$(ALMACEN_ID) \
	  --only=stock \
	  > $(LOG_DIR)/stock_$(DATESTAMP).json 2>&1
	@echo "OK. Log en $(LOG_DIR)/stock_$(DATESTAMP).json"
