[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