<?php
session_start();

/* Dozvole: admin ili bilo koja uloga koja počinje s "najmovi" (najmovi, najmovi2, ...) */
$uloga = $_SESSION['uloga'] ?? '';
if (!($uloga === 'admin' || strncmp($uloga, 'najmovi', 7) === 0)) {
    http_response_code(403);
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode(["error" => "Zabranjeno."]);
    exit();
}

header('Content-Type: application/json; charset=utf-8');

$conn = new mysqli("localhost", "root", "", "upload");
if ($conn->connect_error) {
    http_response_code(500);
    echo json_encode(["error" => "DB greška"]); exit();
}
$conn->set_charset("utf8mb4");

/* Ulazni parametri */
$mjesec = (isset($_GET['mjesec']) && preg_match('/^\d{4}-\d{2}$/', $_GET['mjesec'])) ? $_GET['mjesec'] : null;

/* Poslovnica ID iz sesije; admin može override-ati preko GET parametra */
$POSL_ID = (int)($_SESSION['poslovnica_id'] ?? 0);
if ($uloga === 'admin' && isset($_GET['poslovnica_id'])) {
    $POSL_ID = (int)$_GET['poslovnica_id'];
}
if ($POSL_ID <= 0) {
    echo json_encode(["error" => "Nepoznata poslovnica.", "gotovina"=>0,"kartica"=>0,"ukupno"=>0]); exit();
}

/* ---------------- Poseban slučaj: POSLOVNICA 11 ----------------
   - bez obračuna provizije
   - dodatno: neto_uplate i stanje = (gotovina - 0) + neto_uplate
*/
if ($POSL_ID === 11) {
    // Ukupna gotovina (samo najam) – kroz sve vrijeme
    $sql_g = "SELECT COALESCE(SUM(CASE WHEN vrsta='najam' AND nacin_placanja='gotovina' THEN iznos ELSE 0 END),0) AS gotovina_ukupno
              FROM najmovi
              WHERE poslovnica_id = ?";
    $stmt = $conn->prepare($sql_g);
    $stmt->bind_param("i", $POSL_ID);
    $stmt->execute();
    $g = $stmt->get_result()->fetch_assoc(); 
    $stmt->close();
    $gotovina_ukupno = (float)($g['gotovina_ukupno'] ?? 0);

    // Promet po mjesecima (samo najam)
    $sql_mj = "SELECT DATE_FORMAT(datum_out, '%Y-%m') AS mjesec,
                      COALESCE(SUM(CASE WHEN vrsta='najam' THEN iznos ELSE 0 END),0) AS ukupno
               FROM najmovi
               WHERE poslovnica_id = ?
               GROUP BY DATE_FORMAT(datum_out, '%Y-%m')
               ORDER BY mjesec DESC";
    $stmt = $conn->prepare($sql_mj);
    $stmt->bind_param("i", $POSL_ID);
    $stmt->execute();
    $rez = $stmt->get_result();
    $promet_po_mjesecima = [];
    $ukupno_najam = 0.0;
    while ($r = $rez->fetch_assoc()) {
        $promet_po_mjesecima[] = [
            "mjesec"  => $r["mjesec"],
            "ukupno"  => (float)$r["ukupno"]
        ];
        $ukupno_najam += (float)$r["ukupno"];
    }
    $stmt->close();

    // Neto uplate (uplata/isplata) – ZNAK ZADRŽAN
    $sql_net = "SELECT COALESCE(SUM(CASE WHEN vrsta IN ('uplata','isplata') THEN iznos ELSE 0 END),0) AS neto_uplate
                FROM najmovi
                WHERE poslovnica_id = ?";
    $stmt = $conn->prepare($sql_net);
    $stmt->bind_param("i", $POSL_ID);
    $stmt->execute();
    $net = $stmt->get_result()->fetch_assoc() ?: [];
    $stmt->close();

    $neto_uplate = (float)($net['neto_uplate'] ?? 0.0);

    // #11: nema provizije
    $provizija = 0.0;
    $ukupno_za_avia = $gotovina_ukupno - $provizija;
    $stanje = $ukupno_za_avia + $neto_uplate;

    echo json_encode([
        "gotovina"            => round($gotovina_ukupno, 2),
        "kartica"             => 0.00,
        "ukupno"              => round($ukupno_najam, 2),

        "osnova_za_proviziju" => 0.00,
        "provizija"           => round($provizija, 2),
        "ukupno_za_avia"      => round($ukupno_za_avia, 2),
        "neto_uplate"         => round($neto_uplate, 2),
        "stanje"              => round($stanje, 2),

        "promet_po_mjesecima" => $promet_po_mjesecima,
        "broj_uplata"         => 0,
        "broj_isplata"        => 0,
        "suma_uplata"         => 0.00,
        "suma_isplata"        => 0.00,
        "provizije_po_mjesecima" => []
    ], JSON_UNESCAPED_UNICODE);
    exit();
}

/* ---------------- Standard za ostale poslovnice ---------------- */
/* Glavni agregati (SAMO vrsta='najam' za gotovina/kartica/ukupno) + neto_uplate */
$sql_agg = "
  SELECT
    COALESCE(SUM(CASE WHEN vrsta='najam' AND nacin_placanja='gotovina' THEN iznos ELSE 0 END),0) AS gotovina,
    COALESCE(SUM(CASE WHEN vrsta='najam' AND nacin_placanja='kartica'  THEN iznos ELSE 0 END),0) AS kartica,
    COALESCE(SUM(CASE WHEN vrsta='najam' THEN iznos ELSE 0 END),0) AS ukupno,
    COALESCE(SUM(CASE WHEN obracun_provizije=1 THEN iznos ELSE 0 END),0) AS osnova_za_proviziju,
    COALESCE(SUM(CASE WHEN vrsta='uplata'  THEN 1 ELSE 0 END),0) AS broj_uplata,
    COALESCE(SUM(CASE WHEN vrsta='isplata' THEN 1 ELSE 0 END),0) AS broj_isplata,
    COALESCE(SUM(CASE WHEN vrsta='uplata'  THEN iznos      ELSE 0 END),0) AS suma_uplata,
    COALESCE(SUM(CASE WHEN vrsta='isplata' THEN ABS(iznos) ELSE 0 END),0) AS suma_isplata,
    COALESCE(SUM(CASE WHEN vrsta IN ('uplata','isplata') THEN iznos ELSE 0 END),0) AS neto_uplate
  FROM najmovi
  WHERE poslovnica_id = ?
    AND (? IS NULL OR DATE_FORMAT(datum_out, '%Y-%m') = ?)
";
$stmt = $conn->prepare($sql_agg);
$stmt->bind_param("iss", $POSL_ID, $mjesec, $mjesec);
$stmt->execute();
$res = $stmt->get_result()->fetch_assoc() ?: [];
$stmt->close();

$gotovina      = (float)($res['gotovina'] ?? 0.0);
$kartica       = (float)($res['kartica'] ?? 0.0);
$ukupno        = (float)($res['ukupno'] ?? 0.0);
$osnova        = (float)($res['osnova_za_proviziju'] ?? 0.0);
$broj_uplata   = (int)  ($res['broj_uplata'] ?? 0);
$broj_isplata  = (int)  ($res['broj_isplata'] ?? 0);
$suma_uplata   = (float)($res['suma_uplata'] ?? 0.0);
$suma_isplata  = (float)($res['suma_isplata'] ?? 0.0);
$neto_uplate   = (float)($res['neto_uplate'] ?? 0.0);

/* Provizije po mjesecima (samo za tu poslovnicu) */
$sql_mj = "
    SELECT DATE_FORMAT(datum_out, '%Y-%m') AS mjesec,
           COALESCE(SUM(CASE WHEN obracun_provizije=1 THEN iznos ELSE 0 END),0) AS osnova
    FROM najmovi
    WHERE poslovnica_id = ?
    GROUP BY DATE_FORMAT(datum_out, '%Y-%m')
    ORDER BY mjesec DESC
";
$stmt = $conn->prepare($sql_mj);
$stmt->bind_param("i", $POSL_ID);
$stmt->execute();
$rez_mj = $stmt->get_result();
$provizije_po_mjesecima = [];
while ($row = $rez_mj->fetch_assoc()) {
    $provizije_po_mjesecima[] = [
        "mjesec" => $row["mjesec"],
        "osnova" => (float)$row["osnova"]
    ];
}
$stmt->close();

/* Obračuni koje želiš */
$provizija      = 0.15 * $osnova;
$ukupno_za_avia = $gotovina - $provizija;
$stanje         = $ukupno_za_avia + $neto_uplate;

echo json_encode([
    "gotovina" => round($gotovina, 2),                 // SAMO najam
    "kartica"  => round($kartica, 2),                  // SAMO najam
    "ukupno"   => round($ukupno, 2),                   // SAMO najam

    "osnova_za_proviziju" => round($osnova, 2),
    "provizija"           => round($provizija, 2),         // novo
    "ukupno_za_avia"      => round($ukupno_za_avia, 2),    // novo

    "broj_uplata"   => $broj_uplata,
    "broj_isplata"  => $broj_isplata,
    "suma_uplata"   => round($suma_uplata, 2),
    "suma_isplata"  => round($suma_isplata, 2),
    "neto_uplate"   => round($neto_uplate, 2),             // novo (sa znakom)

    "stanje"        => round($stanje, 2),                  // (Ukupno za Avia) + (neto_uplate)
    "provizije_po_mjesecima" => $provizije_po_mjesecima
], JSON_UNESCAPED_UNICODE);
