>LOCAL lSelectWay >lSelectWay = .F. && Set to true if you prefer select solution > >IF m.lSelectWay > LOCAL lcWhere, lcOldANSI > lcOldANSI = SET("Ansi") > SET ANSI OFF > > lcWhere = [Styles.cStyle NOT IN ("F","S","X","D","M", "CD", "PK") ] + ; > [and NOT Styles.cStyle LIKE "%.%"] && [Styles.In_Stock <=1 ] > > DO CASE > CASE m.cact = "A" && Active > lcWhere = m.lcWhere + [ and Styles.DisContinu = "A"] > > CASE m.cact = "I" && Inactive > lcWhere = m.lcWhere + [ and Styles.DisContinu = "I"] > > CASE m.cact = "B" && Both > lcWhere = m.lcWhere + [ and Styles.DisContinu IN ("A","I")] > ENDCASE > > USE styles INDEX styles IN 0 && Style > USE or_items INDEX or_style, or_items IN 0 && Style, PON + Style > USE orders INDEX orders IN 0 && PON > > LOCAL loThermo, lcClass > lcClass = "cusSQLThermo" > loThermo = CREATEOBJECT(m.lcClass) && we need visual indication for long select > > SELECT styles.cStyle, styles.RESERVED AS nReserved, styles.in_stock AS nInStock, ; > SUM(IIF(orders.acc = "HOUSE" AND (NOT approved == "" OR NOT app_date = {}), ; > or_items.qty-or_items.shiped-or_items.can_qty, 000000000.00)) AS nHouseOrder ; > FROM styles INNER JOIN or_items ON styles.cStyle = or_items.cStyle ; > INNER JOIN orders ON or_items.pon + or_items.cStyle = orders.pon ; > WHERE &lcWhere ; > GROUP BY 1,2,3 HAVING nReserved - (nHouseOrder + nInStock)<= 0 ; > INTO CURSOR dummy READWRITE > RELEASE loThermo > SELECT dummy > > SET ANSI &lcOldANSI && Restore ANSI settings > > IF RECCOUNT('Dummy') = 0 > DO give_mes WITH 'No Records' > RETURN > ENDIF >ELSE > USE styles > USE or_items INDEX or_style IN 0 > USE orders INDEX orders IN 0 > > SELECT styles > SET FILTER TO !'.'$cStyle .AND. !LEFT(cStyle,1)$'FSXDM' .AND.; > !LEFT(cStyle,2)$'CD PK' > COPY TO dummy FIELDS cStyle, RESERVED, in_Stock ; > FOR (cact='A' AND discontinu="A") OR ; > (cact='I' AND discontinu='I') OR (cact='B' AND discontinu$'AI') > SET INDEX TO styles > USE dummy EXCLUSIVE IN 0 > SELECT dummy > INDEX ON cStyle TO dummy > SCAN > WAIT cStyle NOWAIT WINDOW > SELE or_items > SEEK dummy.cStyle > lnOnOrderQty=0 > SCAN WHILE cStyle=dummy.cStyle > SELE orders > SEEK or_items.pon > IF acc='HOUSE' .AND. (!EMPTY(approved) .OR. !EMPTY(app_date)) > SELECT or_items > lnOnOrderQty=lnOnOrderQty+(qty-shiped-can_qty) > IF lnOnOrderQty>(dummy.RESERVED - dummy.in_stock) && We don't need to see these items > SELECT dummy > DELETE NEXT 1 > LOOP > ENDIF > ENDIF > ENDSCAN > ENDSCAN >