Lane configuration has evolved over time. At this point the majority of settings are in the database's parameters table with a handful of additional settings required to connect to that database in ini.php. There's still reference to an optional ini-local.php but this file is entirely obsolete as per-lane settings can co-exist in the parameters table. Be aware that if you manually add settings to ini.php CORE will attempt to remove those settings from the file and store them in the database. If for some reason it cannot do that, such as lack of write permission to ini.php, and the same setting has two different values in ini.php and parameters you may see strange and inconsistent behavior. There are a small number of settings with their own dedicated configuration tables which will be called out below. There is one additional configuration file named ini.json which will be discussed further in the relevant section.
The lane configuration user interface is divided into several pages with a horizontal set of links running across the top of each page. These pages will provide notification about whether configuration files are writable. Hovering the cursor on most fields will tell you were that setting is being stored.
The necessities tab has settings for lane identification, database connectivity, and sales tax. This page is also responsible for creating database structures and may be a bit slow to load. It's important to get the lane database connectivity working before proceeding to other settings. The settings that are stored in the database will not save correctly until this part is done.
The Lane number and Store number are used to identify transactions originating from this particular lane and to locate any lane-specific settings in the parameters table. Lane number 99 is reserved for training and development. Any transactions rung into a lane configured as number 99 will be excluded from most sales reporting. The Locale setting is used to load translations for different languages. There are currently very minimal options available for this setting.
The Database set up section contains database host, type, name, and credential fields for both the server and the lane. The lane settings are necessary for saving parameters. A notification after each database name states whether or not the connection is working. When configuring the server, the database name should be the transactional database in your Office Configuration.
Finally, sales tax rates can be added or altered. These values are stored in a dedicated database table named taxrates rather than in one of the normal setting stores.
The extras tab is a bit of a catch-all for setting that don't have any other logical home.
General Settings has options pertaining mostly to discounts and members. The organization setting is for use with temporary, store-specific coding and may often be blank. Discounts Enabled allows eligible members to receive a percentage discount off the entire transaction. Only One Discount Applies controls how this member discount interacts with other percentage discounts on the entire transaction. Discounts can be complicated in that not every single method of reducing the transaction total counts as a discount in this particular sense. Discounts on refunds controls whether the above style discounts apply to returns. If members have a discount every day then having discounts on refunds makes sense. If members have a discount on an irregular basis like a one per month member appreciation day then discounts on refunds may be confusing. Line Item Discounts for members and non-members control the behavior of the LD command with adds a discount to the currently selected item.
CORE requires a member number entry in each transaction. The Default Non-member is a single account for use with all shoppers who are not members. The Default Non-member behavior restricts entry of the non-member number. By default you can enter any member number at any time and the new entry replaces any previous member number. Disallowing the non-member after the entry of a "real" member number can prevent certain kinds of cashier mistakes. The Visiting Member is another catch-all account to provide shoppers who are members of other stores but not this store access to member-only sale pricing. Show non-member controls whether the default non-member appears in searches. Use memtype table enforces consistency - e.g., all member accounts of the same type must have the same discount.
Bottle Return Department number only applies to one particular use case: you have a single bottle return PLU whose value must vary depending on what type of bottle is being returned.
CORE needs the correct Printer port setting to print receipts. The most common values are listed as options although you can also enter a custom device. On linux you will also need to ensure the device file is writable. Check Franking means feeding checks through the receipt printer's endorser. The Drawer Behavior Module controls when the cash drawer opens. Dual Drawer Mode pertains to printers that support a Y-cable connecting two separate cash drawers. The Scanner/scale driver should be NewMagellan; the ssd option only exists for legacy support.
The Screen Height is given in a number of items to show at once. If you increase the default (11) you may need to add an extra custom CSS file to show more items correctly. The Alert Bar is text that appears by default in the title bar of most notifications. The Locking will switch to a lock screen and require a cashier password to continue after the specified time. Footer Modules appear along the bottom of the page. Notifier Modules appear in the vertical space below the scale weight indicator. Onscreen keys is a work-in-progress touchscreen or semi-touchscreen user interface. The Separate customer display is another work-in-progress feature to have a customer facing monitor showing only their items and a cashier facing monitor showing the normal lane screens.
By default the transaction is automatically subtotaled after a member number is entered but this behavior can be disabled. Subtotal Actions are custom behavior that may occur each time the transaction is subtotaled. These are provided for development and customization that needs to monitor the overall state of the transaction.
Tender min/max limits controls whether cashiers may bypass the minimum and maximum amount settings for each type of tender. The check over settings optionally allow members to write a check for more than the purchase amount and receive change in cash. The EBT Total Default is the default selected choice after entering EBT Subtotal (FNTL). The Tender Report setting controls what is printed when choosing Tender Report from the manager menu (MG). The tender mapping section is saved directly in the tenders table rather than with normal settings. The Map To attaches custom rules to a given tender type such as requiring an entered amount, disallowing change, or enabling check endorsing.
This tab is 100% optional. Configuring the NewMagellan driver manually via ports.conf is still allowed but has become complex enough to merit a user interface. This information is saved in the aforementioned ini.json. Note that if both ini.json and ports.conf contain hardware configuration information ini.json takes precedence. First select the type of device you wish to add and save. Then if needed adjust the Port setting to indicate where that device is connected.
The receipt tab has settings controlling when a receipt prints and what it looks like. Enable receipts is a global on/off toggle for all forms of receipts. The settings for canceled, suspended, and shrink control whether each of those options produce a receipt.
The Receipt Type should be Modular outside of legacy installs. The legacy options may not be supported indefinitely. List savings controls how the total amount(s) saved appear. List Local Items controls if & how local purchase amounts appear. The Receipt Driver always be ESCPOSPrintHandler outside of development circumstances.
The PHP Receipt Modules only work with the Modular Receipt Type. Filtering controls which lines print, sorting controls the order they print, and tagging categorizes lines for final formatting. The Default options will group items together by department while the InOrder options will print items in the same order they were rung in. The Message Modules will attach extra footers to appropriate transactions. You can have many message modules although you have to save after adding each one.
Email Receipts can email transaction info to customers rather than printing it on paper. This feature is requires no cashier action but rather emailed receipts must be enabled on a per-member-account basis. Using both SMTP and HTML formatting requires the PHPMailer package which can be installed via composer. No HTML templates are provided out of the box though; you have to write your own (see the WfcHtmlReceipt plugin for an example). Alternately you can configured SMTP settings directly within php.ini. This may be required on Windows.
The scanning tab has settings related to item entry. The most common setup for Check Digits is to omit them on both UPCs and EANs. This is recommended unless you already have data entered with check digits. The unknown item handler runs when a UPC is neither an item or a special UPC. The default displays an error and logs the UPC. Special UPCs are barcode values which are not items. You may enable multiple Special UPC handlers for different non-item uses. The house coupon prefix identifies UPCs which should be treated as house coupons. Coupons & Sales Tax controls how sales tax interacts with coupons. If you're required to pay sales tax with a coupon for a "free" item then you should tax the pre-coupon total.
Equity departments are department(s) used for purchasing equity/shares in the co-op. AR Departments are department(s) used for paying off store charge balance (i.e., letting a customer run a tab). Open ring min/max limits controls whether cashiers can override the minimum or maximum amount settings when entering open rings to a given department. The Donation Department is used in conjunction with the "round up" function (RU) which adds a donation amount to the current transaction so the total is an even $x.00.
The Discounts and Methods correspond to products.discounttype and products.pricemethod (respectively). Unless plugins add additional type very little configuration is available here. The Sale Items Are Discountable option is referring to the discounts enabled on the Extras tab.
Special Department modules add custom behavior to open rings in department(s) or items in those department(s). You may enter more than one department number in each line if necessary. These settings are stored in the SpecialDeptMap table.
The Variable Weight Item Mapping controls how CORE handles service scale barcodes. If you have a UPC 0021234000199 the price will be $1.99 in either case. With ZeroedPriceReWrite the logged UPC will be 0021234000000; with ItemNumberOnlyReWrite the logged UPC will be 0000000001234. If you don't have a preference, use the zeroed price. Several backend tools rely on using the "2" prefix to identify these type of items.
The security tab can place additional restrictions on certain operations. Most are pretty self-explanatory. All means any cashier where as Admin-only means a cashier account with higher admin rights. The void limit should apply cumulatively to both items and open rings.
The Plugins tab enables or disables as well as configures plugins. Plugins may slot new options into other configuration choices. The exact details, unfortunately, are going to vary quite a lot depending what the plugin does.
Options here are for developers. Logging state changes will generate huge logs to show when session values change. Show Page Changes will force the user to click a link each time the browser moves to a new URL (this can help understand program flow). Character set sometimes helps with the display of non-ASCII characters but often additional settings in the database and/or web server are also required.
The Updates tab lists changes that should be applied to structures in the database. Updates never run automatically and provide Details outlining the exact proposed change as well as both web-based and command line based means to run the update.
The sample data provides information to quickly populate the system with some data. Keep in mind this will replace existing information and should be used cautiously on production systems. Loading the sample tender data and building off it is recommended but not required. The two-letter codes for common tenders have become largely standardized. You can ignore them and use codes of your own choosing but it becomes more confusing when discussing issues with other project users.