Poprawki w API rachunków i kds

This commit is contained in:
2026-05-24 22:20:23 +02:00
parent 58fae2f0e6
commit f95f578bab
10 changed files with 597 additions and 53 deletions
+38 -12
View File
@@ -22,6 +22,8 @@ if (!$conn) {
]));
}
$tableParam = isset($_GET['table']) ? strtolower(trim($_GET['table'])) : '';
// Zapytanie SQL wyciągające aktywne pozycje (StatusRealizacji < 4)
// Łączymy NGastroDTRachunekPozycja z NGastroDTRachunek (żeby mieć stolik) i z NGastroTowar (żeby mieć nazwę)
$tsql = "
@@ -29,6 +31,7 @@ $tsql = "
r.StolikID,
s.Nazwa AS NazwaStolika,
r.Numer AS NumerRachunku,
r.Opis,
r.NumerReczny AS NumerRecznyRachunku,
rp.ID AS PozycjaID,
rp.StatusRealizacji,
@@ -47,10 +50,12 @@ $tsql = "
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
LEFT JOIN dbo.NGastroKonfiguracjaDrukowaniaZamowien kdz ON kdz.ID = ISNULL(rp.KonfiguracjaDrukowaniaZamowienID, t.KonfiguracjaDrukowaniaZamowienID)
WHERE r.Status = 0
AND rp.StatusRealizacji > 0
AND rp.StatusRealizacji < 4
AND kdz.ID IS NOT NULL
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
";
@@ -67,17 +72,38 @@ if ($stmt === false) {
$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');
$stolikNazwa = strtolower($row['NazwaStolika'] ?? '');
$opis = strtolower($row['Opis'] ?? '');
$normalizedTableParam = str_replace('o', '0', $tableParam);
$normalizedStolikNazwa = str_replace('o', '0', $stolikNazwa);
$normalizedOpis = str_replace('o', '0', $opis);
$isMatched = false;
if (!$tableParam) {
$isMatched = true;
} else {
$pattern = '/\b' . preg_quote($normalizedTableParam, '/') . '\b/i';
if (
$normalizedStolikNazwa === $normalizedTableParam ||
$normalizedOpis === $normalizedTableParam ||
preg_match($pattern, $normalizedStolikNazwa) ||
preg_match($pattern, $normalizedOpis)
) {
$isMatched = true;
}
}
// 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;
if ($isMatched) {
if ($row['DataDodania'] instanceof DateTime) {
$row['DataDodania'] = $row['DataDodania']->format('Y-m-d H:i:s');
}
$row['StolikID'] = $row['StolikID'] ? strtoupper($row['StolikID']) : null;
$row['PozycjaID'] = strtoupper($row['PozycjaID']);
$row['TowarID'] = strtoupper($row['TowarID']);
$pozycje[] = $row;
}
}
// Zwracamy czysty JSON