SambaPOS 5.2.13 Beta Release

…and “No” could be 0x price, so the price is not charged. This would be very convenient

2 Likes

I’ll be away for 2 more days for vacation however wanted to comment this because I wondered why you don’t use quantity tags instead of prefixes. Add 2x cheese and pricing, inventory etc all done.

Interesting, can you allow multiple quantity and prefixes at same time? Right now it’s one or the other unless recently changed

Quantity props are defined in tag level so if you define prefixed tags you should be able to set max min quantities.

If you let me know how you’re planning to use that I can think about inheriting these props from unprefixed tag.

Hi mate its HTML, im using a STAR TSP700II thermal printer with line character set at 43 using 80mm thermal receipt roll paper setting

Its not fully finished yet as it needs tidying up and ive got the “discount” section to look at and havent done anything with entity section yet as that needs re-working but you can see the general idea with what ive done so far from the image of the receipt

Heres the template settings for the above receipt image

[LAYOUT]
-- General layout
<XCT>27,112,0,25,250
<XCT>29,40,76,6,0,48,69,48,48,1,1
<bmp>C:\SambaPOS5\Product Images\SmallLogoBW.jpg</bmp>
<div style="font-size:25px;font-weight:bold;text-align:center;font-family:'Calibri'">SALES RECEIPT</div>
<F>-
<div style="font-size:13px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="25">Qty</td><td width="200">Item Description</td><td width="45">Price</td>
</tr>
</table>
</div>
<F>-
{ORDERS}
<div style="font-size:15px;font-weight:bold;text-align:center;font-family:'Calibri'"><br/>{TICKET QUANTITY SUM}x Items Sold</div>
<F>-
<div style="font-size:13px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="220">Sub Total:</td><td width="45">£[=F(TN('{TICKET TOTAL}')+TN('{ORDER TAG TOTAL:Discount Item Custom Value}')*-1+TN('{ORDER TAG TOTAL:Discount Item Custom Percent}')*-1+TN('{CALCULATION TOTAL:Discount Ticket Total Percent}')*-1+TN('{CALCULATION TOTAL:Staff Discount}')*-1+TN('{CALCULATION TOTAL:Manager Discount}')*-1+TN('{CALCULATION TOTAL:Loyalty Discount}')*-1,'0.00')]</td>
</tr>
</table>
</div>
<F>-
{DISCOUNTS}
<div style="font-size:15px;font-weight:bold;text-align:justify;font-family:'Calibri'">
[<J10>Line Discount Total:|-£[=F(TN('{ORDER TAG TOTAL:Discount Item Custom Value}')*-1+TN('{ORDER TAG TOTAL:Discount Item Custom Percent}')*-1,'0.00')]]
[<J10>Ticket Discount Total:|-£[=F(TN('{CALCULATION TOTAL:Discount Ticket Total Percent}')*-1,'0.00')]]
[<J10>Staff Discount 10%:|-£[=F(TN('{CALCULATION TOTAL:Staff Discount}')*-1,'0.00')]]
[<J10>Owner Discount 100%:|-£[=F(TN('{CALCULATION TOTAL:Manager 0.00Discount}')*-1,'0.00')]]
[<J10>Loyalty Discount 10%:|-£[=F(TN('{CALCULATION TOTAL:Loyalty Discount}')*-1,'0.00')]]
[<J10>Discount Total:|-£[=F(TN('{ORDER TAG TOTAL:Discount Item Custom Value}')*-1+TN('{ORDER TAG TOTAL:Discount Item Custom Percent}')*-1+TN('{CALCULATION TOTAL:Discount Ticket Total Percent}')*-1+TN('{CALCULATION TOTAL:Discount Ticket Total Percent}')*-1+TN('{CALCULATION TOTAL:Staff Discount}')*-1+TN('{CALCULATION TOTAL:Manager Discount}')*-1+TN('{CALCULATION TOTAL:Loyalty Discount}')*-1,'0.00')]
<F>
<J00>===================================]
</div>
<div style="font-size:20px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="201">Total:</td><td width="60">£{TICKET TOTAL}</td>
</tr>
</table>
</div>
{PAYMENTS}
<F>-
<div style="font-size:13px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="220">Tendered Total:</td><td width="45">£{TENDERED TOTAL}</td>
</tr>
</table>
</div>
<div style="font-size:13px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="226">Change:</td><td width="45">£{CHANGE TOTAL}</td>
</tr>
</table>
</div>
<F>-
</div>
<F>
<F>
<div style="font-size:15px;font-weight:bold;text-align:center;font-family:'Calibri'">
<L00><br/>Served By:{USER NAME}
<L00>THANK YOU<br/>
</div>
<EC>
<BAR>{TICKET TAG:Barcode}
<EL>
<F>-
<div style="font-size:13px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="111">TXN:{TICKET ID}</td><td width="111">{TICKET DATE}</td><td width="90">{TIME}</td>
</tr>
</table>
</div>
<F>-
<br/>
<br/>
<br/>
<L>-
{ENTITIES}

[DISCOUNTS]

[PAYMENTS]
<div style="font-size:13px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="220">{PAYMENT NAME}</td><td width="45">£{TENDERED}</td>
</tr>
</table>
</div>
[ORDERS]
-- Default format for orders
<div style="font-size:13px;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="25">{QUANTITY}x</td><td width="200">{ITEM TAG:Receipt Name} {PORTION: }</td><td width="45">£{TOTAL PRICE}</td>
</tr>
</table>
</div>
{ORDER TAGS}
[ORDERS:Gift]
-- Format for gifted orders
<J00>{QUANTITY} {NAME}|**FREE ITEM**

[ORDERS:Void]
-- Nothing will print for void lines

[ORDER TAGS]
-- Format for order tags
<J00> -{ORDER TAG NAME} | -£[=F(TN('{ORDER TAG TOTAL}')*-1),'0.00']
[<J00> -Discount Reason: [{ORDER STATE:DStatus}]]

[ENTITIES:Customers]
-- Customer entity format
<F>
<F>
[ENTITIES:Table]
-- Table entity format
<L00>Table: {ENTITY NAME}
<F>
<F>
1 Like

@RickH why have you encoded all the HTML? It isn’t necessary and makes it more difficult to work with

What I mean is you are using &lt; instead of <, etc.

Here is your template without being encoded. It should work exactly the same…

[LAYOUT]
-- General layout
<XCT>27,112,0,25,250
<XCT>29,40,76,6,0,48,69,48,48,1,1
<bmp>C:\SambaPOS5\Product Images\SmallLogoBW.jpg</bmp>
<div style="font-size:25px;font-weight:bold;text-align:center;font-family:'Calibri'">SALES RECEIPT</div>
<F>-
<div style="font-size:13px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="25">Qty</td><td width="200">Item Description</td><td width="45">Price</td>
</tr>
</table>
</div>
<F>-
{ORDERS}
<div style="font-size:15px;font-weight:bold;text-align:center;font-family:'Calibri'"><br/>{TICKET QUANTITY SUM}x Items Sold</div>
<F>-
<div style="font-size:13px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="220">Sub Total:</td><td width="45">£[=F(TN('{TICKET TOTAL}')+TN('{ORDER TAG TOTAL:Discount Item Custom Value}')*-1+TN('{ORDER TAG TOTAL:Discount Item Custom Percent}')*-1+TN('{CALCULATION TOTAL:Discount Ticket Total Percent}')*-1+TN('{CALCULATION TOTAL:Staff Discount}')*-1+TN('{CALCULATION TOTAL:Manager Discount}')*-1+TN('{CALCULATION TOTAL:Loyalty Discount}')*-1,'0.00')]</td>
</tr>
</table>
</div>
<F>-
{DISCOUNTS}
<div style="font-size:15px;font-weight:bold;text-align:justify;font-family:'Calibri'">
[<J10>Line Discount Total:|-£[=F(TN('{ORDER TAG TOTAL:Discount Item Custom Value}')*-1+TN('{ORDER TAG TOTAL:Discount Item Custom Percent}')*-1,'0.00')]]
[<J10>Ticket Discount Total:|-£[=F(TN('{CALCULATION TOTAL:Discount Ticket Total Percent}')*-1,'0.00')]]
[<J10>Staff Discount 10%:|-£[=F(TN('{CALCULATION TOTAL:Staff Discount}')*-1,'0.00')]]
[<J10>Owner Discount 100%:|-£[=F(TN('{CALCULATION TOTAL:Manager 0.00Discount}')*-1,'0.00')]]
[<J10>Loyalty Discount 10%:|-£[=F(TN('{CALCULATION TOTAL:Loyalty Discount}')*-1,'0.00')]]
[<J10>Discount Total:|-£[=F(TN('{ORDER TAG TOTAL:Discount Item Custom Value}')*-1+TN('{ORDER TAG TOTAL:Discount Item Custom Percent}')*-1+TN('{CALCULATION TOTAL:Discount Ticket Total Percent}')*-1+TN('{CALCULATION TOTAL:Discount Ticket Total Percent}')*-1+TN('{CALCULATION TOTAL:Staff Discount}')*-1+TN('{CALCULATION TOTAL:Manager Discount}')*-1+TN('{CALCULATION TOTAL:Loyalty Discount}')*-1,'0.00')]
<F>
<J00>===================================]
</div>
<div style="font-size:20px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="201">Total:</td><td width="60">£{TICKET TOTAL}</td>
</tr>
</table>
</div>
{PAYMENTS}
<F>-
<div style="font-size:13px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="220">Tendered Total:</td><td width="45">£{TENDERED TOTAL}</td>
</tr>
</table>
</div>
<div style="font-size:13px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="226">Change:</td><td width="45">£{CHANGE TOTAL}</td>
</tr>
</table>
</div>
<F>-
</div>
<F>
<F>
<div style="font-size:15px;font-weight:bold;text-align:center;font-family:'Calibri'">
<L00><br/>Served By:{USER NAME}
<L00>THANK YOU<br/>
</div>
<EC>
<BAR>{TICKET TAG:Barcode}
<EL>
<F>-
<div style="font-size:13px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="111">TXN:{TICKET ID}</td><td width="111">{TICKET DATE}</td><td width="90">{TIME}</td>
</tr>
</table>
</div>
<F>-
<br/>
<br/>
<br/>
<L>-
{ENTITIES}

[DISCOUNTS]

[PAYMENTS]
<div style="font-size:13px;font-weight:bold;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="220">{PAYMENT NAME}</td><td width="45">£{TENDERED}</td>
</tr>
</table>
</div>
[ORDERS]
-- Default format for orders
<div style="font-size:13px;text-align:left;font-family:'Calibri'">
<table>
<tr>
<td width="25">{QUANTITY}x</td><td width="200">{ITEM TAG:Receipt Name} {PORTION: }</td><td width="45">£{TOTAL PRICE}</td>
</tr>
</table>
</div>
{ORDER TAGS}
[ORDERS:Gift]
-- Format for gifted orders
<J00>{QUANTITY} {NAME}|**FREE ITEM**

[ORDERS:Void]
-- Nothing will print for void lines

[ORDER TAGS]
-- Format for order tags
<J00> -{ORDER TAG NAME} | -£[=F(TN('{ORDER TAG TOTAL}')*-1),'0.00']
[<J00> -Discount Reason: [{ORDER STATE:DStatus}]]

[ENTITIES:Customers]
-- Customer entity format
<F>
<F>
[ENTITIES:Table]
-- Table entity format
<L00>Table: {ENTITY NAME}
<F>
<F>
3 Likes

I havent done that, my template is exactly as you posted, it changed it to that when i copied it into the forum, highlighted it and used the </>

Dont know why it copied it in like that

2 Likes

We, as in most restaurants, want to be as specific as possible. x2, x3, x4 is great and all, but what about 1.5x? Or maybe 1.25x? In most cases, nobody goes above x2. I have “NO”, “Very Little”, “Little”, “Extra” as prefixes.

If somehow you can get numbers less than 2, then I would use Quantity Tags.

On inital startup of samba when the login screen appears there is no focus on the input field meaning the only way to login is via physically touching/clicking the numberpad on screen

I can no longer just type on the keyboard when the login screen appears i first have to click in the input field before a keyboard will type, so i assume card swipes/scanning will not work as the field has no focus.

If you log in and then log out it works fine and retains focus, it seems just to be on initial startup you have to click the input field before you can login (unless you directly use the numberpad on screen)

Heres a copy of the log file, which i think is the same as the error that popped up in samba

11/09/2018 00:54
-----------------------------
[General Info]

Application: SambaPOS
Version:     5.2.13
Region:      en
DB:          SQ
Machine:     RICKS-LAPTOP
User:        Rick
Date:        10/09/2018
Time:        23:54

User Explanation:

Rick said ""
-----------------------------

[Exception Info 1]

Top-level Exception
Type:        System.NullReferenceException
Message:     Object reference not set to an instance of an object.
Source:      Samba.Presentation.ClientLibrary
Stack Trace: at Samba.Presentation.ClientLibrary.Modules.PosModule.ScreenMenuItemButton.GetCaption() in C:\Users\vehbi\Source\Repos\sambapos-v5-pro\Samba.Presentation.ClientLibrary\Modules\PosModule\ScreenMenuItemButton.cs:line 71
   at Samba.Presentation.ClientLibrary.Modules.PosModule.ScreenMenuItemButton.<Refresh>d__31.MoveNext() in C:\Users\vehbi\Source\Repos\sambapos-v5-pro\Samba.Presentation.ClientLibrary\Modules\PosModule\ScreenMenuItemButton.cs:line 77
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

-----------------------------

[Assembly Info]

mscorlib, Version=4.0.0.0
Samba.Services, Version=1.0.0.0
Samba.Domain, Version=1.0.0.0
Samba.Infrastructure.Data, Version=1.0.0.0
System.ComponentModel.Composition, Version=4.0.0.0
Samba.Presentation.Services, Version=1.0.0.0
System.Core, Version=4.0.0.0
PresentationCore, Version=4.0.0.0
DevExpress.Xpf.LayoutControl.v16.2, Version=16.2.13.0
System.Xml, Version=4.0.0.0
DevExpress.Xpf.Grid.v16.2, Version=16.2.13.0
System, Version=4.0.0.0
DevExpress.Xpf.Grid.v16.2.Core, Version=16.2.13.0
WindowsBase, Version=4.0.0.0
System.Xaml, Version=4.0.0.0
PresentationFramework, Version=4.0.0.0
Samba.Infrastructure, Version=1.0.0.0
Microsoft.Practices.Prism, Version=4.0.0.0
System.Runtime.Serialization, Version=4.0.0.0
Microsoft.Practices.Prism.MefExtensions, Version=4.0.0.0
DevExpress.Xpf.Core.v16.2, Version=16.2.13.0
System.Windows.Forms, Version=4.0.0.0
System.Drawing, Version=4.0.0.0
Samba.Persistance, Version=1.0.0.0
Stateless, Version=1.0.0.0
PropertyTools, Version=2012.4.14.1
Samba.Localization, Version=1.0.0.0
ReachFramework, Version=4.0.0.0
EntityFramework, Version=6.0.0.0
FluentValidation, Version=3.4.0.0
Microsoft.CSharp, Version=4.0.0.0
Omu.ValueInjecter, Version=2.3.0.0
Microsoft.Practices.ServiceLocation, Version=1.0.0.0
DevExpress.Data.v16.2, Version=16.2.13.0
NCalc, Version=1.3.8.0
WindowsInput, Version=1.0.4.0

-----------------------------

[System Info]

Operating System
-Microsoft Windows 10 Pro
--CodeSet = 1252
--CSDVersion = 
--CurrentTimeZone = 60
--FreePhysicalMemory = 986460
--OSArchitecture = 64-bit
--OSLanguage = 2057
--ServicePackMajorVersion = 0
--ServicePackMinorVersion = 0
--Version = 10.0.17134

Machine
-RICKS-LAPTOP
--Manufacturer = Hewlett-Packard
--Model = HP 650 Notebook PC
--TotalPhysicalMemory = 4176769024
--UserName = RICKS-LAPTOP\Rick

-----------------------------


######################### E N D #########################
11/09/2018 00:54
-----------------------------
[General Info]

Application: SambaPOS
Version:     5.2.13
Region:      en
DB:          SQ
Machine:     RICKS-LAPTOP
User:        Rick
Date:        10/09/2018
Time:        23:54

User Explanation:

Rick said ""
-----------------------------

[Exception Info 1]

Top-level Exception
Type:        System.NullReferenceException
Message:     Object reference not set to an instance of an object.
Source:      Samba.Presentation.ClientLibrary
Stack Trace: at Samba.Presentation.ClientLibrary.Modules.PosModule.ScreenMenuItemButton.GetCaption() in C:\Users\vehbi\Source\Repos\sambapos-v5-pro\Samba.Presentation.ClientLibrary\Modules\PosModule\ScreenMenuItemButton.cs:line 71
   at Samba.Presentation.ClientLibrary.Modules.PosModule.ScreenMenuItemButton.<Refresh>d__31.MoveNext() in C:\Users\vehbi\Source\Repos\sambapos-v5-pro\Samba.Presentation.ClientLibrary\Modules\PosModule\ScreenMenuItemButton.cs:line 77
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

-----------------------------

[Assembly Info]

mscorlib, Version=4.0.0.0
Samba.Services, Version=1.0.0.0
Samba.Domain, Version=1.0.0.0
Samba.Infrastructure.Data, Version=1.0.0.0
System.ComponentModel.Composition, Version=4.0.0.0
Samba.Presentation.Services, Version=1.0.0.0
System.Core, Version=4.0.0.0
PresentationCore, Version=4.0.0.0
DevExpress.Xpf.LayoutControl.v16.2, Version=16.2.13.0
System.Xml, Version=4.0.0.0
DevExpress.Xpf.Grid.v16.2, Version=16.2.13.0
System, Version=4.0.0.0
DevExpress.Xpf.Grid.v16.2.Core, Version=16.2.13.0
WindowsBase, Version=4.0.0.0
System.Xaml, Version=4.0.0.0
PresentationFramework, Version=4.0.0.0
Samba.Infrastructure, Version=1.0.0.0
Microsoft.Practices.Prism, Version=4.0.0.0
System.Runtime.Serialization, Version=4.0.0.0
Microsoft.Practices.Prism.MefExtensions, Version=4.0.0.0
DevExpress.Xpf.Core.v16.2, Version=16.2.13.0
System.Windows.Forms, Version=4.0.0.0
System.Drawing, Version=4.0.0.0
Samba.Persistance, Version=1.0.0.0
Stateless, Version=1.0.0.0
PropertyTools, Version=2012.4.14.1
Samba.Localization, Version=1.0.0.0
ReachFramework, Version=4.0.0.0
EntityFramework, Version=6.0.0.0
FluentValidation, Version=3.4.0.0
Microsoft.CSharp, Version=4.0.0.0
Omu.ValueInjecter, Version=2.3.0.0
Microsoft.Practices.ServiceLocation, Version=1.0.0.0
DevExpress.Data.v16.2, Version=16.2.13.0
NCalc, Version=1.3.8.0
WindowsInput, Version=1.0.4.0

-----------------------------

[System Info]

Operating System
-Microsoft Windows 10 Pro
--CodeSet = 1252
--CSDVersion = 
--CurrentTimeZone = 60
--FreePhysicalMemory = 986608
--OSArchitecture = 64-bit
--OSLanguage = 2057
--ServicePackMajorVersion = 0
--ServicePackMinorVersion = 0
--Version = 10.0.17134

Machine
-RICKS-LAPTOP
--Manufacturer = Hewlett-Packard
--Model = HP 650 Notebook PC
--TotalPhysicalMemory = 4176769024
--UserName = RICKS-LAPTOP\Rick

-----------------------------


######################### E N D #########################

Also Emre, I personally think combos aren’t setup for proper work flow. Whenever customer gives product order they also give modifications right after. Would be awesome if we had easy way to set a combo just like we do products and include items included in combo. Each time a combo item is selected to ask modifiers then move onto next choice. I know Kendash had come up with a way to automate that with multiple menus and rules and actions but in deployment thats really not practical just for a combos feature.

Just a thought if it makes sense to spend time on it on a programming perspective. :slight_smile:

You can always use order tags for combo items. And set combo product.

@RickH I just tested it and it loads with the login on focus… I tested it a few times. Not sure what is happening on yours.

Works fine for me also

Ill try again today, I repeatedly closed and reopened and it happened everytime

I’ll have a look again today and see if it still doing it

Seems to be working for me again now, random!!

Ok i will try to reproduce this error Rick.

1 Like

Did you manage to reproduce the error @VehbiEmiroglu?

@VehbiEmiroglu can we update release for latest fixes?

Yes i uploaded the fresh build of 5.2.13 Beta.

1 Like