'FTR_WKS ˙- was CPL_PREP

external   fentrybox() messbox() vloadif() vunloadif() dpath shopmask scr
external   sch scw progress() fgp bgp messline() PrintReport() remove() base
external   userid menuchoice cpath entryline() makeidx() jobnr  messboxwait()
external   fgi bgi Find_Del() $menu X_path _SWIP_Crystal() Xreppath

public     ptstr ftrname custname deladdr1 deladdr2 deladdr3 deladdr4 psa dsa
public     offtel hometel mobile ftginstr ftgcomm cr_status balancedue ftgdate

global     CheckNr() CheckJob() $ordstat ReturnToMenu() x NameAddressAsk()
global     PrintWorkSheet() p1 p2 p3 p4 p5 p6 invtotal salanal


MAIN
  screen clear box 1 1 sch scw 0 0 no-border
  repaint off
  single-step off
  file unload all

  p2 = ""   ' p2 = title at top of choice popup ("LABEL")
  p3 = 1    ' p3 = printer to be used (1=HPIII_QC; 2=GEN_EPSN etc)
  p5 = 1    ' p5 = choose VIEW/PRINT 1=PRINT; 2=VIEW; 3=CHOOSE
  p6 = 1    ' p6 = nr of copies

	messboxwait(" This program is not currently in use ",0,0,1)

	ReturnToMenu()

'   case base              ' p4 = printer port to use (1,2 etc - network set to use 2=LASER; 3=LABEL)
'     when "O"
'       p4 = 1
'     when "W"
'       p4 = 1
'     otherwise
'       p4 = 1
'   end case

'   while true
'     x = CheckNr()                          ' check Job Nr exists in CUST_ORD
'     if x = -1
'       ReturnToMenu()
'       exit while
'     end if
'   end while
END MAIN


FUNCTION CheckJob()
local $e #e
  $e = [Description]
  #e = len([Description])
  $e = left($e,#e-1)                   'message "$e) is:"&str($e)
  while true
    if $e ! "Delivery˙only"
      exit while
    elseif $e ! "Supply˙only"
      exit while
    else
      if days([Fitting_Date]) = 0
        if $menu == "boss"
          messbox(" NO fitting date entered, print worksheet? (y/n) ",1,0,1)
          if ptstr == "n"
            return (1)
          end if
        else
          messboxwait(" NO fitting date yet entered - cannot be printed ",0,0,1)
          return (1)
        end if
      end if
      exit while
    end if
  end while

  custname = [CustOrd_Name]
  deladdr1 = [Delivery_Address_1]
  $ordstat = [Order_Status]            'message "$ordstat is:"&str($ordstat)
  ftrname  = [Nickname]
  ftgdate  = [Fitting_Date]
  if $ordstat <> "P"
    x = messboxwait(" "|jobnr&custname&"- NOT yet authorised ",0,0,1)
    return (-1)
  else
    vloadif(dpath|"lst_stck.vw")       'message "Reset previous screen "
    screen clear box 1 1 sch scw 0 0 no-border
    repaint off
    x = NameAddressAsk(custname,"fit at:"&deladdr1)
    if ptstr == "y"
      return (0)
    else
      return (-1)
    end if
  end if
END FUNCTION ' CheckJob()


FUNCTION CheckNr()                     ' checks for JobNr - if not found
  screen clear box 1 1 sch scw 0 0 no-border
  repaint off
  vloadif(dpath|"lst_stck.vw")
  order change key "[Job_Nr]"
  while true
    x = fentrybox(" Enter Order Nr or {Esc} to exit ",6,shopmask,"")
    if x = -1
      ReturnToMenu()
    elseif x = 0
      if len(ptstr)=5
        jobnr=left(ptstr,1)|"0"|right(ptstr,4)
      else
        jobnr = ptstr
      end if
    end if

    progress(fgp,bgp," Checking for existing order ",0)
    order change key "[Job_Nr]"
    data find "[Job_Nr]" equal jobnr options "gw"
    if cerror                               '   if none - then return
      messbox(" Job not found - re-enter ",0,0,1)
      return (-1)
    else
      x = CheckJob()                        ' confirm correct
      if x = 0                              ' YES print
        PrintWorkSheet()
        return (0)
      elseif x = -1
        screen clear box 1 1 sch scw 0 0 no-border
        continue while
      elseif x = 1
        screen clear box 1 1 sch scw 0 0 no-border
        continue while
      end if
    end if
  end while
END FUNCTION ' CheckNr()


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 NameAddressAsk(msg1,msg2)
local fc2 bc2 fc1 bc1 r1 r2 c1 c2 c3 lmsg mbox k err q cc endmess f1
  q = 1
  err = 0
  endmess = " Correct? (y/n) "
  k=0
  fc1=fgp
  bc1=bgp
  fc2=fgi
  bc2=bgi

  mbox = scrwidth
  lmsg=max(len(msg1),len(msg2),len(endmess)+2)
  if lmsg + 4 > scrwidth
    return (-2)
  end if
  r1 = scr-2
  r2 = scr+2
  c3 = int((mbox-lmsg)/2)+1
  c1 = c3-2
  c2 = c3+lmsg+1
  if c1 <= 0
    c1 = 1
  end if
  if (c1-1) < 12
    while (c1-1) < (scrwidth-c2)
      c2=c2+1
    end while
  end if
  if c2 > scrwidth
    return (-2)
  end if
  cc = scrwidth/2-(len(endmess)/2)+1
  screen save r1 c1 r2 c2 psa
  screen clear box r1 c1 r2 c2 fc1 bc1
  screen print scr-1 c3 fgp bgp FORMAT "M"|str(lmsg) msg1
  screen print scr c3 fgp bgp FORMAT "M"|str(lmsg) msg2
  screen print scr+1 cc fc2 bc2 endmess
  screen save r1 c1 r2 c2 dsa
  WHILE "yn" !! k
    locate  scr+1 (cc+len(endmess)-1) 1
    k=inchar
    k = lower(chr(k))
  END WHILE

  locate  scr (c3+lmsg) 0
  screen shortrestore psa
  if k = 0
    ptstr = NULL
  else
    ptstr = k
  end if
  return (err)
END FUNCTION' NameAddressAsk()


FUNCTION PrintWorkSheet()
  repaint off
  vloadif(dpath|"ftrwks_s.vw")
  order change key "[Job_Nr]"
  data find "[Job_Nr]" equal jobnr options "gw"
  if cerror                               '   if none - then return
    messbox(" Job not found - no worksheet printed ",0,0,1)
    return (-1)
  else
  ' get variables
    ftrname   = [Nickname]
    custname  = [CustOrd_Name]
    deladdr1  = [Delivery_Address_1]
    deladdr2  = [Delivery_Address_2]
    deladdr3  = [Del_City]
    deladdr4  = [Del_Postcode]
    offtel    = [Office_Tel]
    hometel   = [Home_Tel]
    ftginstr  = [Instructions]
    ftgcomm   = [Fitting_Comment]
    cr_status = [Credit_Status]
    mobile    = [Mobile/Other_Nr]
    balancedue= [Balance_Due]
    invtotal  = [Invoice_Total]
    salanal   = [SalesAnalysis]

' if DEPOSIT NOT received, report to DG
' message "cr_status is:"&str(cr_status)
' message "balancedue is:"&str(balancedue)
' message "invtotal is:"&str(invtotal)
' message "Sales is:"&str(salanal)

    if salanal <> "X"
      if balancedue = invtotal           ' NO deposit rec'd
        if cr_status <> "A"
          if $menu == "boss"
            messbox(" NO deposit received, print worksheet? (y/n) ",1,0,1)
            if ptstr == "n"
              return (1)
            end if
          else
            messboxwait(" NO deposit received, refer to DG before despatching ",0,0,1)
            return (1)
          end if
        end if
      end if
    end if

' find req'ns (not deleted) for jobnr
    vloadif(dpath|"lststk_a.vw")
    order change key "[Job_Nr]"
    data query execute "job_reqn.dfq" index "job_reqn.idx"
' ŚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ
'   [Job_Nr] = jobnr
'   and
'   not(deleted)
' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ
    if cerror
      messbox(" No requisitions for this job - print anyway? (y/n) ",1,0,1)
      if ptstr == "n"
        return (1)
      else
        vloadif(dpath|"ftrwks_s.vw")
        data query execute "onlyone.dfq" index "one.idx"  ' index one
        PrintReport("ftrwks_N.dfr","Job Worksheet",p3,p4,p5,p6)
        return (0)
      end if
    end if
' query again to remove type "O" reqns (ie commission)
    data query execute "No_typeO.dfq" index "no_typeO.idx"
' ŚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ
'   [Item_Type] <> "O"
' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ
' sort by LstOrder
    order sort execute dictionary "lst_stck" index "lst_stck"
    remove(X_path|"X_ftrwks.*")
    data query execute "not_del.dfq" Smart4 X_path|"X_jobwks" fields "[Fitting_Date|Width]"
    vunloadif("X_ftrwks.vws")
'     ClearHardSpaces()
    _SWIP_Crystal(Xreppath|"X_jobwks","P",0,1,"")
    vloadif(dpath|"lststk_a.vw")
'     vloadif(dpath|"ftrwks_X.vw")

'   PrintReport("ftrwks_F.dfr","Job Worksheet",p3,p4,p5,p6)
    return (0)
  end if

END FUNCTION 'PrintWorkSheet()

'     order sort execute dictionary "lst_stck" index "lst_stck"
'     remove(X_path|"X_ftrwks.*")
'     data query execute "not_del.dfq" data-file X_path|"X_ftrwks" fields "[Fitting_Date|Width]"
'     vunloadif("X_ftrwks.vws")
' '     ClearHardSpaces()
'     _SWIP_Crystal(Xreppath|"X_ftrwks","P",0,1,"")
'     vloadif(dpath|"ftrwks_X.vw")

