Суть проекта:
Есть программа кассового регистра (POS система, Unicenta Opos) работает с базой данных MSQL.
Внутри программы есть формализированный отчет:
report = new com.openbravo.pos.reports.PanelReportBean();
report.setTitleKey("Menu.Customers.Reports.Sales");
report.setReport("/com/openbravo/reports/customers_sales");
report.setResourceBundle("com/openbravo/reports/customers_messages");
report.setSentence("SELECT " +
"customers.NAME AS CNAME, " +
"receipts.DATENEW, " +
"tickets.TICKETID, " +
"products.NAME AS PNAME, " +
"tickets.TICKETTYPE, " +
"SUM(ticketlines.UNITS) AS UNITS, " +
"SUM(ticketlines.UNITS * ticketlines.PRICE) AS TOTAL " +
"FROM receipts, customers, tickets, ticketlines LEFT OUTER JOIN products ON ticketlines.PRODUCT = products.ID " +
"WHERE customers.ID = tickets.CUSTOMER AND ticketlines.PRODUCT = products.ID AND receipts.ID = tickets.ID AND tickets.ID = ticketlines.TICKET AND ?(QBF_FILTER) " +
"GROUP BY customers.NAME, receipts.DATENEW, tickets.TICKETID, products.NAME, tickets.TICKETTYPE " +
"ORDER BY customers.NAME, products.NAME, receipts.DATENEW");
report.addParameter("receipts.DATENEW");
report.addParameter("receipts.DATENEW");
paramdates = new com.openbravo.pos.reports.JParamsDatesInterval();
paramdates.setStartDate(com.openbravo.beans.DateUtils.getToday());
// JG - 8 Jan 14 paramdates.setEndDate(com.openbravo.beans.DateUtils.getToday());
paramdates.setEndDate(com.openbravo.beans.DateUtils.getTodayMinutes());
report.addQBFFilter(paramdates);
report.addParameter("customers.ID");
report.addParameter("customers.NAME");
report.addQBFFilter(new com.openbravo.pos.reports.JParamsCustomer());
report.addField("CNAME", com.openbravo.data.loader.Datas.STRING);
report.addField("DATENEW", com.openbravo.data.loader.Datas.TIMESTAMP);
report.addField("TICKETID", com.openbravo.data.loader.Datas.STRING);
report.addField("PNAME", com.openbravo.data.loader.Datas.STRING);
report.addField("TICKETTYPE", com.openbravo.data.loader.Datas.INT);
report.addField("UNITS", com.openbravo.data.loader.Datas.DOUBLE);
report.addField("TOTAL", com.openbravo.data.loader.Datas.DOUBLE);
report;
Он выводит данные по обороту по клиенту.
Мне необходимо написать SQL запрос который бы брал данные по обороту клиента, в зависимости от суммы умножал его на некоторое значение (от 0 до 2000 - 0,02, от 2000 до 3000 - 0,03, от 3000 до 5000 0,04, более 5000 0,05) и записывал его в другую таблицу в рамках одной бд. Значение должно обновляться и перезаписываться каждый раз.
Данный запрос поставить в автоисполнение раз в месяц (каждого 5го числа) через тоад, или любой удобный Вам инструмент.
Кому интересно это скидочная программа.