home *** CD-ROM | disk | FTP | other *** search
- * ┌─────────────────────────────────────────────────────────────────────┐ *
- * │ CSTLEDGR.PRG: CUSTOMER LEDGER │ *
- * │ Copyright (c) 1989 Tech III, Inc. All rights reserved. │ *
- * │ Tech III of San Pedro, California (213) 547-2191. │ *
- * │ "The bridge connecting people and technology."(tm) │ *
- * └─────────────────────────────────────────────────────────────────────┘ *
- @ 00,00 SAY WINTITLE(PROMPT())
-
- * FILE HANDLING
- SELECT customer
-
- * INITIALIZE VARIABLES
- SET ORDER TO cus_com && Company-name order
- GO TOP
- STORE company TO start_co && Top company name
- GO BOTTOM
- STORE company TO end_co && Bottom company name
-
- STORE .t. TO _box, _wrap, printing
- STORE 79 TO _rmargin
- * Boxes, and word-wrapping ON, Printing is a control variable to allow
- * user to cancel the job.
-
- STORE .f. TO done
- STORE .t. TO firstpage
- STORE 0 TO pageno
- STORE SET('MEMOWIDTH') TO memocols && Save old setting
- SET MEMOWIDTH TO 36
-
- * DEFINITIONS
- SET ESCAPE ON
- ON ESCAPE STORE .f. TO printing
-
- DEFINE POPUP company FROM 9,15 PROMPT FIELD company
- ON SELECTION POPUP company DEACTIVATE POPUP
-
- * USER INPUT: SELECT CUSTOMER RANGE TO PRINT
- STORE 'N' TO okay
- DO WHILE .NOT. okay $ 'YC'
- @ 03,02 SAY 'Start with company: ' GET start_co VALID GETFRST(start_co)
- @ 05,02 SAY 'End with company: ' GET end_co VALID GETLST(end_co) ;
- RANGE start_co,
- @ 07,02 SAY 'Okay? Yes/No/Cancel:' GET okay PICTURE '@M Y,N,C'
- READ
- ENDDO
- IF okay = 'C' && cancel
- RETURN
- ENDIF
-
- IF .NOT. YESNO("System is ready to print.")
- RETURN
- ELSE
- IF .NOT. READY2PR()
- RETURN
- ENDIF
- ENDIF
- SEEK start_co
-
- IF .NOT. printing
- DO standby WITH 'You have canceled this report.'
- ELSE
- * START PRINTING
- ACTIVATE WINDOW pticker
- SET PRINT ON
- SET CONSOLE OFF
-
- PRINTJOB
- SCAN REST WHILE printing .AND. company <= end_co
- DO prn_head
- DO prn_cust
- ENDSCAN
-
- EJECT
- ENDPRINTJOB
- SET PRINTER OFF
- SET CONSOLE ON
- DO standby WITH 'Your print request has been completed.'
- DEACTIVATE WINDOW pticker
- ENDIF
-
- RETURN
-
- * HEADINGS
- PROCEDURE prn_head
- IF pageno<>0
- EJECT
- ENDIF
- STORE 0 TO _plineno, _pcolno
- DEFINE BOX FROM 00 TO 79 HEIGHT 4 AT LINE 3 DOUBLE
- ? PTICKER()
- ? PTICKER()
- ? PTICKER()
- pageno=pageno+1
- STORE LTRIM(STR(pageno,3)) TO pagestr
- ? PTICKER() + DTOC(DATE()) AT 2
- ?? PTICKER() + 'CUSTOMER LEDGER' AT 32
- ?? PTICKER() + 'PAGE: ' + pagestr AT 68
- ? PTICKER() + 'Customer #: '+customer->cust_id+' '+customer->company AT 2
- ? PTICKER()
- ? PTICKER() + 'Date Description Amount Balance' AT 0
- ? PTICKER() + REPLICATE("─",80) AT 0
- * 123456 12345678901234567890134567890134567890
- * 0 9 52
- *
- RETURN
-
-
- * CUSTOMER LEDGER
- PROCEDURE prn_cust
-
- *locate the first invoice for the customer
- SELECT invoice
- SET ORDER TO inv_cus
- thiscust=customer->cust_id
- SEEK thiscust
- moreinv=FOUND()
- minv_date=IIF(moreinv,inv_date,{12/31/99})
-
- *locate the first payment for the customer
- SELECT payments
- SEEK thiscust
- morepmt=FOUND()
- mpmt_date=IIF(morepmt,DATE,{12/31/99})
-
- custbal=0
-
- DO WHILE moreinv .OR. morepmt
- IF (minv_date <= mpmt_date) .OR. EOF("customer")
- SELECT invoice
- ? PTICKER() + DTOC(invoice->inv_date)
- ?? ' '
- ?? 'Invoice:'+STR(invoice->invoice,6,0)
- STORE INVSUB() + INVTAX() TO invamt
- ?? TRANSFORM(invamt,'99,999,999.99') AT 50
- custbal= custbal + invamt
- ?? TRANSFORM((custbal),'99,999,999.99') AT 65
- SELECT invoice
- SKIP
- moreinv = (cust_id=thiscust) .AND. .NOT. EOF()
- minv_date=IIF(moreinv,inv_date,{12/31/99})
- ELSE
- IF morepmt
- SELECT payments
- ? PTICKER() + DTOC(mpmt_date)
- ?? ' '
- ?? 'Payment: '+payments->reference
- ?? TRANSFORM(-1*payments->amount,'99,999,999.99') AT 50
- custbal=custbal-payments->amount
- ?? TRANSFORM((custbal),'99,999,999.99') AT 65
- SKIP
- morepmt = (cust_id=thiscust) .AND. .NOT. EOF()
- mpmt_date=IIF(morepmt,DATE,{12/31/99})
- ENDIF
- ENDIF
- IF PROW() > 52
- DO prn_foot
- ENDIF
- ENDDO
- SELECT customer
- RETURN
-
- * FOOTERS
- PROCEDURE prn_foot
- IF .NOT. PRINTSTATUS()
- RETURN
- ENDIF
- EJECT
- STORE _pageno + 1 TO _pageno
- IF .NOT. done
- DO prn_head
- ENDIF
- RETURN
-
-
- FUNCTION getfrst
- PARAMETER a_coname
- SEEK a_coname
- DO WHILE .NOT. FOUND()
- keyboard LEFT(a_coname,1)
- ACTIVATE POPUP company
- IF EMPTY(PROMPT())
- LOOP
- ENDIF
- STORE PROMPT() TO start_co
- SEEK start_co
- ENDDO
- RETURN .t.
-
- FUNCTION getlst
- PARAMETER a_coname
- SEEK a_coname
- DO WHILE .NOT. FOUND()
- SET FILTER TO company >= start_co
- keyboard LEFT(a_coname,1)
- ACTIVATE POPUP company
- IF EMPTY(PROMPT())
- LOOP
- ENDIF
- STORE PROMPT() TO end_co
- SEEK end_co
- ENDDO
- SET FILTER TO
- RETURN .t.
-
- *
-