' MR_DEBTS - Monthly reports of Aged Debtors and Uninvoiced Orders

external   dpath sch scw vloadif() vunloadif() messbox() base progress()
external   cpath vkeybox() PrintReport() navrecs() progtag() fgi bgi
external   fentrybox() chkdate() popuplist() ChooseBranch() $menu
external   messboxwait() Background() dly_pstgpath remove()
external   X_path _SWIP_Crystal() Xreppath _GEMS_ShellEx()

public     ptstr $shop value1 $REPORT_DATE $SHOP_NAME $MONTH_TXT $response
public     $branch ptval jobnr dsa orderdate

global     per9 per8 per7 per0 per1 $stat i ftgdate x ReturnToMenu()
global     ChooseShop() $check SelectDrs() StoreReport() $export
global     p1 p2 p3 p4 p5 p6 ChooseReportDate()


MAIN
single-step off
  quiet on
  screen clear box 1 1 sch scw 0 0 no-border
  repaint off
  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
'   p5 = 3    ' p5 = choose VIEW/PRINT/FILE;  1=PRINT; 2=VIEW; 3=CHOOSE
  p6 = 1    ' p6 = nr of copies

  p4 = 1
  vloadif(dpath|"ageddr1.vw")
  order change key "[Job_Nr]"

  ChooseReportDate()

  x = ChooseShop()
  if x = -1
  else
    SelectDrs()
  end if

  ReturnToMenu()

END MAIN


FUNCTION ChooseReportDate()
  while true
    x = fentrybox(" Enter Date that the Report is being made upto ",10,"##\/##\/####",today)
    if x = 0
      orderdate = ptstr
      if chkdate(orderdate,1) = -1
        messbox(" Incorrect date - re-enter ",0,0,1)
        continue while
      end if
      exit while
    end if
  end while
  $report_date = date3(orderdate)
END FUNCTION ' ChooseDate()


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 ChooseShop()
  if $menu = "shop"              'message "base is:"&str(base)
    case base
      when "F"
        $SHOP = "F"
        $SHOP_NAME = "Fulham"
      when "P"
        $SHOP = "P"
        $SHOP_NAME = "Putney"
      when "R"
        $SHOP = "R"
        $SHOP_NAME = "Raynes"
      when "S"
        $SHOP = "S"
        $SHOP_NAME = "Sheen"
      when "T"
        $SHOP = "T"
        $SHOP_NAME = "Trade"
      when "W"
        $SHOP = "W"
        $SHOP_NAME = "Warehouse"
    end case
  else
    while true
      $shop_name = ChooseBranch(8,33,1)
      $shop      = upper(left($shop_name,1))
      if $shop_name = -1
        return (-1)
      end if
      screen shortrestore dsa
      vloadif(dpath|"ageddr1.vw")
      SelectDrs()
      screen clear box 1 1 sch scw 0 0 no-border
      repaint off
    end while
  end if
END FUNCTION ' ChooseShop()


FUNCTION SelectDrs()
  Background()
  $branch = $shop_name               'message "$branch is:"&str($branch)
  messbox(" Print Aged Drs list? (y/n) ",1,1,1)
  if ptstr == "y"
    Background()
    progress(15,10," Please wait ... looking for debtors ",0)
    order change key "[SalesAnalysis]"
    data query execute "mr_drs1.dfq" INDEX "first.idx"
' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
' days([Invoice_Date])<=days(orderdate) and
' [SalesAnalysis]=$shop
' and not (deleted)
' and
' days([Invoice_Date]) > 0
' and
' abs([Balance_Due]) > 0.009
' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
    if cerror
      messboxwait(" No outstanding debtors at"&$shop_name|" ",0,0,1)
    else
      order sort now "aged_drs" fields "[Invoice_Date]" ascending
      screen clear box 1 1 sch scw 0 0 no-border

      PrintReport("mr_drs1.dfr","Aged Debtors",p3,p4,p5,p6)

'       $export="E:\debtor_"|left($branch,1) 'message "$export) is:"&str($export)
'        x=remove($export)
'  message "x) is:"&str(x)
'        file export 3-dbase "[Date_Of_Order;Job_Nr;Customer_Name;Delivery_Address_1;Invoice_Total;Invoice_Date;Inv_Nr;Balance_Due]" file $export
    end if
  end if
' |"ageddr1.vw")

  messbox(" Print Over 30 day list? (y/n) ",1,1,1)
  if ptstr == "y"
    Background()
    progress(15,10," Please wait ... looking for debtors ",0)
    order change key "[SalesAnalysis]"
    data query execute "mr_drs3.dfq" INDEX "first.idx"
' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
' days([Invoice_Date])<=days(orderdate) and
' [SalesAnalysis]=$shop
' and not (deleted)
' and
' days([Invoice_Date])>0
' and
' abs([Balance_Due])>0.009
' and days(orderdate)-days([Invoice_Date])>30
' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
    if cerror
      messboxwait(" No over 30 day debtors at"&$shop_name|" ",0,0,1)
    else
      order sort now "aged_drs" fields "[Invoice_Date]" ascending
      screen clear box 1 1 sch scw 0 0 no-border
'       PrintReport("mr_drs3.dfr","Aged Debtors",p3,p4,p5,p6)

'       order sort now "ageddrs5" fields "[Date_Of_Order]" ascending
'       screen clear box 1 1 sch scw 0 0 no-border

     vunloadif("X_drs30d.vws")
     remove(X_path|"X_drs30d.*")
     data query execute "not_del.dfq" Smart4 X_path|"X_drs30d" fields "[Job_Nr;Invoice_Date;Fitting_Date;Customer_Name;Bal_OS;Br_KA;repdate]"
     _SWIP_Crystal(Xreppath|"X_drs30d","P",0,1,"")
	vloadif(dpath|"ageddr1.vw")
    end if
  end if

  messbox(" Print Over 60 day list? (y/n) ",1,1,1)
  if ptstr == "y"
    Background()
    progress(15,10," Please wait ... looking for debtors ",0)
    order change key "[SalesAnalysis]"
    data query execute "mr_drs7.dfq" INDEX "first.idx"
' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
' days([Invoice_Date])<=days(orderdate) and
' [SalesAnalysis]=$shop
' and not (deleted)
' and
' days([Invoice_Date])>0
' and
' abs([Balance_Due])>0.009
' and days(orderdate)-days([Invoice_Date])>60
' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
    if cerror
      messboxwait(" No over 60 day debtors at"&$shop_name|" ",0,0,1)
    else
      order sort now "aged_drs" fields "[Invoice_Date]" ascending
      screen clear box 1 1 sch scw 0 0 no-border
      PrintReport("mr_drs7.dfr","Aged Debtors",p3,p4,p5,p6)
'     order sort now "aged_drs" fields "[Invoice_Date]" ascending
'     vunloadif("X_agddrs.vws")
'     remove(X_path|"X_agddrs.*")
'     data query execute "not_del.dfq" Smart4 X_path|"X_agddrs" fields "[Customer_Code|repdate;CommHeld]"
'     _SWIP_Crystal(Xreppath|"drs_60D","P",0,1,"")
'     screen clear box 1 1 sch scw 0 0 no-border
    end if
  end if

  messbox(" Print Over 3 month list? (y/n) ",1,1,1)
  if ptstr == "y"
    Background()
    progress(15,10," Please wait ... looking for debtors ",0)
    order change key "[SalesAnalysis]"
    data query execute "mr_drs6.dfq" INDEX "first.idx"
' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
' days([Invoice_Date])<=days(orderdate) and
' [SalesAnalysis]=$shop
' and not (deleted)
' and
' days([Invoice_Date])>0
' and
' abs([Balance_Due])>0.009
' and days(orderdate)-days([Invoice_Date])>91
' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
    if cerror
      messboxwait(" No over 3 month debtors at"&$shop_name|" ",0,0,1)
    else
      order sort now "aged_drs" fields "[Invoice_Date]" ascending
      screen clear box 1 1 sch scw 0 0 no-border
      PrintReport("mr_drs6.dfr","Aged Debtors",p3,p4,p5,p6)
    end if
  end if

  messbox(" Print Over 6 month list? (y/n) ",1,1,1)
  if ptstr == "y"
    Background()
    progress(15,10," Please wait ... looking for debtors ",0)
    order change key "[SalesAnalysis]"
    data query execute "mr_drs4.dfq" INDEX "first.idx"
' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
' days([Invoice_Date])<=days(orderdate) and
' [SalesAnalysis]=$shop
' and not (deleted)
' and
' days([Invoice_Date])>0
' and
' abs([Balance_Due])>0.009
' and days(orderdate)-days([Invoice_Date])>182
' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
    if cerror
      messboxwait(" No over 6 month debtors at"&$shop_name|" ",0,0,1)
    else
      screen clear box 1 1 sch scw 0 0 no-border
      PrintReport("mr_drs4.dfr","Aged Debtors",p3,p4,p5,p6)
' 	   order sort now "aged_drs" fields "[Invoice_Date]" ascending
' 	   vunloadif("X_agddrs.vws")
' 	   remove(X_path|"X_agddrs.*")
' 	   data query execute "not_del.dfq" Smart4 X_path|"X_agddrs" fields "[Customer_Code|repdate;CommHeld]"
'  		_SWIP_Crystal(Xreppath|"ageddrs1","P",0,1,"")
    screen clear box 1 1 sch scw 0 0 no-border

    end if
  end if

  Background()

  messbox(" Print uninvoiced orders? (y/n) ",1,1,1)
  if ptstr == "y"
    progress(15,10," Please wait ... looking for uninvoiced orders ",0)
    order change physical
    data query execute "mr_drs2.dfq" INDEX "second.idx"   ' choose o/s balances
' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
'   days([Invoice_Date]) = 0 and
'   days([Date_Of_Order])<=days(orderdate) and
'   [SalesAnalysis]=$shop
'   and
'   not (deleted)
' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
    if cerror
      messboxwait(" No uninvoiced orders for"&$shop_name|" ",0,0,1)
    else
      order sort now "ageddrs5" fields "[Date_Of_Order]" ascending
      screen clear box 1 1 sch scw 0 0 no-border
      vunloadif("X_mrdrs5.vws")
      remove(X_path|"X_mrdrs5.*")
'       remove("Uninvoiced.pdf")
      data query execute "not_del.dfq" Smart4 X_path|"X_mrdrs5" fields "[Job_Nr;Date_Of_Order;Customer_Name;Invoice_Total;Bal_OS;TotalCosts;Br_KA;repdate]"
'        _SWIP_Crystal(Xreppath|"X_drs6","EP",0,1,"")
       _SWIP_Crystal(Xreppath|"X_drs6","S",0,1,"")

'       _SWIP_Crystal(Xreppath|"X_drs5","EP",0,1,"uninvoiced.pdf")
'       _GEMS_ShellEx("open","uninvoiced.pdf","",1)

    end if
  end if
END FUNCTION ' SelectDrs()
'   _SWIP_Crystal(Xreppath|"$inv_1","P",0,1,"")
'   _SWIP_Crystal(Xreppath|"$inv_1","EP",0,1,invpath|$nextinvnr|".pdf")


FUNCTION StoreReport(p1,ext)
local uninvrep
  uninvrep = dly_pstgpath|"UNINV_"|$shop|"."|ext  '
  print report execute p1 disk uninvrep detail start 1 end 0 copies 1
END FUNCTION ' StoreReport()
