'MARKCOMP - mark individual jobs as COMPLETED

external   dpath PrintReport() sch scw vloadif() progress() progtag() fgi bgi
external   messbox() cpath Background() popuplist() messboxwait() fgp bgp
external   fentrybox() shopmask navrecs() chkstr() strcount() makeidx()
external   addidxrec() vunloadif() chkdate() remove() getidxrecs()

public     ptstr ptval ftgdate jobnr ftrname ftrcode dsa

global     x p2 p3 p4 p5 p6 ChooseJob() MarkDespatched() i ShowStatus()
global     ReturnToMenu() SetupDetails() slotrec $ordstat
global     $invoice $invnr $invdate S_details S_status


MAIN
single-step off
  Background()

  ChooseJob()

  file unload all
  ReturnToMenu()

END MAIN


FUNCTION ReturnToMenu()
  screen clear box 1 1 sch scw 0 0 no-border
  repaint off
  file unload all
  transfer cpath|"pm_menu.psl" in-memory
END FUNCTION ' ReturnToMenu()


FUNCTION ChooseJob()
  while true
    Background()
    vloadif(dpath|"despat_2.vw")
    order change key "[Job_Nr]"
    x = fentrybox(" Enter Order Nr or {Esc} to exit ",6,shopmask,"")
    if x = -1
      return (-1)
    elseif x = 0
      jobnr = ptstr
      data find "[Job_Nr]" equal jobnr options ""
      if cerror                               '   if none - then return
        messboxwait(" Job Nr"&jobnr&"not found ",0,0,1)
        return (1)
      end if

      x = SetupDetails()
      if x = -1
        return (-1)
      elseif x = 1
        continue while
      end if

      x = MarkDespatched()
      if x = 0
        continue while
  '       return (0)
      else
        continue while
      end if
    end if
  end while
END FUNCTION ' ChooseJobs()


FUNCTION MarkDespatched()
  vloadif(dpath|"despat_2.vw")
  if [Completed] = "Y"
    messbox("Mark"&jobnr&"-"&[CustOrd_Name]&"as incomplete? (y/n) ",1,1,1)
    if ptstr == "y"
      lock-record
'         [Order_Status]="P"
        [Completed] = "N"
        [Last_Update]=today
      write-record
      return (0)
    else
      return (1)
    end if
'     messboxwait(" Already marked as despatched - inform Head Office ",0,0,1)
'     return (1)
  else
    messbox(jobnr&"-"&[CustOrd_Name]&"to be invoiced? (y/n) ",1,1,1)
    if ptstr == "y"
      lock-record
        [Completed] = "Y"
'         [Order_Status]="D"
        [Last_Update]=today
      write-record
      return (0)
    else
      return (1)
    end if
  end if
END FUNCTION ' MarkDespatched()


FUNCTION SetupDetails()
  progress(fgp,bgp," Checking for existing order ",0)
  vloadif(dpath|"ordstat4.vw")
  data find "[Job_Nr]" equal jobnr options "gw"
  if cerror                               '   if none - then return
    messbox(" Job not found ",1,0,0)
    return (-1)
  else
    while true
      slotrec  = [Appt_Slots]
      $ordstat = [Order_Status]
      $invoice = [Completed]
      $invnr   = [Inv_Nr]
      $invdate = [Invoice_Date]
' message "$invoice is:"&str($invoice)
' message "$invnr is:"&str($invnr)
' message "$invdate is:"&str($invdate)
      repaint on
      repaint
      ShowStatus()
      screen save 1 1 8 scw S_details
      repaint off
      screen shortrestore S_details
      vunloadif("ordstat4.vw")
' correct?
      messbox(" Is this the correct job? (y/n) ",1,1,1)
      if ptstr == "y"
        return (0)
      else
        return (1)
      end if
    end while
  end if
END FUNCTION ' SetupDetails()


FUNCTION ShowStatus()
local mess1 r1 r2 c1 c2 cl1 cl2 i
  r1 = 5
  r2 = r1+3
  c1 = 60
  c2 = c1+20
' message "$invoice is:"&str($invoice)
  if $invoice = "Y"
    cl1 = 15
    cl2 = 10
    screen clear box r1 c1 r2 c2 cl1 cl2
    screen print r1+1 c1+5 cl1 cl2 "’’INVOICED"
    screen print r1+2 c1+2 cl1 cl2 $invnr|" - "|date2($invdate)

  else
    mess1 = case $ordstat ("A","Initial only")("U","All details held")\
  ("R","To be authorised")("H","Held for check")("V","Rejected")("P","Authorised")\
  ("L","Being prepared")("D","Despatched") else "Missing"
    if $ordstat = "A"
      cl1 = 14
      cl2 = 0
      screen clear box r1 c1 r2 c2 cl1 cl2
      screen print r1+1 c1+5 cl1 cl2 "ORDER STATUS"
      screen print r1+2 c1+5 cl1 cl2 mess1
    elseif $ordstat = "U"
      cl1 = 14
      cl2 = 0
      screen clear box r1 c1 r2 c2 cl1 cl2
      screen print r1+1 c1+5 cl1 cl2 "ORDER STATUS"
      screen print r1+2 c1+3 cl1 cl2 mess1
    elseif $ordstat = "R"
      cl1 = 10
      cl2 = 0
      screen clear box r1 c1 r2 c2 cl1 cl2
      screen print r1+1 c1+5 cl1 cl2 "ORDER STATUS"
      screen print r1+2 c1+3 cl1 cl2 mess1
    elseif $ordstat = "V"
      for i = 1 to 15
        cl1 = 4
        cl2 = 0
        screen clear box r1 c1 r2 c2 cl1 cl2
        screen print r1+1 c1+5 cl1 cl2 "ORDER STATUS"
        screen print r1+2 c1+7 cl1 cl2 mess1
        wait .1
        cl1 = 0
        cl2 = 4
        screen clear box r1 c1 r2 c2 cl1 cl2
        screen print r1+1 c1+5 cl1 cl2 "ORDER STATUS"
        screen print r1+2 c1+7 cl1 cl2 mess1
        wait .1
      end for
    elseif $ordstat = "H"
      for i = 1 to 15
        cl1 = 4
        cl2 = 0
        screen clear box r1 c1 r2 c2 cl1 cl2
        screen print r1+1 c1+5 cl1 cl2 "ORDER STATUS"
        screen print r1+2 c1+4 cl1 cl2 mess1
        wait .1
        cl1 = 0
        cl2 = 4
        screen clear box r1 c1 r2 c2 cl1 cl2
        screen print r1+1 c1+5 cl1 cl2 "ORDER STATUS"
        screen print r1+2 c1+4 cl1 cl2 mess1
        wait .1
      end for
    elseif $ordstat = "P"
      cl1 = 10
      cl2 = 0
      screen clear box r1 c1 r2 c2 cl1 cl2
      screen print r1+1 c1+5 cl1 cl2 "ORDER STATUS"
      screen print r1+2 c1+6 cl1 cl2 mess1
    elseif $ordstat = "L"
      cl1 = 4
      cl2 = 0
      screen clear box r1 c1 r2 c2 cl1 cl2
      screen print r1+1 c1+5 cl1 cl2 "ORDER STATUS"
      screen print r1+2 c1+4 cl1 cl2 mess1
    elseif $ordstat = "D"
      cl1 = 10
      cl2 = 0
      screen clear box r1 c1 r2 c2 cl1 cl2
      screen print r1+1 c1+5 cl1 cl2 "ORDER STATUS"
      screen print r1+2 c1+6 cl1 cl2 mess1
    end if
  end if
  screen save r1 c1 r2 c2 S_status
END FUNCTION ' ShowStatus()
