Merhabalar,
ilk önce kisaca sorunumdan ve mesajin ilerleyen satirlarinda da cözümünden bahsetmek istiyorum.
Senaryo söyle;
Bir müsterinin 3 farkli Happy Hour zaman araligi var.
- 12:00 - 15:00 (%2 lik bir indirim)
- 18:00 - 21:00 (%5 lik bir indirim)
- 21:01 - 01:00 (%10 luk bir indirim)
Ilk düsüncem, Fiyat etiketlerinden HH1, HH2, HH3 gibi etiketler olusturup, -2 veya %2, %5, %10 gibi oranlarin girilip girilemiyecegi oldu.
Fakat bu olmadi.
Bu zaman araliklarinda, SADECE icecekler ve Coctails’lerde farkli oranlarda indirim yapmak istiyor. Isin zor olan tarafi ise, musterinin 300 e yakin Icecek/Coctaili var. Hadi onuda bosver, birde bunlarin yüzdelik hesaplamasi var…Isin yoksa hamallik yapican ve 900 tane farkli hesap yaparak, tek tek bu ürünleri giris yaparak HATASIZ bir sekilde kaydedicen…Uzun is :-).
Sorun degil, en fazla yarim günümü alir. Ama isin hamalligini neden ben yapayim, SambaPOS yapsin diye düsünürken ve SambaPOS Support ile 2-3 Mail trafiginden sonra, @veysel Hocam sag olsun bir cözüm önerisi sundu ve oldukca kafama yatti.
Kisaca yapilmasi gerekenler söyle (zaman buldukca ve test ettikce ilave edicem);
Cözümü
1-) Durumlar;
Durumlarin Listesi
1.1) HH1 - Siparis Durumu
1.2) HH2 - Siparis Durumu
1.3) HH3 - Siparis Durumu
2.) Eylemler
Yapilacak olan Eylemlerin Listesi
2.1) HH1 - Siparis Durumunu Güncelle
2.2) HH2 - Siparis Durumunu Güncelle
2.3) HH3 - Siparis Durumunu Güncelle
2.4) HH1 - Siparisini Güncelle Eylemi
2.5) HH2 - Siparisini Güncelle Eylemi
2.6) HH3 - Siparisini Güncelle Eylemi
2.7) HH1 - Uygulama Baslik Güncelle
Bu eylemdeki amac, Uygulama basliginin altinda "HH xx TIME" yazdirmak
2.8) HH2 - Uygulama Baslik Güncelle
2.9) HH3 - Uygulama Baslik Güncelle
2.10) HH - Uygulama Baslik SIFIRLA
- NOT: Bu eylem BELGE KAPANIYOR bölümünün en sonuna eklenecek.
3.) Kurallar
Kurallarin Listesi
3.1) HH1 - %2 Ayarla Kurali
3.2) HH2 - %5 Ayarla Kurali
3.3) HH3 - %10 Ayarla Kurali
4.) Raporlar
Resimdeki gibi bir raporu alabilmek iicn uyguladigim rapor asagidaki gibi
[Happy Hour DETAILS:1,4, 1, 1, 2, 1]
>BelegNo|Menu|Stk.|Preis|SUM(EUR)|Status
{REPORT SQL DETAILS:
SELECT Tickets.TicketNumber,
Orders.MenuItemName,
Orders.Quantity,
Orders.Price,
(Orders.Price * Orders.Quantity) AS Summe,
Orders.PriceTag,
Status
FROM Orders
CROSS APPLY OPENJSON(Orders.OrderStates)
WITH(Status NVARCHAR(255) '$.SN')
INNER JOIN Tickets ON Orders.TicketId = Tickets.Id
WHERE (Status = N'HH1_Status') OR (Status = N'HH2_Status') OR (Status = N'HH3_Status')
ORDER BY Tickets.TicketNumber
:F.TicketNumber,F.MenuItemName,F.Quantity, F.Price, F.Summe, F.Status:
:{0}|{1}|{2}|{3}|{4}|{5}
}
>>Total
{REPORT SQL DETAILS:
SELECT
SUM(Orders.Quantity) AS Qty,
SUM(Orders.Price*Orders.Quantity) AS Summe
FROM Orders
CROSS APPLY OPENJSON(Orders.OrderStates)
WITH(Status NVARCHAR(255) '$.SN')
INNER JOIN Tickets ON Orders.TicketId = Tickets.Id
WHERE (Status = N'HH1_Status') OR (Status = N'HH2_Status') OR (Status = N'HH3_Status')
:F.Qty,F.Summe:
:||{0}|-|{1}
}
5.) Olasi Sorunlar
-
Gece 23:59 tan sonra farkli bir bir eylem/kural eklenmeli. Bunu rahmetli emre hocayla konusmustuk
Happy Hour Saat sorunu 2: Bitis saati kücük olursa tanimlama calismiyor -
Yapilan zaman araligi sadece 1 ürün grubuna uygulanabiliyor. Birden fazla ürün grubuna uygulanmak istenirse, her grub icin AYNI Kural eklenmek zorunda.
-
Raporlarda kullanilan Syntax MS SQL Server 2017 de test edilmistir.
5a Örnek:
Resimdeki ayarlarda görülecegi üzere, sadece BIERE Grubuna Happy Hour kurali eklenebiliyor. Ayni zaman araligina birden fazla grup eklemek zorunda kalirsaniz, ayni kurali tekrar o gruba ilave etmeniz gerekli.