[wiaflos-devel] COMMIT - r248 - trunk/wiaflos/server

svn at linuxrulz.org svn at linuxrulz.org
Sun Nov 2 11:24:15 GMT 2008


Author: nkukard
Date: 2008-11-02 11:24:14 +0000 (Sun, 02 Nov 2008)
New Revision: 248

Modified:
   trunk/wiaflos/server/Inventory.pm
Log:
* Added functionality to generate an inventory stock list


Modified: trunk/wiaflos/server/Inventory.pm
===================================================================
--- trunk/wiaflos/server/Inventory.pm	2008-11-02 11:23:04 UTC (rev 247)
+++ trunk/wiaflos/server/Inventory.pm	2008-11-02 11:24:14 UTC (rev 248)
@@ -875,7 +875,7 @@
 		return ERR_PARAM;
 	}
 
-	# List of stock items required
+	# List of stock items 
 	my @resultList;
 
 	my $extraSQL = "";
@@ -1491,7 +1491,89 @@
 }
 
 
+# @fn getInventoryStockBalance($detail)
+# Function to get the balances of inventory on hand, qty & price
+#
+# @param detail Parameter hash ref
+# @li EndDate - Optional date to pull the balance up until
+#
+# @returns RES_OK on success, < 0 otherwise
+sub getInventoryStockBalance
+{
+	my $detail = shift;
 
 
+	# Check if we must use an end date
+	my $extraSQL = "";
+	if (defined($detail->{'EndDate'}) && $detail->{'EndDate'} ne "") {
+		$extraSQL .= " AND gl_transactions.TransactionDate < ".DBQuote($detail->{'EndDate'});
+	}
+
+	# Grab free inventory item list
+	my $sth = DBSelect("
+			SELECT
+				inventory.Code,
+
+				inventory_tracking.GLTransactionID, 
+				inventory_tracking.SerialNumber, inventory_tracking.QtyChange, inventory_tracking.Price
+
+			FROM
+				inventory,
+				inventory_tracking,
+				gl_transactions
+
+			WHERE
+				inventory.Type = 1
+
+				AND inventory_tracking.InventoryID = inventory.ID
+				AND inventory_tracking.GLTransactionID = gl_transactions.ID
+
+				$extraSQL
+	");
+
+	if (!$sth) {
+		setError(wiaflos::server::dblayer::Error());
+		return ERR_DB;
+	}
+	
+	my $stockBalances = {};
+	# Build result list
+	while (my $row = $sth->fetchrow_hashref()) {
+		my $item;
+
+		# If there is no serial number, use blank ... this will occur in the case of a bulk item not tracked with no serial
+		if (!defined($row->{'SerialNumber'})) {
+			$row->{'SerialNumber'} = "";
+		}
+
+		# If we have an item, use it
+		if (defined($stockBalances->{$row->{'Code'}}) && defined($stockBalances->{$row->{'Code'}}->{$row->{'SerialNumber'}})) {
+			$item = $stockBalances->{$row->{'Code'}}->{$row->{'SerialNumber'}};
+		}
+
+		# If no item defined, create one
+		if (!defined($item)) {
+			$item->{'Quantity'} = Math::BigFloat->new();
+			$item->{'Quantity'}->precision(-4);
+			$item->{'Value'} = Math::BigFloat->new();
+		}
+
+		# Add quantity
+		$item->{'Quantity'}->badd($row->{'QtyChange'});
+		# Add cost
+		$item->{'Value'}->badd($row->{'Price'});
+
+		# Save item
+		$stockBalances->{ $row->{'Code'} }->{ $row->{'SerialNumber'} } = $item;
+	}
+	DBFreeRes($sth);
+	
+	return $stockBalances;
+}
+
+
+
+
+
 1;
 # vim: ts=4



More information about the wiaflos-devel mailing list