home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0020 - 0029 / ibm0020-0029 / ibm0028.tar / ibm0028 / SBTAR4.ZIP / AROREC.PRG < prev    next >
Encoding:
Text File  |  1990-08-08  |  11.0 KB  |  324 lines

  1. ********************** ' MultiNet Source Code ' ***********************
  2. ** '                       SBT Corporation                         ' **
  3. ** '         One Harbor Drive, Sausalito, California 94965         ' **
  4. ** '                   Telephone (415) 331-9900                    ' **
  5. ***********************************************************************
  6. ** '   (c) Copyright 1984, Revisions 1985 - 1990 SBT Corporation   ' **
  7. ** '            All Rights Reserved by SBT Corporation             ' **
  8. ** '                                                               ' **
  9. ***********************************************************************
  10. ** ' 08/08/90 = Last Update  **   AROREC.PRG   **  Version 6.35.01 ' **
  11. ***********************************************************************
  12. * ' Open Receivables Aging - called by ARREPT
  13. *
  14. * ' Passed variables: mdisprt   = 'P' to print
  15. * '                               'D' to display
  16. * '                   mtype     = 'D' to age from due date
  17. * '                               'I' to age from invoice date
  18. * '                   morder    = 'C' to order report by customer
  19. * '                               'S' to order report by salesperson
  20. * '                   mcustno   = customer number or portion to match
  21. *
  22. USE &m0sysdr.sysdata
  23. LOCATE FOR UPPER(sysid) = m0pgmid + SUBSTR(m0comp,1,2)
  24. DO p0rlockd
  25. IF lockedr
  26.   REPLACE str7 WITH STR(mday1,3,0) + STR(mday2,3,0) + ;
  27.   STR(mday3,3,0) + STR(mday4,3,0) + SUBSTR(str7,13,18)
  28. ENDIF
  29. USE
  30. CLOSE DATABASES
  31. STORE TRIM(mcustno) TO mcustno
  32. STORE LEN(mcustno) TO mlc
  33. STORE 0.00 TO mtotal, mcurr, mper1, mper2, mper3, mper4, ;
  34. ttotal, tcurr, tper1, tper2, tper3, tper4
  35. STORE .t. TO mcont
  36. STORE 'Open Receivables Aging' TO mhead1
  37. @ 23,0
  38. @ 23,4 SAY '*****  Indexing File  *****'
  39. IF morder = 'S'
  40.   STORE mhead1 + ' by Salesperson' TO mhead1
  41. ELSE
  42.   STORE mhead1 + ' by Customer' TO mhead1
  43. ENDIF
  44. IF mtype = 'D'
  45.   STORE 'Aged from Due Date' TO mhead2
  46. ELSE
  47.   STORE 'Aged from Invoice Date' TO mhead2
  48. ENDIF
  49. IF mlc > 0
  50.   STORE mhead2 + ', for Customer: ' + mcustno TO mhead2
  51. ENDIF
  52. @ 23,0
  53. @ 23,4 SAY '*****  Locating Records in File  *****'
  54. SELECT b
  55. USE &m0custf INDEX &m0custf..ndx
  56. SELECT a
  57. USE &m0armastf
  58. SET FILTER TO a->balance <> 0.00 .AND. SUBSTR(a->custno,1,mlc) = mcustno ;
  59. .AND. a->arstat <> 'V' .AND. .NOT. DELETED()
  60. GO TOP
  61. IF EOF()
  62.   CLOSE DATABASES
  63.   STORE ' ' TO mans
  64.   @ 23,0
  65.   @ 23,4 SAY 'No matching records found.  Report cancelled. ' + ;
  66.   'Press any key...' GET mans
  67.   READ
  68.   RETURN
  69. ENDIF
  70. @ 23,0
  71. @ 23,4 SAY '*****  Indexing File  *****'
  72. IF morder = 'S'
  73.   INDEX ON salesmn + custno + STR(CTOD(invdte) - CTOD('01/01/01'),8,0) ;
  74.   TO &m0dbfdr.&m0tmpf1..ndx
  75. ELSE
  76.   INDEX ON custno + STR(CTOD(invdte) - CTOD('01/01/01'),8,0) ;
  77.   TO &m0dbfdr.&m0tmpf1..ndx
  78. ENDIF
  79. GO TOP
  80. STORE SPACE(6) TO mcust
  81. IF mdisprt = 'P'
  82.   @ 23,0
  83.   @ 23,4 SAY '*****  Printing Open Receivables Aging  *****'
  84.   STORE .t. TO m0prnesc
  85.   DO p0setprn WITH 'ON', 'PRINT', 'OFF', 0
  86.   STORE 1 TO mpage
  87.   @ 3,1 SAY 'Page ' + LTRIM(STR(mpage,4,0))
  88.   @ 3,40 - INT(LEN(m0cname)/2) SAY m0cname
  89.   @ 4,1 SAY 'Date ' + DTOC(m0date)
  90.   @ 4,40 - INT(LEN(mhead1)/2) SAY mhead1
  91.   @ 5,40 - INT(LEN(mhead2)/2) SAY mhead2
  92.   STORE 54 TO maxlines
  93.   STORE 7 TO mline
  94. ELSE
  95.   CLEAR
  96.   @ 1,40 - INT(LEN(mhead1)/2) SAY mhead1
  97.   @ 2,40 - INT(LEN(mhead2)/2) SAY mhead2
  98.   STORE 18 TO maxlines
  99.   STORE 4 TO mline
  100. ENDIF
  101. @ mline,1 SAY 'Cust # Company                              Contact      ' + ;
  102. '          Phone'
  103. @ mline + 1,1 SAY 'Terms '
  104. @ mline + 2,1 SAY 'Date     Inv #     Amount Currnt  > ' + ;
  105. STR(mday1,3,0) + '  > ' + STR(mday2,3,0) + '  > ' + STR(mday3,3,0) + ;
  106. '  > ' + STR(mday4,3,0) + '    Open Bal Pymnt'
  107. @ mline + 3,1 SAY '===== ======== ========== ====== ====== ====== ' + ;
  108. '====== ====== =========== ====='
  109. STORE mline + 4 TO mline
  110. STORE 'ar' TO msalesmn
  111. DO WHILE .NOT. m0stpprn .AND. .NOT. EOF()
  112.   IF morder = 'S' .AND. a->salesmn <> msalesmn
  113. *\ AROREC01 03 08/08/90 JG Don't print this line if it will be "widowed".
  114.     IF mline + 3 < maxlines
  115.       @ mline,1 SAY 'Open Receivables for Salesperson: ' + a->salesmn
  116.     ENDIF
  117.     STORE a->salesmn TO msalesmn
  118.     STORE mline + 2 TO mline
  119.   ENDIF
  120.   STORE a->custno TO mcust
  121.   SELECT b
  122.   SEEK mcust
  123.   SELECT a
  124.   STORE 0.00 TO mtotal, mcurr, mper1, mper2, mper3, mper4, mcount
  125.   IF mdisprt = 'P' .AND. morder <> 'S'
  126.     STORE recno() TO mrecno
  127.     STORE 1 TO mcount
  128.     DO WHILE a->custno = mcust .AND. .NOT. EOF()
  129.       SKIP 1
  130.       mcount = mcount + 1
  131.     ENDDO
  132.     GOTO mrecno
  133.   ENDIF
  134.   IF (mline + mcount + 1) < maxlines .OR. mline < 35
  135.     @ mline,1 SAY mcust
  136.     @ mline,8 SAY b->company
  137.     @ mline,45 SAY b->contact
  138.     @ mline,68 SAY SUBSTR(b->phone,1,12)
  139.     @ mline + 1,1 SAY b->pterms
  140.   ENDIF
  141.   STORE mline + 3 TO mline
  142.   DO WHILE .NOT. m0stpprn
  143.     IF (mline > maxlines .OR. ((mline + mcount) > maxlines .AND. ;
  144.       morder <> 'S' .AND. mline > 35)) .AND. .NOT. EOF()
  145.       IF mdisprt = 'P'
  146.         STORE mpage + 1 TO mpage
  147.         @ 3,1 SAY 'Page ' + LTRIM(STR(mpage,4,0))
  148.         @ 3,40 - INT(LEN(m0cname)/2) SAY m0cname
  149.         @ 4,1 SAY 'Date ' + DTOC(m0date)
  150.         @ 4,40 - INT(LEN(mhead1)/2) SAY mhead1
  151.         @ 5,40 - INT(LEN(mhead2)/2) SAY mhead2
  152.         STORE 7 TO mline
  153.       ELSE
  154.         STORE .t. TO mcont
  155.         SKIP -1
  156.         DO p0reptqu
  157.         IF .NOT. mcont
  158.           EXIT
  159.         ENDIF
  160.         CLEAR
  161.         @ 1,40 - INT(LEN(mhead1)/2) SAY mhead1
  162.         @ 2,40 - INT(LEN(mhead2)/2) SAY mhead2
  163.         STORE 4 TO mline
  164.       ENDIF
  165.       @ mline,1 SAY 'Cust # Company                              ' + ;
  166.       'Contact                Phone'
  167.       @ mline + 1,1 SAY 'Terms '
  168.       @ mline + 2,1 SAY 'Date     Inv #     Amount Currnt  > ' + ;
  169.       STR(mday1,3,0) + '  > ' + STR(mday2,3,0) + '  > ' + STR(mday3,3,0) + ;
  170.       '  > ' + STR(mday4,3,0) + '    Open Bal Pymnt'
  171.       @ mline + 3,1 SAY '===== ======== ========== ====== ====== ====== ' + ;
  172.       '====== ====== =========== ====='
  173.       STORE mline + 4 TO mline
  174.       IF morder = 'S'
  175.         @ mline,1 SAY 'Open Receivables for Salesperson: ' + msalesmn
  176.         STORE mline + 2 TO mline
  177.       ENDIF
  178.       IF mdisprt = 'P' .AND. mline < 15
  179.         @ mline,1 SAY mcust
  180.         @ mline,8 SAY b->company
  181.         @ mline,45 SAY b->contact
  182.         @ mline,68 SAY SUBSTR(b->phone,1,12)
  183.         @ mline + 1,1 SAY b->pterms
  184.         STORE mline + 3 TO mline
  185.       ENDIF
  186.     ENDIF
  187.     IF mcust = a->custno .AND. mline <= maxlines .AND. .NOT. EOF()
  188.       STORE m0date - CTOD(a->invdte) TO mdays
  189.       IF mtype = 'D'
  190.         STORE mdays - a->pnet TO mdays
  191.       ENDIF
  192.       @ mline,1 SAY SUBSTR(a->invdte,1,5)
  193.       @ mline,7 SAY artype + LTRIM(a->invno)
  194.       @ mline,16 SAY a->invamt PICTURE '9999999.99'
  195.       DO CASE
  196.         CASE mdays <= mday1
  197.           STORE balance + mcurr TO mcurr
  198.           @ mline,26 SAY INT(a->balance) PICTURE '9999999'
  199.         CASE mdays <= mday2
  200.           STORE balance + mper1 TO mper1
  201.           @ mline,33 SAY INT(a->balance) PICTURE '9999999'
  202.         CASE mdays <= mday3
  203.           STORE balance + mper2 TO mper2
  204.           @ mline,40 SAY INT(a->balance) PICTURE '9999999'
  205.         CASE mdays <= mday4
  206.           STORE balance + mper3 TO mper3
  207.           @ mline,47 SAY INT(a->balance) PICTURE '9999999'
  208.         CASE mdays > mday4
  209.           STORE balance + mper4 TO mper4
  210.           @ mline,54 SAY INT(a->balance) PICTURE '9999999'
  211.       ENDCASE
  212.       STORE a->balance + mtotal TO mtotal
  213.       @ mline,63 SAY a->balance PICTURE '9999999.99'
  214.       IF a->dtepaid <> '        ' .AND. a->dtepaid <> '  /  /  '
  215.         @ mline,74 SAY SUBSTR(a->dtepaid,1,5)
  216.       ENDIF
  217.       STORE mline + 1 TO mline
  218.       STORE 0 TO mcount
  219.       SKIP
  220.     ELSE
  221.       @ mline,1 SAY 'Totals:'
  222.       IF mcurr <> 0
  223.         @ mline,26 SAY INT(mcurr) PICTURE '9999999'
  224.       ENDIF
  225.       IF mper1 <> 0
  226.         @ mline,33 SAY INT(mper1) PICTURE '9999999'
  227.       ENDIF
  228.       IF mper2 <> 0
  229.         @ mline,40 SAY INT(mper2) PICTURE '9999999'
  230.       ENDIF
  231.       IF mper3 <> 0
  232.         @ mline,47 SAY INT(mper3) PICTURE '9999999'
  233.       ENDIF
  234.       IF mper4 <> 0
  235.         @ mline,54 SAY INT(mper4) PICTURE '9999999'
  236.       ENDIF
  237.       @ mline,63 SAY mtotal PICTURE '9999999.99'
  238.       @ mline,74 SAY '<===='
  239.       STORE mline + 2 TO mline
  240.       STORE mtotal + ttotal TO ttotal
  241.       STORE mcurr + tcurr TO tcurr
  242.       STORE mper1 + tper1 TO tper1
  243.       STORE mper2 + tper2 TO tper2
  244.       STORE mper3 + tper3 TO tper3
  245.       STORE mper4 + tper4 TO tper4
  246.       EXIT
  247.     ENDIF
  248.   ENDDO && WHILE .t.
  249.   IF .NOT. mcont
  250.     EXIT
  251.   ENDIF
  252. ENDDO && WHILE .NOT. EOF()
  253. IF mdisprt = 'P' .AND. .NOT. m0stpprn
  254.   STORE mpage + 1 TO mpage
  255.   @ 3,1 SAY 'Page ' + LTRIM(STR(mpage,4,0))
  256.   @ 3,40 - INT(LEN(m0cname)/2) SAY m0cname
  257.   @ 4,1 SAY 'Date ' + DTOC(m0date)
  258.   @ 4,40 - INT(LEN(mhead1)/2) SAY mhead1
  259.   @ 5,40 - INT(LEN(mhead2)/2) SAY mhead2
  260.   @ 10,22 SAY 'Open Receivable Totals for ' + DTOC(m0date)
  261.   @ 13,6 SAY 'Current       > ' + STR(mday1,3,0) + '        > ' + ;
  262.   STR(mday2,3,0) + '        > ' + STR(mday3,3,0) + '        > ' + ;
  263.   STR(mday4,3,0) + '     Total Amt'
  264.   @ 14,1 SAY '============  ===========  ===========  ===========  ' + ;
  265.   '===========  ==========='
  266.   @ 16,1 SAY tcurr PICTURE '999999999.99'
  267.   @ 16,14 SAY tper1 PICTURE '999999999.99'
  268.   @ 16,27 SAY tper2 PICTURE '999999999.99'
  269.   @ 16,40 SAY tper3 PICTURE '999999999.99'
  270.   @ 16,53 SAY tper4 PICTURE '999999999.99'
  271.   @ 16,66 SAY ttotal PICTURE '999999999.99'
  272.   @ 19,34 SAY 'Total Amount Due Over ' + STR(mday1,3,0) + ' Days:'
  273.   @ 19,67 SAY tper1 + tper2 + tper3 + tper4 PICTURE '99999999.99'
  274.   STORE 22 TO mline
  275.   IF morder = 'S'
  276.     SELECT a
  277.     GO TOP
  278.     @ mline,1 SAY 'Summary of Open Receivables by Salesperson:'
  279.     @ mline + 2,1 SAY 'Salesperson   Total $ Due'
  280.     @ mline + 3,1 SAY '============  ==========='
  281.     STORE mline + 4 TO mline
  282.     DO WHILE .NOT. EOF()
  283.       STORE a->salesmn TO msalesmn
  284.       STORE 0.00 TO mtotal
  285.       DO WHILE a->salesmn = msalesmn .AND. .NOT. EOF()
  286.         STORE mtotal + a->balance TO mtotal
  287.         SKIP
  288.       ENDDO
  289.       @ mline,5 SAY msalesmn
  290.       @ mline,14 SAY mtotal PICTURE '999999999.99'
  291.       STORE mline + 1 TO mline
  292.       IF mline > 54 .AND. .NOT. EOF()
  293.         STORE mpage + 1 TO mpage
  294.         @ 3,1 SAY 'Page ' + LTRIM(STR(mpage,4,0))
  295.         @ 3,40 - INT(LEN(m0cname)/2) SAY m0cname
  296.         @ 4,1 SAY 'Date ' + DTOC(m0date)
  297.         @ 4,28 SAY 'Open Receivables Report'
  298.         @ 8,1 SAY 'Summary of Open Receivables by Salesperson:'
  299.         @ 10,1 SAY 'Salesperson   Total $ Due'
  300.         @ 11,1 SAY '============  ==========='
  301.         STORE 12 TO mline
  302.       ENDIF
  303.     ENDDO && WHILE .NOT. EOF()
  304.   ENDIF && morder = 'S'
  305. ENDIF && mdisprt = 'P'
  306. IF mdisprt = 'D'
  307.   IF mline <= maxlines .OR. EOF()
  308.     STORE .t. TO mcont
  309.     DO p0reptqu
  310.   ENDIF
  311. ENDIF && mdisprt = 'D'
  312. IF mdisprt = 'P'
  313.   EJECT
  314.   DO p0setprn WITH 'ON', 'SCREEN', 'OFF', 0
  315. ENDIF
  316. RETURN
  317. *
  318. * ' $Revision:   1.16  $
  319. * ' $Date:   08 Aug 1990 12:30:08  $
  320. *********************
  321. ** ' AROREC.PRG  ' **
  322. ** ' 323 Lines   ' **
  323. *********************
  324.