Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chris Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

MSDHosts

Status
Not open for further replies.

chevell

Technical User
Jul 2, 2010
34
US
Hey guys,
I've got no experience with POS Systems, but a client asked me to make a custom web app that interfaces with his POS. I obviously don't want to develop on his server, so he gave me his CDs to install in a VM in demo mode. Everything installed without issue and I have the license manager running in demo mode.

When I click the Start RES app, it pops up the application starter and sits at "Wait for MDSHosts". I have no idea what that means and can't find any reference to it. Any help would be greatly appreciated!
 
Each service pack increments the minor version. The latest version right now is 4.8. My guess is that his distributor upgraded him as part of a PCI compliancy package; a lot of restaurant owners don't realize this includes a version upgrade. I would ask him to run versioninfo to find out. Chances are the service packs and prerequisites will be stored on his drive somewhere if he was upgraded.

One of the first things the'restore database' process does is to back up the current database as Replaced_MICROS_timestamp.mbz. If the restoration fails this database is put back in place. That's probably what's going on.

Take a look at the database manager log - \micros\common\etc\DM.log. It's kind of vague, but at least you can see it failing. I've been trying to downgrade a test db from 4.7 to 4.0 for another reason and this is the log entry.

Code:
7/13/2010 9:07:50 AM Restoring Micros backup file D:\Micros Databases\AGWS\MICROS_2010_07_09_16_21.mbz
7/13/2010 9:07:50 AM Backing up Micros passwords and encryption keys.
7/13/2010 9:07:50 AM Micros passwords and encryption key backup complete.
7/13/2010 9:08:04 AM Decompressing backup file. 
[red]7/13/2010 9:08:04 AM Micros backup restoration failed.
7/13/2010 9:08:04 AM Attempting to restore originals.
7/13/2010 9:08:04 AM Restoring Micros backup file Replaced_MicrosBackup_2010_07_13_09_07.mbz[/red]
7/13/2010 9:08:05 AM Decompressing backup file. 
7/13/2010 9:08:09 AM Restoring passwords and encryption keys.
7/13/2010 9:08:09 AM Restoring passwords and encryption keys complete.
 
Yeah, I think you're right. I'll have to check with him tonight.

In the mean time, I was checking on the database that si there. Blank or not, the fields and tables I need to get are are there.

The first thing I noticed is that i can't create an ODBC connection to the SQL server unless I'm local. IP is out. I assume this is a security thing and will be true with all POS systems, correct? Therefore, whatever I do will have to be installed locally on this machine, correct?

Thanks for all the guidance thus far.
 

It's going to depend on what kind of processing you're doing. I think you said in another post that the info will be passed into another database, some numbers will be crunched, and the new price will be returned to Micros. You definately don't want to be running a second database engine on the Micros server.

Getting into the Micros database remotely is tough, but you should be able to create an ODBC connection to another server. Since this is going to fire when a menu item is sold, the process will most likely have to be initialized from the Micros end anyway.
 
Ok, the more I think about this, the sillier I feel. Obviously, the terminals and touch screens in the restaurant are using IP to connect to the database somehow, right?

So I should be able to add my app server as a node or something and allow access via ODBC to the database, right?

That would be awesome! I'm actually in the middle of installing the hot fixes right now. Should have the whole deal installed and running in the VM in a few minutes.

Thanks again for all the help!
 
I don't think you'll have to add the app server as a node. Your interface will be driven by POS Operations, so a SIM interface is probably your best option. (You can't alter tables owned by the micros user so using a trigger to fire this off isn't an option; that would be too easy.)
 
Is there anywhere I can get more information on a SIM interface? I'm not familiar with the term. I've got my app server built now and I'm trying to just create an ODBC connection to the database, but that isn't work. I should be able to do anything I want to do once I get that working. Any thoughts?
 
Hey, i've been doing some research and see that if i run NetSetup, I should be able to connect to the server via ODBC. I see NetSetup should be in C:\Program Files\Micros\Netsetup, but its not there. Thanks!
 
netsetup is only available in versions 3.2 and below

you can install res on another pc by setting the pc up in the network nodes,devices and user workstations as you would any workstation and then install CAL on the pc and configure it the same as you would a workstation.
 
K Great! That explains that. So I;m reading the CAL docs. there's no installer for this? It just tells me how to make a setup.bat file for updating. Were are the installation files themselves?
 
ah that's a good question...
i generally just have a copy of it on hand.
Not sure where it actually is on a fresh install.

its called setup.exe and its around 10meg in size.
there is generally another exe in the same directory called calclientupdate.exe

Do a search on your server for setup.exe


 

SIM is a proprietory scripting language. It runs with POS Operations and gives you a bunch of associated variables, functions and events. Documentation is notoriously horrible. There a SimHelp file in \micros\common\etc that's about all you're going to get. If you get the new, crappy version without the standard Contents/Index/Search tabs, pull a copy off the Res4.0 installation disk.

SIM scripting is the only way you're going to interact with POS operations so be prepared for a somewhat frustrating learning curve.

Do you have an execution plan going yet? The reason I ask is just because in 12 years of working with 3700 installations I've never seen an interface in which the app server had to be set up as a network node. I'd hate to see you spend all kinds of time getting the connection going if you can't use it.
 
Oh, i don't think it needs to be set up as a node. i was just thinking out loud. I have no real clue. I do need to have my app server on a different box, by requirement, however, so i need to talk to the DB over IP using ODBC, preferrably.

If i use SIM, i can probably script out something that will send data to the app server, but i still need to modify the price in the POS DB after that.

This is some great info, Thanks again!
 
Yeah, i can't find this CAL stuff anywhere. On the server, there's a CAL directory but it doesn't have an exe. Just some scripts for preparing for installation. Any ideas? Thanks!
 
Ok, so I finally have a remote machine connecting to the database and exporting data so I can get to the database part of what i'm doing. This is great! I still need a much more permanent solution, BUT I can't seem to find transactional data in the database. I need to know when something gets sold. I can find its number ad price easily, so i know where that is. Just need to be able to change the price. Once I have that working the rest will fall into place. Thanks for all your help on this!
 
The transactional data for sales will be in:
micros.chk_dtl
micros.trans_dtl
micros.dtl
micros.mi_dtl and
micros.sale_dtl

chk_dtl is the only place to find the check number used in POS operations (chk_dtl.chk_num). There's also chk_open field that helps if the site is busy enough that the check numbers get recycled before the 14 day purge limit.

join chk_dtl to trans_dtl on chk_seq
join trans_dtl to sale_dtl on trans_seq
join trans_dtl to dtl on trans_seq
join dtl to mi_dtl on trans_seq and dtl_seq

If you have an FTP site I can send some SIM docs your way.
 
Awesome. Thanks! I'll send FTP info in a few. Got to extract my anon FTP login info from one of my apps (don't remember it off hand).

As far as transactional data, I was up all night figuring this out. Here's what would be perfect:

Either every 30 seconds or a minute, the server spits out a flat CSV with the mi_seq # and the number of items sold, OR

ideally, every time an item is sold, the system spits out a flat CSV with just the mi_SEQ # of the item sold.

I can then pick this file up with my app server, work my magic and then do something like an SQL insert to change the price.

That should be easy enough to do right?
 
Should be pretty easy. You could probably use a SIM tmed or service total event and write all the menu items in the surrent round to a flat file. You may want to give it more than 30-60 seconds though. It usually take a couple of minutes for menu item changes to populate down to the workstations, and things will probably start getting muddy if they're receiving multiple updates on the same items.
 
ftp://x-tremeteam.dnsalias.net anonymous/email@email.com

So there is a way to trigger an event after each time an order is placed into a workstation?

I'm just thinking, onevent -> export: mi_seq. I can increment the total on my end.

Thanks!
 
Yes, you can use one of the events to fire after each service total; I can't remember the exact name of the event offhand. The only issue you may run into is that menu items are identified by obj_num, not the mi_seq, inside the SIM language. Not really a big deal, plenty of ways to deal with that.

I just uploaded 2 pdf's and an excel spreadsheet.
The 3700 Sim companion is from 2003, but will give you everything that was available at that point.
The feature reference tab in the spreadsheet lists all the updates up to Res 4.1. Just select SIM from the module filter.
The 9700 Sim manual is a pretty good in-depth document. There are variables and event not available for the 3700, but the concepts are fleshed out better. There's also very good sections on working with dll's and tx/rx protocols.
 
Hey, great info on those pages. That is awesome. Thanks for the upload!

Two questions:
First, is this feasible?

1. Put a menu item into the database
2. Call it obj_num 200850 and so when that item is ordered in the POS touchscreen it triggers a SIM script which will:
2a. Open an odbc connection to my app server
2b. Send the object_num and qty sold (have not found that item in the DB yet)
2c. Get the new price (calculated in my DB) back from my DB.
3. Send the new price to the touchscreens.

Second, does anyone have ny scripting examples using the sql DLL's mentioned in the documentation?

Thanks much!
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top