home *** CD-ROM | disk | FTP | other *** search
- DATABASE leads
- GLOBALS "globals.4gl"
-
- FUNCTION rd_sales()
- {
- The rd_sales report driver extracts data for sales occurring
- within a six month period and computes the value of sales for
- each salesperson for each month. It then feeds the values to
- the r_sales report.
- }
- DEFINE msales MONEY,
- sdate, edate DATE,
- temp1, smonth, emp, mnth SMALLINT,
- dum1, dum2 CHAR(15)
-
- CLEAR SCREEN
- PROMPT "Enter end date for report as mm/dd/yy (or just RETURN for today): "
- for edate
- DISPLAY "Running report, please wait." AT 15,1
-
- IF edate IS NULL THEN LET edate = TODAY END IF
- LET temp1 = MONTH(edate) - 5
- IF (temp1 <= 0) THEN
- LET sdate = MDY(12 + temp1, "1", YEAR(edate) - 1)
- ELSE
- IF (temp1 = 7) THEN {correct for wrong year: report run in Jan, end in Dec}
- LET sdate = MDY(temp1, "1", YEAR(edate)-1)
- ELSE
- LET sdate = MDY(temp1, "1", YEAR(edate))
- END IF
- END IF
- LET smonth = MONTH(sdate)
-
- SELECT sale.quantity * product.price * (1 - sale.discount/100) tot,
- MONTH(contact.cdate) mon,
- contact.empnum num
- FROM sale,
- contact,
- product
- WHERE sale.cnum = contact.cnum
- AND sale.pcode = product.pcode
- AND contact.cdate BETWEEN sdate AND edate
- INTO TEMP hold
-
- DECLARE c_sale CURSOR FOR
- SELECT mon,
- num,
- SUM (tot),
- lname,
- fname
- INTO mnth,
- emp,
- msales,
- dum1,
- dum2
- FROM hold,
- sperson
- WHERE empnum = num
- GROUP BY lname,
- fname,
- num,
- mon
- ORDER BY lname,
- fname
-
- START REPORT r_sales
- FOREACH c_sale
- OUTPUT TO REPORT r_sales(sdate, edate, mnth, msales, emp)
- END FOREACH
- FINISH REPORT r_sales
- DROP TABLE hold
- END FUNCTION
-