| 
				
			 | 
			
			
				
				@@ -2,6 +2,7 @@ 
			 | 
		
		
	
		
			
			| 
				2
			 | 
			
				2
			 | 
			
			
				
				 	<reporttitle>Production:->Average Use and Cost by Origin</reporttitle> 
			 | 
		
		
	
		
			
			| 
				3
			 | 
			
				3
			 | 
			
			
				
				     <layout type="vertical"> 
			 | 
		
		
	
		
			
			| 
				4
			 | 
			
				4
			 | 
			
			
				
				         <layout type="horizontal"> 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				5
			 | 
			
			
				
				+            <daterange id="dates" initial="23" /><!-- Lifetime --> 
			 | 
		
		
	
		
			
			| 
				5
			 | 
			
				6
			 | 
			
			
				
				             <label>Sort Order:</label> 
			 | 
		
		
	
		
			
			| 
				6
			 | 
			
				7
			 | 
			
			
				
				             <sqldrop id="sort" /> 
			 | 
		
		
	
		
			
			| 
				7
			 | 
			
				8
			 | 
			
			
				
				 			<label>Weight Unit:</label> 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -29,18 +30,36 @@ 
			 | 
		
		
	
		
			
			| 
				29
			 | 
			
				30
			 | 
			
			
				
				             sortBox.addItem("Avg. Cost Ascending"); 
			 | 
		
		
	
		
			
			| 
				30
			 | 
			
				31
			 | 
			
			
				
				             sortBox.addItem("Avg. Cost Descending"); 
			 | 
		
		
	
		
			
			| 
				31
			 | 
			
				32
			 | 
			
			
				
				             sortBox.currentIndex = QSettings.value("auco_sort", 0); 
			 | 
		
		
	
		
			
			| 
				32
			 | 
			
				
			 | 
			
			
				
				-			var unitBox = findChildObject(this, 'unit'); 
			 | 
		
		
	
		
			
			| 
				33
			 | 
			
				
			 | 
			
			
				
				-			unitBox.addItem("Kg"); 
			 | 
		
		
	
		
			
			| 
				34
			 | 
			
				
			 | 
			
			
				
				-			unitBox.addItem("Lb"); 
			 | 
		
		
	
		
			
			| 
				35
			 | 
			
				
			 | 
			
			
				
				-			unitBox.currentIndex = QSettings.value("script/report_unit", 1); 
			 | 
		
		
	
		
			
			| 
				36
			 | 
			
				
			 | 
			
			
				
				-			unitBox['currentIndexChanged(int)'].connect(function() { 
			 | 
		
		
	
		
			
			| 
				37
			 | 
			
				
			 | 
			
			
				
				-				QSettings.setValue("script/report_unit", unitBox.currentIndex); 
			 | 
		
		
	
		
			
			| 
				38
			 | 
			
				
			 | 
			
			
				
				-				refresh(); 
			 | 
		
		
	
		
			
			| 
				39
			 | 
			
				
			 | 
			
			
				
				-			}); 
			 | 
		
		
	
		
			
			| 
				40
			 | 
			
				
			 | 
			
			
				
				-			var rowData = new Array(); 
			 | 
		
		
	
		
			
			| 
				41
			 | 
			
				
			 | 
			
			
				
				-			var rowIndex; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				33
			 | 
			
			
				
				+            var unitBox = findChildObject(this, 'unit'); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				34
			 | 
			
			
				
				+            unitBox.addItem("Kg"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				35
			 | 
			
			
				
				+            unitBox.addItem("Lb"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				36
			 | 
			
			
				
				+            unitBox.currentIndex = QSettings.value("script/report_unit", 1); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				37
			 | 
			
			
				
				+            unitBox['currentIndexChanged(int)'].connect(function() { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				38
			 | 
			
			
				
				+                QSettings.setValue("script/report_unit", unitBox.currentIndex); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				39
			 | 
			
			
				
				+                refresh(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				40
			 | 
			
			
				
				+            }); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				41
			 | 
			
			
				
				+            var dateSelect = findChildObject(this, 'dates'); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				42
			 | 
			
			
				
				+            var dateQuery = new QSqlQuery; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				43
			 | 
			
			
				
				+            dateQuery.exec("SELECT time::date FROM transactions WHERE time = (SELECT min(time) FROM transactions) OR time = (SELECT max(time) FROM transactions) ORDER BY time ASC"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				44
			 | 
			
			
				
				+            dateQuery.next(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				45
			 | 
			
			
				
				+            var lifetimeStartDate = dateQuery.value(0); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				46
			 | 
			
			
				
				+            var lifetimeEndDate; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				47
			 | 
			
			
				
				+            if(dateQuery.next()) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				48
			 | 
			
			
				
				+                lifetimeEndDate = dateQuery.value(0); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				49
			 | 
			
			
				
				+            } else { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				50
			 | 
			
			
				
				+                lifetimeEndDate = lifetimeStartDate; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				51
			 | 
			
			
				
				+            } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				52
			 | 
			
			
				
				+            dateSelect.setLifetimeRange(lifetimeStartDate, lifetimeEndDate); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				53
			 | 
			
			
				
				+            dateQuery = dateQuery.invalidate(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				54
			 | 
			
			
				
				+            dateSelect.rangeUpdated.connect(refresh); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				55
			 | 
			
			
				
				+            var rowData = new Array(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				56
			 | 
			
			
				
				+            var rowIndex; 
			 | 
		
		
	
		
			
			| 
				42
			 | 
			
				57
			 | 
			
			
				
				             function refresh() { 
			 | 
		
		
	
		
			
			| 
				43
			 | 
			
				
			 | 
			
			
				
				-				rowIndex = 0; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				58
			 | 
			
			
				
				+                rowData.length = 0; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				59
			 | 
			
			
				
				+                var dateRange = dateSelect.currentRange(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				60
			 | 
			
			
				
				+                var startDate = dateRange[0]; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				61
			 | 
			
			
				
				+                var endDate = dateRange[dateRange.length - 1]; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				62
			 | 
			
			
				
				+                rowIndex = 0; 
			 | 
		
		
	
		
			
			| 
				44
			 | 
			
				63
			 | 
			
			
				
				                 var buffer = new QBuffer; 
			 | 
		
		
	
		
			
			| 
				45
			 | 
			
				64
			 | 
			
			
				
				                 buffer.open(3); 
			 | 
		
		
	
		
			
			| 
				46
			 | 
			
				65
			 | 
			
			
				
				                 var output = new XmlWriter(buffer); 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -52,23 +71,23 @@ 
			 | 
		
		
	
		
			
			| 
				52
			 | 
			
				71
			 | 
			
			
				
				                 output.writeTextElement("title", "Recent Use and Cost by Origin"); 
			 | 
		
		
	
		
			
			| 
				53
			 | 
			
				72
			 | 
			
			
				
				                 output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				54
			 | 
			
				73
			 | 
			
			
				
				                 output.writeStartElement("body"); 
			 | 
		
		
	
		
			
			| 
				55
			 | 
			
				
			 | 
			
			
				
				-                output.writeTextElement("h1", "Average Use and Cost by Origin"); 
			 | 
		
		
	
		
			
			| 
				56
			 | 
			
				
			 | 
			
			
				
				-				switch(unitBox.currentIndex) 
			 | 
		
		
	
		
			
			| 
				57
			 | 
			
				
			 | 
			
			
				
				-				{ 
			 | 
		
		
	
		
			
			| 
				58
			 | 
			
				
			 | 
			
			
				
				-					case 0: 
			 | 
		
		
	
		
			
			| 
				59
			 | 
			
				
			 | 
			
			
				
				-						output.writeTextElement("p", "This is a report of average rate of use in kilograms per day and cost of unroasted coffee."); 
			 | 
		
		
	
		
			
			| 
				60
			 | 
			
				
			 | 
			
			
				
				-						break; 
			 | 
		
		
	
		
			
			| 
				61
			 | 
			
				
			 | 
			
			
				
				-					case 1: 
			 | 
		
		
	
		
			
			| 
				62
			 | 
			
				
			 | 
			
			
				
				-						output.writeTextElement("p", "This is a report of average rate of use in pounds per day and cost of unroasted coffee."); 
			 | 
		
		
	
		
			
			| 
				63
			 | 
			
				
			 | 
			
			
				
				-						break; 
			 | 
		
		
	
		
			
			| 
				64
			 | 
			
				
			 | 
			
			
				
				-				} 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				74
			 | 
			
			
				
				+                output.writeTextElement("h1", "Average Use and Cost by Origin " + startDate + " - " + endDate); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				75
			 | 
			
			
				
				+                switch(unitBox.currentIndex) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				76
			 | 
			
			
				
				+                { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				77
			 | 
			
			
				
				+                    case 0: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				78
			 | 
			
			
				
				+                        output.writeTextElement("p", "This is a report of average rate of use in kilograms per day and cost of unroasted coffee."); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				79
			 | 
			
			
				
				+                            break; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				80
			 | 
			
			
				
				+                    case 1: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				81
			 | 
			
			
				
				+                        output.writeTextElement("p", "This is a report of average rate of use in pounds per day and cost of unroasted coffee."); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				82
			 | 
			
			
				
				+                    break; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				83
			 | 
			
			
				
				+                } 
			 | 
		
		
	
		
			
			| 
				65
			 | 
			
				84
			 | 
			
			
				
				                 output.writeStartElement("table"); 
			 | 
		
		
	
		
			
			| 
				66
			 | 
			
				85
			 | 
			
			
				
				                 output.writeAttribute("rules", "groups"); 
			 | 
		
		
	
		
			
			| 
				67
			 | 
			
				86
			 | 
			
			
				
				                 output.writeAttribute("cellpadding", "3px"); 
			 | 
		
		
	
		
			
			| 
				68
			 | 
			
				87
			 | 
			
			
				
				                 output.writeStartElement("thead"); 
			 | 
		
		
	
		
			
			| 
				69
			 | 
			
				88
			 | 
			
			
				
				                 output.writeStartElement("tr"); 
			 | 
		
		
	
		
			
			| 
				70
			 | 
			
				89
			 | 
			
			
				
				                 output.writeStartElement("th"); 
			 | 
		
		
	
		
			
			| 
				71
			 | 
			
				
			 | 
			
			
				
				-                output.writeAttribute("colspan", "8"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				90
			 | 
			
			
				
				+                output.writeAttribute("colspan", "9"); 
			 | 
		
		
	
		
			
			| 
				72
			 | 
			
				91
			 | 
			
			
				
				                 output.writeCharacters("Regular Coffees"); 
			 | 
		
		
	
		
			
			| 
				73
			 | 
			
				92
			 | 
			
			
				
				                 output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				74
			 | 
			
				93
			 | 
			
			
				
				                 output.writeEndElement(); 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -76,106 +95,109 @@ 
			 | 
		
		
	
		
			
			| 
				76
			 | 
			
				95
			 | 
			
			
				
				                 output.writeTextElement("th", "Origin"); 
			 | 
		
		
	
		
			
			| 
				77
			 | 
			
				96
			 | 
			
			
				
				                 output.writeTextElement("th", "Avg. Rate"); 
			 | 
		
		
	
		
			
			| 
				78
			 | 
			
				97
			 | 
			
			
				
				                 output.writeTextElement("th", "Avg. Cost"); 
			 | 
		
		
	
		
			
			| 
				79
			 | 
			
				
			 | 
			
			
				
				-				output.writeTextElement("th", "Last Cost"); 
			 | 
		
		
	
		
			
			| 
				80
			 | 
			
				
			 | 
			
			
				
				-				output.writeTextElement("th", "Last Purchase Date"); 
			 | 
		
		
	
		
			
			| 
				81
			 | 
			
				
			 | 
			
			
				
				-				output.writeTextElement("th", "Bag Size (min)"); 
			 | 
		
		
	
		
			
			| 
				82
			 | 
			
				
			 | 
			
			
				
				-				output.writeTextElement("th", "Bag Size (max)"); 
			 | 
		
		
	
		
			
			| 
				83
			 | 
			
				
			 | 
			
			
				
				-				output.writeTextElement("th", "Bag Size (mean)"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				98
			 | 
			
			
				
				+                output.writeTextElement("th", "Last Cost"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				99
			 | 
			
			
				
				+                output.writeTextElement("th", "Last Purchase Date"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				100
			 | 
			
			
				
				+                output.writeTextElement("th", "Bag Size (min)"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				101
			 | 
			
			
				
				+                output.writeTextElement("th", "Bag Size (max)"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				102
			 | 
			
			
				
				+                output.writeTextElement("th", "Bag Size (mean)"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				103
			 | 
			
			
				
				+                output.writeTextElement("th", "Purchases"); 
			 | 
		
		
	
		
			
			| 
				84
			 | 
			
				104
			 | 
			
			
				
				                 output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				85
			 | 
			
				105
			 | 
			
			
				
				                 output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				86
			 | 
			
				106
			 | 
			
			
				
				                 output.writeStartElement("tbody"); 
			 | 
		
		
	
		
			
			| 
				87
			 | 
			
				107
			 | 
			
			
				
				                 var query = new QSqlQuery(); 
			 | 
		
		
	
		
			
			| 
				88
			 | 
			
				
			 | 
			
			
				
				-				var conversion = 1; 
			 | 
		
		
	
		
			
			| 
				89
			 | 
			
				
			 | 
			
			
				
				-				if(unitBox.currentIndex == 0) { 
			 | 
		
		
	
		
			
			| 
				90
			 | 
			
				
			 | 
			
			
				
				-					conversion = 2.2; 
			 | 
		
		
	
		
			
			| 
				91
			 | 
			
				
			 | 
			
			
				
				-				} 
			 | 
		
		
	
		
			
			| 
				92
			 | 
			
				
			 | 
			
			
				
				-				var orderClause; 
			 | 
		
		
	
		
			
			| 
				93
			 | 
			
				
			 | 
			
			
				
				-				switch(sortBox.currentIndex) 
			 | 
		
		
	
		
			
			| 
				94
			 | 
			
				
			 | 
			
			
				
				-				{ 
			 | 
		
		
	
		
			
			| 
				95
			 | 
			
				
			 | 
			
			
				
				-					case 0: 
			 | 
		
		
	
		
			
			| 
				96
			 | 
			
				
			 | 
			
			
				
				-						orderClause = "origin ASC"; 
			 | 
		
		
	
		
			
			| 
				97
			 | 
			
				
			 | 
			
			
				
				-						break; 
			 | 
		
		
	
		
			
			| 
				98
			 | 
			
				
			 | 
			
			
				
				-					case 1: 
			 | 
		
		
	
		
			
			| 
				99
			 | 
			
				
			 | 
			
			
				
				-						orderClause = "origin DESC"; 
			 | 
		
		
	
		
			
			| 
				100
			 | 
			
				
			 | 
			
			
				
				-						break; 
			 | 
		
		
	
		
			
			| 
				101
			 | 
			
				
			 | 
			
			
				
				-					case 2: 
			 | 
		
		
	
		
			
			| 
				102
			 | 
			
				
			 | 
			
			
				
				-						orderClause = "rate ASC"; 
			 | 
		
		
	
		
			
			| 
				103
			 | 
			
				
			 | 
			
			
				
				-						break; 
			 | 
		
		
	
		
			
			| 
				104
			 | 
			
				
			 | 
			
			
				
				-					case 3: 
			 | 
		
		
	
		
			
			| 
				105
			 | 
			
				
			 | 
			
			
				
				-						orderClause = "rate DESC"; 
			 | 
		
		
	
		
			
			| 
				106
			 | 
			
				
			 | 
			
			
				
				-						break; 
			 | 
		
		
	
		
			
			| 
				107
			 | 
			
				
			 | 
			
			
				
				-					case 4: 
			 | 
		
		
	
		
			
			| 
				108
			 | 
			
				
			 | 
			
			
				
				-						orderClause = "cost ASC"; 
			 | 
		
		
	
		
			
			| 
				109
			 | 
			
				
			 | 
			
			
				
				-						break; 
			 | 
		
		
	
		
			
			| 
				110
			 | 
			
				
			 | 
			
			
				
				-					case 5: 
			 | 
		
		
	
		
			
			| 
				111
			 | 
			
				
			 | 
			
			
				
				-						orderClause = "cost DESC"; 
			 | 
		
		
	
		
			
			| 
				112
			 | 
			
				
			 | 
			
			
				
				-						break; 
			 | 
		
		
	
		
			
			| 
				113
			 | 
			
				
			 | 
			
			
				
				-				} 
			 | 
		
		
	
		
			
			| 
				114
			 | 
			
				
			 | 
			
			
				
				-				query.prepare("SELECT DISTINCT origin, (avg(rate)/:conversion)::numeric(10,2) AS rate, (SELECT avg(cost)*:conversion2 FROM purchase WHERE item IN (SELECT id FROM regular_coffees WHERE origin = coffee_history.origin))::numeric(10,2) AS cost, (SELECT avg(cost)*:conversion3 FROM purchase WHERE item IN (SELECT id FROM regular_coffees WHERE origin = coffee_history.origin) AND time = (SELECT max(time) FROM purchase WHERE item IN (SELECT id FROM regular_coffees WHERE origin = coffee_history.origin))), (SELECT max(time)::date FROM purchase WHERE item IN (SELECT id FROM regular_coffees WHERE origin = coffee_history.origin)), (SELECT min(conversion)/:conversion4 FROM lb_bag_conversion WHERE item IN (SELECT id FROM regular_coffees WHERE origin = coffee_history.origin))::numeric(10,2) AS minbag, (SELECT max(conversion)/:conversion5 FROM lb_bag_conversion WHERE item IN (SELECT id FROM regular_coffees WHERE origin = coffee_history.origin))::numeric(10,2) AS maxbag, (SELECT avg(conversion)/:conversion6 FROM lb_bag_conversion WHERE item IN (SELECT id FROM regular_coffees WHERE origin = coffee_history.origin))::numeric(10,2) AS meanbag FROM coffee_history WHERE id IN (SELECT id FROM regular_coffees) GROUP BY origin ORDER BY " + orderClause); 
			 | 
		
		
	
		
			
			| 
				115
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion", conversion); 
			 | 
		
		
	
		
			
			| 
				116
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion2", conversion); 
			 | 
		
		
	
		
			
			| 
				117
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion3", conversion); 
			 | 
		
		
	
		
			
			| 
				118
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion4", conversion); 
			 | 
		
		
	
		
			
			| 
				119
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion5", conversion); 
			 | 
		
		
	
		
			
			| 
				120
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion6", conversion); 
			 | 
		
		
	
		
			
			| 
				121
			 | 
			
				
			 | 
			
			
				
				-				query.exec(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				108
			 | 
			
			
				
				+                var conversion = 1; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				109
			 | 
			
			
				
				+                if(unitBox.currentIndex == 0) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				110
			 | 
			
			
				
				+                    conversion = 2.2; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				111
			 | 
			
			
				
				+                } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				112
			 | 
			
			
				
				+                var orderClause; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				113
			 | 
			
			
				
				+                switch(sortBox.currentIndex) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				114
			 | 
			
			
				
				+                { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				115
			 | 
			
			
				
				+                    case 0: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				116
			 | 
			
			
				
				+                        orderClause = "origin ASC"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				117
			 | 
			
			
				
				+                        break; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				118
			 | 
			
			
				
				+                    case 1: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				119
			 | 
			
			
				
				+                        orderClause = "origin DESC"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				120
			 | 
			
			
				
				+                        break; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				121
			 | 
			
			
				
				+                    case 2: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				122
			 | 
			
			
				
				+                        orderClause = "rate ASC"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				123
			 | 
			
			
				
				+                        break; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				124
			 | 
			
			
				
				+                    case 3: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				125
			 | 
			
			
				
				+                        orderClause = "rate DESC"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				126
			 | 
			
			
				
				+                        break; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				127
			 | 
			
			
				
				+                    case 4: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				128
			 | 
			
			
				
				+                        orderClause = "cost ASC"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				129
			 | 
			
			
				
				+                        break; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				130
			 | 
			
			
				
				+                    case 5: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				131
			 | 
			
			
				
				+                        orderClause = "cost DESC"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				132
			 | 
			
			
				
				+                        break; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				133
			 | 
			
			
				
				+                } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				134
			 | 
			
			
				
				+                query.prepare("WITH q AS (SELECT id, origin, rate/:c1 AS rate, (SELECT cost*:c2 FROM purchase WHERE item = id) AS cost, (SELECT min(time) FROM purchase WHERE item = id) AS purchase_time, (SELECT conversion/:c3 FROM lb_bag_conversion WHERE item = id) AS bag_weight FROM coffee_history WHERE id IN (SELECT id FROM regular_coffees) AND id IN (SELECT item FROM transactions WHERE time >= :startDate AND time < :endDate::date + interval '1 day')) SELECT DISTINCT origin, avg(rate)::numeric(10,2) AS rate, avg(cost)::numeric(10,2) AS cost, (SELECT (cost*:c4)::numeric(10,2) FROM purchase WHERE item = max(q.id)) AS last_cost, max(purchase_time)::date AS last_purchase, min(bag_weight)::numeric(10,2) AS min_weight, max(bag_weight)::numeric(10,2) AS max_weight, avg(bag_weight)::numeric(10,2) AS mean_weight, count(1) AS n FROM q GROUP BY origin ORDER BY " + orderClause); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				135
			 | 
			
			
				
				+                query.bind(":c1", conversion); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				136
			 | 
			
			
				
				+                query.bind(":c2", conversion); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				137
			 | 
			
			
				
				+                query.bind(":c3", conversion); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				138
			 | 
			
			
				
				+                query.bind(":c4", conversion); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				139
			 | 
			
			
				
				+                query.bind(":startDate", startDate); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				140
			 | 
			
			
				
				+                query.bind(":endDate", endDate); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				141
			 | 
			
			
				
				+                query.exec(); 
			 | 
		
		
	
		
			
			| 
				122
			 | 
			
				142
			 | 
			
			
				
				                 while(query.next()) 
			 | 
		
		
	
		
			
			| 
				123
			 | 
			
				143
			 | 
			
			
				
				                 { 
			 | 
		
		
	
		
			
			| 
				124
			 | 
			
				144
			 | 
			
			
				
				                     output.writeStartElement("tr"); 
			 | 
		
		
	
		
			
			| 
				125
			 | 
			
				
			 | 
			
			
				
				-					output.writeAttribute("id", "r" + rowIndex); 
			 | 
		
		
	
		
			
			| 
				126
			 | 
			
				
			 | 
			
			
				
				-					output.writeStartElement("td"); 
			 | 
		
		
	
		
			
			| 
				127
			 | 
			
				
			 | 
			
			
				
				-					output.writeStartElement("a"); 
			 | 
		
		
	
		
			
			| 
				128
			 | 
			
				
			 | 
			
			
				
				-					output.writeAttribute("href", "typica://script/r" + rowIndex); 
			 | 
		
		
	
		
			
			| 
				129
			 | 
			
				
			 | 
			
			
				
				-					rowIndex++; 
			 | 
		
		
	
		
			
			| 
				130
			 | 
			
				
			 | 
			
			
				
				-					rowData.push(query.value(0)); 
			 | 
		
		
	
		
			
			| 
				131
			 | 
			
				
			 | 
			
			
				
				-					output.writeCharacters(query.value(0)); 
			 | 
		
		
	
		
			
			| 
				132
			 | 
			
				
			 | 
			
			
				
				-					output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				133
			 | 
			
				
			 | 
			
			
				
				-					output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				145
			 | 
			
			
				
				+                    output.writeAttribute("id", "r" + rowIndex); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				146
			 | 
			
			
				
				+                    output.writeStartElement("td"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				147
			 | 
			
			
				
				+                    output.writeStartElement("a"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				148
			 | 
			
			
				
				+                    output.writeAttribute("href", "typica://script/r" + rowIndex); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				149
			 | 
			
			
				
				+                    rowIndex++; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				150
			 | 
			
			
				
				+                    rowData.push(query.value(0)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				151
			 | 
			
			
				
				+                    output.writeCharacters(query.value(0)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				152
			 | 
			
			
				
				+                    output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				153
			 | 
			
			
				
				+                    output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				134
			 | 
			
				154
			 | 
			
			
				
				                     output.writeTextElement("td", query.value(1)); 
			 | 
		
		
	
		
			
			| 
				135
			 | 
			
				155
			 | 
			
			
				
				                     output.writeTextElement("td", query.value(2)); 
			 | 
		
		
	
		
			
			| 
				136
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", query.value(3)); 
			 | 
		
		
	
		
			
			| 
				137
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", query.value(4)); 
			 | 
		
		
	
		
			
			| 
				138
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", query.value(5)); 
			 | 
		
		
	
		
			
			| 
				139
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", query.value(6)); 
			 | 
		
		
	
		
			
			| 
				140
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", query.value(7)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				156
			 | 
			
			
				
				+                    output.writeTextElement("td", query.value(3)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				157
			 | 
			
			
				
				+                    output.writeTextElement("td", query.value(4)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				158
			 | 
			
			
				
				+                    output.writeTextElement("td", query.value(5)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				159
			 | 
			
			
				
				+                    output.writeTextElement("td", query.value(6)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				160
			 | 
			
			
				
				+                    output.writeTextElement("td", query.value(7)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				161
			 | 
			
			
				
				+                    output.writeTextElement("td", query.value(8)); 
			 | 
		
		
	
		
			
			| 
				141
			 | 
			
				162
			 | 
			
			
				
				                     output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				142
			 | 
			
				163
			 | 
			
			
				
				                 } 
			 | 
		
		
	
		
			
			| 
				143
			 | 
			
				164
			 | 
			
			
				
				                 output.writeStartElement("tr"); 
			 | 
		
		
	
		
			
			| 
				144
			 | 
			
				165
			 | 
			
			
				
				                 output.writeStartElement("th"); 
			 | 
		
		
	
		
			
			| 
				145
			 | 
			
				
			 | 
			
			
				
				-                output.writeAttribute("colspan", "8"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				166
			 | 
			
			
				
				+                output.writeAttribute("colspan", "9"); 
			 | 
		
		
	
		
			
			| 
				146
			 | 
			
				167
			 | 
			
			
				
				                 output.writeCharacters("Decaffeinated Coffees"); 
			 | 
		
		
	
		
			
			| 
				147
			 | 
			
				168
			 | 
			
			
				
				                 output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				148
			 | 
			
				169
			 | 
			
			
				
				                 output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				149
			 | 
			
				
			 | 
			
			
				
				-				query.prepare("SELECT DISTINCT origin, (avg(rate)/:conversion)::numeric(10,2) AS rate, (SELECT avg(cost)*:conversion2 FROM purchase WHERE item IN (SELECT id FROM decaf_coffees WHERE origin = coffee_history.origin))::numeric(10,2) AS cost, (SELECT avg(cost)*:conversion3 FROM purchase WHERE item IN (SELECT id FROM decaf_coffees WHERE origin = coffee_history.origin) AND time = (SELECT max(time) FROM purchase WHERE item IN (SELECT id FROM decaf_coffees WHERE origin = coffee_history.origin))), (SELECT max(time)::date FROM purchase WHERE item IN (SELECT id FROM decaf_coffees WHERE origin = coffee_history.origin)), (SELECT min(conversion)/:conversion4 FROM lb_bag_conversion WHERE item IN (SELECT id FROM decaf_coffees WHERE origin = coffee_history.origin))::numeric(10,2) AS minbag, (SELECT max(conversion)/:conversion5 FROM lb_bag_conversion WHERE item IN (SELECT id FROM decaf_coffees WHERE origin = coffee_history.origin))::numeric(10,2) AS maxbag, (SELECT avg(conversion)/:conversion6 FROM lb_bag_conversion WHERE item IN (SELECT id FROM decaf_coffees WHERE origin = coffee_history.origin))::numeric(10,2) AS meanbag FROM coffee_history WHERE id IN (SELECT id FROM decaf_coffees) GROUP BY origin ORDER BY " + orderClause); 
			 | 
		
		
	
		
			
			| 
				150
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion", conversion); 
			 | 
		
		
	
		
			
			| 
				151
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion2", conversion); 
			 | 
		
		
	
		
			
			| 
				152
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion3", conversion); 
			 | 
		
		
	
		
			
			| 
				153
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion4", conversion); 
			 | 
		
		
	
		
			
			| 
				154
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion5", conversion); 
			 | 
		
		
	
		
			
			| 
				155
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion6", conversion); 
			 | 
		
		
	
		
			
			| 
				156
			 | 
			
				
			 | 
			
			
				
				-				query.exec(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				170
			 | 
			
			
				
				+                query.prepare("WITH q AS (SELECT id, origin, rate/:c1 AS rate, (SELECT cost*:c2 FROM purchase WHERE item = id) AS cost, (SELECT min(time) FROM purchase WHERE item = id) AS purchase_time, (SELECT conversion/:c3 FROM lb_bag_conversion WHERE item = id) AS bag_weight FROM coffee_history WHERE id IN (SELECT id FROM decaf_coffees) AND id IN (SELECT item FROM transactions WHERE time >= :startDate AND time < :endDate::date + interval '1 day')) SELECT DISTINCT origin, avg(rate)::numeric(10,2) AS rate, avg(cost)::numeric(10,2) AS cost, (SELECT (cost*:c4)::numeric(10,2) FROM purchase WHERE item = max(q.id)) AS last_cost, max(purchase_time)::date AS last_purchase, min(bag_weight)::numeric(10,2) AS min_weight, max(bag_weight)::numeric(10,2) AS max_weight, avg(bag_weight)::numeric(10,2) AS mean_weight, count(1) AS n FROM q GROUP BY origin ORDER BY " + orderClause); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				171
			 | 
			
			
				
				+                query.bind(":c1", conversion); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				172
			 | 
			
			
				
				+                query.bind(":c2", conversion); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				173
			 | 
			
			
				
				+                query.bind(":c3", conversion); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				174
			 | 
			
			
				
				+                query.bind(":c4", conversion); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				175
			 | 
			
			
				
				+                query.bind(":startDate", startDate); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				176
			 | 
			
			
				
				+                query.bind(":endDate", endDate); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				177
			 | 
			
			
				
				+                query.exec(); 
			 | 
		
		
	
		
			
			| 
				157
			 | 
			
				178
			 | 
			
			
				
				                 while(query.next()) 
			 | 
		
		
	
		
			
			| 
				158
			 | 
			
				179
			 | 
			
			
				
				                 { 
			 | 
		
		
	
		
			
			| 
				159
			 | 
			
				180
			 | 
			
			
				
				                     output.writeStartElement("tr"); 
			 | 
		
		
	
		
			
			| 
				160
			 | 
			
				
			 | 
			
			
				
				-					output.writeAttribute("id", "d" + rowIndex); 
			 | 
		
		
	
		
			
			| 
				161
			 | 
			
				
			 | 
			
			
				
				-					output.writeStartElement("td"); 
			 | 
		
		
	
		
			
			| 
				162
			 | 
			
				
			 | 
			
			
				
				-					output.writeStartElement("a"); 
			 | 
		
		
	
		
			
			| 
				163
			 | 
			
				
			 | 
			
			
				
				-					output.writeAttribute("href", "typica://script/d" + rowIndex); 
			 | 
		
		
	
		
			
			| 
				164
			 | 
			
				
			 | 
			
			
				
				-					rowIndex++; 
			 | 
		
		
	
		
			
			| 
				165
			 | 
			
				
			 | 
			
			
				
				-					rowData.push(query.value(0)); 
			 | 
		
		
	
		
			
			| 
				166
			 | 
			
				
			 | 
			
			
				
				-					output.writeCharacters(query.value(0)); 
			 | 
		
		
	
		
			
			| 
				167
			 | 
			
				
			 | 
			
			
				
				-					output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				168
			 | 
			
				
			 | 
			
			
				
				-					output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				181
			 | 
			
			
				
				+                    output.writeAttribute("id", "d" + rowIndex); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				182
			 | 
			
			
				
				+                    output.writeStartElement("td"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				183
			 | 
			
			
				
				+                    output.writeStartElement("a"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				184
			 | 
			
			
				
				+                    output.writeAttribute("href", "typica://script/d" + rowIndex); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				185
			 | 
			
			
				
				+                    rowIndex++; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				186
			 | 
			
			
				
				+                    rowData.push(query.value(0)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				187
			 | 
			
			
				
				+                    output.writeCharacters(query.value(0)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				188
			 | 
			
			
				
				+                    output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				189
			 | 
			
			
				
				+                    output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				169
			 | 
			
				190
			 | 
			
			
				
				                     output.writeTextElement("td", query.value(1)); 
			 | 
		
		
	
		
			
			| 
				170
			 | 
			
				191
			 | 
			
			
				
				                     output.writeTextElement("td", query.value(2)); 
			 | 
		
		
	
		
			
			| 
				171
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", query.value(3)); 
			 | 
		
		
	
		
			
			| 
				172
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", query.value(4)); 
			 | 
		
		
	
		
			
			| 
				173
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", query.value(5)); 
			 | 
		
		
	
		
			
			| 
				174
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", query.value(6)); 
			 | 
		
		
	
		
			
			| 
				175
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", query.value(7)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				192
			 | 
			
			
				
				+                    output.writeTextElement("td", query.value(3)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				193
			 | 
			
			
				
				+                    output.writeTextElement("td", query.value(4)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				194
			 | 
			
			
				
				+                    output.writeTextElement("td", query.value(5)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				195
			 | 
			
			
				
				+                    output.writeTextElement("td", query.value(6)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				196
			 | 
			
			
				
				+                    output.writeTextElement("td", query.value(7)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				197
			 | 
			
			
				
				+                    output.writeTextElement("td", query.value(8)); 
			 | 
		
		
	
		
			
			| 
				176
			 | 
			
				198
			 | 
			
			
				
				                     output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				177
			 | 
			
				199
			 | 
			
			
				
				                 } 
			 | 
		
		
	
		
			
			| 
				178
			 | 
			
				
			 | 
			
			
				
				-				query = query.invalidate(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				200
			 | 
			
			
				
				+                query = query.invalidate(); 
			 | 
		
		
	
		
			
			| 
				179
			 | 
			
				201
			 | 
			
			
				
				                 output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				180
			 | 
			
				202
			 | 
			
			
				
				                 output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				181
			 | 
			
				203
			 | 
			
			
				
				                 output.writeEndElement(); 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -189,39 +211,53 @@ 
			 | 
		
		
	
		
			
			| 
				189
			 | 
			
				211
			 | 
			
			
				
				                 QSettings.setValue("auco_sort", sortBox.currentIndex); 
			 | 
		
		
	
		
			
			| 
				190
			 | 
			
				212
			 | 
			
			
				
				                 refresh(); 
			 | 
		
		
	
		
			
			| 
				191
			 | 
			
				213
			 | 
			
			
				
				             }); 
			 | 
		
		
	
		
			
			| 
				192
			 | 
			
				
			 | 
			
			
				
				-			report.scriptLinkClicked.connect(function(url) { 
			 | 
		
		
	
		
			
			| 
				193
			 | 
			
				
			 | 
			
			
				
				-				var element = new WebElement(report.findFirstElement("#" + url)); 
			 | 
		
		
	
		
			
			| 
				194
			 | 
			
				
			 | 
			
			
				
				-				var regular = url[0] == 'r'; 
			 | 
		
		
	
		
			
			| 
				195
			 | 
			
				
			 | 
			
			
				
				-				var index = url.slice(1, url.length); 
			 | 
		
		
	
		
			
			| 
				196
			 | 
			
				
			 | 
			
			
				
				-				var tableref; 
			 | 
		
		
	
		
			
			| 
				197
			 | 
			
				
			 | 
			
			
				
				-				if(regular) { 
			 | 
		
		
	
		
			
			| 
				198
			 | 
			
				
			 | 
			
			
				
				-					tableref = "regular_coffees"; 
			 | 
		
		
	
		
			
			| 
				199
			 | 
			
				
			 | 
			
			
				
				-				} else { 
			 | 
		
		
	
		
			
			| 
				200
			 | 
			
				
			 | 
			
			
				
				-					tableref = "decaf_coffees"; 
			 | 
		
		
	
		
			
			| 
				201
			 | 
			
				
			 | 
			
			
				
				-				} 
			 | 
		
		
	
		
			
			| 
				202
			 | 
			
				
			 | 
			
			
				
				-				var origin = rowData[Number(url.slice(1, url.length))]; 
			 | 
		
		
	
		
			
			| 
				203
			 | 
			
				
			 | 
			
			
				
				-				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>'; 
			 | 
		
		
	
		
			
			| 
				204
			 | 
			
				
			 | 
			
			
				
				-				var query = new QSqlQuery(); 
			 | 
		
		
	
		
			
			| 
				205
			 | 
			
				
			 | 
			
			
				
				-				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"); 
			 | 
		
		
	
		
			
			| 
				206
			 | 
			
				
			 | 
			
			
				
				-				var conversion = 1; 
			 | 
		
		
	
		
			
			| 
				207
			 | 
			
				
			 | 
			
			
				
				-				if(unitBox.currentIndex == 0) { 
			 | 
		
		
	
		
			
			| 
				208
			 | 
			
				
			 | 
			
			
				
				-					conversion = 2.2; 
			 | 
		
		
	
		
			
			| 
				209
			 | 
			
				
			 | 
			
			
				
				-				} 
			 | 
		
		
	
		
			
			| 
				210
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion1", conversion); 
			 | 
		
		
	
		
			
			| 
				211
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":conversion2", conversion); 
			 | 
		
		
	
		
			
			| 
				212
			 | 
			
				
			 | 
			
			
				
				-				query.bind(":origin", origin); 
			 | 
		
		
	
		
			
			| 
				213
			 | 
			
				
			 | 
			
			
				
				-				query.exec(); 
			 | 
		
		
	
		
			
			| 
				214
			 | 
			
				
			 | 
			
			
				
				-				while(query.next()) { 
			 | 
		
		
	
		
			
			| 
				215
			 | 
			
				
			 | 
			
			
				
				-					details += "<tr>"; 
			 | 
		
		
	
		
			
			| 
				216
			 | 
			
				
			 | 
			
			
				
				-					for(var i = 0; i < 6; i++) { 
			 | 
		
		
	
		
			
			| 
				217
			 | 
			
				
			 | 
			
			
				
				-						details += "<td>" + query.value(i) + "</td>"; 
			 | 
		
		
	
		
			
			| 
				218
			 | 
			
				
			 | 
			
			
				
				-					} 
			 | 
		
		
	
		
			
			| 
				219
			 | 
			
				
			 | 
			
			
				
				-					details += "</tr>"; 
			 | 
		
		
	
		
			
			| 
				220
			 | 
			
				
			 | 
			
			
				
				-				} 
			 | 
		
		
	
		
			
			| 
				221
			 | 
			
				
			 | 
			
			
				
				-				query = query.invalidate(); 
			 | 
		
		
	
		
			
			| 
				222
			 | 
			
				
			 | 
			
			
				
				-				details += "</table></td></tr>"; 
			 | 
		
		
	
		
			
			| 
				223
			 | 
			
				
			 | 
			
			
				
				-				element.appendOutside(details); 
			 | 
		
		
	
		
			
			| 
				224
			 | 
			
				
			 | 
			
			
				
				-			}); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				214
			 | 
			
			
				
				+            report.scriptLinkClicked.connect(function(url) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				215
			 | 
			
			
				
				+                if(url[0] == 'i') { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				216
			 | 
			
			
				
				+                    url = url.slice(1, url.length); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				217
			 | 
			
			
				
				+                    var itemReport = createReport("itemtransactions.xml"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				218
			 | 
			
			
				
				+                    var sIB = findChildObject(itemReport, 'item'); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				219
			 | 
			
			
				
				+                    sIB.currentIndex = sIB.findData(url); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				220
			 | 
			
			
				
				+                    return; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				221
			 | 
			
			
				
				+                } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				222
			 | 
			
			
				
				+                var element = new WebElement(report.findFirstElement("#" + url)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				223
			 | 
			
			
				
				+                var regular = url[0] == 'r'; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				224
			 | 
			
			
				
				+                var index = url.slice(1, url.length); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				225
			 | 
			
			
				
				+                var tableref; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				226
			 | 
			
			
				
				+                if(regular) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				227
			 | 
			
			
				
				+                    tableref = "regular_coffees"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				228
			 | 
			
			
				
				+                } else { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				229
			 | 
			
			
				
				+                    tableref = "decaf_coffees"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				230
			 | 
			
			
				
				+                } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				231
			 | 
			
			
				
				+                var origin = rowData[Number(url.slice(1, url.length))]; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				232
			 | 
			
			
				
				+                var details = '<tr><td /><td colspan="6"><table><tr><th>Id</th><th>Name</th><th>Rate</th><th>Cost</th><th>Inventory</th><th>First Use</th><th>Last Use</th></tr>'; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				233
			 | 
			
			
				
				+                var query = new QSqlQuery(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				234
			 | 
			
			
				
				+                query.prepare("SELECT id, name, (rate/:conversion1)::numeric(12,3), (SELECT (cost*:conversion2)::numeric(12,2) FROM purchase WHERE item = id), (stock/:conversion3)::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 + ") AND id IN (SELECT item FROM transactions WHERE time >= :startDate AND time < :endDate::date + interval '1 day') ORDER BY first_use DESC"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				235
			 | 
			
			
				
				+                var conversion = 1; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				236
			 | 
			
			
				
				+                if(unitBox.currentIndex == 0) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				237
			 | 
			
			
				
				+                    conversion = 2.2; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				238
			 | 
			
			
				
				+                } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				239
			 | 
			
			
				
				+                var dateRange = dateSelect.currentRange(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				240
			 | 
			
			
				
				+                var startDate = dateRange[0]; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				241
			 | 
			
			
				
				+                var endDate = dateRange[dateRange.length - 1]; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				242
			 | 
			
			
				
				+                query.bind(":conversion1", conversion); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				243
			 | 
			
			
				
				+                query.bind(":conversion2", conversion); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				244
			 | 
			
			
				
				+                query.bind(":conversion3", conversion); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				245
			 | 
			
			
				
				+                query.bind(":origin", origin); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				246
			 | 
			
			
				
				+                query.bind(":startDate", startDate); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				247
			 | 
			
			
				
				+                query.bind(":endDate", endDate); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				248
			 | 
			
			
				
				+                query.exec(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				249
			 | 
			
			
				
				+                while(query.next()) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				250
			 | 
			
			
				
				+                    details += "<tr>"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				251
			 | 
			
			
				
				+                    details += '<td><a href="typica://script/i' + query.value(0) + '">' + query.value(0) + "</a></td>"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				252
			 | 
			
			
				
				+                    for(var i = 1; i < 7; i++) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				253
			 | 
			
			
				
				+                        details += "<td>" + query.value(i) + "</td>"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				254
			 | 
			
			
				
				+                    } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				255
			 | 
			
			
				
				+                    details += "</tr>"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				256
			 | 
			
			
				
				+                } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				257
			 | 
			
			
				
				+                query = query.invalidate(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				258
			 | 
			
			
				
				+                details += "</table></td></tr>"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				259
			 | 
			
			
				
				+                element.appendOutside(details); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				260
			 | 
			
			
				
				+            }); 
			 | 
		
		
	
		
			
			| 
				225
			 | 
			
				261
			 | 
			
			
				
				         ]]> 
			 | 
		
		
	
		
			
			| 
				226
			 | 
			
				262
			 | 
			
			
				
				     </program> 
			 | 
		
		
	
		
			
			| 
				227
			 | 
			
				263
			 | 
			
			
				
				 </window> 
			 |