import qmclient.*;
import java.io.*;
class ex
{
private static qmclient qm;
public static void main(String[] args) throws IOException
{
int fSales; // SALES file
int fStock; // STOCK file
int fCustomers; // CUSTOMERS file
String SaleId; // SALES record id
String SaleRec; // SALES record
String SaleDate; // Date
String SaleCust; // Customer id
String SaleItems; // Items in order
int SaleNumItems; // Order line count
int SaleTotal; // Total value of order, internal format
String SaleTotalExt; // Total value of order, external format
String CustRec; // Customer record
String CustName; // Customer name
String ItemId; // Item id
String ItemQty; // Quantity in order line
String ItemPrice; // Price, internal format
String ItemPriceExt; // Price, external format
int ItemTotal; // Item total, internal format
String ItemTotalExt; // Item total, external format
String StockRec; // Stock record
String StockDescr; // Item description
String Prefix; // Single valued items as line prefix
int line; // Order line counter
qm = new qmclient();
if (!qm.ConnectLocal("demo"))
{
System.out.println("Failed to connect to server: " + qm.Error);
return;
}
// Open files
fSales = qm.Open("SALES");
if (fSales == 0)
{
System.out.println("Cannot open SALES file");
return;
}
fStock = qm.Open("STOCK");
if (fStock == 0)
{
System.out.println("Cannot open STOCK file");
return;
}
fCustomers = qm.Open("CUSTOMERS");
if (fCustomers == 0)
{
System.out.println("Cannot open CUSTOMERS file");
return;
}
// Prompt for order number repeatedly until a blank is entered
while(true)
{
System.out.print("Enter order number, blank to terminate:");
SaleId = System.console().readLine();
if (SaleId.length() == 0) break;
SaleRec = qm.Read(fSales, SaleId);
SaleDate = qm.Extract(SaleRec, 1, 0, 0);
SaleCust = qm.Extract(SaleRec, 2, 0, 0);
SaleItems = qm.Extract(SaleRec, 3, 0, 0);
SaleNumItems = qm.Dcount(SaleItems, "\u00FD");
CustRec = qm.Read(fCustomers, SaleCust);
CustName = qm.Extract(CustRec, 1, 0, 0);
System.out.println("");
System.out.println("");
System.out.println("Order Number " + SaleId + " ("+CustName+")");
System.out.println("");
System.out.println("Cust Date..... Item Description Qty Price Total");
Prefix = SaleCust + " " + qm.OConv(SaleDate, "D2DMYL[,A3]");
SaleTotal = 0;
for(line = 1; line <= SaleNumItems; line++)
{
ItemId = qm.Extract(SaleRec, 3, line, 0);
ItemQty = qm.Extract(SaleRec, 4, line, 0);
ItemPrice = qm.Extract(SaleRec, 5, line, 0);
ItemPriceExt = qm.OConv(ItemPrice, "MD2");
StockRec = qm.Read(fStock, ItemId);
StockDescr = qm.Extract(StockRec, 1, 0, 0);
ItemTotal = Integer.valueOf(ItemPrice) * Integer.valueOf(ItemQty);
SaleTotal += ItemTotal;
ItemTotalExt = qm.OConv(String.valueOf(ItemTotal), "MD2");
System.out.printf("%15s %4s %-30s %3s %7s %7s %n",
Prefix, ItemId, StockDescr, ItemQty, ItemPriceExt, ItemTotalExt);
Prefix = "";
}
SaleTotalExt = qm.OConv(String.valueOf(SaleTotal), "MD2");
System.out.printf("%76s%n", "=======");
System.out.printf("%76s%n", SaleTotalExt);
}
qm.Disconnect();
}
}
|