home *** CD-ROM | disk | FTP | other *** search
- *****************************************************************************************
- * PROGRAM NAME: BESTEL.PRG
- * ORDERS TRANSACTIONS DATABASE SCREEN
- * SAMPLE BUSINESS APPLICATION PROGRAM
- * LAST CHANGED: 080692
- * WRITTEN BY: Borland International Inc.
- *****************************************************************************************
- *
- * FILES USED IN CUSTOMER FILE:
- * Database = Bestel.dbf
- * Index file = Bestel.mdx
- * TAG: Bestel = klant_nr+DTOS(dat_trans)+magazn_nr <= Master index
- * External Procedure File used: Biblio.prg
- *****************************************************************************************
-
- * Main procedure
- PROCEDURE Bestel
-
- * Link to external procedure file of 'tool' procedures
- SET PROCEDURE TO Biblio
-
- * Set database environment
- DO Set_env
- SET NEAR on
- SET COLOR TO &c_standard.
-
- * Declare Variables Used:
- * Database memory variables
- STORE "" TO klant_nr, magazn_nr, pers_nr, ondrdl_nr
- STORE { - - } TO dat_trans
- ondrdl_ant = 0
- factuur = .F.
-
- * Misc variables - used to pass parameters to Library
- * for Find record, Output reports, List records and other options
- dbf = "BESTEL" && std report is available
- mlist = "NIET RELEVANT" && no mailing list is available
- STORE "N/B" TO cust_rpt && no custom reports are available
- key = "m->klant_nr+DTOC(m->dat_trans)+m->magazn_nr"
- key1 = "m->klant_nr"
- key2 = "DTOC(m->dat_trans)"
- key3 = "m->magazn_nr"
- keyname1 = "Klantnr.:"
- keyname2 = "Besteldatum:"
- keyname3 = "Magazijnnr.:"
- list_flds = "KLANT_NR,DAT_TRANS,MAGAZN_NR,ONDRDL_NR,ONDRDL_ANT,Goederen->PRIJS"
- STORE "" TO mcustid, mpartid, mempid
- mdatetrans = { - - }
-
- * Open databases and choose active indexes
- SELECT 1
- USE Bestel ORDER Bestel
- USE Goederen ORDER Ondrdl_nr IN 2
- USE Klnt ORDER Klant_nr IN 3
- USE Personel ORDER Pers_nr IN 4
- SET RELATION TO ondrdl_nr INTO Goederen, klant_nr INTO Klnt, pers_nr INTO Personel
- GO TOP
-
- * Load initial record from database into memory
- record_num = RECNO()
- DO Load_fld
-
- * Show data screen
- CLEAR
- DO Dstatus
- DO Backgrnd
- DO Show_data
- CLEAR GETS
-
- * Define popup bar menus of user choices
- DO BAR_DEF
-
- * Activate main popup bar menu - execute user choices
- SET COLOR TO &c_popup.
- ACTIVATE POPUP main_mnu
- DO Sub_ret
- *
- RETURN
- *==============================end of main procedure=====================================
-
- * UTILITY PROCEDURES (PROPRIETARY TO Orders)
-
- PROCEDURE Filter
- * Filter (group) data into subset
- * Select subset to set up filter condition (Y=turn on,N=abort selection,T=turn off)
- * If filter is already on, set default choice to Turn off; show window
- * If filter is not on, set default choice to Yes; show window
- choice = IIF(filters_on,"U","J")
- DO Filt_ans
- IF choice = "J"
- * Start process of choosing filter condition.
- *
- mcustid = SPACE(6)
- mdatetrans = { - - }
- mpartid = SPACE(10)
- mempid = SPACE(11)
- ACTIVATE WINDOW alert
- * Get user's filter condition selection(s)
- @ 0, 0 SAY "------ FILTERVOORWAARDE OPGEVEN -----"
- @ 2, 0 SAY "KLANTNR.:" GET mcustid FUNCTION "!" ;
- MESSAGE "Typ een klantnr. (6 tekens) beginnend met een letter; stoppen: Esc"
- @ 2,18 SAY "DAT. TRANS" GET mdatetrans FUNCTION "D"
- @ 3, 0 SAY "ONDERDEELNR.:" GET mpartid FUNCTION "!"
- @ 4, 0 SAY "PERSONEELSNR.:" GET mempid
- @ 5, 0 SAY "Geef één of meer voorwaarden op"
- READ
- DEACTIVATE WINDOW alert
- * Initialize filter condition variable to null (empty)
- subset = " "
- * Process user's entries to build filter condition
- mcustid = TRIM(mcustid)
- mpartid = TRIM(mpartid)
- mempid = TRIM(mempid)
- subset = subset + IIF("" <> mcustid,"klant_nr = '&mcustid.' .AND. ","")
- subset = subset + IIF("" <> mpartid,"ondrdl_nr = '&mpartid.' .AND. ","")
- subset = subset + IIF("" <> mempid, "pers_nr = '&mempid.' .AND. ","")
- *
- IF "" = TRIM(subset) && Check whether data entered into subset string
- * If nothing entered, exit
- DO Warnbell
- filters_on = .F.
- ELSE
- * If string is not empty, truncate the .AND. from end of subset string
- subset = SUBSTR(subset,1,LEN(subset)-6)
- SET FILTER TO &subset. && Filter on entered filter string condition
- GO TOP && Activate filter by moving record pointer
- * Check whether filter condition matches any records (none matching=EOF)
- filters_on = .NOT. EOF()
- IF .NOT. filters_on && Filter is turned off if filters_on = .F.
- DO Warnbell
- DO Show_msg WITH "0 records voldoen aan filtervoorwaarde."
- SET FILTER TO
- GO record_num
- ENDIF
- ENDIF
- ELSE
- * If user selects "T", turn off filter
- SET FILTER TO
- filters_on = .F.
- ENDIF
- RETURN
-
- PROCEDURE Indexer
- * Create/rebuild index
- INDEX ON klant_nr+DTOC(dat_trans)+magazn_nr TAG Bestel
- GO TOP
- RETURN
-
- PROCEDURE Init_fld
- * Initialize memory variables values for data entry
- klant_nr = SPACE(6)
- dat_trans = DATE()
- magazn_nr = SPACE(5)
- pers_nr = SPACE(11)
- ondrdl_nr = SPACE(10)
- ondrdl_ant = 0
- factuur = .F.
- RETURN
-
- PROCEDURE Load_fld
- * Copy fields from ORDERS database record into memory variables
- klant_nr = klant_nr
- dat_trans = dat_trans
- magazn_nr = magazn_nr
- pers_nr = pers_nr
- ondrdl_nr = ondrdl_nr
- ondrdl_ant = ondrdl_ant
- factuur = factuur
- RETURN
-
- PROCEDURE Repl_fld
- * Replace database file fields with contents of memory variables
- REPLACE klant_nr WITH m->klant_nr, magazn_nr WITH m->magazn_nr,;
- dat_trans WITH m->dat_trans, pers_nr WITH m->pers_nr,;
- ondrdl_nr WITH m->ondrdl_nr, ondrdl_ant WITH m->ondrdl_ant,;
- factuur WITH m->factuur
- RETURN
-
- FUNCTION Prof_mgn
- PARAMETERS cost,price
- * Calculate profit margin
- margin = ROUND((price-cost)/price*100,1)
- RETURN margin
-
- PROCEDURE Backgrnd
- * Show screen for data entry/viewing
- @ 1,18 TO 3,49 DOUBLE COLOR &c_blue.
- @ 5, 2 TO 8,56 DOUBLE COLOR &c_red.
- @ 16, 2 TO 16,56 COLOR &c_red.
- @ 9, 2 TO 18,56 COLOR &c_red.
- @ 2,19 FILL TO 2,48 COLOR &c_blue.
- @ 6, 3 FILL TO 7,55 COLOR &c_red.
- @ 10, 3 FILL TO 17,55 COLOR &c_red.
- @ 6, 3 FILL TO 17,55 COLOR &c_red.
- SET COLOR TO &c_data.
- @ 2,23 SAY "DATABASE BESTELLINGEN"
- @ 6, 4 SAY "KLANTNR.: "
- @ 7, 4 SAY "BESTELDATUM: "
- @ 7,35 SAY "MAGAZIJNNR.:"
- @ 10, 4 SAY "ONDERDLNR.: "
- @ 11, 4 SAY "ARTIKEL:"
- @ 12, 4 SAY "AANT. BESTELD: "
- @ 12,25 SAY " à"
- @ 12,35 SAY "PRIJS: ƒ"
- @ 13, 4 SAY "AANT. VOORRADIG:"
- @ 13,25 SAY " à"
- @ 13,35 SAY "MARGE:"
- @ 13,53 SAY "%"
- @ 14, 4 SAY "PERSONEELSNR.:"
- @ 15, 4 SAY "FACTUUR:"
- @ 17, 4 SAY "OPMERKING: "
- SET COLOR TO &c_standard.
- RETURN
-
- PROCEDURE Show_data
- SET COLOR TO &c_fields.
- @ 6,18 SAY klant_nr
- @ 7,18 SAY dat_trans
- @ 7,48 SAY magazn_nr
- @ 10,18 SAY ondrdl_nr
- @ 12,21 SAY ondrdl_ant PICTURE "999"
- @ 14,18 SAY pers_nr
- @ 15,14 SAY factuur PICTURE "Y"
- @ 17,14 SAY Info
- IF .NOT. BAR() = 2
- @ 6,26 SAY Klnt->Klantnaam COLOR &c_yelowhit.
- @ 11,18 SAY Goederen->Artikel COLOR &c_yelowhit.
- @ 12,44 SAY Goederen->Prijs PICTURE "999999.99" COLOR &c_yelowhit.
- @ 13,21 SAY Goederen->Aant_voorr PICTURE "999" COLOR &c_yelowhit.
- @ 13,48 SAY Prof_mgn(Goederen->Kostprijs,Goederen->Prijs) ;
- PICTURE "99.9" COLOR &c_yelowhit.
- @ 14,32 SAY TRIM(Personel->Voornaam)+" "+ Personel->Achternaam ;
- COLOR &c_yelowhit.
- ELSE
- * Mode is Add: clear screen field areas of related data
- @ 6,26 SAY SPACE(30) && CUSTOMER
- @ 11,18 SAY SPACE(20) && PARTNAME
- @ 12,44 SAY SPACE(9) && PRICE
- @ 13,21 SAY SPACE(3) && QTY ONHAND
- @ 13,48 SAY SPACE(4) && MARGIN
- @ 14,30 SAY SPACE(26) && EMPLOYEE
- ENDIF
- IF ISCOLOR()
- @ 20, 4 SAY "Gele tekst/getallen uit verwante database/berekening" ;
- COLOR &c_yelowhit.
- ELSE
- @ 20, 4 SAY "Grijze tekst/getallen uit verwante database/berekening" COLOR &c_red.
- ENDIF
- SET COLOR TO &c_standard.
- RETURN
-
- PROCEDURE Get_data
- ** Duplicat(&key.)
- SET COLOR TO &c_data.
- @ 6,18 GET m->klant_nr PICTURE "!99999" ;
- VALID Lookupid(m->klant_nr,"Klnt","Klanten",2) ;
- ERROR "Ongeldig klantnr.; voer ander nummer in" ;
- MESSAGE "Typ klantnummer van zes cijfers, beginnend " + ;
- "met een letter, of annuleer met Esc."
- @ 7,18 GET m->dat_trans FUNCTION "D" ;
- MESSAGE "Voer datum van deze bestelling in"
- @ 7,48 GET m->magazn_nr FUNCTION "!" ;
- MESSAGE "Voer nummer van klant in"
- @ 10,18 GET m->ondrdl_nr FUNCTION "!" ;
- VALID Lookupid(m->ondrdl_nr,"Goederen", "Onderdeel", 3) ;
- ERROR "Ongeldig onderdeelnr.; voer ander nummer in" ;
- MESSAGE "Typ een onderdeelnr. of annuleer met Esc"
- @ 12,21 GET m->ondrdl_ant PICTURE "999" ;
- MESSAGE "Voer het aantal bestelde onderdelen in"
- @ 14,18 GET m->pers_nr PICTURE "999-99-9999" ;
- VALID Lookupid(m->pers_nr, "Personel", "Werknemer", 6) ;
- ERROR "Ongeldig personeelsnr.; voer ander nummer in" ;
- MESSAGE "Typ een personeelsnr. of annuleer met Esc"
- @ 15,14 GET m->factuur PICTURE "Y" ;
- MESSAGE "Geef op of al factuur is verzonden " + ;
- "(wordt meestal automatisch afgehandeld)"
- @ 17,14 GET Info WINDOW memo_windo ;
- MESSAGE "Info typen: Ctrl-Home - Einde: Ctrl-End"
- IF .NOT. BAR() = 2
- @ 6,26 SAY Klnt->Klantnaam COLOR &c_yelowhit.
- @ 11,18 SAY Goederen->Artikel COLOR &c_yelowhit.
- @ 12,44 SAY Goederen->Prijs PICTURE "999999.99" COLOR &c_yelowhit.
- @ 13,21 SAY Goederen->Aant_voorr PICTURE "999" COLOR &c_yelowhit.
- @ 13,48 SAY Prof_mgn(Goederen->Kostprijs,Goederen->Prijs) ;
- PICTURE "99.9" COLOR &c_yelowhit.
- @ 14,32 SAY TRIM(Personel->Voornaam)+" "+ Personel->Achternaam ;
- COLOR &c_yelowhit.
- ELSE
- * Mode is Add: clear screen field areas of related data
- @ 6,26 SAY SPACE(30) && CUSTOMER
- @ 11,18 SAY SPACE(20) && PARTNAME
- @ 12,44 SAY SPACE(9) && PRICE
- @ 13,21 SAY SPACE(3) && QTY ONHAND
- @ 13,48 SAY SPACE(4) && MARGIN
- @ 14,30 SAY SPACE(26) && EMPLOYEE
- ENDIF
- IF ISCOLOR()
- @ 20, 4 SAY "Gele tekst/getallen uit verwante database/berekening" ;
- COLOR &c_yelowhit.
- ELSE
- @ 20, 4 SAY "Grijze tekst/getallen uit verwante database/berekening" COLOR &c_red.
- ENDIF
- SET COLOR TO &c_standard.
- ON KEY LABEL F9 DO Findcust WITH m->klant_nr
- ON KEY LABEL F10 DO Findpart WITH m->ondrdl_nr
- RETURN
-
-