POS Implementation

Have you noticed that the checkout experience at Your Food Co-op is not quite 21st century? Are you thinking "price tags are SO last millenium?" Fair enough, but ...

Are you geek enough to explore strange new open-source Point-of-Sale software? To seek out better relationship management? To boldly go where our purchasing and inventory management has never gone before?

Then we need you to join our POS implementation team!

Denise, Sven, and Tom have been investigating IS4C/Fannie (Integrated System for Co-ops and its backend), open-source POS software. Initially developed at the Wedge Co-op in Minneapolis, it's now used at several co-ops through the US, and we think it's the tool for us. Not least because it's economical :-) Though stable, it's still under development, and a bit rough around the edges, so implementing it here will still be a challenge--especially to do it by 1 Jan 08, our target date.

We Want Your Help with any or all of the following:

  • install and tuning of Ubuntu, MySQL, Apache and mod_php
  • network and security configuration
  • PHP customizations
  • MySQL administration
  • data entry or migration, e.g. setting up price tables
  • improving the IS4C/Fannie install/build process
  • debugging Centronics and serial interfaces (old-school--RS-232, not USB)


Interested in helping out? Contact Denise at injira@yahoo.com and thanks!

AttachmentSize
PrehWinProgrammerV2.2Manual.pdf66.74 KB
PrehWinProgrammerV2.2README.TXT68.11 KB
MagellanSLProgrammingGuideRS232.pdf379.13 KB
MagellanSLUsersGuide.pdf2.13 MB
MagellanSLProgrammingGuideCompleteManual.pdf98.76 KB
postPOSnetworkDiagram-200712271322.png109.91 KB

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

status/todos 14 Dec 07

We've made real progress this week! Let's keep it up!

+ Thanks to James Watts and the dearly-departed Norm Davis, I solved the weighing problem. Scale now reads in IS4C.

+ I found a brute-force way to put items into the DB: suboptimal but allows items not already in the shipped products table to scan.

+ Denise got keys for the cash drawer locally.

TODO (items labeled primarily for identification, but will probably be done in this order):

0 I'll print caps for the POS keyboard and use that for further testing.

1 Hookup all peripherals to lane/dfc3, successfully run the first test transaction through drawer kick.

2 Setup networking so as to run private IP plus ssh, and allow development group to ssh in as needed. (This may/not be feasible with the existing office WRT54Gv5.) This will make lotsa things easier, like doing ...

3 Database work:

* membership table(s) -> MySQL, copy for testing, then move. We can continue to access/report data from Access if we provide IP access to the backend/dfc2: see todo2.

* put into products table all items that we sell that aren't already in there (i.e. that the Wedge doesn't sell).

* QuickBooks integration. Need minimally to have equivalent of the EOD Z-tapes we're currently running.

4 Security work: let's start lining up a consultant now, to be available before we deploy.

status/todos 7 Dec 07

Apologies for the delay, but it took longer to get a scanner/scale than I anticipated, and I ran into a few other problems, plus I've been doing the grad-school search/testing/application thing. The good news is

+ Weaver Street Market lent us one of their spare Magellan SL384 scanner/scales for testing (more below). Thanks, James Watts!

+ The Wedge shipped us a cash drawer, receipt printer, and programmable keyboard. Thanks, Tak Tang!

+ We've got them hooked up in the Kiwi Kerker. Thanks, Denise and Sven!

+ (As previously mentioned) We have a box setup as a lane controller, which can run the first test.

+ We can test-print from the lane to the receipt printer.

+ We can raw-read barcode scans from the SL384 to the lane.

The bad news is

- We can't raw-read weights from the SL384 to the lane, i.e. we're not weighing. I'm not sure whassup, am investigating.

- We can't "ring" the items I've scanned into IS4C, probably because I haven't entered them into the DB (will do).

But hey! we're making progress, and now that I've taken the GRE and gotten my first 2 applications in, I'll have more time to work on this.


TODO
(items labeled primarily for identification, but will probably be done in this order):

0 Achieve raw-read of weights from the SL384 to the lane, i.e. after placing an item of known weight on the scale

$ tail /pos/is4c/rs232/scale

should give the prefix 'S144' followed by the weight

1 Get cashdrawer keys: bug POSMicro again.

2 Successfully run the first test transaction.

3 Setup networking so as to run private IP plus ssh, and allow development group to ssh in as needed. (May require a router.)

cash drawer keys

got four copies for $15 from Don Hill Locksmith - they are awesome! so #1 is done

status/todos 14 Oct 07

todos from W 26 Sep 07
> * put static IP#s on lane and server. This is required for the update
> to work, and will also ease working with each remotely (can ssh in).
> Sven is working on this.

Sven to report on this.

> * get real POS peripherals! and start on
> http://www.wedge.coop/is4c/installation/installation6.html . I'll
> ping the FC again.

FC approved $500, and Wedge approved giving us the printer, cash
drawer, and keyboard (thanks!), but nothing in hand yet :-(

> * get POS data (e.g. UPCs, items, prices): Denise is getting from Deep
> Roots, will need massaged.

Denise got data, I got schema from DR and am getting more info about
IS4C/Fannie schema (which we already have) from Tak et al.

In other news:

* Sven got a buncha big drives from Siena Tech.

* I have been spending a lotta time on eBay (with vendors) and with
Datalogic (formerly PSC) toward purchasing a scanner-scale (for ease
of integration with IS4C/Fannie)

So ISTM our todos now are (in no order, numbers purely for
identification)

0 put static IP#s on lane and server PCs.

1 put drives in lane and server PCs as RAID1. See Joel's howto @

http://www.wedge.coop/is4c/bb/viewtopic.php?p=123#123

2 receive Wedge peripherals

3 buy scanner-scale

4 migrate product seed data from Deep Roots TDF to IS4C/Fannie tables

5 migrate membership data from our Access table to IS4C/Fannie table

6 test peripherals beginning with

http://www.wedge.coop/is4c/installation/installation6.html

7 start doing test transactions to ensure

* our IS4C/Fannie tables contain complete/correct data for DFC use

* we have all needed code in PHP session=store for DFC use

DRM item map

Did this as a comment since I dunno how to attach a non-image :-(

> File Layout for the Item File created on Tue Oct 02, 2007 at 7:55 AM

> This file, ITEMS.TXT is an ASCII Flat File whose fields are deleniated
> by the Character

> Piece Data Represented
> 1) Item Code
> 2) Item Description
> 3) Retail Units
> 4) Department
> 5) User Defined Item Category
> 6) Food Flag (Y/N)
> 7) Bulk Flag (Y/N)
> 8) Shelf Price (SRP)
> 9) Case Price
> 10) #Items/Case
> 11) Discountable Flag (Y/N)
> 12) Special Discount
> 13) Pack Size
> 14) Eligible for Shelf Labels (Y/N)
> 15) Taxable (Y/N)
> 16) Bulk Units
> 17) Sale Price (ALL)
> 18) Use Sale Price WITH Member Discounts (Y/N)
> 19) Start Date of Sale (MM/DD/YYYY)
> 20) End Date of Sale (MM/DD/YYYY)
> 21) Sale Price (Member ONLY)
> 22) Use Sale Price WITH Member Discounts (Y/N)
> 23) Start Date of Member ONLY Sale (MM/DD/YYYY)
> 24) End Date of Member ONLY Sale (MM/DD/YYYY)
> 25) Purchase (Wholesale) Price
> 26) Margin If Different from Department
> 27) Item Location (In Store)
> 28) Item Manufacturer (Brand Name)
> 29) Supplier (Vendor)
> 30) Supplier's Item Code
> 31) Inactivated Item (Y/N)
> 32) Food Stamp Eligibility (Y/N)
> 33) Item for Sale/Use by Members Only (Y/N)
> 34) Lending Library Item (Y/N)
> 35) Item Packing $Increment (Bulk Items)
> 36) Global Discount (Y/N)
> 37) Inventory QOH
> 38) Inventory QOH (In Front)
> 39) Inventory QOH (In Back)
> 40) Inventory Qty On Order
> 41) Re-order Level
> 42) Re-order Quantity
> 43) Request to Print Shelf Tag (Shelf Tag Queue Status)
> 44) Receipt Description

5:30pm W 26 Sep 07 @ Kiwi Castle

We setup 2 new boxes provided by Brett Walters:

  • a P3 550 MHz Compaq Deskpro (320 MB RAM, 120 MB HD), "dfc2"
  • a P4 1.6 Ghz whitebox (128MB RAM, 2 x 10GB HD), "dfc3"

On both (after more twiddling of the whitebox NIC) we

  1. installed Ubuntu 6.06.1 Server Edition (headless, more below) using LVM from CD
  2. recorded IP#s (more below)
  3. did

    apt-get update
    apt-get upgrade

  4. ran download/install script

    sudo passwd root # set root pw
    su # install only tested as root, vars must be in its space
    TO_INSTALL="server" # or lane
    INSTALL_ROOT="/pos" # is this still needed with new script?
    INSTALL_SCRIPT="${INSTALL_ROOT}/installation/ubuntu/install_${TO_INSTALL}"
    URI="http://www.wedge.coop/is4c/download/pos.tar.gz"

    mkdir -p ${INSTALL_ROOT}
    FN="$(basename ${URI})"
    FP="/${FN}"
    wget -O ${FP} ${URI}
    cd /          # there's probably a better way to do this
    tar xfz ${FP} # so that it unpacks to /pos
    chmod a+x ${INSTALL_SCRIPT}
    ls -l ${INSTALL_SCRIPT}
    # must have Ubuntu install CD in drive before running script
    ${INSTALL_SCRIPT}

    with the new tarball. Note gating var $TO_INSTALL.

  5. took all 6 defaults in the install script (3 MySQL, 3 PHP).
  6. Since we're running headless on both boxes, ignore failure following "Enter to load browser and start Fannie". Instead, from graphical node (i.e. our laptops) browse to the IP# of each box.
  7. (lane) Saw screen matching http://www.wedge.coop/is4c/installation/installation5.html
  8. (server) Saw screen matching http://www.wedge.coop/is4c/fannie/fannie3.html
  9. (lane) From `mysql` (shell) do

      select * from opdata.employees;

    to see the records for the two cashiers (Kate Kipling, John Norton) set up on the system.

  10. (server) From `mysql` do

    select * from is4c_op.employees;

    to see the same records.

  11. (lane) Sven ran through

    http://www.wedge.coop/is4c/installation/installation5.html
    > A First Test

    on the lane.

  12. Verified  that the lane had the data: from the lane's mysql,

    use translog;
    select * from dtransactions;

    showed the test transactions.

  13. Verified  that the server did not have the data: from the server's mysql,

    use is4c_log;
    select * from dtransactions;

    returned the empty set.

Talked with Tak: our next tasks are

  • put static IP#s on lane and server. This is required for the update to work, and will also ease working with each remotely (can ssh in). Sven is working on this.
  • get real POS peripherals! and start on http://www.wedge.coop/is4c/installation/installation6.html . I'll ping the FC again.
  • get POS data (e.g. UPCs, items, prices): Denise is getting from Deep Roots, will need massaged.

More Hardware

Our webmaster has donated two more computers, and we'll do another installfest soon. We now have four older computers with four monitors in Kiwi Castle's basement! I still have to get the SCSI drives...

In my opinion we should set up the testbed with the cheap option, test and develop, and further down the road we can invest in newer hardware. We'll need some backup hardware anyway, for which we can use the HRC development peripherals.

acquiring POS peripherals

summary

I present some cost and vendor scenarios for acquisition of POS peripherals, with bottom-end cost estimates ranging from $341 to $2300.

details

As mentioned at the board meeting yesterday (U 16 Sep 07), the POSers (Denise, Sven, and I) believe we have a firm foundation for proceeding with a DFC implementation of the open-source POS IS4C/Fannie currently being developed by several other co-ops (notably The Wedge in Minneapolis). A POS consists of a group of peripherals (notably a receipt printer and cash drawer) driven by one or more computers and saving results to one or more computers. We have computers suitable for testing, and we believe we can acquire ones suitable for installation.

So now what we need to do is acquire POS peripherals for testing, presumably for reuse in service. For more details regarding the choices made below, see the "pricing peripherals for ground-up IS4C/Fannie install" thread on the IS4C/Fannie forum. I'll present two main recommendations-- easier/safer/expensive and harder/riskier/cheaper--with some ideas about feasible-looking variations. However the hardware list itself won't vary much: I'm going with stuff recommended by current users, who moreover have much experience with POS in general (since all started with commercial POS before turning to IS4C/Fannie for ease and flexibility of development).

Before making purchases, I would personally suggest getting our selections reviewed by Tak Tang (IS4C lead developer, has been very available) and Joel Brock (Fannie lead developer, less available than Tak).

easier/safer/expensive (ESE)

The ESE way to go is to buy

  • everything new from a single vendor
  • a scanner/scale known to work with IS4C/Fannie

since it's

  • easier to buy this way (especially if returns are required)
  • easier to implement IS4C/Fannie with a known-good (and widely recommended) scanner/scale (which you may have guessed is a combination of scale and barcode scanner :-)
  • safer: new stuff has warranties, and one can be sure to get an item with all required interfaces and power supplies (PS)
  • more expensive: since we're buying new, and the scanner/scale is not cheap.

The vendor I'd choose is POSGuys, since they seem to have pretty low prices for new (that being said, I haven't made an exhaustive search) and folks on the various lists and forums recommend them (and also POSMicro).

The scanner/scale I recommend is one of the Magellan 8*00 series with serial interface. These are industry-standard and are known to work OOTB with IS4C/Fannie. Prices when I last checked (3 Sep) were

Epson TM-H6000II receipt printer with parallel interface and PS $623-643 for standard models (no MICR or check printing)

APG 100 cash drawer with Epson interface and PS $155.50

Preh programmable keyboard with PS/2 interface $179-246

Magellan 8500 scanner-scale with serial interface and PS $1299

Estimated ESE total cost, averaging ranges above, minus labor, taxes, and shipping (if any): $2300

harder/riskier/cheaper (HRC)

The HRC alternative is to buy

  • a separate barcode scanner to go with our current scale. We don't know latter will work! but there is a serial interface advertised for it. I believe Sven is investigating the specifics (e.g. baud rate, stop bit, data bits, handshake, weight-data format). By contrast, the Magellan 8*00 series scanner/scales are known to work with IS4C/Fannie.
  • from multiple vendors, whatever's cheapest. This might result in fingerpointing if something goes wrong. It will also raise shipping costs, but other savings will almost certainly outweigh that.
  • used (aka "open box") where available. Downside risk == reduced warranty.
  • eBay where available. Not be as risky as it sounds. Joel Brock is an IS4C/Fannie user and developer: he says
http://www.wedge.coop/is4c/bb/viewtopic.php?p=16#16
> Get your printers off eBay. THose EPSON 6000s are expensive new and
> cheap & plentiful used. Stick with the parallel interface if you are
> persuing the Linux version of IS4C though. The current Linux kernels
> do not yet immediately support all USB POS printers (or the
> TM-H6000). I've purchased several of the TM-H6000iis off eBay and
> never had to pay more than $60 apiece. Make sure you get a power
> cable though!

HRC pricing will obviously change frequently, so the following is just a snapshot, and is probably not the absolute cheapest (e.g. I go for new and in-warranty when possible):

Epson TM-H6000II receipt printer with parallel interface and PS
http://search.ebay.com/EPSON-thermal
$60 (based on Joel's estimate). Note also POSMicro open-box $413.

APG 100 cash drawer with Epson interface and PS
http://search.ebay.com/APG-cash-drawer
$101

Preh programmable keyboard with PS/2 interface
http://search.ebay.com/Preh-keyboard
$45

POS-X Xi3000 handheld scanner
http://search.ebay.com/POSX-scanner (currently shows only wireless)
http://www.posmicro.com/Scanners/POS-X/pos-x_xi3000.htm
http://www.posguys.com/pos-x-point-of-sale+70/POS-X-Xi3000+716/
$135

Estimated total cost, minus labor, taxes, and shipping (if any): $341

variations

Between these two ranges one can vary quite a bit, e.g.

6:30pm W 12 Sep 07 @ Kiwi Castle

First we ate, then we setup hardware in the basement (running network from 2 floors up :-), so we didn't start on software until ~9pm. The Pavilion already had Ubuntu 6.06.1 courtesy of Sven, so he put it on the Presario. We noted a minor problem on both boxes: we could `sudo` with the password set during the Ubuntu install, but not `su`, so we did

sudo passwd root

after which we could `su`. (This turned out to be necessary later on: Tak had only run his installer as root.) We then brought the network up with

sudo ifconfig eth0

We put the latest tarball on each box and installed it (with the previously-used install CD in each box--that's required by the apt-get's) with

su # Tak said he had only tested install as root
# due to hardcoding in is4c-ubuntu-install
INSTALLROOT=/pos
mkdir -p $INSTALLROOT
URI=http://www.wedge.coop/is4c/download/pos.tar.gz
FN=$(basename $URI)
FP="/$FN"
wget -O $FP $URI
cd /
tar xfz $FP
$INSTALLROOT/installation/is4c-ubuntu-install

The script was non-interactive until

/pos/installation/lane_db-install

This we were able to run without error only by taking the defaults:

  • path to MySQL binaries=/usr/bin
  • MySQL user account=root
  • MySQL user password=[none, just hit enter]

With those, final comment was just

Done

so our next steps are

  • test the configuration above
  • try the server install?
  • whatever Tak suggests

2pm F 7 Sep 07 @ Kiwi Castle

I picked up the Pavilion et al that was sitting under the office steps and brought it, my Gateway, and my flatscreen to Denise and Sven's. Sven wants to setup the testbed in their basement: it's musty, but it does have one grounded outlet, and wireless reaches down there. Sven to clean out.

Installed Ubuntu 6.06.1 on Pavilion. Sven's memory won't fit in Gateway. Sven has SCSI PCI card and cable. Replied to Ron Joffe about getting one of his drives. Sven also has an old Dell. Wanna test the Gateway's HD in that or the Pavilion: but I forgot to bring tools, and Sven has none, so I can't get out the damn Phillips-heads holding the drive in.

Hardware inventory:

  • my Sony 17" flatscreen
  • DFC Pavilion 14" CRT
  • DFC Pavilion 66 MHz, 128 MB RAM, 8 GB HD
  • Sven's Dell Dimension 4100, "probably dead"
  • Sven's memory module (too big for Gateway)
  • Denise's Compaq Presario, may have bad video
  • Sven's PCI SCSI2 card
  • ? Brett's PC (pledged)

Done ~4pm. Next session: 5pm W 12 Sep @ Castle before webspace session w Brett. Todo's for next session (numbers are for ID only):

  1. clean out basement (sven, this weekend)
  2. bring extension cords, power strips, tools (tom)
  3. get Joffe HDs (tom or sven)
  4. get ungraphical setup chops (ifsetup, etc) (all)
  5. bring 50-100' ethernet cable and hub (tom)
  6. get key to basement south door from landlord (sven)
  7. drop cable from router (in Blue's room) outside through basement south door
  8. put SCSI controller and drive in Gateway, attempt to revive

expertise needed

This is a voyage of discovery for us. I have some linux chops, and Sven has more. I have lots software development experience, Denise and Sven have some. The IS4C/Fannie dev leads have lots POS experience, but they are offsite (not even in the same timezone :-) So we'd appreciate donations of labor and expertise, e.g.

  • POS expertise. If you've done something like this before, please get in touch. Help writing USB drivers (in C, I believe) for the POS peripherals would also be useful, since that would allow use of a broader range of hardware.
  • linux administrative expertise. This is handling money, so we need to be secure! E.g. we'll need to configure our network so as to restrict IP access while allowing the lane PC to transact with the (remote) credit-card processor, the lane and backend PCs to communicate with each other, and administrators to have web access to the lane and backend PCs. We'll also need a better backup system than we have now.
  • database/accounting expertise: One of our main goals is to automate data entry into QuickBooks, so we'll be automating queries from MySQL and imports into QB, and hopefully reporting.
  • Apache/PHP chops: aside from the drivers, it's mostly PHP on Apache. I have old experience with Perl on Apache, so will need to get "up to speed."

hardware wanted

For ease of setup/debugging, not to mention reliability of operation, we'd like our POS setup to resemble others already in production, e.g. Alberta Co-op's setup, except that ours will be a subset (e.g. we have 1 lane now, not 3). So I'd appreciate donations of any of the following, or similar (corners may be cut, especially for the testbed), to limit what we hafta buy:

lane PC: approximately 1 GHz processor, 128 MB RAM, 40 GB HD, gigabit ethernet. Must have old-style serial and parallel ports due to limitations of current code.

lane video: 2 flatscreen monitors (1 customer, 1 cashier), VGA Y-cable, VESA pole mounts

Epson TM-H6000ii receipt printer with parallel interface and power supply

Preh programmable matrix-style keyboard

APG Series 100 cash drawer with cable for Epson TM series

PSC Magellan 8104 scanner/scale with serial cable and pole display. Failing that we'll try to use our current scale with a separate scanner, e.g. the POS-X Xi3000.

backend PC(s): preferably 2 PCs running master/slave, but one will do for testbed, each approximately 1 GHz processor, 128 MB RAM, 80 GB HD, gigabit ethernet. If 2 PCs, master has RAID5, slave has RAID1, but "both running MySQL master/master ... for improved server availability as well as data protection."

POS development coolth

Just thought I'd add some more reasons to be juiced about IS4C/Fannie development, courtesy of the folks at the Wedge (the dev leads) and excerpted from

http://www.wedge.coop/is4c/bb/viewtopic.php?t=11

JoeH Thu Sep 06, 2007 1:23 pm
> The Wedge now has an online store at
> http://www.wedgeworldwide.coop (based off of an open
> source shopping cart named OSCommerce, then heavily
> modified). After a member makes a purchase, that
> data is brought over to the Wedge and joined with
> IS4C member purchases data. Then when people lookup
> member purchases through IS4C they see their total,
> including any purchases made online.

atfrase Wed Sep 05, 2007 9:03 pm
> track[ing] 'local' products, in order to encourage
> customers to support local economies and contribute
> to reducing shipping costs.

> The first step was to put special signs next to
> local items to identify them on the shelves, which
> any store could do. But with control over our POS
> system, we were able to go a step further and put it
> on our receipts.

> First, we had to add a field to our Products table
> so the POS knew which products were, in fact, local.
> Then we had to add code to the POS itself to compute
> the "local percentage" of a transaction
> (local-dollars over total-dollars).

> It's a fun way to let customers see the breakdown of
> where their groceries came from, and we could never
> have done it with a proprietary, closed-source POS.
> Even if the vendor were cooperative and willing to
> add random features like this, it would have taken
> them much longer to get around to it; we did it in a
> few days. The vast, vast majority of the time and
> effort for that project was in our buyers giving us
> data on what products were local; the changes to the
> POS were easy and quick.

johnpurdy Wed Sep 05, 2007 7:18 pm
> With the recent flooding in the upper midwest, we've
> had several farms lose a large percentage of their
> crops for the season.

...

> Anyways, at a manager meeting one morning a bunch of
> ideas where thrown out about ways we could help out
> at the store and quite a few involved modifying
> IS4C.

> Within a day we implemented the following things:

> * A round-up feature. This feature will create a
>   donation to our farmer's relief fund for a small
>   amount that will round-up that total of the
>   transaction to the nearest dollar.

> * We changed the locked screen image to an image of
>   a flooded farm, with a donation message.

> * We added a line to the receipt informing customers
>   about our farm relief fund

> * We added a line to the receipt thanking the
>   customer if they had made a donation in the
>   transaction, and included the necessary tax
>   retention message for the donation.

> * We changed the 'farewell' message to encourage
>   people to donate to the farmer's relief fund

> With all of these changes made to IS4C -- including
> a custom PLU for the relief fund, we were able to
> track our member's, non-member's, and employee's
> donations to the relief fund.

> As it stands now, we've collected over $8,000 in the
> last two weeks.

blogging the POS development/implementation here

More detail later, I promise :-) but for now:

We have for some time wanted to adopt a point-of-sale (POS) system, not least to eliminate the time we spend manually transferring data from our cash register to our accounting system, QuickBooks. Unfortunately we can't afford the commercial system that Stuart Bagwell identified. Instead, as Denise recently announced, we have decided to take the plunge with IS4C/Fannie. This will involve some development effort on our part, and I have also agreed to try to document our implementation.

Presuming that I can learn to love Drupal :-) or can't think of anything better, I'll start blogging the impl/dev effort as comments to this URL. For now I'll just say that I've been pricing required peripherals and am setting up an old PC for the backend (i.e. to run Fannie). IIUC Sven is trying to get a better PC, which we'll setup for the lane (i.e. to run IS4C).

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Back to top