****************************************************************
** SALE.PRG - point of sale transaction handler
** J Osako    29 Jan 1996	'This code is cursed'
** Copyright 1996 The Used Computer Store, All Rights Reserved
****************************************************************

*PROCEDURE main
	itemno = 1
	item = NULL
	serialnum = NULL
	
*************
** open the DBFs used in sales 
	IF !USED('Atom')
		USE Atom IN 12
		SELECT Atom
	*	INDEX ON (DTOS(tr_date)+timestamp) TAG nucleus
	*	INDEX ON (DTOS(tr_date)+timestamp)+(STR(itemno)) TAG particle
		SET ORDER TO particle
	ENDIF
	IF !USED('Atemp')
		USE Atemp IN 13
		SELECT Atemp
	*	INDEX ON (DTOS(tr_date)+timestamp) TAG nucleus2
	*	INDEX ON (DTOS(tr_date)+timestamp+(STR(itemno))) TAG particle2
		SET ORDER TO particle2
	ENDIF
	IF !USED('payform')
	USE payform IN 14
		SELECT payform
	*	INDEX ON (DTOS(tr_date)+timestamp) TAG green
		SET ORDER TO green
		SET RELATION TO (DTOS(tr_date)+timestamp) INTO Trans_Re ADDITIVE
	ENDIF
	IF !USED('wty')
	USE wty IN 25
	ENDIF

	IF .F. 		&& dummy code for the project mangler
		DO in_item
		DO get_cust
	ENDIF	
	gotten = in_item()
	DO WHILE gotten AND !get_cust()	&& was the get_cust() cancelled?
		gotten = in_item()			&& was the whole trans. cancelled?
	ENDDO
	IF !gotten			&& if cancelled, erase everything it created
		SELECT atom
		DELETE ALL FOR (tr_date = M.tr_date AND timestamp = M.timestamp)
	ELSE 
		SELECT Slaves					&& employee's ssn is the relation key 
		SCATTER MEMVAR FIELD ssn		&& between trans_re and slaves
		SELECT Customer					&& similiar for cust_num between
		SCATTER MEMVAR FIELD cust_num	&& trans_re and customer
	
		INSERT INTO Trans_re FROM MEMVAR	&& set the record node
		SELECT Atom
		FOR cnt = 1 TO dups 
			REPORT FORM receipt ALL;
				FOR (Atom.tr_date = M.tr_date AND Atom.timestamp = M.timestamp);
				TO PRINTER
		ENDFOR
		EJECT
	ENDIF
	CLOSE MEMO ALL	&& do cleanup on the memos
RETURN