'CLR_RESV - routine to clear reservations out of file

external   entryline() vloadif() dpath bpopdb() sch scw progress() messbox()
external   fgp bgp cpath navrecs() reqnpopup() messline() exception() bge
external   userid remove() messboxwait()  makeidx() addidxrec() delidxrec()
external   getidxrecs() vunloadif() $menu sipath chkdate() 	Background()

public     ptstr suppcode ptval psa

global     x y suppname y1 y2 y3 y4 ReturnToMenu() $rollnr #ordlen $cust
'  S_hdr
global     #ordcost #margin #M_l #M_m #M_h cat mess prodsupp StartTitle()
global     $suppinv #invitems #L_l #L_u #totalinv #invtotal i r_date #R_m
global     NavRecSuppInv() r1 r2 c1 c2 cl1 cl2 ShowReserved() CancelResvns()


MAIN
  single-step off
  screen clear box 1 1 sch scw 0 0 no-border
  file unload all
  r1 = 1
  r2 = r1+2
  cl1 = 15

  repaint off

  x=ShowReserved()                  ' show all uncleared orders

  ReturnToMenu()

END MAIN


FUNCTION ShowReserved()
  	progress(15,10," Find active reservations ",0)
  	vloadif(dpath|"clr_resv.vw")
     order change key "[Reference_Nr]"
							'   	data query execute "reservtn.dfq" index "reservtn.idx"
   	data query execute "reservtd.dfq" index "reservtn.idx"
' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
' mid([Reference_Nr],2,1)="R"
' and
' [Reserved]="R"
' and
' days([Date_Reserved])>=days(today)-365
' and
' [Item_Type]="B"
' and not (deleted)
' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
  	if cerror
    		messbox(" No Active Reservations ",0,0,1)
    		screen clear box 1 1 sch scw 0 0 no-border
    		return (1)
  	end if
'     order sort now dictionary "clr_resv.idx" fields "[Reference_Nr]" ascending
  	order sort now dictionary "clr_resv.idx" fields "[Date_Reserved]" ascending
  	while true
	    	StartTitle()
    		ptval = NavRecSuppInv()
	    	if ptval = {Esc}
     	 	Background()
	      	data goto record first
	      	for i = 1 to records     'message "Clear check mark from all supp_inv.idx items"
		       	if [Reserved] = "D"
         				lock-record
          		 		[Reserved] = "R"
     	    			write-record
		       	end if
     	  		data goto record next
      		end for
	      	return (-1)

    		elseif ptval = {M} or ptval = {m}
      		if [Reserved] = "D"
        			lock-record
          			[Reserved] = "R"
	        		write-record
     	 	else
        			lock-record
          			[Reserved] = "D"
	        		write-record
     	 	end if
      		data goto record next

	    	elseif ptval = {F10}
     	 	CancelResvns()
      		return (0)

	    	else
     	 	continue while
	    	end if
  	end while
END FUNCTION 'ShowReserved()


FUNCTION ReturnToMenu()
  screen clear box 1 1 sch scw 0 0 no-border
  repaint off
  error off
  window close
  file unload all
  transfer cpath|"pm_menu.psl" in-memory
END FUNCTION ' ReturnToMenu()


FUNCTION StartTitle()
  repaint on
  repaint
  y1 = format("Reservations","M83")
  y2 = format(" Job Nr Customer                  Description/Colour                 Length  Resv'd","L87")
  y3 = format(" "|chr(24)&chr(25)&"to scroll  -  {M}ark/unmark toggle  -  {F10} finishes  -  {Esc} ","M87")
  screen clear box 3 7 5 93 fgp bgp
  screen print 4 9 fgp bgp y1
  screen print 6 7 fgp bgp y2
  screen print 7 7 fgp bgp y3
END FUNCTION ' StartTitle()


FUNCTION NavRecSuppInv()
local x bot psmode
  	screen save scrheight 1 scrheight scrwidth bot
  	smartpeek $_spndmes psmode
  	if psmode = 1
    		smartpoke $_spndmes 0
  	end if
  	while TRUE
    		x = inchar
    		if x = {Down}
      		data goto record next
    		elseif x = {Up}
      		data goto record previous
    		elseif x = {PgDn}
      		data goto page next
    		elseif x = {PgUp}
      		data goto page previous
    		elseif x = {^End}
      		data goto record last
    		elseif x = {^Home}
      		data goto record first
    		elseif x = {Home}
      		suspendone
      		keys Home,F8
      		screen shortrestore bot
    		elseif x = {End}
     	 	suspendone
		     keys End,F8
      		screen shortrestore bot
    		else
      		exit while
	     end if
  	end while
  	if psmode = 1
    		smartpoke $_spndmes 1
  	end if
  	return (x)
END FUNCTION ' NavRecSuppInv()


FUNCTION CancelResvns()
  repaint off
  data goto record first
  for i = 1 to records
    $rollnr = [RollNr]                'message "$rollnr is:"&str($rollnr)
    if [Reserved] = "D"
      #ordlen = [Length_Quantity]      'message "#ordlen is:"&str(#ordlen)
      lock-record             ' cancel requisition & delete record
        [Comment]             = "Reserv'n canc'd"
        [Date_Status_Changed] = today
        [Created/Changed_By]  = userid
        [Status]              = "D"
        [RollNr]             = "NA"
        [Reserved]            = "D"
        [RollReserve]         = ""
      write-record
      data delete record

      vloadif(dpath|"stk_carp.vws")
      order change key "[RollNr]"
      data find "[RollNr]" equal $rollnr options "f"
      if cerror                               '   if none - then return
        vloadif(dpath|"clr_resv.vw")
        data goto record next
        continue for
      end if
' message "[BAR] is:"&str([BAR])
      lock-record
        [BAR] = [BAR] + value(#ordlen)
      write-record
' message "[BAR] is:"&str([BAR])
      vloadif(dpath|"clr_resv.vw")
    end if
    data goto record next
  end for
  return (0)
END FUNCTION ' CancelResvns()
