'Gastro', 'Uid' => 'sa', 'PWD' => 'karczma!@#26', 'CharacterSet' => 'UTF-8', ]; // Połączenie z bazą $conn = sqlsrv_connect($serverName, $connectionOptions); if (!$conn) { die(json_encode([ 'status' => 'error', 'message' => 'Błąd połączenia z bazą danych.', 'errors' => sqlsrv_errors() ])); } // Zapytanie SQL wyciągające aktywne pozycje (StatusRealizacji < 4) // Łączymy NGastroDTRachunekPozycja z NGastroDTRachunek (żeby mieć stolik) i z NGastroTowar (żeby mieć nazwę) $tsql = " SELECT r.StolikID, s.Nazwa AS NazwaStolika, r.Numer AS NumerRachunku, r.NumerReczny AS NumerRecznyRachunku, rp.ID AS PozycjaID, rp.StatusRealizacji, rp.Ilosc, rp.DataDodania, rp.Notatka, CASE WHEN rp.NazwaDanieOtwarte != '' THEN rp.NazwaDanieOtwarte ELSE ISNULL(NULLIF(t.NazwaNaZamowieniu, ''), t.NazwaTowaru) END AS NazwaTowaru, ISNULL(NULLIF(tz.NazwaNaZamowieniu, ''), tz.NazwaTowaru) AS NazwaZestawu, rp.GrupaZestawuID, rp.TowarID FROM dbo.NGastroDTRachunekPozycja rp INNER JOIN dbo.NGastroDTRachunek r ON r.ID = rp.DTRachunekID LEFT JOIN dbo.NGastroTowar t ON t.ID = rp.TowarID LEFT JOIN dbo.NGastroTowar tz ON tz.ID = rp.ZestawID LEFT JOIN dbo.NGastroStolik s ON s.ID = r.StolikID WHERE rp.StatusRealizacji = 1 AND CAST(rp.DataDodania AS DATE) = CAST(GETDATE() AS DATE) -- Opcjonalnie: pominięcie usuniętych pozycji, zazwyczaj posiadają DataUsuniecia różną od domyślnej, -- lub oznaczane są poprzez inny mechanizm, ale na razie trzymajmy się StatusRealizacji AND rp.DataUsuniecia = '1900-01-01' ORDER BY rp.DataDodania ASC "; $stmt = sqlsrv_query($conn, $tsql); if ($stmt === false) { die(json_encode([ 'status' => 'error', 'message' => 'Błąd podczas wykonywania zapytania SQL.', 'errors' => sqlsrv_errors() ])); } $pozycje = []; while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { // Formatowanie daty dla JSON (obiekt DateTime w PHP do ISO 8601) if ($row['DataDodania'] instanceof DateTime) { $row['DataDodania'] = $row['DataDodania']->format('Y-m-d H:i:s'); } // Rzutowanie wartości, aby uniknąć problemów w JSON $row['StolikID'] = $row['StolikID'] ? strtoupper($row['StolikID']) : null; $row['PozycjaID'] = strtoupper($row['PozycjaID']); $row['TowarID'] = strtoupper($row['TowarID']); $pozycje[] = $row; } // Zwracamy czysty JSON echo json_encode([ 'status' => 'success', 'count' => count($pozycje), 'data' => $pozycje ]); sqlsrv_free_stmt($stmt); sqlsrv_close($conn); ?>