Thanks. Will add it to the patch tracker to review..
Best Wishes,
Chris Travers
On 2/17/07, William Montgomery <[EMAIL PROTECTED]> wrote:
> The Parts Requirements report does not appear to work properly in my
> case. I am using SQL-Ledger 2.6.22 and I see the same problem exists in
> Ledger-SMB 1.1.8. Parts that are known to be on both open Sales Orders
> and open Purchase orders show up as having SO quantities or PO
> quantities but not both. The re-order quantity is then incorrect.
>
> I have identified the cause of this problem in IC.pm. The first query
> in the requirements sub gets all parts from the invoice table with an
> inventory_accoun_id > 0. The subsequent 2 queries gets SO qty and PO
> qty all parts on open orders and accumulate qtys. The logic for adding
> the qtys assumes all parts were identified in the first query and exist
> in the %parts hash. This is an incorrect assumption in my case. I'm
> not sure if the assumption is invalid due to an error in our data entry
> or invalid in general. I have corrected the problem as shown in the
> patch below:
>
> #--- patch
> begins--------------------------------------------------------------
> --- IC.pm.0 2007-02-16 16:42:09.000000000 -0500
> +++ IC.pm 2007-02-16 16:42:09.000000000 -0500
> @@ -1503,9 +1503,9 @@
> my %ofld = ( customer => so,
> vendor => po );
>
> - for (qw(customer vendor)) {
> +# for (qw(customer vendor)) {
> $query = qq|SELECT p.id, p.partnumber, p.description,
> - sum(qty) - sum(ship) AS $ofld{$_}, p.onhand,
> + sum(qty) - sum(ship) AS so, '0' AS po, p.onhand,
> 0 AS month
> FROM orderitems i
> JOIN parts p ON (p.id = i.parts_id)
> @@ -1514,21 +1514,48 @@
> AND p.inventory_accno_id > 0
> AND p.assembly = '0'
> AND a.closed = '0'
> - AND a.${_}_id > 0
> + AND a.customer_id > 0
> GROUP BY p.id, p.partnumber, p.description, p.onhand,
> month|;
> $sth = $dbh->prepare($query);
> $sth->execute || $form->dberror($query);
>
> while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
> - if (exists $parts{$ref->{id}}->{$ofld{$_}}) {
> - $parts{$ref->{id}}->{$ofld{$_}} += $ref->{$ofld{$_}};
> + if (exists $parts{$ref->{id}}->{so}) {
> + $parts{$ref->{id}}->{so} += $ref->{so};
> } else {
> $parts{$ref->{id}} = $ref;
> }
> }
> $sth->finish;
> - }
> +# }
> +
> +# for (qw(customer vendor)) {
> + $query = qq|SELECT p.id, p.partnumber, p.description,
> + sum(qty) - sum(ship) AS po, '0' AS so, p.onhand,
> + 0 AS month
> + FROM orderitems i
> + JOIN parts p ON (p.id = i.parts_id)
> + JOIN oe a ON (a.id = i.trans_id)
> + WHERE $where
> + AND p.inventory_accno_id > 0
> + AND p.assembly = '0'
> + AND a.closed = '0'
> + AND a.vendor_id > 0
> + GROUP BY p.id, p.partnumber, p.description, p.onhand,
> + month|;
> + $sth = $dbh->prepare($query);
> + $sth->execute || $form->dberror($query);
> +
> + while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
> + if (exists $parts{$ref->{id}}->{po}) {
> + $parts{$ref->{id}}->{po} += $ref->{po};
> + } else {
> + $parts{$ref->{id}} = $ref;
> + }
> + }
> + $sth->finish;
> +# }
>
> # add assemblies from open sales orders
> $query = qq|SELECT DISTINCT a.id AS orderid, b.id, i.qty - i.ship AS qty
> @@ -1561,7 +1588,7 @@
>
> # assemblies
> my $query = qq|SELECT p.id, p.partnumber, p.description,
> - a.qty * $qty AS so, p.onhand, p.assembly,
> + a.qty * $qty AS so, '0' AS po, p.onhand, p.assembly,
> p.partsgroup_id
> FROM assembly a
> JOIN parts p ON (p.id = a.parts_id)
> @@ -1572,7 +1599,7 @@
> UNION
>
> SELECT p.id, p.partnumber, p.description,
> - a.qty * $qty AS so, p.onhand, p.assembly,
> + a.qty * $qty AS so, '0' AS po, p.onhand, p.assembly,
> p.partsgroup_id
> FROM assembly a
> JOIN parts p ON (p.id = a.parts_id)
>
>
> #--- patch ends
> ---------------------------------------------------------------
>
> Regards,
> Wm
>
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys-and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Ledger-smb-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ledger-smb-users
>
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Ledger-smb-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ledger-smb-users