home *** CD-ROM | disk | FTP | other *** search
- ********************************************************************************
- *-- Name.......: FACTUUR2.PRG
- *-- Date.......: 080692
- *-- Version....: dBASE IV, Format 1.0
- *-- Notes......: Format files use "" as delimiters!
- *-- Written by.: Borland International Inc.
- ********************************************************************************
-
- CLEAR WIND
- CLOSE DATABASE
- SAVE SCREEN TO Invoice2
- CLEAR
-
- DEFINE WINDOW Pause FROM 15,00 TO 19,79 DOUBLE
- DEFINE WINDOW Invo_hlp FROM 3,00 TO 21,79 DOUBLE
- ON ERROR DO Pause WITH "Regelnr. in programma "+Program()+": "+LTRIM(STR(LINE()))
-
- IF EOF()
- SKIP -1
- ENDIF
-
- IF SET("TALK")="ON"
- SET TALK OFF
- lc_talk = "ON"
- ELSE
- lc_talk = "OFF"
- ENDIF
- lc_escape = SET("ESCAPE")
- lc_cursor = SET("CURSOR")
- SET CURSOR OFF
-
- *-- Imported code from D:\US\GENOBJPL\NOVA\EXE\SAMPLES\INVOICE2.QBE
- * DBASE IV .QBE FILE
- SELECT 1
- USE TRANSACT.DBF
- USE AFNEMERS.DBF IN 2 ORDER KLANT_NR
- SET RELATION TO TRIM(KLANT_NR) INTO B
- SET FIELDS TO A->KLANT_NR,A->BESTEL_NR,A->DAT_TRANS,A->FACTUUR,A->;
- TOTAAL_REK,B->KLANTNAAM,B->ACHTERNAAM,B->VOORNAAM,B->ADRES,B->WOONPLAATS,B->;
- PROVINCIE,B->POSTCODE,B->TELEFOON,B->OVERZICHT
- *-------------------------------------------------------------------------------
- GO TOP
-
-
- lc_status = SET("STATUS")
- *-- SET STATUS was OFF when you went into the Forms Designer.
- IF lc_status = "ON"
- SET STATUS OFF
- ENDIF
-
- gc_messg = "F9:Regelopties| PgDn:Vlgnd | PgUp:Vorig | Ctrl-PgDn:Einde | Ctrl-PgUp:Begin"
-
- *-- Window for memo field Clien_hist.
- DEFINE WINDOW wndow1 FROM 7,26 TO 20,78
-
- DEFINE WINDOW Table FROM 9,1 TO 20,78 DOUBLE
-
- ON KEY LABEL F1 DO Invo_hlp
- ON KEY LABEL F9 KEYBOARD CHR(23)+"L" && Send Ctrl-W + L for lineitem
- ON KEY LABEL F10 KEYBOARD CHR(23)+"M" && SEND CTRL-W + M FOR MENU
-
- DO Defnmenu
-
- gc_mdx = MDX(1)
- gc_alias = ALIAS()
-
- *-- Set up lineitem (BROWSE) workarea-----------------------------------------
-
- gn_sele = IIF(SELE()=10, SELE()-1, SELE())
- SELE (gn_sele)
- USE MAGAZIJN ORDER TAG BESTEL_NR
- SET FIELDS TO BESTEL_NR, ONDRDL_NR, ARTIKEL, OMSCHRIJV, AANTAL, STUKPRIJS, ;
- EXTENDED=AANTAL*STUKPRIJS
- SET CARRY TO MAGAZIJN->BESTEL_NR
-
- *------------------------------------------------------------------------------
-
- SELE &gc_alias.
- gn_gorec = 0 && Var for goto record option
- gc_search = SPACE(200) && Var for forward and backward search
- gc_seek = SPACE( LEN( BESTEL_NR)) && Var for seeking records
- gl_newrec = .f. && Var for appended record
- gl_chgrec = .t. && Var for testing if record position changed
- gl_extloop = .f.
- gl_rollbck = .f.
- @ 23,0
- @ 23,CENTER(gc_messg,80) SAY gc_messg
-
- DO WHILE .NOT. gl_extloop
- gn_recno = RECNO()
- gl_lineitm = .T.
- BEGIN TRANSACTION
-
- DO WHILE gl_lineitm
- IF gl_chgrec
- *-- Paint Say's & Get's on screen
- DO Show_get
- ENDIF
-
- *-- Show matching Browse Table data
- DO Showbrow
- *-- Back to suddo edit
-
- *-- Edit Get's
- DO Edit_get
-
- SET CURSOR ON
- READ
- SET CURSOR OFF
-
- gn_inkey = INKEY()
- gn_readkey = READKEY()
- gc_readvar = VARREAD()
- gl_lineitm = .F.
-
- ACTIVATE SCREEN
- DO CASE
- CASE gn_inkey = 76
- *-- KEYBOARDed IN "L"
- DO Lineitem
- gl_lineitm = .T.
- CASE gn_inkey = 77
- *-- KEYBOARDed IN "M"
- ACTIVATE MENU Editmenu
- CASE gn_readkey = 6 .OR. gn_readkey = 262 .OR. gn_readkey = 260 ;
- .OR. gn_readkey = 4
- *-- Pgup or Up arrow
- IF .NOT. BOF()
- SKIP -1
- ENDIF
- CASE gn_readkey = 7 .OR. gn_readkey = 263 .OR. gn_readkey = 5 ;
- .OR. gn_readkey = 261
- *-- PgDn or Dwn arrow
- SKIP
- IF EOF() .AND. .NOT. gl_newrec
- CLEAR GETS
- SET DELI OFF
- @ 23,0
- @ 23,25 SAY "===> Records toevoegen (J/N)?" GET gl_newrec PICT "Y"
- READ
- SET DELI ON
- CLEAR GETS
- @ 23,0
- @ 23,CENTER( gc_messg, 80) SAY gc_messg
- ENDIF
- IF gl_newrec
- DO Recappnd
- ELSE
- IF EOF()
- SKIP -1
- ENDIF
- ENDIF
- CASE gn_readkey = 34 .OR. gn_readkey = 290
- *-- Ctrl-PgUp
- GO TOP
- CASE gn_readkey = 35 .OR. gn_readkey = 291
- *-- Ctrl-PgDn
- GO BOTTOM
- CASE gn_readkey = 12 .or. gn_readkey = 270
- *-- Esc
- gl_extloop = .T.
- EXIT
- ENDCASE
- *
- gl_chgrec = IIF(gn_recno = RECNO(), .F., .T.) && See if record # changed
- *
- IF gl_rollbck && If user picked ROLLBACK option from menu
- gl_rollbck = .F. && Reset rollback variable
- ROLLBACK
- ENDIF
- ENDDO
- *
- END TRANSACTION
- *
- IF .NOT. ROLLBACK()
- DO Pause WITH "Terugzetten mislukt"
- ACTIVATE SCREEN
- ENDIF
- DO Chkdele
- ENDDO
-
- *-- Clean-up exit
- *-- SET STATUS was OFF when you went into the Forms Designer.
- IF lc_status = "ON" && Entered form with status on
- SET STATUS ON && Turn STATUS "ON" on the way out
- ENDIF
- SET CURSOR &lc_cursor.
- SET TALK &lc_talk.
-
- ON KEY
- ON ERROR
-
- SELE 1
- CLOSE DATABASE
-
- RELEASE MENU Editmenu
- RELEASE POPUPS records, go_to, exit
- RELEASE WINDOWS table,pause,seek,search,bsearch,Invo_hlp,wndow1
- RESTORE SCREEN FROM factuur2
- RELEASE lc_talk,lc_fields,lc_status,lc_escape
- RELEASE SCREEN factuur2
- RETURN
-
- PROCEDURE Show_get
- @ 1,0 TO 21,79 COLOR gr+/b
- @ 1,28 SAY " Overzicht facturen " COLOR r+/b
- @ 3,2 SAY "Afnemer:"
- @ 3,11 GET Afnemers->Klantnaam PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
- @ 3,56 SAY "Klantnr.:"
- @ 3,69 GET Transact->Klant_nr PICTURE "!XXXXX"
- @ 4,2 SAY "Naam:"
- @ 4,11 GET Afnemers->Achternaam PICTURE "XXXXXXXXXXXXXXX"
- @ 4,28 GET Afnemers->Voornaam PICTURE "XXXXXXXXXXXXXXX"
- @ 4,56 SAY "Bestelnr.:"
- @ 4,69 GET Transact->Bestel_nr PICTURE "XX-XXX"
- @ 5,2 SAY "Adres:"
- @ 5,11 GET Afnemers->Adres PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
- @ 5,56 SAY "Datum trans:"
- @ 5,69 GET Transact->Dat_trans
- @ 6,2 SAY "Plaats:"
- @ 6,11 GET Afnemers->Woonplaats PICTURE "XXXXXXXXXXXXXXXXXXXX"
- @ 6,32 SAY "Prov.:"
- @ 6,39 GET Afnemers->Provincie PICTURE "!!"
- @ 6,42 SAY "Postcode:"
- @ 6,52 GET Afnemers->Postcode PICTURE "XXXXXXXXXX"
- @ 7,2 SAY "Tel.:"
- @ 7,11 GET Afnemers->Telefoon PICTURE "999X9X999999"
- @ 7,26 SAY "Overzicht"
- @ 7,41 GET Afnemers->Overzicht WINDOW Wndow1
- CLEAR GETS
- RETURN
-
- PROCEDURE Edit_get
- @ 3,11 GET Afnemers->Klantnaam PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
- @ 3,69 GET Transact->Klant_nr PICTURE "!XXXXX" ;
- VALID klant_nr <> space(6) ;
- ERROR "U hebt geen klantnr. ingevoerd" ;
- WHEN klant_nr = space(6) ;
- MESSAGE "Voer een klantnr. in"
- @ 4,11 GET Afnemers->Achternaam PICTURE "XXXXXXXXXXXXXXX"
- @ 4,28 GET Afnemers->Voornaam PICTURE "XXXXXXXXXXXXXXX"
- @ 4,69 GET Transact->Bestel_nr PICTURE "XX-XXX" ;
- VALID bestel_nr <> space(6) ;
- ERROR "U hebt geen bestelnr. ingevoerd" ;
- WHEN bestel_nr =SPACE(6) ;
- MESSAGE "Voer nieuw bestelnr. in"
- @ 5,11 GET Afnemers->Adres PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
- @ 5,69 GET Transact->Dat_trans ;
- DEFAULT date()
- @ 6,11 GET Afnemers->Woonplaats PICTURE "XXXXXXXXXXXXXXXXXXXX"
- @ 6,39 GET Afnemers->Provincie PICTURE "!!"
- @ 6,52 GET Afnemers->Postcode PICTURE "XXXXXXXXXX"
- @ 7,11 GET Afnemers->Telefoon PICTURE "999X9X999999"
- @ 7,41 GET Afnemers->Overzicht WINDOW Wndow1
- RETURN
-
- PROCEDURE Showbrow
- SELE MAGAZIJN
- SET FILTER TO
- SEEK &GC_ALIAS.->BESTEL_NR
- IF EOF()
- APPEND BLANK
- REPLACE MAGAZIJN->BESTEL_NR WITH &GC_ALIAS.->BESTEL_NR
- ENDIF
- SET FILTER TO &GC_ALIAS.->BESTEL_NR = MAGAZIJN->BESTEL_NR
- GO TOP
- KEYBOARD CHR(27)
- DO Browseit
- SELE &gc_alias.
- ACTIVATE SCREEN
- RETURN
-
- PROCEDURE Lineitem
- ln_key = INKEY()
- DO Keykill
- SELE MAGAZIJN
- APPEND BLANK
- REPLACE MAGAZIJN->BESTEL_NR WITH &GC_ALIAS.->BESTEL_NR
- GO TOP
- DO Browseit
- ACTIVATE SCREEN
- DO Keyset
- *----------------------------------------------------------------------------
- *-- Could put code here to SUM the order balance and replace in a total field
- *-- Example:
- *-- SUM ALL extended TO m->extended
- *-- REPLACE &gc_alias.->Total_bill WITH m->extended
- *----------------------------------------------------------------------------
- SELE &gc_alias.
- RETURN
-
- PROCEDURE Browseit
- SET CURSOR ON
- BROWSE;
- FIELDS ONDRDL_NR, ARTIKEL/12, OMSCHRIJV/20, AANTAL, STUKPRIJS, ;
- EXTENDED=AANTAL*STUKPRIJS,MAGAZIJN->BESTEL_NR /R;
- WINDOW table COMPRESS NOMENU NOCLEAR
- SET CURSOR OFF
- RETURN
-
- PROCEDURE Keyset
- ON KEY LABEL F1 DO Invo_hlp
- ON KEY LABEL F9 KEYBOARD CHR(23)+"L"
- ON KEY LABEL F10 KEYBOARD CHR(23)+"M"
- RETURN
-
- PROCEDURE Keykill
- ON KEY LABEL F1 DO Nothing
- ON KEY LABEL F9 DO Nothing
- ON KEY LABEL F10 DO Nothing
- RETURN
-
- PROCEDURE Nothing
- ln_key=INKEY()
- RETURN
-
- PROCEDURE Chkdele
- IF DELETED()
- DEFINE BAR 4 OF records PROMPT "Wismarkering verwijderen ";
- MESSAGE "Wismarkering bij record plaatsen/verwijderen"
- ELSE
- DEFINE BAR 4 OF records PROMPT " Wismarkering aanbrengen";
- MESSAGE "Een wismarkering bij dit record plaatsen"
- ENDIF
- RETURN
-
- PROCEDURE Recappnd
- *------------------------------------------------------------------------
- *-- Could put code here to advance the invoice number, etc.
- GO BOTT
- morder = BESTEL_NR
- APPEND BLANK
- REPLACE bestel_nr WITH SUBSTR(morder,1,3) + LTRIM(STR(VAL(SUBSTR(morder,4))+1))
- *------------------------------------------------------------------------
- RETURN
-
- *-- The following procedures handle the selections of the edit menu ---------
- PROCEDURE Get_recs
- *-- Get the user selection & store BAR into variable
- gn_pick = BAR() && Variable for bar testing
- DO CASE
- CASE gn_pick = 1
- *-- Prepare variable for rollback operation on return
- gl_rollbck = .T.
- CASE gn_pick = 3
- DO Recappnd
- CASE gn_pick = 4
- *-- Delete/recall record
- IF DELETE()
- RECALL
- SELE MAGAZIJN
- RECALL ALL
- ELSE
- DELETE
- SELE MAGAZIJN
- DELETE ALL
- ENDIF
- SELE (gc_alias)
- CASE gn_pick = 5
- *-- Blank record
- ENDCASE
- DO Chkdele
- DEACTIVATE MENU
- RETURN
-
- PROCEDURE Get_goto
- *-- Get the user selection & store BAR into variable
- gn_pick = BAR() && Variable for bar testing
- mpict = REPLICATE("9", LEN( LTRIM( STR( RECCOUNT()))))
- gc_search = gc_search + SPACE( 200 - LEN(gc_search))
- gc_seek = gc_seek + SPACE(LEN( BESTEL_NR) - LEN(gc_seek))
- DO CASE
- CASE gn_pick = 1
- *-- Go to top of file
- GO TOP
- CASE gn_pick = 2
- *-- Go to bottom of file
- GO BOTTOM
- CASE gn_pick = 3
- *-- Go to a specfic record
- @ 4,39 GET gn_gorec RANGE 1, RECCOUNT() PICTURE mpict
- READ
- gn_gorec = IIF( gn_gorec=0, RECNO(), gn_gorec)
- GO gn_gorec
- CASE gn_pick = 4
- *-- Skip a certain number of records
- skiprec = IIF( RECCOUNT() > 9, 10, 5)
- SET DELI OFF
- @ 5,39 GET skiprec PICTURE mpict
- READ
- SET DELI ON
- SKIP skiprec
- IF EOF()
- SKIP -1
- ENDIF
- CASE gn_pick = 6
- ACTIVATE WINDOW seek
- *-- Seek on key field
- IF "" = ORDER()
- tempmdx = TAG(1)
- SET ORDER TO TAG &tempmdx.
- ENDIF
- @ 0,1 SAY "Geef zoekreeks op voor"
- @ 1,1 SAY TAG(1)+":" GET gc_seek PICT "@S20";
- MESSAGE "Annuleren: Esc";
- VALID LEN( TRIM( gc_seek)) > 0;
- ERROR "Geen zoekvoorwaarde opgegeven"
- READ
- IF READKEY() <> 12
- gc_seek = LTRIM( TRIM(gc_seek))
- mrec = RECNO()
- SEEK gc_seek
- IF .NOT. FOUND()
- GO mrec
- ENDIF
- ENDIF
- DEACTIVATE WINDOW seek
- ACTIVATE SCREEN
- CASE gn_pick = 7
- *-- Forward search
- ACTIVATE WINDOW search
- @ 0,1 SAY "Geef zoekreeks op:" GET gc_search PICT "@S21";
- MESSAGE "Annuleren: Esc";
- VALID LEN( TRIM( gc_search)) > 0;
- ERROR "Geen zoekvoorwaarde opgegeven"
- READ
- DEACTIVATE WINDOW search
- ACTIVATE SCREEN
- IF READKEY() <> 12
- gc_search = LTRIM( RTRIM( gc_search))
- mrec = RECNO()
- LOCATE REST FOR &gc_search.
- IF .NOT. FOUND()
- GO mrec
- ENDIF
- ENDIF
- CASE gn_pick = 8
- *-- Backward search
- ACTIVATE WINDOW bsearch
- @ 0,1 SAY "Geef zoekreeks op:" GET gc_search PICT "@S21";
- MESSAGE "Annuleren: Esc";
- VALID len(trim(gc_search)) > 0;
- ERROR "Geen zoekvoorwaarde opgegeven"
- READ
- DEACTIVATE WINDOW bsearch
- ACTIVATE SCREEN
- IF READKEY() <> 12
- gc_search = LTRIM( RTRIM( gc_search))
- mrec = RECNO()
- DO WHILE .NOT. (BOF() .OR. &gc_search.)
- SKIP -1
- ENDDO
- IF BOF()
- GO mrec
- ENDIF
- ENDIF
- ENDCASE
- DEACTIVATE MENU
- RETURN
-
- PROCEDURE Get_exit
- CLEAR GETS
- *-- Prepare variable to exit loop
- gl_extloop = .T.
- DEACTIVATE MENU
- RETURN
-
- PROCEDURE Pause
- PARAMETER lc_msg
- *-- Parameters : lc_msg = message line
- IF TYPE("lc_message")="U"
- gn_error=ERROR()
- ENDIF
- lc_msg = lc_msg
- lc_option='0'
- ACTIVATE WINDOW Pause
- IF gn_error > 0
- IF TYPE("lc_message")="U"
- @ 0,1 SAY [Fout opgetreden !! - Foutmelding: ]+MESSAGE()
- ELSE
- @ 0,1 SAY [Fout nr. ]+lc_message
- ENDIF
- ENDIF
- @ 1,1 SAY lc_msg
- WAIT " Druk op een toets voor vervolg..."
- DEACTIVATE WINDOW Pause
- RETURN
-
-
- *-- UDF library ----------------------------------------------------------------
- FUNCTION Center
- *-- UDF to center a string.
- *-- lc_string = String to center
- *-- ln_width = Width of screen to center in
- *--
- *-- Ex. @ 15,center(string,80) say string
- *-- Will center the <string> withing 80 columns
- PARAMETER lc_string, ln_width
- RETURN ((ln_width/2)-(LEN(lc_string)/2))
- *-- End UDF library ------------------------------------------------------------
-
- PROCEDURE Invo_hlp
- gc_readvar = VARREAD() && Could do context sensitive help
- ACTIVATE WINDOW Invo_hlp
- CLEAR
- TEXT
- HULP-functies:
- --------------
- F1: Deze hulptekst op het scherm brengen
- F9: Vanuit het menusysteem van de factuur naar de regelopties
- F10: Naar het menusysteem boven aan de factuur
-
- PgDn: Volgende factuur
- PgUp: Vorige factuur
- Ctrl-PgDn: Naar de laatste factuur in de database
- Ctrl-PgUp: Naar de eerste factuur in de dabase
- Esc: De factuur verlaten
- ENDTEXT
- @ 16,5 say "Druk op een toets.."
- x = INKEY(0)
- CLEAR
- TEXT
- HULP voor regelopties:
- ----------------------
- F1: Deze hulptekst op het scherm brengen
-
- PgDn: Naar het volgende scherm met regelopties
- PgUp: Naar het vorige scherm met regelopties
- Ctrl-PgDn: Naar het laatste scherm met regelopties
- Ctrl-PgUp: Naar het eerste scherm met regelopties
- Esc: Naar bovenste gedeelte van de factuur
- ENDTEXT
- @ 16,5 say "Druk op een toets..."
- x = INKEY(0)
- DEACTIVATE WINDOW Invo_hlp
- ACTIVATE SCREEN
- RETURN
-
- PROCEDURE Defnmenu
- *-- This menu simulates the F10 menu for edit for this edit program
- *-- Not all of the actions will be able to be duplicated though.
-
- SET BORDER TO DOUBLE
-
- DEFINE MENU editmenu
- DEFINE PAD records OF editmenu PROMPT "Records" AT 0,2
- ON PAD records OF editmenu ACTIVATE POPUP records
- DEFINE PAD go_to OF editmenu PROMPT "Ga naar" AT 0,14
- ON PAD go_to OF editmenu ACTIVATE POPUP go_to
- DEFINE PAD exit OF editmenu PROMPT "Einde" AT 0,24
- ON PAD exit OF editmenu ACTIVATE POPUP exit
-
- * -- Define popup menu
- DEFINE POPUP records FROM 1,0
- DEFINE BAR 1 OF records PROMPT " Wijziging annuleren";
- MESSAGE "Wijziging in huidig record ongedaan maken"
- DEFINE BAR 2 OF records PROMPT "──────────────────────────────────────" SKIP
- DEFINE BAR 3 OF records PROMPT " Toevoegen records";
- MESSAGE "Records aan einde van database-bestand toevoegen"
- *-- Bar 4 is determined on the record being deleted or not
- DO Chkdele && Define bar 4 done in procedure
- DEFINE BAR 5 OF records PROMPT " Leeg record" SKIP ;
- MESSAGE "De inhoud van alle velden in dit record leegmaken"
- DEFINE BAR 6 OF records PROMPT " Vergrendelen record";
- MESSAGE " " SKIP
- DEFINE BAR 7 OF records PROMPT " Naar nieuwe positie van record JA" SKIP
- DEFINE POPUP go_to FROM 1,12
- DEFINE BAR 1 OF go_to PROMPT " Eerste record";
- MESSAGE "Naar eerste record in dit database-bestand gaan"
- DEFINE BAR 2 OF go_to PROMPT " Laatste record";
- MESSAGE "Naar laatste record in dit database-bestand gaan"
- DEFINE BAR 3 OF go_to PROMPT " Recordnummer";
- MESSAGE "Naar record met opgegeven nummer gaan"
- DEFINE BAR 4 OF go_to PROMPT " Overslaan";
- MESSAGE "Telkens het opgegeven aantal records overslaan (minteken: terug)"
- DEFINE BAR 5 OF go_to PROMPT "──────────────────────────────────" SKIP
- DEFINE BAR 6 OF go_to PROMPT " Indexsleutel zoeken" SKIP FOR "" = gc_mdx;
- MESSAGE "Zoeken naar tekenreeks op basis van indexbestand"
- DEFINE BAR 7 OF go_to PROMPT " Zoeken ";
- MESSAGE "Voorwaarts zoeken naar tekenreeks in veld (vanaf huidig record)"
- DEFINE BAR 8 OF go_to PROMPT " Achterwaarts zoeken ";
- MESSAGE "Terugzoeken naar tekenreeks in veld (vanaf huidig record)"
- DEFINE BAR 9 OF go_to PROMPT " Hoofdletters/kleine letters NEE" SKIP
-
- DEFINE POPUP exit FROM 1,22
- DEFINE BAR 1 OF exit PROMPT " Einde";
- MESSAGE "Wijzigingen in huidig record opslaan en stoppen"
- DEFINE BAR 2 OF exit PROMPT " Over naar query-ontwerp " SKIP
-
- ON SELECTION POPUP records DO Get_recs
- ON SELECTION POPUP go_to DO Get_goto
- ON SELECTION POPUP exit DO Get_exit
-
- DEFINE WINDOW seek FROM 8,15 TO 11,44
- DEFINE WINDOW search FROM 9,15 TO 11,60
- DEFINE WINDOW bsearch FROM 10,15 TO 12,60
-
- SHOW MENU Editmenu
- RETURN
- *---------------------------------------------------------------------------
- *-- EOP: INVOICE2.PRG