Production:->Production Summary
');
output.writeStartElement("html");
output.writeAttribute("xmlns", "http://www.w3.org/1999/xhtml");
output.writeStartElement("head");
output.writeTextElement("title", "Production Summary");
output.writeEndElement();
output.writeStartElement("body");
var dateRange = dateSelect.currentRange();
var startDate = dateRange[0];
var endDate = dateRange[dateRange.length - 1];
output.writeTextElement("h1", "Production Summary: " + startDate + " - " + endDate);
var conversion = 1;
var unitText = 'Lb';
if(unitBox.currentIndex == 0) {
conversion = 2.2;
unitText = 'Kg';
}
var transaction_filter;
var approval_filter;
switch(batchType.currentIndex) {
case 0:
transaction_filter = "";
break;
case 1:
transaction_filter = " AND transaction_type = 'ROAST'";
break;
case 2:
transaction_filter = " AND transaction_type = 'SAMPLEROAST'";
break;
}
switch(approval.currentIndex) {
case 0:
approval_filter = "";
break;
case 1:
approval_filter = " AND approval = true";
break;
case 2:
approval_filter = " AND approval = false";
break;
}
var query = new QSqlQuery();
query.prepare("SELECT count(1), sum(unroasted_total_quantity) / :c1, sum(roasted_quantity) / :c2 FROM roasting_log WHERE time >= :sd AND time < :ed ::date + interval '1 day'" + transaction_filter + approval_filter);
query.bind(":c1", conversion);
query.bind(":c2", conversion);
query.bind(":sd", startDate);
query.bind(":ed", endDate);
query.exec();
query.next();
var batchesRoasted = query.value(0);
var unroastedSum = query.value(1);
var roastedSum = query.value(2);
output.writeTextElement("p", "" + roastedSum + " " + unitText + " roasted from " + unroastedSum + " " + unitText + " green in " + batchesRoasted + " batches.");
query.prepare("SELECT time::date AS date, count(1), sum(unroasted_total_quantity) / :c1, sum(roasted_quantity) / :c2 FROM roasting_log WHERE time >= :sd AND time < :ed ::date + interval '1 day'" + transaction_filter + approval_filter + " GROUP BY date ORDER BY date ASC");
query.bind(":c1", conversion);
query.bind(":c2", conversion);
query.bind(":sd", startDate);
query.bind(":ed", endDate);
query.exec();
output.writeStartElement("table");
output.writeAttribute("rules", "groups");
output.writeAttribute("cellpadding", "3px");
output.writeStartElement("thead");
output.writeStartElement("tr");
output.writeTextElement("th", "Date");
output.writeTextElement("th", "Batches");
output.writeTextElement("th", "Unroasted (" + unitText + ")");
output.writeTextElement("th", "Roasted (" + unitText + ")");
output.writeEndElement();
output.writeEndElement();
output.writeStartElement("tbody");
while(query.next()) {
output.writeStartElement("tr");
output.writeStartElement("td");
output.writeStartElement("a");
output.writeAttribute("href", "typica://script/d" + query.value(0));
output.writeCDATA(query.value(0));
output.writeEndElement();
output.writeEndElement();
output.writeTextElement("td", query.value(1));
output.writeTextElement("td", query.value(2));
output.writeTextElement("td", query.value(3));
output.writeEndElement();
}
output.writeEndElement();
output.writeStartElement("tfoot");
output.writeStartElement("tr");
output.writeStartElement("td");
output.writeTextElement("strong", "Totals:");
output.writeEndElement();
output.writeTextElement("td", batchesRoasted);
output.writeTextElement("td", unroastedSum);
output.writeTextElement("td", roastedSum);
output.writeEndElement();
output.writeEndElement();
output.writeEndElement();
output.writeEndElement();
output.writeEndElement();
output.writeEndDocument();
view.setContent(buffer);
buffer.close();
query = query.invalidate();
}
refresh();
dateSelect.rangeUpdated.connect(refresh);
view.scriptLinkClicked.connect(function(url) {
var arg = url.slice(1, url.length).split("-");
var details = createReport("dailyproductiondetail.xml");
var selector = findChildObject(details, "reportdate");
selector.setDate(arg[0], arg[1], arg[2]);
});
]]>