'TFR_PAYT - processes GOODSOUT records for "Fitting" to FTR_PAYT file. Reports
'           printed (by Shop) to show [Released] and [Held] records. No
'           validation done at this stage.

external  dpath cpath vloadif() bpopdb() vunloadif() Background() fentrybox()
external  chkdate() messbox() messboxwait() progress() popuplist() messline()
external  increment() userid addidxrec() remove() sch scw PrintReport()
external  navrecs() fgp bgp tone() strcount() progtag() chkstr() delstr() makeidx()
external  fgs bgs fgi bgi delidxrec() arytostr() getidxrecs() to_busdate()
external  shopmask gdsoutpath
external  X_path _SWIP_Crystal() Xreppath

public    ptstr ptval ptary[1] dsa ftrname ftrcode ftgdate datecode psa jobnr
public    $nickname docref prepdate

global    x ReturnToMenu() PaymentRecords() i $desc ListOSBalance() m1 m2 m3
global    CheckFitDate() datenumber EnterDocRef() addr $newdate z y
global    EnterPaymentRec() #cost reqref $totftgs ProcessGOODSOUT()
global    dfname fnum sview iview sprec sel_str scount pline pline_scr
global    $appts idxname #rec  nrftgs p1 p2 p3 p4 p5 p6 ppl ListPAIDBalance()
global    PrintHELDPayts() c4h Check4Held() CheckPayments()


MAIN
single-step off
  file unload all
  idxname= "tfrpayt1.idx"
  fnum=6
  m1="Process’GOODSOUT’file"
  m2="’Print’Shop’reports"
  m3="’’’Check’payments"

  while true
    Background()
    x = popuplist(10,31,13,m1&m2&m3,"{Esc} to exit",1,0)
    if x = 0

      if ptstr = m2
' "Print’Shop’reports"
        x = ListOSBalance()
'           if x = -1
'             exit while
'           end if
        x = ListPAIDBalance()
'           if x = -1
'             exit while
'           end if
        x = PrintHELDPayts()

      elseif ptstr=m1
        x = ProcessGOODSOUT()					' line 236
        if x = -1
          exit while
        end if

      elseif ptstr=m3
        x = CheckPayments()
        if x = -1
          exit while
        end if
      end if
    else
      ReturnToMenu()
    end if
  end while

'   ReturnToMenu()

END MAIN


FUNCTION ReturnToMenu()
  Background()
  file unload all
  transfer cpath|"pm_menu.psl" in-memory
END FUNCTION ' ReturnToMenu()


FUNCTION CheckFitDate()
'use prev. Friday as default
  case dayname(today)
     when "Monday"
     prepdate=date2(days(today)-1)
     when "Tuesday"
     prepdate=date2(days(today)-2)
     when "Wednesday"
     prepdate=date2(days(today)-3)
     when "Thursday"
     prepdate=date2(days(today)-4)
     when "Friday"
     prepdate=date2(days(today)-5)
     when "Saturday"
     prepdate=date2(days(today)-6)
     when "Sunday"
     prepdate=date2(days(today)-7)
  end case
  while true
'     x = fentrybox(" Last Date for creating Fitters' Payments records ",10,"##\/##\/####",date2(days(today)-1))
    x = fentrybox(" Last Date for creating Fitters' Payments records ",10,"##\/##\/####",prepdate)
    if x = -1
      return (-1)
    end if
    prepdate = date2(ptstr)
    if chkdate(prepdate,1) = -1
      messbox(" Incorrect date - re-enter ",0,0,1)
      continue while
    end if
    exit while
  end while
  progress(15,10," Please wait .... finding records ",0)
END FUNCTION ' CheckFitDate()


FUNCTION ListOSBalance()
  messbox(" Print Fitter Payment List for O/S balances? (y/n) ",1,1,1)
  if ptstr == "n"                      '  store file & exit
    return (0)
  end if
  vloadif(dpath|"cust_ord.vws")
  data query execute "lstunpd1.dfq" index "ftrname0.idx"
' ŚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ
' ³ [Balance_Due]>.01
' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ
  if cerror
    messboxwait(" No Sales Orders with O/S balances ",0,0,1)
    return (0)
'     ReturnToMenu()
  end if

  vunloadif("cust_ord.vws")

  vloadif(dpath|"tfrpayt4.vw")
  order change index "ftrname0.idx"
  data query execute "listunpd.dfq" index "ftrname1.idx"
' ŚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ
' ³ [Ftrpayts]>.01
' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ
  if cerror
    messboxwait(" No Sales Orders with fitters' payments O/S ",0,0,1)
    return (0)
  end if

  order sort now dictionary "ftrname2.idx" fields "[Job_Nr]" ascending

'   p1 = "tfrpayt1.dfr"
'   p2 = ""               ' p2 = title at top of choice popup ("LABEL")
'   p3 = 1                ' p3 = printer to be used (1=HPIII_QC; 2=GEN_EPSN etc)
'   p4 = 1                ' p4 = printer port to use (1,2 etc - network set to use 2=LASER; 3=LABEL)
' '   p4 = 1                ' p4 = printer port to use (1,2 etc - network set to use 2=LASER; 3=LABEL)
'   p5 = 1                ' p5 = choose VIEW/PRINT 1=PRINT; 2=VIEW; 3=CHOOSE
'   p6 = 1                ' p6 = nr of copies

  x=vunloadif("X_tfrpyt.*")            'message "x vunloadif is:"&str(x)
  x=remove(X_path|"X_tfrpyt.*")        'message "x remove is:"&str(x)
' message "ptstr is:"&str(ptstr)
  data query execute "not_del.dfq" Smart4 X_path|"X_tfrpyt" fields "[Job_Nr;CustOrd_Name;Delivery_Address_1;Balance_Due;Ftrpayts;Br_KA;Branch;Ftr_Code]"
'   data query execute "not_del.dfq" Smart4 X_path|"X_tfrpyt" fields "[Job_Nr;CustOrd_Name;Delivery_Address_1;Balance_Due;Ftrpayts;Br_KA;Branch]"

  while true
    _SWIP_Crystal(Xreppath|"tfrpyt_1","P",0,1,"")
    messbox(" Have Payment Approvals for O/S bals printed correctly? (y/n) ",1,1,1)
    if ptstr == "y"                      '  store file & exit
      exit while
    end if
  end while
  vloadif(dpath|"tfrpayt4.vw")
  p6 = 1
END FUNCTION 'ListOSBalance()


FUNCTION ListPAIDBalance()
  messbox(" Print Fitter Payment List for CLEARED balances? (y/n) ",1,1,1)
  if ptstr == "n"                      '  store file & exit
    return (0)
  end if
  vloadif(dpath|"cust_ord.vws")
  data query execute "lstunpd2.dfq" index "ftrname0.idx"
' ŚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ
' ³ [Balance_Due]<.01
' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ
  if cerror
    messboxwait(" No Fitters' payments with CLEARED balances ",0,0,1)
    return (0)
  end if
  vunloadif("cust_ord.vws")

  vloadif(dpath|"tfrpayt4.vw")
  order change index "ftrname0.idx"
  data query execute "listunpd.dfq" index "ftrname1.idx"
' ŚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ
' ³ [Ftrpayts]>.01
' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ
  if cerror
    messboxwait(" No Sales Orders with fitters' payments O/S ",0,0,1)
    return (0)
  end if
  order sort now dictionary "ftrname2.idx" fields "[Job_Nr]" ascending

'   p1 = "tfrpayt2.dfr"
'   p2 = ""               ' p2 = title at top of choice popup ("LABEL")
'   p3 = 1                ' p3 = printer to be used (1=HPIII_QC; 2=GEN_EPSN etc)
'   p4 = 1                ' p4 = printer port to use (1,2 etc - network set to use 2=LASER; 3=LABEL)
' '   p4 = 1                ' p4 = printer port to use (1,2 etc - network set to use 2=LASER; 3=LABEL)
'   p5 = 1                ' p5 = choose VIEW/PRINT 1=PRINT; 2=VIEW; 3=CHOOSE
'   p6 = 1                ' p6 = nr of copies

  x=vunloadif("Xtfrpyt1.*")
' message "x vunloadif is:"&str(x)
  x=remove(X_path|"Xtfrpyt1.*")
' message "x remove is:"&str(x)
' message "ptstr is:"&str(ptstr)
  data query execute "not_del.dfq" Smart4 X_path|"Xtfrpyt1" fields "[Job_Nr;CustOrd_Name;Delivery_Address_1;Balance_Due;Ftrpayts;Br_KA;Branch;Ftr_Code]"
' message "stop"
  while true
    _SWIP_Crystal(Xreppath|"tfrpyt_2","P",0,1,"")
    messbox(" Have Payment Approvals for CLEARED bals printed? (y/n) ",1,1,1)
    if ptstr == "y"                      '  store file & exit
      exit while
    end if
  end while
  vloadif(dpath|"tfrpayt4.vw")

'   while true
' ' messboxwait("L208 - Printing change - re-instate ",0,0,1)
'     PrintReport(p1,"",p3,p4,p5,p6)
' message "STOP"
'     messbox(" Have Payment Approvals for PAID bals. printed correctly? (y/n) ",1,1,1)
'     if ptstr == "y"                      '  store file & exit
'       exit while
'     end if
'   end while
  p6 = 1
END FUNCTION 'ListPAIDBalance()


FUNCTION ProcessGOODSOUT()
  x=messbox(" Have shops confirmed previous week's appointments are valid? (y/n) ",1,0,1)
  if ptstr == "n"                      '  store file & exit
    return (0)
  end if

  x = CheckFitDate()
  if x = -1
    return (0)
'     ReturnToMenu()
  end if

  vloadif(dpath|"goodsout.vws")        'query for all "F" itemtypes which have no docrefs
  order change key "[Itemtype]"
  data query execute "tfrpayt1.dfq" index "tfrpayt0.idx"
' ŚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ
' ³ [Itemtype]="F"
'   and
'   not (deleted)
' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ
  if cerror
    messboxwait(" No Fitting records to process ",0,0,1)
    return (0)
'     ReturnToMenu()
  else
    data query execute "tfrpayt3.dfq" index "tfrpayt1.idx"
' ŚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ
'   days([Date_Out]) <= days(prepdate)
'   and
'   len([Document])=0
' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ
    if cerror
      messboxwait(" No Fitting records to process ",0,0,1)
      return (0)
'       ReturnToMenu()
    end if

'     x = AccPayts()

    PaymentRecords()

  end if
END FUNCTION 'ProcessGOODSOUT()


FUNCTION PaymentRecords()
local desMRC n_name
	increment(dpath|"doc_ref.dat",1)   'get document ref
	datenumber = left(date2(today),2)|mid(date2(today),4,2)
	docref = str(datenumber)|right(date2(today),1)|right("000"|str(ptval),3)	'message "docref) is:"&str(docref)
	vunloadif(sview)
	vloadif(dpath|"ftgssel1.vw")
	order change index idxname
	for i = 1 to records
		if len([Document])<>0
			data goto record next
		        continue for
		end if
		lock-record
		        [Document]=docref
		write-record
	        #cost = [Cost]
		ftrcode = [FtrCode]
		jobnr = [Job_Nr]
		reqref= [Requsn_Nr]
		addr  = [Delivery_Address_1]
		$desc = [Product_MRC]
		desMRC= [Description_MRC]
		n_name= [Nickname]
'     $desc = [Desc]
		ftgdate = [Date_Out]
		EnterPaymentRec(#cost,jobnr,reqref,$desc,addr,desMRC,n_name)
		vloadif(dpath|"ftgssel1.vw")
'     vloadif(dpath|sview)
		data goto record next
	end for
	EnterDocRef(docref,"Tfr_Payt")

'print list of pyts tfr'd for Loading List file

	vloadif(dpath|"ftgssel1.vw")
	vunloadif("X_pyttfr.*")
	remove(X_path|"X_pyttfr.*")
        data query execute "not_del.dfq" Smart4 X_path|"X_pyttfr" fields "[Date_Out;Job_Nr;Product_MRC;Description_MRC;Nickname;Delivery_Address_1;QuantOut;Cost;documentref]"

	while true
     	_SWIP_Crystal(Xreppath|"pyttfr_1","P",0,1,"")
        	_SWIP_Crystal(Xreppath|"pyttfr_1","S",0,1,"")
' 		_SWIP_Crystal(Xreppath|"pyttfr_1","EP",0,1,gdsoutpath|docref|".pdf")
	        messbox(" Has the Fitter Payments Transfers printed? (y/n) ",1,1,1)
		if ptstr == "y"                      '  store file & exit
		        exit while
	        end if
        end while
	vunloadif("ftgssel1.vw")

END FUNCTION ' PaymentRecords()


FUNCTION EnterPaymentRec(a,j,r,d,q,la,nn) 'EnterPaymentRec(#cost,jobnr,reqref,$desc,addr,[Description_MRC],[Nickname])
  vloadif(dpath|"ftr_payt.vws")
  if d = "Labour Additional"
    d = "LabAddn /"&la
  end if
  data enter lock
    [Ftr_Code] = ftrcode
    [Date_Ftd] = ftgdate
    [Amount]   = a
    [Released] = a
    [Action]   = "N"
    [JobNr]    = j
    [ReqRef]   = r
    [Address]  = q
    [Desc] = d
    [Nickname] = nn
  write-record
END FUNCTION ' EnterPaymentRec()


FUNCTION EnterDocRef(ref1,ref2)
  vloadif(dpath|"doc_refs.vws")
  data enter lock
    [Doc_Ref] = ref1
    [Dated]   = today
    [Timed]   = now
    [Creator] = userid
    [Program] = ref2
  write-record
END FUNCTION ' EnterDocRef()


FUNCTION PrintHELDPayts()
local p1 p2 p3 p4 p5 p6
  messbox(" Print HELD payments, ordered by Shop? (y/n) ",1,1,1)
  if ptstr == "n"                      '  store file & exit
    return (0)
  end if
  vloadif(dpath|"preppayt.vw")
  c4h=Check4Held()
  repaint off

  if c4h = 1                         ' some HELD, print report
    order sort now dictionary "ftrpayt5.idx" fields "[JobNr]" ascending

    vunloadif("X_hldpyt.*")
    remove(X_path|"X_hldpyt.*")
    data query execute "not_del.dfq" Smart4 X_path|"X_hldpyt" fields "[JobNr;Date_Ftd;Address;Desc;Notes;Amount;Paid;Ftr_Code]"
    while true
      _SWIP_Crystal(Xreppath|"tfrpyt_3","P",0,1,"")
'   _SWIP_Crystal(Xreppath|"$inv_1","EP",0,1,invpath|$nextinvnr|".pdf")
      messbox(" Have the Shops' HELD Payment Lists printed? (y/n) ",1,1,1)
      if ptstr == "y"                      '  store file & exit
        exit while
      end if
    end while
    vloadif(dpath|"preppayt.vw")

'       messbox(" Has the Shop's HELD Payment List printed? (y/n) ",1,1,1)
'       if ptstr == "y"
' '         messboxwait(" Amend the payments and run this program again ",0,0,1)
' '         return (0)
'         exit while
'       end if
'     end while
  end if
END FUNCTION ' PrintPayts()


FUNCTION Check4Held()            ' return 1 for some HELD; 0 for NONE HELD
  data query execute "heldpayt.dfq" index "fp4.idx"
' ŚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ
' [Action]="H"
' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ
  if cerror
'     messboxwait(" No payments to make for"&$nickname,0,0,1)
    return (0)
  else
    order sort now dictionary "ftrpayt4.idx" fields "[JobNr]" ascending
    return (1)
  end if
END FUNCTION ' Check4Held()


FUNCTION CheckPayments()
local y1 y2 y3
'enter Job Nr
while true
  x = fentrybox(" Enter Job Nr ",6,shopmask,"")
  if x = -1
    return (0)
  end if
  jobnr = ptstr    'message "jobnr is:"&str(jobnr)
'show results
  vloadif(dpath|"ftrpayt2.vw")
  order change key "[JobNr]"
  data query execute "ftr_payt.dfq" index "job_reqn.idx"
' ŚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄæ
' [JobNr] = jobnr
' and
' not(deleted)
' ĄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŁ
  if cerror
    messboxwait(" No Processed Fittings for this Job ",0,0,1)
    continue while
  end if
  ptval=0
  y1 = format(" Fitting Payments for"&jobnr,"M66")
  y3 = format(" Fitter     Description                      Payment     Dated ","L66")
  y2 = format(" {Esc} to exit ","M66")
  repaint on
  repaint
  screen print 3 8 fgp bgp y1
  screen print 4 8 fgp bgp y3
  screen print 22 8 fgp bgp y2
  while ptval <> {Esc}
    ptval = navrecs()
'     if ptval = {Enter}
'       if len([Notes])>0
' '         $mess = trim([Notes]&@if())
'         messboxwait([Notes],0,0,1)
'       else
'         messboxwait(" No Notes to view ",0,0,1)
'       end if
'     elseif ptval = {F10}
'       if filesum([Released])=0
'         messboxwait(" No items to pay ",0,0,1)
'         continue while
'       end if
'       x = messline(" Continue and print Payment Summary? (y/n) ",1,1,1,21,8,66)
'       screen clear box 21 8 21 74 0 0
'       if ptstr == "n"
'         continue while
'       end if
'       PrintPayts()
'       order change physical
'       return (-1)
'     elseif ptval = {Esc}
    if ptval = {Esc}
      Background()
      exit while
    end if
  end while
end while
END FUNCTION ' CheckPayments()

