Skip to content

Commit

Permalink
Merge branch 'release-1.6.3'
Browse files Browse the repository at this point in the history
  • Loading branch information
N3Roaster committed Jan 2, 2015
2 parents e3b8be8 + c257dc4 commit 5f84573
Show file tree
Hide file tree
Showing 68 changed files with 47,788 additions and 33,331 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ typica.c
*.pdf
*.scn
*.toc
Typica-build*
Typica-build*
*.o
2 changes: 1 addition & 1 deletion README
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Project web site: http://www.randomfield.com/programs/typica/

Typica is free software released under the MIT license as follows:

Copyright 2007-2013 Neal Evan Wilson
Copyright 2007-2015 Neal Evan Wilson

Permission is hereby granteed, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
56 changes: 54 additions & 2 deletions config/Reports/auco.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,10 @@
QSettings.setValue("script/report_unit", unitBox.currentIndex);
refresh();
});
var rowData = new Array();
var rowIndex;
function refresh() {
rowIndex = 0;
var buffer = new QBuffer;
buffer.open(3);
var output = new XmlWriter(buffer);
Expand Down Expand Up @@ -119,7 +122,15 @@
while(query.next())
{
output.writeStartElement("tr");
output.writeTextElement("td", query.value(0));
output.writeAttribute("id", "r" + rowIndex);
output.writeStartElement("td");
output.writeStartElement("a");
output.writeAttribute("href", "typica://script/r" + rowIndex);
rowIndex++;
rowData.push(query.value(0));
output.writeCharacters(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));
Expand All @@ -146,7 +157,15 @@
while(query.next())
{
output.writeStartElement("tr");
output.writeTextElement("td", query.value(0));
output.writeAttribute("id", "d" + rowIndex);
output.writeStartElement("td");
output.writeStartElement("a");
output.writeAttribute("href", "typica://script/d" + rowIndex);
rowIndex++;
rowData.push(query.value(0));
output.writeCharacters(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));
Expand All @@ -170,6 +189,39 @@
QSettings.setValue("auco_sort", sortBox.currentIndex);
refresh();
});
report.scriptLinkClicked.connect(function(url) {
var element = new WebElement(report.findFirstElement("#" + url));
var regular = url[0] == 'r';
var index = url.slice(1, url.length);
var tableref;
if(regular) {
tableref = "regular_coffees";
} else {
tableref = "decaf_coffees";
}
var origin = rowData[Number(url.slice(1, url.length))];
var details = '<tr><td /><td colspan="6"><table><tr><th>Id</th><th>Name</th><th>Rate</th><th>Inventory</th><th>First Use</th><th>Last Use</th></tr>';
var query = new QSqlQuery();
query.prepare("SELECT id, name, (rate/:conversion1)::numeric(12,3), (stock/:conversion2)::numeric(12,3), (SELECT min(time)::date FROM use WHERE item = id) AS first_use, (SELECT max(time)::date FROM use WHERE item = id) AS last_use FROM coffee_history WHERE origin = :origin AND id IN (SELECT id FROM " + tableref + ") ORDER BY first_use DESC");
var conversion = 1;
if(unitBox.currentIndex == 0) {
conversion = 2.2;
}
query.bind(":conversion1", conversion);
query.bind(":conversion2", conversion);
query.bind(":origin", origin);
query.exec();
while(query.next()) {
details += "<tr>";
for(var i = 0; i < 6; i++) {
details += "<td>" + query.value(i) + "</td>";
}
details += "</tr>";
}
query = query.invalidate();
details += "</table></td></tr>";
element.appendOutside(details);
});
]]>
</program>
</window>
25 changes: 24 additions & 1 deletion config/Reports/dailyproductiondetail.xml
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,12 @@
output.writeStartElement("tr");
output.writeTextElement("td", String(query.value(0)).split("T")[1]);
output.writeTextElement("td", query.value(2));
output.writeTextElement("td", query.value(11));
output.writeStartElement("td");
output.writeStartElement("a");
output.writeAttribute("href", "typica://script/p" + query.value(11).slice(1,-1));
output.writeCDATA(query.value(11));
output.writeEndElement();
output.writeEndElement();
var unroastedWeightsList = sqlToArray(query.value(5));
output.writeStartElement("td");
for(var i = 0; i < unroastedWeightsList.length; i++)
Expand Down Expand Up @@ -407,6 +412,24 @@
dateField.dateChanged.connect(function() {
refresh();
});
view.scriptLinkClicked.connect(function(url) {
var arg = url.slice(1, url.length);
var details = createWindow("batchDetails");
var fakeTable = new Object;
fakeTable.holding = new Array(7);
fakeTable.data = function(r, c) {
return this.holding[c];
};
var query = new QSqlQuery();
query.exec("SELECT time, machine, (SELECT name FROM items WHERE id = roasted_id) AS name, unroasted_total_quantity AS green, roasted_quantity AS roasted, ((unroasted_total_quantity - roasted_quantity) / unroasted_total_quantity * 100::numeric)::numeric(12,2) AS weight_loss, duration, annotation FROM roasting_log WHERE files = '{" + arg + "}'");
query.next();
for(var i = 0; i < 8; i++) {
fakeTable.holding[i] = query.value(i);
}
query = query.invalidate();
details.loadData(fakeTable, 0);
});
]]>
</program>
</window>
112 changes: 112 additions & 0 deletions config/Reports/greensales.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
<window id="greensales">
<reporttitle>Sales:->Green Coffee Sales</reporttitle>
<layout type="vertical">
<layout type="horizontal">
<daterange id="dates" initial="9" /><!-- Current Month to Date-->
<label>Weight Unit:</label>
<sqldrop id="unit" />
<stretch />
</layout>
<webview id="report" />
</layout>
<menu name="File">
<item id="print" shortcut="Ctrl+P">Print</item>
</menu>
<program>
<![CDATA[
this.windowTitle = "Typica - Green Coffee Sales";
var dateSelect = findChildObject(this, 'dates');
var dateQuery = new QSqlQuery();
dateQuery.exec("SELECT time::date FROM sale WHERE time = (SELECT min(time) FROM sale) OR time = (SELECT max(time) FROM sale) ORDER BY time ASC");
dateQuery.next();
var lifetimeStartDate = dateQuery.value(0);
var lifetimeEndDate;
if(dateQuery.next()) {
lifetimeEndDate = dateQuery.value(0);
} else {
lifetimeEndDate = lifetimeStartDate;
}
dateSelect.setLifetimeRange(lifetimeStartDate, lifetimeEndDate);
dateQuery = dateQuery.invalidate();
var unitBox = findChildObject(this, 'unit');
unitBox.addItem("Kg");
unitBox.addItem("Lb");
unitBox.currentIndex = QSettings.value("script/report_unit", 1);
unitBox['currentIndexChanged(int)'].connect(function() {
QSettings.setValue("script/report_unit", unitBox.currentIndex);
refresh();
});
var view = findChildObject(this, 'report');
var printMenu = findChildObject(this, 'print');
printMenu.triggered.connect(function() {
view.print();
});
var reportitems = new Array();
function refresh() {
var buffer = new QBuffer;
buffer.open(3);
var output = new XmlWriter(buffer);
var output = new XmlWriter(buffer);
output.writeStartDocument("1.0");
output.writeDTD('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg.dtd">');
output.writeStartElement("html");
output.writeAttribute("xmlns", "http://www.w3.org/1999/xhtml");
output.writeStartElement("head");
output.writeTextElement("title", "Green Coffee Sales");
output.writeEndElement();
output.writeStartElement("body");
var dateRange = dateSelect.currentRange();
var startDate = dateRange[0];
var endDate = dateRange[dateRange.length - 1];
output.writeTextElement("h1", "Green Coffee Sales: " + startDate + " - " + endDate);
var conversion = 1;
var unitText = 'Lb';
if(unitBox.currentIndex == 0) {
conversion = 2.2;
unitText = 'Kg';
}
var query = new QSqlQuery();
query.prepare("SELECT item, (SELECT name FROM coffees WHERE id = item) AS name, (SELECT origin FROM coffees WHERE id = item) AS origin, (SELECT reference FROM coffees WHERE id = item) AS reference, (SUM(quantity)/:conversion)::numeric(12,3) FROM sale WHERE time < :ed ::date + interval '1 day' AND time >= :sd GROUP BY item ORDER BY name ASC");
query.bind(":conversion", conversion);
query.bind(":ed", endDate);
query.bind(":sd", startDate);
query.exec();
output.writeStartElement("table");
output.writeAttribute("rules", "groups");
output.writeAttribute("cellpadding", "3px");
output.writeStartElement("thead");
output.writeStartElement("tr");
output.writeTextElement("th", "ID"); // 0
output.writeTextElement("th", "Coffee"); // 1
output.writeTextElement("th", "Origin"); // 2
output.writeTextElement("th", "Reference"); // 3
output.writeTextElement("th", "Quantity"); // 4
output.writeEndElement();
output.writeEndElement();
output.writeStartElement("tbody");
while(query.next()) {
output.writeStartElement("tr");
output.writeAttribute("id", "r"+query.value(0));
reportitems.push(query.value(0));
output.writeTextElement("td", query.value(0));
output.writeTextElement("td", query.value(1));
output.writeTextElement("td", query.value(2));
output.writeTextElement("td", query.value(3));
output.writeTextElement("td", query.value(4));
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);
]]>
</program>
</window>

Loading

0 comments on commit 5f84573

Please sign in to comment.