The OIPI_EXAMPLE2 prints a simple invoice. To run this example start OpenInsight, and then start the System Editor. Copy the example text below, and paste it into a new record in the System Editor. Then compile the program and run it. Here is an example of the print preview.
This is the code:
subroutine OIPI_Example2(dummy) /* Printer_Example2 This is an example program on how to use the OpenInsight Printer Interface. This example creates a simple invoice using the Table Module. */ declare function Set_Printer, Get_Printer, RGB, msg $insert OIPRINT_EQUATES * Initialize the printing session with a name, dialog title, and margins name = "Sample Invoice" title = "" title<1> = "Printing Sample Invoice..." title<2> = "Example Print Preview" margin = 1:@FM:1.75:@FM:1:@FM:1 * Gentlemen, start your engine. x = Set_Printer("START32") * Display report with Print Preview Window at the last size and position x = Set_Printer("INIT", name, title, margin, "", 4) if x < 0 then x = msg("", "INIT ERROR = ":x) end * Set the text font and the Header/footer font x = Set_Printer("FONTHEADFOOT", "Times New Roman":@FM:12) font = "Arial":@FM:12:@FM:"L" fontBold = "Arial":@FM:12:@FM:"L":@FM:1 x = Set_Printer("FONT", font) if x < 0 then x = msg("", "FONTHEADFOOT Error") end * Set the header with the text "Sample Invoice" centered , and "Page #" aligned to the right * margin on the first line. The text "for the OIPI 2.0" is centered on the second line. x = Set_Printer("HEADER", @vm:"Sample Invoice":@vm:"Page 'P'":@FM:@vm:"for the OIPI 2.0":@FM) if x < 0 then x = msg("", "HEADER Error") end * Print a bitmap at 1 inch from the top and 1 inch from the left side of the page. * The left and top values are calculated from the margins. The width and height of the * bitmap will be 0.5 by 0.5 inches, and the bitmap will print on every page. x = Set_Printer("BMP", "PRINTER.BMP", 0:@FM:-0.75:@FM:0.5:@FM:0.5, 0, 1) if x < 0 then x = msg("", "BMP Error") end * Set the text font to bold Arial to print the title of the Date/Invoice table. Then * print the date and invoice number with no bold. The first column of the table is blank * to place the date and invoice number in the correct location on the page. The date and * invoice number are centered and there is no border around this table. These tables have * no column headers. x = Set_Printer("FONT", fontBold) table1 = ",Date,Invoice No." convert "," to @vm in table1 x = Set_Printer("ADDTABLE", ">5040":@VM:"^2160":@VM:"^2160":@FM, "", table1, "", "", "", TB_NONE) x = Set_Printer("FONT", font) table1 = ",01 Jan 1996,340082" convert "," to @vm in table1 x = Set_Printer("ADDTABLE", ">5040":@VM:"^2160":@VM:"^2160":@FM, "", table1, "", "", "", TB_NONE) * Print a blank line then print the Bill To/From table. These tables have no column * headers. These tables have no borders and have left justified columns. x = Set_Printer("TEXT") x = Set_Printer("FONT", fontBold) table2 = "Bill To:,,Ship To:" convert "," to @vm in table2 x = Set_Printer("ADDTABLE", "3600":@VM:"1440":@VM:"3600":@FM, "", table2, "", "", "", TB_NONE) x = Set_Printer("FONT", font) table2 = "" table2<1> = "Test Company 123//Test Company (Billing Dept)" table2<2> = "123 West Main Street//555 West Main Street, MS:123" table2<3> = "Portland, OR 97005//Portland, OR 97005" convert "/" to @vm in table2 x = Set_Printer("ADDTABLE", "3600":@VM:"1440":@VM:"3600":@FM, "", table2, "", "", "", TB_NONE) * These tables have to column headers and have borders all sides of the tables. Every column * is center justified. x = Set_Printer("TEXT") x = Set_Printer("FONT", fontBold) table3 = "Terms,P.O. Number,Ship Date,Ship Via" convert "," to @vm in table3 x = Set_Printer("ADDTABLE", "^2160":@VM:"^2160":@VM:"^2160":@VM:"^2160":@FM, "", table3, "", "", "", TB_ALL) x = Set_Printer("FONT", font) table3 = "Net 30,9500123,03 Jan 1996,UPS Next Day Delivery" convert "," to @vm in table3 x = Set_Printer("ADDTABLE", "^2160":@VM:"^2160":@VM:"^2160":@VM:"^2160":@FM, "", table3, "", "", "", TB_ALL) * The position is set to 0 inches from the left margin, and 3 inches from the top margin. This * will guarentee the table will always start to print from the same location. x = Set_Printer("POS", 0:@FM:3) * Create the dummy data for the main table. This table has column headers, because the column * headers need to be printed at the to of each page if the main invoice table requies more * than one page. The rows will have borders. tableHead = "Quantity,Description,Unit Price,Ext Price" table = "" table<1> = "1,OpenInsight Printer Interface 2.0 -- Special limited time introductory price,$345.00,$345.00" table<2> = "2,Second line item here,$1.00,$2.00" table<3> = "1,Third line item here (no charge for this bonus item),$0.00,$0.00" for i = 4 to 30 table<i> = "1,Test line item here":(i-3):",$0.00,$0.00" next i table<31> = "" table<32> = ",Merchandise Total,,$347.00" table<33> = "" table<34> = ",Tax,,$12.00" table<35> = ",Shipping,,$5.00" table<36> = ",Handling,,$5.00" table<37> = "" table<38> = ",,Sub Total,$369.00" table<39> = "" table<40> = ",,Total,$369.00" convert "," to @vm in table convert "," to @vm in tableHead x = Set_Printer("ADDTABLE", ">1080":@VM:"<4680":@VM:">1440":@VM:">1440":@FM, tableHead, table, RGB(192, 192, 192), "", "", TB_BOX_ROWS) * Finish this prining session. x = Set_Printer("TERM", 1) return