home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 6 / 06.iso / a / a610 / 6.ddi / DEMO / FGL / RD_SALES.4GL < prev    next >
Encoding:
Text File  |  1989-12-08  |  2.0 KB  |  73 lines

  1. DATABASE leads
  2. GLOBALS "globals.4gl"
  3.  
  4. FUNCTION rd_sales()
  5. {
  6. The rd_sales report driver extracts data for sales occurring
  7. within a six month period and computes the value of sales for
  8. each salesperson for each month.  It then feeds the values to
  9. the r_sales report.
  10. }
  11. DEFINE   msales                     MONEY,
  12.          sdate, edate               DATE,
  13.          temp1, smonth, emp, mnth   SMALLINT,
  14.          dum1, dum2                 CHAR(15)
  15.  
  16. CLEAR SCREEN
  17. PROMPT "Enter end date for report as mm/dd/yy (or just RETURN for today): "
  18.    for edate
  19. DISPLAY "Running report, please wait." AT 15,1
  20.  
  21. IF edate IS NULL THEN LET edate = TODAY END IF
  22. LET temp1   = MONTH(edate) - 5
  23. IF (temp1 <= 0) THEN
  24.    LET sdate = MDY(12 + temp1, "1", YEAR(edate) - 1)
  25. ELSE
  26.    IF (temp1 = 7) THEN {correct for wrong year: report run in Jan, end in Dec}
  27.       LET sdate = MDY(temp1, "1", YEAR(edate)-1)
  28.    ELSE
  29.       LET sdate = MDY(temp1, "1", YEAR(edate))
  30.    END IF
  31. END IF
  32. LET smonth = MONTH(sdate)
  33.  
  34. SELECT      sale.quantity * product.price * (1 - sale.discount/100) tot,
  35.             MONTH(contact.cdate) mon,
  36.             contact.empnum num
  37.    FROM     sale,
  38.             contact,
  39.             product
  40.    WHERE    sale.cnum = contact.cnum
  41.             AND sale.pcode = product.pcode
  42.             AND contact.cdate BETWEEN sdate AND edate
  43.    INTO TEMP hold
  44.  
  45. DECLARE c_sale CURSOR FOR
  46.    SELECT      mon,
  47.                num,
  48.                SUM (tot),
  49.                lname,
  50.                fname
  51.       INTO     mnth,
  52.                emp,
  53.                msales,
  54.                dum1,
  55.                dum2
  56.       FROM     hold,
  57.                sperson
  58.       WHERE    empnum = num
  59.       GROUP BY lname,
  60.                fname,
  61.                num,
  62.                mon
  63.       ORDER BY lname,
  64.                fname
  65.  
  66. START REPORT r_sales
  67. FOREACH c_sale
  68.    OUTPUT TO REPORT r_sales(sdate, edate, mnth, msales, emp)
  69. END FOREACH
  70. FINISH REPORT r_sales
  71. DROP TABLE hold
  72. END FUNCTION
  73.