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 > Ledger-smb-users@lists.sourceforge.net > 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 Ledger-smb-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ledger-smb-users