Is there a way we can log user activity, like to see which modules were accessed by a user and at what time. Who changed prices and at what time. Who changed recipes , what time? etc. This helps because a manager can lower prices so he can buy stuff that he wants and put back the prices to normal say maybe the following morning.
Theres nothing built in to do this, you can create some automation to log things, but what you really need to do is focus on management of staff, if you know you have a manager reducing prices for their own gain sack them!
There will always be people who want top steal and ultimately pos systems arent security systems and are designed for sales, inventory etc. I can see how it would help for investigations but theres a point where you need to trust staff and if you find them doing something like this say bye bye to them
Maybe create a new Navigation button to product price list and log who used it together with orders they made you can see if someone is changing things to benefit themselves.
If the manager has no business changing prices you should put that user into a role that has no access to management.
Unfortunately, changing the price in management updates the db directly and no user information is passed.
Here’s what I’ve used to track price changes no matter where they happened:
Automation Script (Handler @@ShortSales):
SELECT o.TicketId AS TicketNo,
o.CreatedDateTime AS OrderDate,
o.MenuItemName AS Name,
o.Price AS SalePrice,
mip.Price AS OriginalPrice,
o.CreatingUserName AS UserName
FROM dbo.Orders o
INNER JOIN dbo.MenuItems mi
ON mi.Id = o.MenuItemId
INNER JOIN dbo.MenuItemPortions mipor
ON mipor.Name = o.PortionName
AND mipor.MenuItemId = o.MenuItemId
INNER JOIN dbo.MenuItemPrices mip
ON mipor.Id = mip.MenuItemPortionId
WHERE o.Price < mip.Price
AND o.PriceTag <> 'HH' --Exclude Happy Hour Prices
AND o.PriceTag <> 'VIP' --Exclude VIP Prices
AND o.CreatedDateTime
BETWEEN '{Start}' AND '{End}'
ORDER BY o.TicketId;
These lines I used to exclude order for which I know the price will be less - change to your own suiting if you have price-tag based discounts.
AND o.PriceTag <> 'HH' --Exclude Happy Hour Prices
AND o.PriceTag <> 'VIP' --Exclude VIP Prices
As for tracking recipe changes, you’re looking at some custom triggers on certain tables in the db on update and even then you’ll only be able to see the time it happened and not the user. You could implement some login/logout tracking to narrow who was logged-in at the time and go from there.