home *** CD-ROM | disk | FTP | other *** search
/ DOS Wares / doswares.zip / doswares / DATABASE / DBASE5 / SAMPLES.ZIP / ACCT_REC.FRG < prev    next >
Encoding:
Text File  |  1994-06-24  |  6.2 KB  |  298 lines

  1. * Program............: acct_rec.FRG
  2. * Date...............: 6-22-94
  3. * Versions...........: dBASE 5.0, Report
  4. *
  5. * Notes:
  6. * ------
  7. * Prior to running this procedure with the DO command
  8. * it is necessary use LOCATE because the CONTINUE
  9. * statement is in the main loop.
  10. *
  11. *-- Parameters
  12. PARAMETERS gl_noeject, gl_plain, gl_summary, gc_heading, gc_extra
  13. ** The first three parameters are of type Logical.
  14. ** The fourth parameter is a string.  The fifth is extra.
  15. PRIVATE _peject, _wrap, ll_heading, ll_temp, ll_toprint
  16. ll_heading = .F.
  17. ll_toprint = (SET("PRINTER") = "ON")
  18.  
  19. *-- Test for no records found
  20. IF EOF() .OR. .NOT. FOUND()
  21.    RETURN
  22. ENDIF
  23.  
  24. *-- turn word wrap mode off
  25. _wrap=.F.
  26.  
  27. IF _plength < (_pspacing * 4 + 1) + (_pspacing * 3 + 1) + 2
  28.    SET DEVICE TO SCREEN
  29.    DEFINE WINDOW gw_report FROM 7,17 TO 11,62 DOUBLE
  30.    ACTIVATE WINDOW gw_report
  31.    @ 0,1 SAY "Increase the page length for this report."
  32.    @ 2,1 SAY "Press any key ..."
  33.    x=INKEY(0)
  34.    DEACTIVATE WINDOW gw_report
  35.    RELEASE WINDOW gw_report
  36.    RETURN
  37. ENDIF
  38.  
  39. _plineno=0          && set lines to zero
  40. *-- NOEJECT parameter
  41. IF gl_noeject
  42.    IF _peject="BEFORE"
  43.       _peject="NONE"
  44.    ENDIF
  45.    IF _peject="BOTH"
  46.       _peject="AFTER"
  47.    ENDIF
  48. ENDIF
  49.  
  50. *-- Set-up environment
  51. ON ESCAPE DO Prnabort
  52. IF SET("TALK")="ON"
  53.    SET TALK OFF
  54.    gc_talk="ON"
  55. ELSE
  56.    gc_talk="OFF"
  57. ENDIF
  58. gc_space=SET("SPACE")
  59. SET SPACE OFF
  60. gc_time=TIME()      && system time for predefined field
  61. gd_date=DATE()      && system date  "    "    "     "
  62. gl_fandl=.F.        && first and last page flag
  63. gl_prntflg=.T.      && Continue printing flag
  64. gl_widow=.T.        && flag for checking widow bands
  65. gn_length=LEN(gc_heading)  && store length of the HEADING
  66. gn_level=2          && current band being processed
  67. gn_page=_pageno     && grab current page number
  68. gn_pspace=_pspacing && get current print spacing
  69.  
  70.  
  71. *-- Set up procedure for page break
  72. gn_atline=_plength - (_pspacing * 3 + 1)
  73. ON PAGE AT LINE gn_atline EJECT PAGE
  74.  
  75. *-- Print Report
  76.  
  77. PRINTJOB
  78.  
  79. *-- Initialize summary variables.
  80. r_msum1=0
  81. r_msum2=0
  82.  
  83. IF gl_plain
  84.    ON PAGE AT LINE gn_atline DO Pgplain
  85. ELSE
  86.    ON PAGE AT LINE gn_atline DO Pgfoot
  87. ENDIF
  88.  
  89. DO Pghead
  90.  
  91. gl_fandl=.T.        && first physical page started
  92.  
  93. DO Rintro
  94.  
  95. *-- File Loop
  96. DO WHILE FOUND() .AND. .NOT. EOF() .AND. gl_prntflg
  97.    gn_level=0
  98.    *-- Detail lines
  99.    IF gl_summary
  100.       DO Upd_Vars
  101.    ELSE
  102.       DO __Detail
  103.    ENDIF
  104.    gl_widow=.T.         && enable widow checking
  105.    CONTINUE
  106. ENDDO
  107.  
  108. IF gl_prntflg
  109.    DO Rsumm
  110.    IF _plineno <= gn_atline
  111.       EJECT PAGE
  112.    ENDIF
  113. ELSE
  114.    DO Rsumm
  115.    DO Reset
  116.    RETURN
  117. ENDIF
  118.  
  119. ON PAGE
  120.  
  121. ENDPRINTJOB
  122.  
  123. DO Reset
  124. RETURN
  125. * EOP: acct_rec.FRG
  126.  
  127. *-- Update summary fields and/or calculated fields.
  128. PROCEDURE Upd_Vars
  129. *-- Sum
  130. r_msum1=r_msum1+OLDBALANCE
  131. *-- Sum
  132. r_msum2=r_msum2+AMT_OF_BIL
  133. RETURN
  134. * EOP: Upd_Vars
  135.  
  136. *-- Set flag to get out of DO WHILE loop when escape is pressed.
  137. PROCEDURE Prnabort
  138. gl_prntflg=.F.
  139. RETURN
  140. * EOP: Prnabort
  141.  
  142. PROCEDURE Pghead
  143. PRIVATE ll_heading, ln_width
  144. ll_heading = .T.
  145. ln_width = _rmargin - _lmargin
  146. ?
  147. *-- Print HEADING parameter - if it doesn't fit on line one
  148. *-- Value added to gn_length is the last column on line one times two
  149. IF .NOT. gl_plain .AND. gn_length + 160 > ln_width
  150.    ?? gc_heading FUNCTION "I;V"+LTRIM(STR(ln_width))
  151.    ?
  152.    ll_heading = .F.
  153. ENDIF
  154.  
  155. ?? IIF(gl_plain,'',gd_date) AT 0,;
  156.  IIF(gl_plain,'' , "PAGE  " ) AT 70,;
  157.  IIF(gl_plain,'',_pageno) PICTURE "999" 
  158.  
  159. *-- Print HEADING parameter - if it fits on line one
  160. IF .NOT. gl_plain .AND. gn_length > 0 .AND. ll_heading
  161.    ?? " "
  162.    ?? gc_heading FUNCTION "I;V"+LTRIM(STR(ln_width-(_pcolno*2)))
  163. ENDIF
  164. ?
  165. ?
  166. ?
  167. RETURN
  168. * EOP: Pghead
  169.  
  170. PROCEDURE Rintro
  171. ?
  172. DEFINE BOX FROM 24 TO 57 HEIGHT 4 DOUBLE
  173. ?
  174. ?? "A-T FURNITURE INDUSTRIES" STYLE "B" AT 29
  175. ?
  176. ?? "ACCOUNTS RECEIVABLE REPORT" STYLE "B" AT 28
  177. ?
  178. ?
  179. ?
  180. RETURN
  181. * EOP: Rintro
  182.  
  183. PROCEDURE __Detail
  184. IF 12 * gn_pspace < gn_atline - (_pspacing * 4 + 1)
  185.    IF gl_widow .AND. _plineno+12 * gn_pspace > gn_atline + 1
  186.       EJECT PAGE
  187.    ENDIF
  188. ENDIF
  189. DO Upd_Vars
  190. ?? ;
  191. "──────────────────────────────────────────────────────────────────────";
  192. + "─────────";
  193. AT 0
  194. ?
  195. ?? "INVOICE NUMBER: " STYLE "B" AT 0,;
  196.  Invoice_no FUNCTION "T" STYLE "B" ,;
  197.  "DATE: " STYLE "B" AT 65,;
  198.  Dat_of_bil STYLE "B" 
  199. ?
  200. ?? "CUSTOMER ID: " AT 0,;
  201.  Cust_id FUNCTION "T" 
  202. ?
  203. ?? "PREVIOUS INVOICE #: " AT 6,;
  204.  Invoic_old FUNCTION "T" ,;
  205.  "SENT: " AT 40,;
  206.  Dat_lstbil 
  207. ?
  208. ?? "PREVIOUS INVOICE: $ " AT 6,;
  209.  Amt_lstbil PICTURE "999,999.99" 
  210. ?
  211. ?? "AMOUNT PAID:        " AT 6,;
  212.  Amt_lst_pd PICTURE "999,999.99" 
  213. ?
  214. ?? "----------" AT 26
  215. ?
  216. ?? "PREVIOUS BALANCE: $ " AT 6,;
  217.  Oldbalance PICTURE "999,999.99" 
  218. ?
  219. ?? "CURRENT ORDERS:     " AT 6,;
  220.  Amt_of_cur PICTURE "999,999.99" ,;
  221.  "COMMENTS: " AT 40,;
  222.  Comments FUNCTION "T" 
  223. ?
  224. ?? "==========" AT 26
  225. ?
  226. ?? "CURRENT INVOICE:  $ " AT 6,;
  227.  Amt_of_bil PICTURE "999,999.99" ,;
  228.  "NOTES: " AT 40,;
  229.  Notes FUNCTION "T" 
  230. ?
  231. ?
  232. RETURN
  233. * EOP: __Detail
  234.  
  235. PROCEDURE Rsumm
  236. ?
  237. ?? ;
  238. "══════════════════════════════════════════════════════════════════════";
  239. + "═════════";
  240. AT 0
  241. ?
  242. ?? "TOTAL AMOUNT OF PREVIOUS BALANCES:  $ " AT 0,;
  243.  r_msum1 PICTURE "999,9999.99" 
  244. ?
  245. ?? "TOTAL AMOUNT OF CURRENT INVOICES:   $ " AT 0,;
  246.  r_msum2 PICTURE "999,9999.99" 
  247. ?
  248. ?? ;
  249. "══════════════════════════════════════════════════════════════════════";
  250. + "═════════";
  251. AT 0
  252. gl_fandl=.F.        && last page finished
  253. ?
  254. RETURN
  255. * EOP: Rsumm
  256.  
  257. PROCEDURE Pgfoot
  258. PRIVATE _box, _pspacing
  259. gl_widow=.F.         && disable widow checking
  260. _pspacing=1
  261. ?
  262. IF .NOT. gl_plain
  263.    _pspacing=gn_pspace
  264.    ?
  265.    ?? "PREPARED BY FINANCIAL DEPARTMENT" AT 26
  266.    ?
  267. ENDIF
  268. EJECT PAGE
  269. *-- is the page number greater than the ending page
  270. IF _pageno > _pepage
  271.    GOTO BOTTOM
  272.    SKIP
  273.    gn_level=0
  274. ENDIF
  275. IF .NOT. gl_plain .AND. gl_fandl
  276.    _pspacing=gn_pspace
  277.    DO Pghead
  278. ENDIF
  279. RETURN
  280. * EOP: Pgfoot
  281.  
  282. *-- Process page break when PLAIN option is used.
  283. PROCEDURE Pgplain
  284. PRIVATE _box
  285. EJECT PAGE
  286. RETURN
  287. * EOP: Pgplain
  288.  
  289. *-- Reset dBASE environment prior to calling report
  290. PROCEDURE Reset
  291. SET SPACE &gc_space.
  292. SET TALK &gc_talk.
  293. ON ESCAPE
  294. ON PAGE
  295. RETURN
  296. * EOP: Reset
  297.  
  298.