COMPILE Function obj_Inventory(Method,Parm1,Parm2)


/*
* ADJUST INVENTORY TO INPROCESS IF APPLICABLE
if ( CurWafInv <> '' ) then
   PossibleWafInvUpdate = true$
   * THERE IS AN INVENTORY NUMBER AND THE QUANTITY HAS EITHER CHANGED
   * OR THIS IS A NEW LINE
   * NOW LETS MAKE SURE THERE IS A QTY
   WIqty = ThisOrderLine<1,Qty$>
   if ( WIQty > 0 and ( WIQty <> ThisOOrderLine<1,Qty$> ) ) or ( ForceUpdate = true$ and WIQty > 0 ) or ( CurWafInv <> OOrderDetail<1,WafInv$> ) then
      lock WafInvTable, CurWafInv then
          WIRec = xlate( 'WAFER_INV', CurWafInv, '', 'X' )
          if CurLotNum <> '' then
              CurLotNum = trim( CurLotNum )
              InvLotNums = WIRec<wafer_inv_inventory_lot_num$>
              InvLotCnts = WIRec<wafer_inv_inventory_lot_num_qty$>
              locate CurLotNum in InvLotNums using @vm setting WIpos then
                  * NOW LOOP THROUGH EACH LINE AND DO A TOTCNT ON THIS LOTNUM 
                  * OR PART NUM IF THE LOT NUM BEGINS WITH OK CAUSE THEY
                  * USE THE CUSTOMERS PART NUMBER CAUSE THEY DO NOT 
                  * WANT A BREAK DOWN BY LOT 
                  * ALSO ON EACH LINE CHECK TO SEE IF IT IS FOR THIS
                  * ORDER AND FOR THIS LINE
                  MaxAllowed = InvLotCnts<1,WIpos>
                  * NO MORE POSTING THE PARTNUMBER TO WAFER INVENTORY
                  * AS OF 3/18/99 TO SATISFY OKMETIC
                  *if CurLotNum[1,2] = 'OK' then
                  *   LotPart = CurPartNum
                  *end else
                     LotPart = CurLotNum
                  *end
                  TotLotPartCnt = 0
                  OLCnt         = fieldcount( WIRec<wafer_inv_order_no$>, @vm )
                  LineFoundOn   = 0
                  for Ww = 1 to OLCnt
                     ThisInvOrderNo   = WIRec<wafer_inv_order_no$,Ww>
                     ThisInvOrderLine = WIRec<wafer_inv_order_line$,Ww>
                     ThisInvLotPart   = WIRec<wafer_inv_mfg_lot_no$,Ww>
                     ThisInvInProc    = WIRec<wafer_inv_in_process$,Ww>
                     ThisInvInvoiceNo = WIRec<wafer_inv_lsl_invoice_no$,Ww>
                     if ThisInvLotPart = LotPart then
                        * CHECKING BELOW THAT THE LSL INVOICE NO IS BLANK
                        * CAUSE WE DO NOT WANT TO UPDATE AN INVOICE LINE
              	        if ( ThisInvInvoiceNo = '' ) and ( ThisInvOrderNo = OrderNo ) and ( ThisInvOrderLine = Row ) then
              	           LineFoundOn = Ww
              	        end else
						   TotLotPartCnt += ThisInvInProc
              	        end
              	     end
                  next Ww
	              	          * ACCOUNT FOR THE QTY THAT WE ARE ADDING					                  
	              	          TotLotPartCnt += ThisOrderLine<1,Qty$>	
                  if TotLotPartCnt > MaxAllowed then
                     * ERROR MESSAGE
				      MsgInfo = ''
				      MsgInfo<mtext$> = 'No update on wafer inventory#':CurWafInv:' for order line ':Row:' due to alloted amount for lot number ':CurLotNum:' being ':MaxAllowed:', and this would put it at ':TotLotPartCnt
				      MsgInfo<micon$> = '!'
				      Void = msg( '', MsgInfo )
                  end else
                     * UPDATE THE INVENTORY
                     if LineFoundOn > 0 then
	                     WIRec<wafer_inv_order_no$,LineFoundOn>      = OrderNo        
	                     WIRec<wafer_inv_order_line$,LineFoundOn>    = Row       
	                     WIRec<wafer_inv_lsl_po$,LineFoundOn>        = .po->text
	                     WIRec<wafer_inv_mfg_lot_no$,LineFoundOn>    = LotPart
	                     WIRec<wafer_inv_lsl_wo$,LineFoundOn>        = CurWo
	                     WIRec<wafer_inv_ship_date$,LineFoundOn>     = date()       
	                     WIRec<wafer_inv_in_process$,LineFoundOn>    = WIQty
                     end else
                         * ADD TO THE BOTTOM
                         Npos = OLCnt + 1
	                     WIRec<wafer_inv_order_no$,Npos>   = OrderNo
	                     WIRec<wafer_inv_order_line$,Npos> = Row
	                     WIRec<wafer_inv_lsl_po$,Npos>     = .po->text
	                     WIRec<wafer_inv_mfg_lot_no$,Npos> = LotPart
	                     WIRec<wafer_inv_lsl_wo$,Npos>     = CurWo
	                     WIRec<wafer_inv_ship_date$,Npos>  = date()
	                     WIRec<wafer_inv_in_process$,Npos> = WIQty
                     end
                     if InvUpdateMsg = '' then
                        InvUpdateMsg = 'The following wafer inventory records were updated: ':CrLf$
                     end
                     InvUpdateMsg := 'Inventory#':CurWafInv:' from order line ':Row:CrLf$
                     write WIRec on WafInvTable, CurWafInv else
                         Void = msg( '', 'Unable to write ':CurWafInv:' on WAFER_INV...' )
                     end
                  end
              end else
			      MsgInfo = ''
			      MsgInfo<mtext$> = 'No update on wafer inventory#':CurWafInv:' for order line ':Row:' due to lot number ':CurLotNum:' not found in the lot number qty breakdown portion...'
			      MsgInfo<micon$> = '!'
			      Void = msg( '', MsgInfo )
              end
          end else
		      MsgInfo = ''
		      MsgInfo<mtext$> = 'No update on wafer inventory#':CurWafInv:' for order line ':Row:' due to no Lot Number on row ':Row:'...'
		      MsgInfo<micon$> = '!'
		      Void = msg( '', MsgInfo )
          end
          unlock WafInvTable, CurWafInv else
		      MsgInfo = ''
		      MsgInfo<mtext$> = 'Unable to unlock wafer inventory#':CurWafInv
		      MsgInfo<micon$> = '!'
		      Void = msg( '', MsgInfo )
          end
      end else
	      MsgInfo = ''
	      MsgInfo<mtext$> = 'Unable to update wafer inventory#':CurWafInv:' for order line ':Row:' due to it currently being in use.  You will need to manually update this inventory...'
	      MsgInfo<micon$> = '!'
	      Void = msg( '', MsgInfo )
      end


RETURN ''

