240 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			240 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| compile subroutine invoice_rpt4_prn( FromDate, ThruDate, InvoiceTable )
 | |
| declare function set_printer
 | |
| ! 
 | |
| * LIST INVOICE JUSTLEN '8' CUST_CITY JUSTLEN '50' ENTRY_DATE DUE_DATE PO GL_ACCT_TOTS TOTAL TOTAL_SHIP_AMOUNT TOTAL DISCOUNT_AMOUNT TOTAL INVOICE_AMOUNT HEADING " Invoices by Invoice No 'T' PAGE # 'P' by selected entry dates from (01/01/96) TO (01/08/96 ) "
 | |
| ! 
 | |
| *PRINTER ON
 | |
| * 
 | |
| * HEADING/FOOTING
 | |
| Font = 'Courier New,7,L,1'
 | |
| convert ',' to @fm in Font
 | |
| HeadPos = '.5,1.75,.81,.75,1.25,1.75,1.06,1.06,1.06'
 | |
| convert ',' to @fm in HeadPos
 | |
| TheHeader = "Epitronics, formerly Lawrence Semiconductor Labs."
 | |
| TheHeader<-1> = "Invoices by Invoice No. 'T' PAGE # 'P' by selected entry dates from (":oconv(FromDate, 'D2/' ):') TO (':oconv(ThruDate, 'D2/' ):")":@fm
 | |
| ColHeader = "Key" : @vm : "Customer/City" : @vm : "Entry Date" : @vm : "Due Date" : @vm : "PO" : @vm : "G/L Account Totals" : @vm : "Tot Ship Amt" : @vm : "Discount Amt" : @vm : "Invoice Amt"
 | |
| Tvar = str( '_', 8):@vm:str( '_', 30):@vm:str( '_', 10):@vm:str( '_', 10):@vm
 | |
| Tvar:= str( '_',17 ):@vm:str( '_', 25):@vm:str( '_', 17):@vm:str( '_', 17):@vm
 | |
| Tvar:= str( '_',17 )
 | |
| *COLHEADER = ''
 | |
| ColHeader<-1> = Tvar
 | |
| *TheHeader = ''
 | |
| Void = set_printer( 'FONTHEADFOOT', Font )
 | |
| Void = set_printer( 'HEADER', TheHeader, HeadPos, ColHeader )
 | |
| Void = set_printer( 'FONT', Font )
 | |
| *FOOTING ""
 | |
| * 
 | |
| @RECCOUNT=0
 | |
| FIRST.PASS=1
 | |
| LAST.RECORD=0
 | |
| READERR=0
 | |
| * 
 | |
| * OPEN DICT AND DATA FILES
 | |
| * 
 | |
| OPEN "DICT",InvoiceTable TO @DICT ELSE return
 | |
| OPEN "",InvoiceTable TO FILE.IN ELSE return
 | |
| * 
 | |
| * MAKE COLUMN HEADING
 | |
| * 
 | |
| * ZERO ACCUMULATORS FOR EACH BREAK
 | |
| * 
 | |
| TOTALULSHIPULAMOUNT.GRAND.TOTAL=0
 | |
| TOTALULSHIPULAMOUNT.GRAND.COUNT=0
 | |
| * 
 | |
| DISCOUNTULAMOUNT.GRAND.TOTAL=0
 | |
| DISCOUNTULAMOUNT.GRAND.COUNT=0
 | |
| * 
 | |
| INVOICEULAMOUNT.GRAND.TOTAL=0
 | |
| INVOICEULAMOUNT.GRAND.COUNT=0
 | |
| * 
 | |
| ! 
 | |
| READRECORD:
 | |
| ! 
 | |
| * 
 | |
| * 
 | |
| @FILE.ERROR.MODE=1
 | |
| READNEXT @ID,WHICH.VALUE ELSE
 | |
| @FILE.ERROR.MODE=0
 | |
| IF STATUS() GT 0 THEN
 | |
| @ANS=@FILE.ERROR<1>
 | |
| Void = set_printer( 'TEXT',{RLIST_TEXT_5} )
 | |
| return
 | |
| END
 | |
| IF @FILE.ERROR<1> EQ 421 THEN
 | |
| Void = set_printer( 'TEXT', {RLIST_TEXT_6} )
 | |
| GOTO READRECORD
 | |
| END
 | |
| IF @FILE.ERROR<1> NE 111 THEN
 | |
| @ANS=@FILE.ERROR<1>
 | |
| Void = set_printer( 'TEXT', {RLIST_TEXT_4} )
 | |
| READERR+=1
 | |
| GOTO READRECORD
 | |
| END
 | |
| LAST.RECORD=1
 | |
| END
 | |
| @FILE.ERROR.MODE=0
 | |
| * 
 | |
| S.ATID=@ID
 | |
| * 
 | |
| IF FIRST.PASS AND LAST.RECORD THEN
 | |
| Void = set_printer( 'TEXT', {RLIST_TEXT_2} )
 | |
| return
 | |
| END
 | |
| * 
 | |
| IF LAST.RECORD THEN GOTO BREAKS
 | |
| * 
 | |
| IF @REDUCTION.DONE THEN
 | |
| @FILE.ERROR.MODE=1
 | |
| READO @RECORD FROM FILE.IN,@ID ELSE
 | |
| @FILE.ERROR.MODE=0
 | |
| IF STATUS() GT 0 THEN
 | |
| @ANS=@FILE.ERROR<1>
 | |
| Void = set_printer( 'TEXT', {RLIST_TEXT_5} )
 | |
| return
 | |
| END
 | |
| IF @FILE.ERROR<1> NE 100 THEN
 | |
| @ANS=@FILE.ERROR<1>
 | |
| Void = set_printer( 'TEXT', {RLIST_TEXT_4} )
 | |
| READERR+=1
 | |
| END
 | |
| GOTO READRECORD
 | |
| END
 | |
| @FILE.ERROR.MODE=0
 | |
| END
 | |
| * 
 | |
| @RECCOUNT+=1
 | |
| * 
 | |
| * 
 | |
| * CALCULATE VALUE(S) FOR COLUMN(S)
 | |
| * 
 | |
| S.ATID={@ID}
 | |
| I.ATID=S.ATID
 | |
| S.CUSTULCITY={CUST_CITY}
 | |
| I.CUSTULCITY=S.CUSTULCITY
 | |
| S.ENTRYULDATE={ENTRY_DATE}
 | |
| I.ENTRYULDATE=S.ENTRYULDATE
 | |
| S.DUEULDATE={DUE_DATE}
 | |
| I.DUEULDATE=S.DUEULDATE
 | |
| S.PO={PO}
 | |
| I.PO=S.PO
 | |
| M.GLULACCTULTOTS={GL_ACCT_TOTS}<1,WHICH.VALUE> ; P.GLULACCTULTOTS=1 ; C.GLULACCTULTOTS=7
 | |
| S.TOTALULSHIPULAMOUNT={TOTAL_SHIP_AMOUNT}
 | |
| I.TOTALULSHIPULAMOUNT=S.TOTALULSHIPULAMOUNT
 | |
| S.DISCOUNTULAMOUNT={DISCOUNT_AMOUNT}
 | |
| I.DISCOUNTULAMOUNT=S.DISCOUNTULAMOUNT
 | |
| S.INVOICEULAMOUNT={INVOICE_AMOUNT}
 | |
| I.INVOICEULAMOUNT=S.INVOICEULAMOUNT
 | |
| * 
 | |
| PREVIOUS.MARK.LEVEL=0
 | |
| * 
 | |
| IF FIRST.PASS THEN
 | |
| FIRST.PASS=0
 | |
| GOTO DETAIL
 | |
| END
 | |
| * 
 | |
| * 
 | |
| ! 
 | |
| BREAKS:
 | |
| ! 
 | |
| * 
 | |
| * 
 | |
| * PERFORM LAST RECORD OUTPUT IF DONE
 | |
| * 
 | |
| IF LAST.RECORD THEN
 | |
| Void = set_printer( 'TEXT', '' )
 | |
| PRINTLINE ="***":@vm
 | |
| PRINTLINE:= '':@vm
 | |
| PRINTLINE:= '':@vm
 | |
| PRINTLINE:= '':@vm
 | |
| PRINTLINE:= '':@vm
 | |
| PRINTLINE:= '':@vm
 | |
| PRINTLINE:= OCONV(TOTALULSHIPULAMOUNT.GRAND.TOTAL ,"MD2,$"):@vm
 | |
| PRINTLINE:= OCONV(DISCOUNTULAMOUNT.GRAND.TOTAL ,"MD2,$"):@vm
 | |
| PRINTLINE:= OCONV(INVOICEULAMOUNT.GRAND.TOTAL ,"MD2,$")
 | |
| TableColInfo = '>+720':@vm:'<+2520':@vm:'<+1166':@vm:'<+1080':@vm:'<+1800':@vm:'<+2520':@vm:'>+1526':@vm:'>+1526':@vm:'>+1526'
 | |
| Void = set_printer( 'ADDTABLE', TableColInfo, '', PRINTLINE, '', '', 1, TB_NONE ) 
 | |
| 
 | |
| * PRINT
 | |
| * @ANS=@RECCOUNT
 | |
| * PRINT {RLIST_TEXT_1}
 | |
| IF READERR THEN
 | |
| @ANS=READERR
 | |
| Void = set_printer( 'TEXT', {RLIST_TEXT_3} )
 | |
| END
 | |
| return
 | |
| END
 | |
| * 
 | |
| ! 
 | |
| DETAIL:
 | |
| ! 
 | |
| * 
 | |
| * REMOVE APPROPRIATE VALUE FROM MULTI-VALUED COLUMN(S)
 | |
| * 
 | |
| NEW.MARK.LEVEL=0
 | |
| * 
 | |
| IF C.GLULACCTULTOTS GE PREVIOUS.MARK.LEVEL THEN
 | |
| REMOVE I.GLULACCTULTOTS FROM M.GLULACCTULTOTS AT P.GLULACCTULTOTS SETTING C.GLULACCTULTOTS
 | |
| S.GLULACCTULTOTS=I.GLULACCTULTOTS
 | |
| END
 | |
| IF C.GLULACCTULTOTS GT NEW.MARK.LEVEL THEN NEW.MARK.LEVEL=C.GLULACCTULTOTS
 | |
| * 
 | |
| * DO CONVERSIONS IF ANY
 | |
| * 
 | |
| IF S.ENTRYULDATE NE "" THEN S.ENTRYULDATE=OCONV(S.ENTRYULDATE,"D2/")
 | |
| IF S.DUEULDATE NE "" THEN S.DUEULDATE=OCONV(S.DUEULDATE,"D2/")
 | |
| IF S.TOTALULSHIPULAMOUNT NE "" THEN S.TOTALULSHIPULAMOUNT=OCONV(S.TOTALULSHIPULAMOUNT,"MD2,$")
 | |
| IF S.DISCOUNTULAMOUNT NE "" THEN S.DISCOUNTULAMOUNT=OCONV(S.DISCOUNTULAMOUNT,"MD2,$")
 | |
| IF S.INVOICEULAMOUNT NE "" THEN S.INVOICEULAMOUNT=OCONV(S.INVOICEULAMOUNT,"MD2,$")
 | |
| * 
 | |
| * ACCUMULATE TOTAL(S)
 | |
| * 
 | |
| IF NUM(I.TOTALULSHIPULAMOUNT) AND I.TOTALULSHIPULAMOUNT NE "" THEN
 | |
| TOTALULSHIPULAMOUNT.GRAND.TOTAL+=I.TOTALULSHIPULAMOUNT
 | |
| TOTALULSHIPULAMOUNT.GRAND.COUNT+=1
 | |
| I.TOTALULSHIPULAMOUNT=''
 | |
| END
 | |
| IF NUM(I.DISCOUNTULAMOUNT) AND I.DISCOUNTULAMOUNT NE "" THEN
 | |
| DISCOUNTULAMOUNT.GRAND.TOTAL+=I.DISCOUNTULAMOUNT
 | |
| DISCOUNTULAMOUNT.GRAND.COUNT+=1
 | |
| I.DISCOUNTULAMOUNT=''
 | |
| END
 | |
| IF NUM(I.INVOICEULAMOUNT) AND I.INVOICEULAMOUNT NE "" THEN
 | |
| INVOICEULAMOUNT.GRAND.TOTAL+=I.INVOICEULAMOUNT
 | |
| INVOICEULAMOUNT.GRAND.COUNT+=1
 | |
| I.INVOICEULAMOUNT=''
 | |
| END
 | |
| * 
 | |
| * PRINT DETAIL LINE
 | |
| * 
 | |
| PRINTLINE = S.ATID:@vm
 | |
| PRINTLINE:= S.CUSTULCITY:@vm
 | |
| PRINTLINE:= S.ENTRYULDATE:@vm
 | |
| PRINTLINE:= S.DUEULDATE:@vm
 | |
| PRINTLINE:= S.PO:@vm
 | |
| PRINTLINE:= S.GLULACCTULTOTS:@vm
 | |
| PRINTLINE:= S.TOTALULSHIPULAMOUNT:@vm
 | |
| PRINTLINE:= S.DISCOUNTULAMOUNT:@vm
 | |
| PRINTLINE:= S.INVOICEULAMOUNT
 | |
| TableColInfo = '>+720':@vm:'<+2520':@vm:'<+1166':@vm:'<+1080':@vm:'<+1800':@vm:'<+2520':@vm:'>+1526':@vm:'>+1526':@vm:'>+1526'
 | |
| Void = set_printer( 'ADDTABLE', TableColInfo, '', PRINTLINE, '', '', 1, TB_NONE ) 
 | |
| 
 | |
| * 
 | |
| IF NEW.MARK.LEVEL THEN
 | |
| S.ATID=''
 | |
| S.CUSTULCITY=''
 | |
| S.ENTRYULDATE=''
 | |
| S.DUEULDATE=''
 | |
| S.PO=''
 | |
| S.GLULACCTULTOTS=''
 | |
| S.TOTALULSHIPULAMOUNT=''
 | |
| S.DISCOUNTULAMOUNT=''
 | |
| S.INVOICEULAMOUNT=''
 | |
| PREVIOUS.MARK.LEVEL=NEW.MARK.LEVEL
 | |
| GOTO DETAIL
 | |
| END
 | |
| * 
 | |
| GOTO READRECORD
 | |
| * 
 | |
| END
 | |
| 
 |