| 
				
			 | 
			
			
				
				@@ -58,7 +58,7 @@ 
			 | 
		
		
	
		
			
			| 
				58
			 | 
			
				58
			 | 
			
			
				
				 					unitText = "Kg"; 
			 | 
		
		
	
		
			
			| 
				59
			 | 
			
				59
			 | 
			
			
				
				 				} 
			 | 
		
		
	
		
			
			| 
				60
			 | 
			
				60
			 | 
			
			
				
				 				var query = new QSqlQuery(); 
			 | 
		
		
	
		
			
			| 
				61
			 | 
			
				
			 | 
			
			
				
				-					var q = "WITH q AS (SELECT id, name, reference, COALESCE((SELECT balance FROM item_history(id) WHERE time = (SELECT max(time) FROM item_history(id) WHERE time < :sd1)), 0)/:c1 AS starting_balance, COALESCE((SELECT sum(quantity) FROM purchase WHERE item = id AND time >= :sd2 AND time < :ed1 ::date + interval '1 day'), 0)/:c2 AS purchase, COALESCE((SELECT sum(quantity) FROM use WHERE item = id AND time >= :sd3 AND time < :ed2 ::date + interval '1 day'), 0)/:c3 AS use, COALESCE((SELECT sum(quantity) FROM sale WHERE item = id AND time >= :sd4 AND time < :ed3 ::date + interval '1 day'), 0)/:c4 AS sale, (SElECT balance FROM item_history(id) WHERE time = (SELECT max(time) FROM item_history(id) WHERE time < :ed4 ::date + interval '1 day'))/:c5 AS quantity, (SELECT sum(cost * quantity) / sum(quantity) FROM purchase WHERE item = id) AS unit_cost FROM coffees WHERE id IN (SELECT item FROM purchase WHERE time >= :sd6 AND time < :ed5 ::date + interval '1 day') OR id IN (SELECT id FROM items WHERE (SELECT balance FROM item_history(id) WHERE time = (SELECT max(time) FROM item_history(id) WHERE time < :ed6 ::date + interval '1 day')) > 0) OR id IN (SELECT DISTINCT item FROM all_transactions WHERE time > :sd7 AND time < :ed7 ::date + interval '1 day')) SELECT *, (starting_balance + purchase - use - sale - quantity)/:c7 AS adjustment, starting_balance * unit_cost * :c8 AS starting_cost, purchase * unit_cost * :c9 AS purchase_cost, use * unit_cost * :c10 AS use_cost, sale * unit_cost * :c11 AS sale_cost, quantity * unit_cost * :c12 AS quantity_cost, (starting_balance + purchase - use - sale - quantity) * unit_cost * :c13 AS adjustment_cost FROM q ORDER BY name"; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				61
			 | 
			
			
				
				+					var q = "WITH q AS (SELECT id, name, reference, COALESCE((SELECT balance FROM item_history(id) WHERE time = (SELECT max(time) FROM item_history(id) WHERE time < :sd1)), 0)/:c1 AS starting_balance, COALESCE((SELECT sum(quantity) FROM purchase WHERE item = id AND time >= :sd2 AND time < :ed1 ::date + interval '1 day'), 0)/:c2 AS purchase, COALESCE((SELECT sum(quantity) FROM use WHERE item = id AND time >= :sd3 AND time < :ed2 ::date + interval '1 day'), 0)/:c3 AS use, COALESCE((SELECT sum(quantity) FROM sale WHERE item = id AND time >= :sd4 AND time < :ed3 ::date + interval '1 day'), 0)/:c4 AS sale, (SElECT balance FROM item_history(id) WHERE time = (SELECT max(time) FROM item_history(id) WHERE time < :ed4 ::date + interval '1 day'))/:c5 AS quantity, (SELECT sum(cost * quantity) / sum(quantity) FROM purchase WHERE item = id) AS unit_cost FROM coffees WHERE id IN (SELECT item FROM purchase WHERE time >= :sd6 AND time < :ed5 ::date + interval '1 day') OR id IN (SELECT id FROM items WHERE (SELECT balance FROM item_history(id) WHERE time = (SELECT max(time) FROM item_history(id) WHERE time < :ed6 ::date + interval '1 day')) > 0) OR id IN (SELECT DISTINCT item FROM all_transactions WHERE time > :sd7 AND time < :ed7 ::date + interval '1 day')) SELECT *, (starting_balance + purchase - use - sale - quantity)/:c7 AS adjustment, starting_balance * unit_cost * :c8 AS starting_cost, purchase * unit_cost * :c9 AS purchase_cost, use * unit_cost * :c10 AS use_cost, sale * unit_cost * :c11 AS sale_cost, quantity * unit_cost * :c12 AS quantity_cost, (starting_balance + purchase - use - sale - quantity) * unit_cost * :c13 AS adjustment_cost, (SELECT sum(quantity)/:c6 FROM purchase WHERE item = id) AS total_purchase FROM q ORDER BY name"; 
			 | 
		
		
	
		
			
			| 
				62
			 | 
			
				62
			 | 
			
			
				
				 				query.prepare(q); 
			 | 
		
		
	
		
			
			| 
				63
			 | 
			
				63
			 | 
			
			
				
				 				query.bind(":sd1", startDate); 
			 | 
		
		
	
		
			
			| 
				64
			 | 
			
				64
			 | 
			
			
				
				 				query.bind(":sd2", startDate); 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -78,7 +78,7 @@ 
			 | 
		
		
	
		
			
			| 
				78
			 | 
			
				78
			 | 
			
			
				
				 				query.bind(":c3", conversion); 
			 | 
		
		
	
		
			
			| 
				79
			 | 
			
				79
			 | 
			
			
				
				 				query.bind(":c4", conversion); 
			 | 
		
		
	
		
			
			| 
				80
			 | 
			
				80
			 | 
			
			
				
				 				query.bind(":c5", conversion); 
			 | 
		
		
	
		
			
			| 
				81
			 | 
			
				
			 | 
			
			
				
				- 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				81
			 | 
			
			
				
				+				query.bind(":c6", conversion); 
			 | 
		
		
	
		
			
			| 
				82
			 | 
			
				82
			 | 
			
			
				
				 				query.bind(":c7", conversion); 
			 | 
		
		
	
		
			
			| 
				83
			 | 
			
				83
			 | 
			
			
				
				 				query.bind(":c8", conversion); 
			 | 
		
		
	
		
			
			| 
				84
			 | 
			
				84
			 | 
			
			
				
				 				query.bind(":c9", conversion); 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -133,17 +133,35 @@ 
			 | 
		
		
	
		
			
			| 
				133
			 | 
			
				133
			 | 
			
			
				
				 					output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				134
			 | 
			
				134
			 | 
			
			
				
				 					output.writeTextElement("td", query.value(1)); //Coffee 
			 | 
		
		
	
		
			
			| 
				135
			 | 
			
				135
			 | 
			
			
				
				 					output.writeTextElement("td", query.value(2)); //Reference 
			 | 
		
		
	
		
			
			| 
				136
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", parseFloat(query.value(3)).toFixed(2)); //Starting Wt 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				136
			 | 
			
			
				
				+					output.writeStartElement("td"); //Starting Wt 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				137
			 | 
			
			
				
				+					output.writeAttribute("title", (parseFloat(query.value(3))/parseFloat(query.value(16)) * 100).toFixed(0) + "%"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				138
			 | 
			
			
				
				+					output.writeCDATA(parseFloat(query.value(3)).toFixed(2)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				139
			 | 
			
			
				
				+					output.writeEndElement(); //End of Starting Wt. 
			 | 
		
		
	
		
			
			| 
				137
			 | 
			
				140
			 | 
			
			
				
				 					output.writeTextElement("td", parseFloat(query.value(10)).toFixed(2)); //Starting Cost 
			 | 
		
		
	
		
			
			| 
				138
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", parseFloat(query.value(4)).toFixed(2)); //Purchase Wt 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				141
			 | 
			
			
				
				+					output.writeStartElement("td"); //Purchase Wt 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				142
			 | 
			
			
				
				+					output.writeAttribute("title", (parseFloat(query.value(4))/parseFloat(query.value(16)) * 100).toFixed(0) + "%"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				143
			 | 
			
			
				
				+					output.writeCDATA(parseFloat(query.value(4)).toFixed(2)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				144
			 | 
			
			
				
				+					output.writeEndElement(); //End of Purchase Wt 
			 | 
		
		
	
		
			
			| 
				139
			 | 
			
				145
			 | 
			
			
				
				 					output.writeTextElement("td", parseFloat(query.value(11)).toFixed(2)); //Purchase Cost 
			 | 
		
		
	
		
			
			| 
				140
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", parseFloat(query.value(5)).toFixed(2)); //Use Wt 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				146
			 | 
			
			
				
				+					output.writeStartElement("td"); //Use Wt 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				147
			 | 
			
			
				
				+					output.writeAttribute("title", (parseFloat(query.value(5))/parseFloat(query.value(16)) * 100).toFixed(0) + "%"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				148
			 | 
			
			
				
				+					output.writeCDATA(parseFloat(query.value(5)).toFixed(2)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				149
			 | 
			
			
				
				+					output.writeEndElement(); //End of Use Wt 
			 | 
		
		
	
		
			
			| 
				141
			 | 
			
				150
			 | 
			
			
				
				 					output.writeTextElement("td", parseFloat(query.value(12)).toFixed(2)); //Use Cost 
			 | 
		
		
	
		
			
			| 
				142
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", parseFloat(query.value(6)).toFixed(2)); //Sale Wt 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				151
			 | 
			
			
				
				+					output.writeStartElement("td"); //Sale Wt 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				152
			 | 
			
			
				
				+					output.writeAttribute("title", (parseFloat(query.value(6))/parseFloat(query.value(16)) * 100).toFixed(0) + "%"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				153
			 | 
			
			
				
				+					output.writeCDATA(parseFloat(query.value(6)).toFixed(2)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				154
			 | 
			
			
				
				+					output.writeEndElement(); //End of Sale Wt 
			 | 
		
		
	
		
			
			| 
				143
			 | 
			
				155
			 | 
			
			
				
				 					output.writeTextElement("td", parseFloat(query.value(13)).toFixed(2)); //Sale Cost 
			 | 
		
		
	
		
			
			| 
				144
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", parseFloat(query.value(9)).toFixed(2)); //Adjustment Wt 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				156
			 | 
			
			
				
				+					output.writeStartElement("td"); //Adjustment Wt 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				157
			 | 
			
			
				
				+					output.writeAttribute("title", (parseFloat(query.value(9))/parseFloat(query.value(16)) * 100).toFixed(0) + "%"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				158
			 | 
			
			
				
				+					output.writeCDATA(parseFloat(query.value(9)).toFixed(2)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				159
			 | 
			
			
				
				+					output.writeEndElement(); //Adjustment Wt 
			 | 
		
		
	
		
			
			| 
				145
			 | 
			
				160
			 | 
			
			
				
				 					output.writeTextElement("td", parseFloat(query.value(15)).toFixed(2)); //Adjustment Cost 
			 | 
		
		
	
		
			
			| 
				146
			 | 
			
				
			 | 
			
			
				
				-					output.writeTextElement("td", parseFloat(query.value(7)).toFixed(2)); //Ending Wt 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				161
			 | 
			
			
				
				+					output.writeStartElement("td"); //Ending Wt 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				162
			 | 
			
			
				
				+					output.writeAttribute("title", (parseFloat(query.value(7))/parseFloat(query.value(16)) * 100).toFixed(0) + "%"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				163
			 | 
			
			
				
				+					output.writeCDATA(parseFloat(query.value(7)).toFixed(2)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				164
			 | 
			
			
				
				+					output.writeEndElement(); //End of Ending Wt 
			 | 
		
		
	
		
			
			| 
				147
			 | 
			
				165
			 | 
			
			
				
				 					output.writeTextElement("td", parseFloat(query.value(14)).toFixed(2)); //Ending Cost 
			 | 
		
		
	
		
			
			| 
				148
			 | 
			
				166
			 | 
			
			
				
				 					output.writeEndElement(); 
			 | 
		
		
	
		
			
			| 
				149
			 | 
			
				167
			 | 
			
			
				
				 					sum3 += parseFloat(query.value(3)); 
			 |