Production:->Previous Year Production Comparison By Month
');
output.writeStartElement("html");
output.writeAttribute("xmlns", "http://www.w3.org/1999/xhtml");
output.writeStartElement("head");
output.writeTextElement("title", "Previous Year Production Comparison By Month");
output.writeEndElement();
output.writeStartElement("body");
output.writeTextElement("h1", "Previous Year Production Comparison By Month");
switch(unitBox.currentIndex)
{
case 0:
output.writeTextElement("p", "This report compares total roasted coffee production in kilograms with the previous year on a monthly basis.");
break;
case 1:
output.writeTextElement("p", "This report compares total roasted coffee production in pounds with the previous year on a monthly basis.");
break;
}
output.writeStartElement("table");
output.writeAttribute("style", "page-break-after:auto;");
output.writeAttribute("rules", "groups");
output.writeAttribute("cellpadding", "3px");
output.writeStartElement("thead");
output.writeStartElement("tr");
output.writeTextElement("th", "Month");
var query = new QSqlQuery();
query.exec("SELECT EXTRACT(YEAR FROM 'now'::date) AS current_year");
query.next();
var current_year = query.value(0);
output.writeTextElement("th", current_year-1);
output.writeTextElement("th", current_year);
output.writeTextElement("th", "Change");
output.writeEndElement();
output.writeEndElement();
output.writeStartElement("tbody");
var month_names = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var current_data = new Array();
var previous_data = new Array();
for(var i = 0; i < 12; i++) {
var q = "SELECT SUM(roasted_quantity) FROM roasting_log WHERE roasted_id IS NOT NULL AND time > '"
q += current_year;
q += "-";
q += 1+i;
q += "-01' AND time < '";
if(i == 11) {
q += 1+current_year;
} else {
q += current_year;
}
q += "-";
if(i == 11) {
q += "01"
} else {
q += 2+i;
}
q += "-01'";
query.exec(q);
query.next();
current_data.push(query.value(0));
}
for(var i = 0; i < 12; i++) {
var q = "SELECT SUM(roasted_quantity) FROM roasting_log WHERE roasted_id IS NOT NULL AND time > '"
q += current_year-1;
q += "-";
q += 1+i;
q += "-01' AND time < '";
if(i == 11) {
q += current_year;
} else {
q += current_year-1;
}
q += "-";
if(i == 11) {
q += "01"
} else {
q += 2+i;
}
q += "-01'";
query.exec(q);
query.next();
previous_data.push(query.value(0));
}
query = query.invalidate();
for(var i = 0; i < 12; i++) {
output.writeStartElement("tr");
output.writeTextElement("td", month_names[i]);
switch(unitBox.currentIndex)
{
case 0:
output.writeTextElement("td", Number(previous_data[i] / 2.2).toFixed(2));
output.writeTextElement("td", Number(current_data[i] / 2.2).toFixed(2));
output.writeTextElement("td", Number((current_data[i] - previous_data[i]) / 2.2).toFixed(2));
break;
case 1:
output.writeTextElement("td", Number(previous_data[i]).toFixed(2));
output.writeTextElement("td", Number(current_data[i]).toFixed(2));
output.writeTextElement("td", Number(current_data[i]-previous_data[i]).toFixed(2));
break;
}
output.writeEndElement();
}
output.writeEndElement();
output.writeStartElement("tfoot");
output.writeTextElement("th", "Totals");
var current_total = current_data.reduce(function(a,b) {return Number(a) + Number(b);}, 0);
var previous_total = previous_data.reduce(function(a,b) {return Number(a) + Number(b);}, 0);
switch(unitBox.currentIndex)
{
case 0:
output.writeTextElement("td", (previous_total/2.2).toFixed(2));
output.writeTextElement("td", (current_total/2.2).toFixed(2));
output.writeTextElement("td", ((current_total-previous_total)/2.2).toFixed(2));
break;
case 1:
output.writeTextElement("td", previous_total.toFixed(2));
output.writeTextElement("td", current_total.toFixed(2));
output.writeTextElement("td", (current_total-previous_total).toFixed(2));
break;
}
output.writeEndElement();
output.writeEndElement();
output.writeEndElement();
output.writeEndDocument();
view.setContent(buffer);
buffer.close();
}
refresh();
]]>