added LSL2 stored procedures
This commit is contained in:
403
LSL2/STPROC/SCHED_RPT3_PRN.txt
Normal file
403
LSL2/STPROC/SCHED_RPT3_PRN.txt
Normal file
@ -0,0 +1,403 @@
|
||||
COMPILE SUBROUTINE SCHED_RPT3_PRN( FromDate, ThruDate, SchedTable )
|
||||
!
|
||||
* LIST SCHEDULE JUSTLEN '8' BREAK-ON CUST_DIVISION JUSTLEN '30' PO PART_NUM SHIP_DATE TOTAL SHIP_QTY SHIP_PRICE JUSTLEN '12' BREAK-ON INVOICE_IDS JUSTLEN '12' TOTAL SHIP_AMOUNT JUSTLEN '15' LIMIT SHIP_DATE FROM "09/01/95" TO "09/05/95" HEADING " Billings by Customer/Division by Invoice No. 'T' PAGE # 'PP''L' by selected dates from ((09/01/95) TO (09/05/95 ) "
|
||||
!
|
||||
*PRINTER ON
|
||||
*
|
||||
* HEADING/FOOTING
|
||||
declare function set_printer
|
||||
Font = 'Courier New,7,L,0'
|
||||
convert ',' to @fm in Font
|
||||
TheHeader = " Billings by Customer/Division by Invoice No. 'T' PAGE # 'P' by selected dates from (":oconv( FromDate, 'D2/' ):") Thru (":oconv( ThruDate, 'D2/' ):@fm
|
||||
HeadPos = '.64,2.63,1.64,1.14,.75,.75,.89,.64,1.64'
|
||||
convert ',' to @fm in HeadPos
|
||||
COLHEADER = ''
|
||||
ColHeader = "Key" : @vm : "Customer/Division" : @vm : "PO" : @vm : "Part Number" : @vm : "Ship Date" : @vm : "Ship Qty" : @vm : "Ship Price" : @vm : "Invoice IDs" : @vm : "Ship Amount"
|
||||
Tvar = str( '_', 9):@vm:str( '_', 35):@vm:str( '_', 25):@vm:str( '_', 16):@vm
|
||||
Tvar:= str( '_', 10):@vm:str( '_', 12):@vm:str( '_', 14):@vm:str( '_', 9):@vm
|
||||
Tvar:= str( '_', 19)
|
||||
ColHeader<-1> = Tvar
|
||||
if SchedTable = 'SCHEDULE_SRL' then
|
||||
swap 'Part Number' with 'Description' in ColHeader
|
||||
end
|
||||
*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",SchedTable TO @DICT ELSE return
|
||||
OPEN "",SchedTable TO FILE.IN ELSE return
|
||||
*
|
||||
* MAKE COLUMN HEADING
|
||||
*
|
||||
* ZERO ACCUMULATORS FOR EACH BREAK
|
||||
SHIPULQTY.CUSTULDIVISION.TOTAL=0
|
||||
SHIPULQTY.CUSTULDIVISION.COUNT=0
|
||||
SHIPULQTY.INVOICEULIDS.TOTAL=0
|
||||
SHIPULQTY.INVOICEULIDS.COUNT=0
|
||||
SHIPULQTY.GRAND.TOTAL=0
|
||||
SHIPULQTY.GRAND.COUNT=0
|
||||
*
|
||||
SHIPULAMOUNT.CUSTULDIVISION.TOTAL=0
|
||||
SHIPULAMOUNT.CUSTULDIVISION.COUNT=0
|
||||
SHIPULAMOUNT.INVOICEULIDS.TOTAL=0
|
||||
SHIPULAMOUNT.INVOICEULIDS.COUNT=0
|
||||
SHIPULAMOUNT.GRAND.TOTAL=0
|
||||
SHIPULAMOUNT.GRAND.COUNT=0
|
||||
*
|
||||
* NULL PREVIOUS BREAK BUCKETS
|
||||
*
|
||||
PREV.CUSTULDIVISION=''
|
||||
LAST.CUSTULDIVISION.BREAK = 1
|
||||
PREV.INVOICEULIDS=''
|
||||
LAST.INVOICEULIDS.BREAK = 1
|
||||
*
|
||||
* DEFINE DATE CONSTANTS FOR PRINT LIMITING
|
||||
*
|
||||
TODAY = DATE()
|
||||
SUNDAY = TODAY - MOD(TODAY,7)
|
||||
LAST.SUNDAY = TODAY - ( MOD(TODAY-1,7) + 1 )
|
||||
*
|
||||
*
|
||||
!
|
||||
READRECORD:
|
||||
!
|
||||
*
|
||||
*
|
||||
* ZERO BREAK FLAGS TO FALSE
|
||||
*
|
||||
CUSTULDIVISION.BREAK=0
|
||||
INVOICEULIDS.BREAK=0
|
||||
*
|
||||
*
|
||||
@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
|
||||
CUSTULDIVISION.BREAK=1
|
||||
CUSTULDIVISION=PREV.CUSTULDIVISION
|
||||
INVOICEULIDS.BREAK=1
|
||||
INVOICEULIDS=PREV.INVOICEULIDS
|
||||
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.CUSTULDIVISION={CUST_DIVISION}
|
||||
I.CUSTULDIVISION=S.CUSTULDIVISION
|
||||
S.PO={PO}
|
||||
I.PO=S.PO
|
||||
if SchedTable = 'SCHEDULE' then
|
||||
S.PARTULNUM={PART_NUM}
|
||||
end else
|
||||
S.PARTULNUM={DESCRIPTION}
|
||||
end
|
||||
I.PARTULNUM=S.PARTULNUM
|
||||
M.SHIPULDATE={SHIP_DATE}<1,WHICH.VALUE> ; P.SHIPULDATE=1 ; C.SHIPULDATE=7
|
||||
*
|
||||
* INITIALIZE MULTIVALUE BREAK CHECK VARIABLE
|
||||
*
|
||||
S.SHIPULDATE = M.SHIPULDATE
|
||||
M.SHIPULQTY={SHIP_QTY}<1,WHICH.VALUE> ; P.SHIPULQTY=1 ; C.SHIPULQTY=7
|
||||
*
|
||||
* INITIALIZE MULTIVALUE BREAK CHECK VARIABLE
|
||||
*
|
||||
S.SHIPULQTY = M.SHIPULQTY
|
||||
M.SHIPULPRICE={SHIP_PRICE}<1,WHICH.VALUE> ; P.SHIPULPRICE=1 ; C.SHIPULPRICE=7
|
||||
*
|
||||
* INITIALIZE MULTIVALUE BREAK CHECK VARIABLE
|
||||
*
|
||||
S.SHIPULPRICE = M.SHIPULPRICE
|
||||
M.INVOICEULIDS={INVOICE_IDS}<1,WHICH.VALUE> ; P.INVOICEULIDS=1 ; C.INVOICEULIDS=7
|
||||
*
|
||||
* INITIALIZE MULTIVALUE BREAK CHECK VARIABLE
|
||||
*
|
||||
S.INVOICEULIDS = M.INVOICEULIDS
|
||||
M.SHIPULAMOUNT={SHIP_AMOUNT}<1,WHICH.VALUE> ; P.SHIPULAMOUNT=1 ; C.SHIPULAMOUNT=7
|
||||
*
|
||||
* INITIALIZE MULTIVALUE BREAK CHECK VARIABLE
|
||||
*
|
||||
S.SHIPULAMOUNT = M.SHIPULAMOUNT
|
||||
*
|
||||
PREVIOUS.MARK.LEVEL=0
|
||||
*
|
||||
* TEST FOR CONTROL BREAK(S)
|
||||
*
|
||||
IF (S.CUSTULDIVISION NE PREV.CUSTULDIVISION) OR CUSTULDIVISION.BREAK THEN
|
||||
CUSTULDIVISION=PREV.CUSTULDIVISION
|
||||
PREV.CUSTULDIVISION=S.CUSTULDIVISION
|
||||
CUSTULDIVISION.BREAK+=1
|
||||
INVOICEULIDS.BREAK=3
|
||||
END
|
||||
*
|
||||
IF (S.INVOICEULIDS NE PREV.INVOICEULIDS) OR INVOICEULIDS.BREAK THEN
|
||||
INVOICEULIDS=PREV.INVOICEULIDS
|
||||
PREV.INVOICEULIDS=S.INVOICEULIDS
|
||||
INVOICEULIDS.BREAK+=1
|
||||
END
|
||||
*
|
||||
*
|
||||
IF FIRST.PASS THEN
|
||||
FIRST.PASS=0
|
||||
GOTO DETAIL
|
||||
END
|
||||
*
|
||||
*
|
||||
!
|
||||
BREAKS:
|
||||
!
|
||||
*
|
||||
* PRINT BREAK TOTAL(S) AND ACCUMULATE TOTAL(S)
|
||||
*
|
||||
*
|
||||
IF INVOICEULIDS.BREAK THEN
|
||||
Void = set_printer( 'TEXT', '' )
|
||||
PRINTLINE = '':@vm
|
||||
PRINTLINE:= '':@vm
|
||||
PRINTLINE:= '':@vm
|
||||
PRINTLINE:= '':@vm
|
||||
PRINTLINE:= '':@vm
|
||||
PRINTLINE:= OCONV(SHIPULQTY.INVOICEULIDS.TOTAL ,"MD0"):@vm
|
||||
PRINTLINE:= '':@vm
|
||||
PRINTLINE:= "***":@vm
|
||||
PRINTLINE:= OCONV(SHIPULAMOUNT.INVOICEULIDS.TOTAL ,"MD2,$")
|
||||
TableColInfo = '>+922':@vm:'<+3787':@vm:'<+2362':@vm:'<+1642':@vm:'<+1080':@vm:'>+1080':@vm
|
||||
TableColInfo:= '>+1282':@vm:'>+922':@vm:'>+1714'
|
||||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PRINTLINE, '', '', 1, TB_NONE )
|
||||
|
||||
Void = set_printer( 'TEXT', '' )
|
||||
*
|
||||
SHIPULQTY.CUSTULDIVISION.TOTAL+=SHIPULQTY.INVOICEULIDS.TOTAL
|
||||
SHIPULQTY.INVOICEULIDS.TOTAL=0
|
||||
SHIPULQTY.CUSTULDIVISION.COUNT+=SHIPULQTY.INVOICEULIDS.COUNT
|
||||
SHIPULQTY.INVOICEULIDS.COUNT=0
|
||||
SHIPULAMOUNT.CUSTULDIVISION.TOTAL+=SHIPULAMOUNT.INVOICEULIDS.TOTAL
|
||||
SHIPULAMOUNT.INVOICEULIDS.TOTAL=0
|
||||
SHIPULAMOUNT.CUSTULDIVISION.COUNT+=SHIPULAMOUNT.INVOICEULIDS.COUNT
|
||||
SHIPULAMOUNT.INVOICEULIDS.COUNT=0
|
||||
END
|
||||
*
|
||||
IF CUSTULDIVISION.BREAK THEN
|
||||
Void = set_printer( 'TEXT', '' )
|
||||
PRINTLINE = '':@vm
|
||||
PRINTLINE:= "***":@vm
|
||||
PRINTLINE:= '':@vm
|
||||
PRINTLINE:= '':@vm
|
||||
PRINTLINE:= '':@vm
|
||||
PRINTLINE:= OCONV(SHIPULQTY.CUSTULDIVISION.TOTAL ,"MD0"):@vm
|
||||
PRINTLINE:= '':@vm
|
||||
PRINTLINE:= '':@vm
|
||||
PRINTLINE:= OCONV(SHIPULAMOUNT.CUSTULDIVISION.TOTAL ,"MD2,$")
|
||||
TableColInfo = '>+922':@vm:'<+3787':@vm:'<+2362':@vm:'<+1642':@vm:'<+1080':@vm:'>+1080':@vm
|
||||
TableColInfo:= '>+1282':@vm:'>+922':@vm:'>+1714'
|
||||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PRINTLINE, '', '', 1, TB_NONE )
|
||||
|
||||
Void = set_printer( 'TEXT', '' )
|
||||
*
|
||||
SHIPULQTY.GRAND.TOTAL+=SHIPULQTY.CUSTULDIVISION.TOTAL
|
||||
SHIPULQTY.CUSTULDIVISION.TOTAL=0
|
||||
SHIPULQTY.GRAND.COUNT+=SHIPULQTY.CUSTULDIVISION.COUNT
|
||||
SHIPULQTY.CUSTULDIVISION.COUNT=0
|
||||
SHIPULAMOUNT.GRAND.TOTAL+=SHIPULAMOUNT.CUSTULDIVISION.TOTAL
|
||||
SHIPULAMOUNT.CUSTULDIVISION.TOTAL=0
|
||||
SHIPULAMOUNT.GRAND.COUNT+=SHIPULAMOUNT.CUSTULDIVISION.COUNT
|
||||
SHIPULAMOUNT.CUSTULDIVISION.COUNT=0
|
||||
END
|
||||
*
|
||||
* 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:= OCONV(SHIPULQTY.GRAND.TOTAL ,"MD0"):@vm
|
||||
PRINTLINE:= '':@vm
|
||||
PRINTLINE:= '':@vm
|
||||
PRINTLINE:= OCONV(SHIPULAMOUNT.GRAND.TOTAL ,"MD2,$")
|
||||
TableColInfo = '>+922':@vm:'<+3787':@vm:'<+2362':@vm:'<+1642':@vm:'<+1080':@vm:'>+1080':@vm
|
||||
TableColInfo:= '>+1282':@vm:'>+922':@vm:'>+1714'
|
||||
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.SHIPULDATE GE PREVIOUS.MARK.LEVEL THEN
|
||||
REMOVE I.SHIPULDATE FROM M.SHIPULDATE AT P.SHIPULDATE SETTING C.SHIPULDATE
|
||||
S.SHIPULDATE=I.SHIPULDATE
|
||||
END
|
||||
IF C.SHIPULDATE GT NEW.MARK.LEVEL THEN NEW.MARK.LEVEL=C.SHIPULDATE
|
||||
IF C.SHIPULQTY GE PREVIOUS.MARK.LEVEL THEN
|
||||
REMOVE I.SHIPULQTY FROM M.SHIPULQTY AT P.SHIPULQTY SETTING C.SHIPULQTY
|
||||
S.SHIPULQTY=I.SHIPULQTY
|
||||
END
|
||||
IF C.SHIPULQTY GT NEW.MARK.LEVEL THEN NEW.MARK.LEVEL=C.SHIPULQTY
|
||||
IF C.SHIPULPRICE GE PREVIOUS.MARK.LEVEL THEN
|
||||
REMOVE I.SHIPULPRICE FROM M.SHIPULPRICE AT P.SHIPULPRICE SETTING C.SHIPULPRICE
|
||||
S.SHIPULPRICE=I.SHIPULPRICE
|
||||
END
|
||||
IF C.SHIPULPRICE GT NEW.MARK.LEVEL THEN NEW.MARK.LEVEL=C.SHIPULPRICE
|
||||
IF C.INVOICEULIDS GE PREVIOUS.MARK.LEVEL THEN
|
||||
REMOVE I.INVOICEULIDS FROM M.INVOICEULIDS AT P.INVOICEULIDS SETTING C.INVOICEULIDS
|
||||
S.INVOICEULIDS=I.INVOICEULIDS
|
||||
END
|
||||
IF C.INVOICEULIDS GT NEW.MARK.LEVEL THEN NEW.MARK.LEVEL=C.INVOICEULIDS
|
||||
IF C.SHIPULAMOUNT GE PREVIOUS.MARK.LEVEL THEN
|
||||
REMOVE I.SHIPULAMOUNT FROM M.SHIPULAMOUNT AT P.SHIPULAMOUNT SETTING C.SHIPULAMOUNT
|
||||
S.SHIPULAMOUNT=I.SHIPULAMOUNT
|
||||
END
|
||||
IF C.SHIPULAMOUNT GT NEW.MARK.LEVEL THEN NEW.MARK.LEVEL=C.SHIPULAMOUNT
|
||||
*
|
||||
* DO CONVERSIONS IF ANY
|
||||
*
|
||||
IF S.SHIPULDATE NE "" THEN S.SHIPULDATE=OCONV(S.SHIPULDATE,"D2/")
|
||||
IF S.SHIPULQTY NE "" THEN S.SHIPULQTY=OCONV(S.SHIPULQTY,"MD0")
|
||||
IF S.SHIPULPRICE NE "" THEN S.SHIPULPRICE=OCONV(S.SHIPULPRICE,"MD2,$")
|
||||
IF S.INVOICEULIDS NE "" THEN S.INVOICEULIDS=OCONV(S.INVOICEULIDS,"MD0")
|
||||
IF S.SHIPULAMOUNT NE "" THEN S.SHIPULAMOUNT=OCONV(S.SHIPULAMOUNT,"MD2,$")
|
||||
*
|
||||
* DO PRINT LIMITING
|
||||
*
|
||||
IF I.SHIPULDATE GE FromDate AND I.SHIPULDATE LE ThruDate THEN
|
||||
GOTO ENDLIMIT
|
||||
END
|
||||
IF NEW.MARK.LEVEL THEN GOTO DETAIL
|
||||
IF WHICH.VALUE THEN GOTO READRECORD
|
||||
IF PREVIOUS.MARK.LEVEL THEN
|
||||
*
|
||||
GOTO READRECORD
|
||||
*
|
||||
END
|
||||
S.SHIPULDATE=''
|
||||
I.SHIPULDATE=''
|
||||
S.SHIPULQTY=''
|
||||
I.SHIPULQTY=''
|
||||
S.SHIPULPRICE=''
|
||||
I.SHIPULPRICE=''
|
||||
S.INVOICEULIDS=''
|
||||
I.INVOICEULIDS=''
|
||||
S.SHIPULAMOUNT=''
|
||||
I.SHIPULAMOUNT=''
|
||||
*
|
||||
ENDLIMIT:
|
||||
*
|
||||
* ACCUMULATE TOTAL(S)
|
||||
*
|
||||
IF NUM(I.SHIPULQTY) AND I.SHIPULQTY NE "" THEN
|
||||
SHIPULQTY.INVOICEULIDS.TOTAL+=I.SHIPULQTY
|
||||
SHIPULQTY.INVOICEULIDS.COUNT+=1
|
||||
I.SHIPULQTY=''
|
||||
END
|
||||
IF NUM(I.SHIPULAMOUNT) AND I.SHIPULAMOUNT NE "" THEN
|
||||
SHIPULAMOUNT.INVOICEULIDS.TOTAL+=I.SHIPULAMOUNT
|
||||
SHIPULAMOUNT.INVOICEULIDS.COUNT+=1
|
||||
I.SHIPULAMOUNT=''
|
||||
END
|
||||
*
|
||||
* PRINT DETAIL LINE
|
||||
*
|
||||
PRINTLINE = S.ATID:@vm
|
||||
PRINTLINE:= S.CUSTULDIVISION:@vm
|
||||
PRINTLINE:= S.PO:@vm
|
||||
PRINTLINE:= S.PARTULNUM:@vm
|
||||
PRINTLINE:= S.SHIPULDATE:@vm
|
||||
PRINTLINE:= S.SHIPULQTY:@vm
|
||||
PRINTLINE:= S.SHIPULPRICE:@vm
|
||||
PRINTLINE:= S.INVOICEULIDS:@vm
|
||||
PRINTLINE:= S.SHIPULAMOUNT:@vm
|
||||
TableColInfo = '>+922':@vm:'<+3787':@vm:'<+2362':@vm:'<+1642':@vm:'<+1080':@vm:'>+1080':@vm
|
||||
TableColInfo:= '>+1282':@vm:'>+922':@vm:'>+1714'
|
||||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PRINTLINE, '', '', 1, TB_NONE )
|
||||
|
||||
*
|
||||
IF NEW.MARK.LEVEL THEN
|
||||
S.ATID=''
|
||||
S.CUSTULDIVISION=''
|
||||
S.PO=''
|
||||
S.PARTULNUM=''
|
||||
S.SHIPULDATE=''
|
||||
S.SHIPULQTY=''
|
||||
S.SHIPULPRICE=''
|
||||
S.INVOICEULIDS=''
|
||||
S.SHIPULAMOUNT=''
|
||||
PREVIOUS.MARK.LEVEL=NEW.MARK.LEVEL
|
||||
GOTO DETAIL
|
||||
END
|
||||
*
|
||||
GOTO READRECORD
|
||||
*
|
||||
END
|
||||
|
Reference in New Issue
Block a user