A tool for processing restaurant orders from the collection to the payment, emitting valid fiscal receipt.
Typical use is restaurants collecting orders, printing orders where needed, and deliverying the fiscal receipts.
- managing ingredients, and categories of ingredients
- managing courses, and categories
- managing ingredients composing the courses (receipts)
- collecting orders,
- defining users roles,
- managing variations of orders items (in term of add ons or drop off of ingredients)
- managing price variations related to order items variations
- printing orders by associating printer for course categories
- displayng order items
- managing payment by eventually subdividing the bill
- print a fiscal cash drawer (by using an external software).
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
O.S.: Windows 7 or superior or Mac OS or Linux runtime/sdk: mono v 5.18 or .net framework 4.7
postgres 9.6 or superior
- clone the project:
git clone firstname.lastname@example.org:tonyx/orderssystem.git
- in the subdirectory ordersystmprevious run the command:
nuget restore -SolutionDirectory .
- install separately the Npgsql-2.2.1-net45, from https://www.nuget.org/packages/Npgsql/2.2.1. In case of troubles, you may want to download the nupkg and then install from the local directory, by using the command
nuget install Npgsql -version 2.2.1 -Source %cd% -OutputDirectory packages
nuget install Npgsql -version 2.2.1 -Source `pwd` -OutputDirectory packages
In th Db.fs file you may want to assign the resPath variable to the full path of the net45 subfolder of Npgsql.2.2.1 containing the Npgsql.dll (i.e. somepath/Npgsql.2.2.1/lib/net45) This will help resolving the db-entity binding at compile time, and will also help editing with ionide (providing you set fsautocomplete config to "net" rather than to "netcore")
- change the App.config file if needed. If you specify https in App.config, then you need to provide a certificate
- access to sql by psql command, and create a suave user:
create user suave with encrypted password '1234'
- still in pgsql, create the database orderssystem
create database orderssystem
- in pgsql, grant all priviledges to suave user
grant all privileges on database orderssystem to suave
- load the orders_system.sql schema and data to orderssystem database, you may run the psql again form the command prompt:
psql -d ordersystem -f orders_system.sql
build the project by msbuild
connect locally using http://localhost:8083 using administrator/administror as login/password
You can use any printer to print order. A configuration tool in the program allow to associate a category of coureses (i.e. pizza, drink, etc...) to a specific division (pizzeria, bar, ...). The App.config contains the full path of a lpr print command. Tested on Mac os X. For fiscal receipt a special, file "ecr.txt" is generatd in a format compatible with a proprietary software WinEcrCom 1.9.20 from Ditron s.r.l. (which is distributed together with some fiscal devices). Such software will look into the dir and print to a P.O.S. fiscal cash drawer when finding the ecr.txt file. I succesfully tested it with a Sico Athom cash drawer.
I'll try to estend it by adopting a standard non proprietary P.O.S. drivers/library.
- Suave.IO - The web framework used
- VSCode - source code editor
- Ionide - Visual Studio Code extension for F#
- Antonio (Tonino) Lucca email@example.com
This project is licensed under the GPL License (https://www.gnu.org/licenses/gpl.txt)
To print, a plain text file is sent to the printer. Special formatting (different sizes and stiles) will be one of the next features.
Donations are welcome. I am also available for professional support services. Just drop me a message, in case.