
#include "app.ch"
#include "appevent.ch"
#include "common.ch"
#include "dbfdbe.ch"
#include "xbp.ch"
#include "gra.ch"
#include "font.ch"
#include "sys.ch"
#include "folbtmap.ch"
*
static oStatHead,oStat1,oStat2,oStat3,oStat4,oStat5
static oPrimeGetOne,oPrimeGetTwo,oSntDate,oSntBy,oDktDate,oPrinted
static oBlSle, dispdata
static aReceivers,nBlNumb
*
procedure appsys
return

procedure main
  *
  local aDesc         := array(6)
  local aItems        := array(6)
  local aPX        := { { XBP_PP_COMPOUNDNAME, FONT_TIMES_SMALL } }
  local aPrimeKey
  local aSendRef     := array(6)
  local aSpecIns     := array(2)
  local aStru
  local aWeights     := array(6)
  local bSelected
  local cBlock
  local cClient
  local cCustNo
  local cFieldName
  local dEntered     := DATE()
  local dSent        := DATE()
  local drawingarea
  local mp1
  local mp2
  local nAcross
  local nColor
  local nColorBlNumb
  local nColorPrime
  local nColorPrompt
  local nColorUnPrint
  local nDocketNo
  local nEvent
  local nHeight
  local nHeightStatic
  local nPtr
  local nUp
  local nWidth
  local oClear
  local oCtrl
  local oDlg
  local oGet
  local oHeadDate
  local oPushBrowseClients
  local oPushBrowseMain
  local oPushClear
  local oPushNext
  local oPushPrev
  local oPushPrnt
  local oPushSave
  local oPushSet
  local oStat11
  local oStat21
  local oStat31
  local oStat41
  local oStat51
  local oStat52
  local oStat53
  local oStat54
  local oStat55
  local oStatHead1
  local oStatHead2
  local oStatHead3
  local oStatHead4
  local oStatHead5
  local oStatHead6
  local oStatHead7
  local oXbp
  local oXbp1
  local oXbp2
  local oXbp3
  *
  aReceivers   := array(4)
  *
  // FIELD CUSTNO,DDOCKET
  *
  dispdata := ""
  *
  nHeight  := 20
  *
  set date british
  set century on
  set console off
  set deleted on
  *
  loadCDxDbe()
  *
  IF file("DDOCKET.DBF")
    *
  ELSE
    *
    aStru := ;
      {;
      {"BLNUMB","N",8,0},;
      {"CUSTNO","C",14,0},;
      {"DDOCKET","N",8,0},;
      {"DKTDATE","D",8,0},;
      {"SNTDATE","D",8,0},;
      {"SNTBY","C",14,0},;
      {"RECV1","C",37,0},;
      {"RECV2","C",37,0},;
      {"RECV3","C",37,0},;
      {"RECV4","C",37,0},;
      {"SPECINS1","C",40,0},;
      {"SPECINS2","C",40,0},;
      {"SNDREF1","C",14,0},;
      {"SNDREF2","C",14,0},;
      {"SNDREF3","C",14,0},;
      {"SNDREF4","C",14,0},;
      {"SNDREF5","C",14,0},;
      {"SNDREF6","C",14,0},;
      {"DESC1","C",30,0},;
      {"DESC2","C",30,0},;
      {"DESC3","C",30,0},;
      {"DESC4","C",30,0},;
      {"DESC5","C",30,0},;
      {"DESC6","C",30,0},;
      {"ITEMS1","N",5,0},;
      {"ITEMS2","N",5,0},;
      {"ITEMS3","N",5,0},;
      {"ITEMS4","N",5,0},;
      {"ITEMS5","N",5,0},;
      {"ITEMS6","N",5,0},;
      {"WEIGHT1","N",5,0},;
      {"WEIGHT2","N",5,0},;
      {"WEIGHT3","N",5,0},;
      {"WEIGHT4","N",5,0},;
      {"WEIGHT5","N",5,0},;
      {"WEIGHT6","N",5,0},;
      {"PRINTED","C",1,0};
      }
    *
    dbcreate("ddocket.dbf",aStru,"DBFCDX")
    *
  ENDIF
  *
  use DDOCKET new shared alias DDOCKET via "DBFCDX"
  *
  IF file("DDOCKET.CDX")
  ELSE
    *
    ddocket->(ordcreate("DDOCKET.CDX","CUSTDKT","CUSTNO+STR(DDOCKET,8,0)"))
    *
    ddocket->(ordcondset("PRINTED=' '"))
    *
    ordcreate("DDOCKET.CDX","UNPRINT","CUSTNO+STR(DDOCKET,8,0)")
    *
    ordcreate("DDOCKET.CDX","CUSTDATE","CUSTNO+DTOS(DKTDATE)")
    *
    ddocket->(ordcondset("!EMPTY(SNDREF1)"))
    *
    ordcreate("DDOCKET.CDX","SNDREF1","SNDREF1")
    *
    ddocket->(ordcondset("!EMPTY(SNDREF2)"))
    *
    ordcreate("DDOCKET.CDX","SNDREF2","SNDREF2")
    *
    ddocket->(ordcondset("!EMPTY(SNDREF3)"))
    *
    ordcreate("DDOCKET.CDX","SNDREF3","SNDREF3")
    *
    ddocket->(ordcondset("!EMPTY(SNDREF4)"))
    *
    ordcreate("DDOCKET.CDX","SNDREF4","SNDREF4")
    *
    ddocket->(ordcondset("!EMPTY(SNDREF5)"))
    *
    ordcreate("DDOCKET.CDX","SNDREF5","SNDREF5")
    *
    ddocket->(ordcondset("!EMPTY(SNDREF6)"))
    *
    ordcreate("DDOCKET.CDX","SNDREF6","SNDREF6")
    *
    ordcreate("DDOCKET.CDX","BLNUMB","STR(BLNUMB,8,0)")
    *
    ordcreate("DDOCKET.CDX","DDOCKET","STR(DDOCKET,8,0)")
    *
    ddocket->(dbclosearea())
    *
    use DDOCKET new shared alias DDOCKET via "DBFCDX"
    *
  ENDIF
  *
  ddocket->(dbgobottom())
  *
  nBlNumb := ddocket->blnumb
  *
  DDOCKET->(ordlistadd("DDOCKET.CDX"))
  *
  DDOCKET->(ORDSETFOCUS("BLNUMB"))
  *
  DDOCKET->(DBGOTOP())
  *
  nColor          := graMakeRgbColor({159,148,240})
  nColorBlNumb    := graMakeRgbColor({25,119,40})
  nColorPrompt    := graMakeRgbColor({0,0,0})
  nColorPrime     := graMakeRgbColor({0,0,180})
  nColorUnPrint   := graMakeRgbColor({215,50,100})
  *
  oDlg            := XbpDialog():new(,,{10,40},{775,540},, .F. )
  *
  oDlg:icon       :=  TRKICO
  oDlg:minbutton  := .T.
  oDlg:maxbutton  := .F.
  oDlg:taskList   := .T.
  oDlg:title      := "FOLLOWMONT TRANSPORT DOCKETS" + TRANSVERS
  oDlg:create()
  *
  drawingArea     := oDlg:drawingArea
  drawingArea:setFontCompoundName( "11.Terminal" )
  drawingArea:SetColorBG(nColor)
  *
  nAcross         := 3
  nUp             := 425
  nWidth          := 760
  nHeightStatic   := 90
  *
  oStatHead       := XbpStatic():new(;
    drawingArea, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeightStatic} ;
    )
  *
  oStatHead:clipSiblings := .T.
  oStatHead:type  := XBPSTATIC_TYPE_GROUPBOX
  oStatHead:create()
  *
  nUp             := 55
  nAcross         := 15
  *
  oStatHead1      := ;
    XbpStatic():new(;
    oStatHead, , ;
    {nAcross,nUp},;
    {0,0})
  *
  oStatHead1:caption     := "CUSTOMER NO"
  oStatHead1:clipSiblings := .T.
  oStatHead1:options     := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStatHead1:autosize     := .T.
  oStatHead1:setColorFG(nColorPrime)
  *
  oStatHead1:create()
  *
  nAcross  := 135
  *
  oStatHead2 := ;
    XbpStatic():new(;
    oStatHead, , ;
    {nAcross,nUp},;
    {0,0})
  *
  oStatHead2:caption     := "DOCKET NO"
  oStatHead2:clipSiblings := .T.
  oStatHead2:options     := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStatHead2:autosize     := .T.
  oStatHead2:setColorFG(nColorPrime)
  *
  oStatHead2:create()
  *
  nAcross  := 220
  *
  oStatHead3 := ;
    XbpStatic():new(;
    oStatHead, , ;
    {nAcross,nUp},;
    {0,0})
  *
  oStatHead3:caption     := "DOCKET DATE"
  oStatHead3:clipSiblings := .T.
  oStatHead3:options     := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStatHead3:autosize     := .T.
  oStatHead3:setColorFG(nColorPrompt)
  *
  oStatHead3:create()
  *
  nAcross  := 350
  *
  oStatHead4 := ;
    XbpStatic():new(;
    oStatHead, , ;
    {nAcross,nUp},;
    {0,0})
  *
  oStatHead4:caption     := "SENT BY"
  oStatHead4:clipSiblings := .T.
  oStatHead4:options     := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStatHead4:autosize     := .T.
  oStatHead4:setColorFG(nColorPrompt)
  *
  oStatHead4:create()
  *
  nAcross  := 500
  *
  oStatHead5 := ;
    XbpStatic():new(;
    oStatHead, , ;
    {nAcross,nUp},;
    {0,0})
  *
  oStatHead5:caption     := "SENT DATE"
  oStatHead5:clipSiblings := .T.
  oStatHead5:options     := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStatHead5:autosize     := .T.
  oStatHead5:setColorFG(nColorPrompt)
  *
  oStatHead5:create()
  *
  nAcross  := 625
  *
  oStatHead6 := ;
    XbpStatic():new(;
    oStatHead, , ;
    {nAcross,nUp},;
    {0,0})
  *
  oStatHead6:caption     := "PRINT STATUS"
  oStatHead6:clipSiblings := .T.
  oStatHead6:options     := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStatHead6:autosize     := .T.
  oStatHead6:setColorFG(nColor)
  oStatHead6:setColorBG(nColor)
  *
  oStatHead6:create()
  *
  oStatHead7 := ;
    XbpStatic():new(;
    oStatHead, , ;
    {nAcross,nUp-20},;
    {0,0})
  *
  oStatHead7:caption     := "BL NUMBER"
  oStatHead7:clipSiblings := .T.
  oStatHead7:options     := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStatHead7:autosize     := .T.
  oStatHead7:setColorFG(nColorBlNumb)
  *
  oStatHead7:create()
  *
  oBlSle := ;
    XbpDispData():new( oStatHead, , {nAcross,nUp-40}, {75,20} )
  *
  oBlSle:tabStop      := .F.
  *
  oBlSle:Cargo        := array(13)
  *
  oBlSle:cargo[GC_SAY_ROW]    := nAcross
  oBlSle:cargo[GC_SAY_COL]    := nUp-40
  oBlSle:bDispBlock           := ;
    {|x|iif(x==nil,dispdata,dispdata:=x)}
  *
  oBlSle:create()
  oBlSle:setdata("")
  *
  nUp     := 33
  nWidth  := 95
  nAcross := 15
  *
  oGet   := ;
    XbpGet():new( ;
    oStatHead, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S14"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "CUSTNO"
  oGet:cargo[GC_FLD_NO]     := LEN(oStathead:childlist())
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(14)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  oPrimeGetOne := oGet
  *
  nWidth  := 70
  nAcross := 135
  *
  oGet   := ;
    XbpGet():new( ;
    oStatHead, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|g|readPrimeKey(g)}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@K ########"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "DDOCKET"
  oGet:cargo[GC_FLD_NO]     := LEN(oStathead:childlist())
  oGet:cargo[GC_FLD_TYP]    := "N"
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := 0
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  oPrimeGetTwo := oGet
  *
  nAcross := 220
  nWidth  := 100
  *
  oGet   := ;
    XbpGet():new( ;
    oStatHead, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|g|!empty(g:cargo[GC_FLD_VALUE])}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@D"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "DKTDATE"
  oGet:cargo[GC_FLD_NO]     := LEN(oStathead:childlist())
  oGet:cargo[GC_FLD_TYP]    := "D"
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := DATE()
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  oDktDate := oGet
  *
  nWidth  := 130
  nAcross := 350
  *
  oGet   := ;
    XbpGet():new( ;
    oStatHead, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|g|skipSent()}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S14"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "SNTBY"
  oGet:cargo[GC_FLD_NO]     := LEN(oStathead:childlist())
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := SPACE(14)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  oSntBy := oGet
  *
  nWidth  := 75
  nAcross := 500
  *
  oGet   := ;
    XbpGet():new( ;
    oStatHead, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {||.t.}
  oGet:preblock           := {||.T.}
  oGet:picture              := "@D"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "SNTDATE"
  oGet:cargo[GC_FLD_NO]     := LEN(oStathead:childlist())
  oGet:cargo[GC_FLD_TYP]    := "D"
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := DATE()
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  oSntDate := oGet
  *
  nAcross       := 3
  nUp           := 300                           //  360
  nWidth        := 378
  nHeightStatic   := 120
  *
  oStat1 := XbpStatic():new(;
    drawingArea, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeightStatic} ;
    )
  oStat1:clipSiblings := .T.
  oStat1:type := XBPSTATIC_TYPE_GROUPBOX
  oStat1:create()
  *
  nAcross  := 15
  nUp     := 95
  *
  oStat11 := ;
    XbpStatic():new(;
    oStat1, , ;
    {nAcross,nUp},;
    {0,0})
  *
  oStat11:caption      := "SENDER"
  oStat11:clipSiblings := .T.
  oStat11:options      := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStat11:autosize     := .T.
  oStat11:setColorFG(nColorPrompt)
  *
  oStat11:create()
  *
  nAcross       := 387
  nUp           := 300                           //  360
  nWidth        := 378
  nHeightStatic   := 120
  *
  oStat2 := XbpStatic():new( ;
    drawingArea, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeightStatic} ;
    )
  oStat2:clipSiblings := .T.
  oStat2:type := XBPSTATIC_TYPE_GROUPBOX
  oStat2:create()
  *
  nAcross  := 15
  nUp     := 95
  *
  oStat21 := ;
    XbpStatic():new(;
    oStat2, , ;
    {nAcross,nUp},;
    {0,0})
  *
  oStat21:caption      := "RECEIVER"
  oStat21:clipSiblings := .T.
  oStat21:options      := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStat21:autosize     := .T.
  oStat21:setColorFG(nColorPrompt)
  *
  oStat21:create()
  *
  nAcross := 15
  nUp     := 77
  nWidth  := 350
  *
  oGet   := ;
    XbpGet():new( ;
    oStat2, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S37"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "RECV1"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat2:childlist())
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(37)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aReceivers[1] := oGet
  *
  nUp -= 22
  *
  oGet   := ;
    XbpGet():new( ;
    oStat2, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S37"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "RECV2"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat2:childlist())
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(37)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aReceivers[2] := oGet
  *
  nUp -= 22
  *
  oGet   := ;
    XbpGet():new( ;
    oStat2, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S37"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "RECV3"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat2:childlist())
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(37)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aReceivers[3] := oGet
  *
  nUp -= 22
  *
  oGet   := ;
    XbpGet():new( ;
    oStat2, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S37"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "RECV4"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat2:childlist())
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(37)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aReceivers[4] := oGet
  *
  nAcross     := 3
  nUp         := 210                             //  270
  nWidth      := 378
  nHeightStatic  := 90
  *
  oStat3 := XbpStatic():new( ;
    drawingArea, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeightStatic}, ;
    )
  oStat3:clipSiblings := .T.
  oStat3:type := XBPSTATIC_TYPE_GROUPBOX
  oStat3:create()
  *
  oStat31 := ;
    XbpStatic():new(;
    oStat3, , ;
    {15,65},;
    {0,0})
  *
  oStat31:caption      := "ACCOUNT TO"
  oStat31:clipSiblings := .T.
  oStat31:options      := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStat31:autosize     := .T.
  oStat31:setColorFG(nColorPrompt)
  *
  oStat31:create()
  *
  nAcross     := 387
  nUp         := 210                             // 270
  nWidth      := 378
  nHeightStatic  := 90
  *
  oStat4 := XbpStatic():new( ;
    drawingArea, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeightStatic}, ;
    )
  oStat4:clipSiblings := .T.
  oStat4:type := XBPSTATIC_TYPE_GROUPBOX
  oStat4:create()
  *
  *
  oStat41 := ;
    XbpStatic():new(;
    oStat4, , ;
    {15,65},;
    {0,0})
  *
  oStat41:caption      := "SPECIAL INSTRUCTIONS"
  oStat41:clipSiblings := .T.
  oStat41:options      := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStat41:autosize     := .T.
  oStat41:setColorFG(nColorPrompt)
  *
  oStat41:create()
  *
  nAcross := 15
  nUp     := 43
  nWidth  := 350
  *
  oGet   := ;
    XbpGet():new( ;
    oStat4, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S40"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "SPECINS1"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat4:childlist())
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := ;
    padr("FULL SIGNATURE REQUIRED",40)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aSpecIns[1] := oGet
  *
  nUp -= 22
  *
  oGet   := ;
    XbpGet():new( ;
    oStat4, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S40"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "SPECINS2"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat4:childlist())
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(40)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aSpecins[2] := oGet
  *
  nAcross     := 3
  nUp         := 30                              // 90
  nWidth      := 490
  nHeightStatic  := 180
  *
  *
  oStat5 := XbpStatic():new(;
    drawingArea, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeightStatic}, ;
    )
  oStat5:clipSiblings := .T.
  oStat5:type := XBPSTATIC_TYPE_GROUPBOX
  oStat5:create()
  *
  nAcross := 15
  nUp     := 145
  *
  oStat51 := ;
    XbpStatic():new(;
    oStat5, , ;
    {nAcross,nUp},;
    {0,0})
  *
  oStat51:caption      := "SENDERS REF."
  oStat51:clipSiblings := .T.
  oStat51:options      := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStat51:autosize     := .T.
  oStat51:setColorFG(nColorPrompt)
  *
  oStat51:create()
  *
  nAcross := 121
  *
  oStat52 := ;
    XbpStatic():new(;
    oStat5, , ;
    {nAcross,nUp},;
    {0,0})
  *
  oStat52:caption      := "DESCRIPTION"
  oStat52:clipSiblings := .T.
  oStat52:options      := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStat52:autosize     := .T.
  oStat52:setColorFG(nColorPrompt)
  *
  oStat52:create()
  *
  nAcross := 359
  *
  oStat53 := ;
    XbpStatic():new(;
    oStat5, , ;
    {nAcross,nUp},;
    {0,0})
  *
  oStat53:caption      := "ITEMS"
  oStat53:clipSiblings := .T.
  oStat53:options      := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStat53:autosize     := .T.
  oStat53:setColorFG(nColorPrompt)
  *
  oStat53:create()
  *
  nAcross := 420
  *
  oStat54 := ;
    XbpStatic():new(;
    oStat5, , ;
    {nAcross,nUp},;
    {0,0})
  *
  oStat54:caption      := "WEIGHT"
  oStat54:clipSiblings := .T.
  oStat54:options      := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT
  oStat54:autosize     := .T.
  oStat54:setColorFG(nColorPrompt)
  *
  oStat54:create()
  *
  nUp     -= 22
  nAcross := 15
  nWidth  := 95
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {||fillSndRef(1,aSendref)}
  oGet:preblock           := {||loadSndRef1IfBlank(aSendRef)}
  oGet:picture              := "@!S14"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "SNDREF1"
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(14)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aSendRef[1] := oGet
  *
  nAcross := 121
  nWidth  := 230
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S30"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "DESC1"
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(30)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aDesc[1] := oGet
  *
  nAcross := 359
  nWidth  := 50
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@K 99999"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "ITEMS1"
  oGet:cargo[GC_FLD_TYP]    := "N"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := 0
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aItems[1] := oGet
  *
  nAcross := 420
  nWidth  := 55
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@K 99999"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "WEIGHT1"
  oGet:cargo[GC_FLD_TYP]    := "N"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := 0
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aWeights[1]  := oGet
  *
  nUp     -= 22
  nAcross := 15
  nWidth  := 95
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {||fillSndRef(2,aSendref)}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S14"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "SNDREF2"
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(14)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aSendRef[2] := oGet
  *
  nAcross := 121
  nWidth  := 230
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S30"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "DESC2"
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(30)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aDesc[2] := oGet
  *
  nAcross := 359
  nWidth  := 50
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@K 99999"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "ITEMS2"
  oGet:cargo[GC_FLD_TYP]    := "N"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := 0
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aItems[2] := oGet
  *
  nAcross := 420
  nWidth  := 55
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@K 99999"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "WEIGHT2"
  oGet:cargo[GC_FLD_TYP]    := "N"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := 0
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aWeights[2]  := oGet
  *
  nUp     -= 22
  nAcross := 15
  nWidth  := 95
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {||fillSndRef(3,aSendref)}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S14"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "SNDREF3"
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(14)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aSendRef[3] := oGet
  *
  nAcross   := 121
  nWidth   := 230
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S30"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "DESC3"
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(30)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aDesc[3] := oGet
  *
  nAcross   := 359
  nWidth   := 50
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@K 99999"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "ITEMS3"
  oGet:cargo[GC_FLD_TYP]    := "N"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := 0
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aItems[3] := oGet
  *
  nAcross   := 420
  nWidth   := 55
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@K 99999"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "WEIGHT3"
  oGet:cargo[GC_FLD_TYP]    := "N"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := 0
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aWeights[3] := oGet
  *
  nUp     -= 22
  nAcross := 15
  nWidth  := 95
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {||fillSndRef(4,aSendref)}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S14"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "SNDREF4"
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(14)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aSendRef[4] := oGet
  nAcross   := 121
  nWidth   := 230

  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S30"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "DESC4"
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(30)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aDesc[4] := oGet
  *
  nAcross   := 359
  nWidth   := 50
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@K 99999"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "ITEMS4"
  oGet:cargo[GC_FLD_TYP]    := "N"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := 0
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aItems[4] := oGet
  *
  nAcross   := 420
  nWidth   := 55
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@K 99999"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "WEIGHT4"
  oGet:cargo[GC_FLD_TYP]    := "N"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := 0
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aWeights[4]  := oGet
  *
  nUp     -= 22
  nAcross := 15
  nWidth  := 95
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {||fillSndRef(5,aSendref)}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S14"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "SNDREF5"
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(14)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aSendRef[5] := oGet
  *
  nAcross   := 121
  nWidth   := 230

  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S30"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "DESC5"
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(30)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aDesc[5] := oGet
  *
  nAcross := 359
  nWidth  := 50
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@K 99999"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "ITEMS5"
  oGet:cargo[GC_FLD_TYP]    := "N"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := 0
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aItems[5] := oGet
  *
  nAcross   := 420
  nWidth  := 55
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@K 99999"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "WEIGHT5"
  oGet:cargo[GC_FLD_TYP]    := "N"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := 0
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aWeights[5]  := oGet
  *
  nUp -= 22
  nAcross := 15
  nWidth  := 95
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {||fillSndRef(6,aSendref)}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S14"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "SNDREF6"
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(14)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aSendRef[6] := oGet
  *
  nAcross := 121
  nWidth := 230
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@!S30"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "DESC6"
  oGet:cargo[GC_FLD_TYP]    := "C"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := space(30)
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aDesc[6] := oGet
  *
  nAcross := 359
  nWidth := 50
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@K 99999"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "ITEMS6"
  oGet:cargo[GC_FLD_TYP]    := "N"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := 0
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aItems[6] := oGet
  *
  nAcross   := 420
  nWidth  := 55
  *
  oGet   := ;
    XbpGet():new( ;
    oStat5, , ;
    {nAcross,nUp}, ;
    {nWidth,nHeight}, ;
    aPX)
  *
  oGet:clipSiblings       := .T.
  oGet:postblock          := {|| .T.}
  oGet:preblock           := {|| .T.}
  oGet:picture              := "@K 99999"
  oGet:Cargo              := array(13)
  oGet:cargo[GC_FIELD]      := "WEIGHT6"
  oGet:cargo[GC_FLD_TYP]    := "N"
  oGet:cargo[GC_FLD_NO]     := LEN(oStat5:childlist())
  oGet:editable             := TRUE
  oGet:cargo[GC_FLD_VALUE]  := 0
  oGet:datalink             := oBlk(oGet)
  oGet:create()
  oGet:setdata()
  *
  aWeights[6]  := oGet
  *
  oPushSave           := ;
    XbpPushButton():new( drawingArea, , {500,160}, {84,20} )
  oPushSave:caption     := "F10 Ok"
  oPushSave:clipSiblings := .T.
  oPushSave:tabStop      := .T.
  oPushSave:create()
  *
  oPushSave:activate    := ;
    {|| setappfocus(aDesc[1]),;
    postappevent( xbeP_Keyboard,xbeK_F10,,aDesc[1] ) }
  *
  oPushClear          := ;
    XbpPushButton():new( drawingArea, , {500,130}, {84,20} )
  oPushClear:caption    := "F9 Clear"
  oPushclear:clipSiblings := .T.
  oPushclear:tabStop      := .T.
  oPushclear:create()
  *
  oPushclear:activate     := {|| ;
    setappfocus(oPrimeGetOne),;
    postappevent( xbeP_Keyboard,xbeK_F9,,oPrimeGetOne) }
  *
  oPushBrowseMain           := ;
    XbpPushButton():new( drawingArea, , {600,160}, {84,20} )
  oPushBrowseMain:caption     := "F4 Browse"
  oPushBrowseMain:clipSiblings := .T.
  oPushBrowseMain:tabStop      := .T.
  oPushBrowseMain:create()
  *
  oPushBrowseMain:activate    := {|| ;
    setappfocus(oPrimeGetOne),;
    postappevent( xbeP_Keyboard,xbeK_F4,,oPrimeGetOne) }
  *
  oPushPrnt           := ;
    XbpPushButton():new( drawingArea, , {600,130}, {84,20} )
  oPushPrnt:caption     := "F5 Print"
  oPushPrnt:clipSiblings := .T.
  oPushPrnt:tabStop      := .T.
  oPushPrnt:create()
  *
  oPushPrnt:activate    := {|| ;
    setappfocus(oPrimeGetOne),;
    postappevent( xbeP_Keyboard,xbeK_F5,,oPrimeGetOne) }
  *
  oPushPrev       := ;
    XbpPushButton():new( drawingArea, , {600,100}, {84,20} )
  oPushPrev:caption     := "F6 Prev"
  oPushPrev:clipSiblings := .T.
  oPushPrev:tabStop      := .T.
  oPushPrev:create()
  *
  oPushPrev:activate    := {|| ;
    setappfocus(oPrimeGetOne),;
    postappevent( xbeP_Keyboard,xbeK_F6,,oPrimeGetOne) }
  *
  oPushNext       := ;
    XbpPushButton():new( drawingArea, , {500,100}, {84,20} )
  oPushNext:caption     := "F7 Next"
  oPushNext:clipSiblings := .T.
  oPushNext:tabStop      := .T.
  oPushNext:create()
  *
  oPushNext:activate    := {|| ;
    setappfocus(oPrimeGetOne),;
    postappevent( xbeP_Keyboard,xbeK_F7,,oPrimeGetOne) }
  *
  oPushPrev       := ;
    XbpPushButton():new( drawingArea, , {600,70}, {84,20} )
  oPushPrev:caption     := "F3 Report"
  oPushPrev:clipSiblings := .T.
  oPushPrev:tabStop      := .T.
  oPushPrev:create()
  *
  oPushPrev:activate    := {|| ;
    setappfocus(oPrimeGetOne),;
    postappevent( xbeP_Keyboard,xbeK_F3,,oPrimeGetOne) }
  *
  oPushSet        := ;
    XbpPushButton():new( drawingArea, , {500,70}, {84,20} )
  oPushSet:caption    := "F8 Set Bl"
  oPushSet:clipSiblings := .T.
  oPushSet:tabStop      := .T.
  oPushSet:create()
  *
  oPushSet:activate     := {|| ;
    setappfocus(oPrimeGetOne),;
    postappevent( xbeP_Keyboard,xbeK_F8,,oPrimeGetOne) }
  *
  setappfocus(oDlg)
  *
  oCtrl := XbpGetController():new(oDlg):create()
  *
  setappfocus(oCtrl:window())
  *
  setappfocus(oPrimeGetOne)
  *
  oCtrl:read( , .F. )
  *
  oDlg:show()
  *
  do while nEvent <> xbeP_Close
    *
    nEvent := appevent(@mp1,@mp2,@oXbp)
    *
    *  mouse motion
    *
    IF nEvent = xbeM_Motion .AND. mp1 = NIL
      LOOP
    ENDIF
    *
    *  for keyboard events
    *
    IF nEvent = xbeP_Keyboard
      *
      do case
      case mp1 == xbeK_ESC
        *
        oXbp:killinputFocus()
        *
        PostAppEvent(xbeP_Close,,,oDlg)
        *
      case mp1 == xbeK_F3
        *
        oXbp:killinputFocus()
        *
        dktReport(oDlg,oPrimeGetOne)
        *
        setappfocus(aReceivers[1])
        *
        aReceivers[1]:home()
        *
        loop
        *
      case mp1 == xbeK_F4
        *
        oXbp:killinputFocus()
        *
        aPrimeKey := browseMain(oDlg)
        *
        IF aPrimeKey == nil
        else
          *
          oPrimeGetOne:cargo[GC_FLD_VALUE] := ddocket->CustNo
          oPrimeGetOne:setData()
          *
          oPrimeGetTwo:cargo[GC_FLD_VALUE] := ddocket->ddocket
          oPrimeGetTwo:setData()
          *
          oPrimeGetOne:disable()
          oPrimeGetTwo:disable()
          *
          loadDataToScreen()
          *
          setStatus(oStatHead6,nColorUnprint,nColor)
          *
          dispdata := alltrim(str(ddocket->blnumb))
          oBlSle:setdata(dispdata)
          *
        ENDIF
        *
        setappfocus(aReceivers[1])
        *
        aReceivers[1]:home()
        *
        loop
        *
      case mp1 == xbeK_F5
        *
        oXbp:killinputFocus()
        *
        cCustNo   := oPrimeGetOne:cargo[GC_FLD_VALUE]
        *
        nDocketNo := oPrimeGetTwo:cargo[GC_FLD_VALUE]
        *
        nBlNumb   := ;
          printDocket(cCustNo+str(nDocketNo,8,0),nBlNumb)
        *
        setappfocus(aReceivers[1])
        *
        aReceivers[1]:home()
        *
        loop
        *
      case mp1 == xbeK_F6
        *
        ddocket->(dbskip(-1))
        *
        oPrimeGetOne:cargo[GC_FLD_VALUE] := ddocket->CustNo
        oPrimeGetOne:setData()
        *
        oPrimeGetTwo:cargo[GC_FLD_VALUE] := ddocket->ddocket
        oPrimeGetTwo:setData()
        *
        oPrimeGetOne:disable()
        oPrimeGetTwo:disable()
        *
        loadDataToScreen()
        *
        setStatus(oStatHead6,nColorUnprint,nColor)
        *
        dispdata := alltrim(str(ddocket->blnumb))
        oBlSle:setdata(dispdata)
        *
        setappfocus(aReceivers[1])
        *
        aReceivers[1]:home()
        *
        loop
        *
      case mp1 == xbeK_F7
        *
        oXbp:killinputFocus()
        *
        ddocket->(dbskip())
        *
        oPrimeGetOne:cargo[GC_FLD_VALUE] := ddocket->CustNo
        oPrimeGetOne:setData()
        *
        oPrimeGetTwo:cargo[GC_FLD_VALUE] := ddocket->ddocket
        oPrimeGetTwo:setData()
        *
        oPrimeGetOne:disable()
        oPrimeGetTwo:disable()
        *
        loadDataToScreen()
        *
        setStatus(oStatHead6,nColorUnprint,nColor)
        *
        dispdata := alltrim(str(ddocket->blnumb))
        oBlSle:setdata(dispdata)
        *
        setappfocus(aReceivers[1])
        *
        aReceivers[1]:home()
        *
        loop
        *
      case mp1 == xbeK_F8
        *
        nBlNumb := setBlNumb(oDlg,nBlNumb)
        *
        setappfocus(oPrimeGetOne)
        *
        oPrimeGetOne:home()
        *
        loop
        *
      case mp1 == xbeK_F9
        *
        oXbp:killinputFocus()
        *
        oPrimeGetOne:cargo[GC_FLD_VALUE] := ;
          nilType(oPrimeGetOne:cargo[GC_FLD_VALUE])
        *
        oPrimeGetOne:setData(oPrimeGetOne:cargo[GC_FLD_VALUE])
        *
        oPrimeGetTwo:cargo[GC_FLD_VALUE] := ;
          nilType(oPrimeGetTwo:cargo[GC_FLD_VALUE])
        *
        oPrimeGetTwo:setData(oPrimeGetTwo:cargo[GC_FLD_VALUE])
        *
        oSntDate:cargo[GC_FLD_VALUE] := date()
        oSntDate:setdata()
        *
        oDktDate:cargo[GC_FLD_VALUE] := date()
        oDktDate:setdata()
				/*
				oSntBy:cargo[GC_FLD_VALUE] := space(14)
				oSntBy:setdata()
				*/
        * receivers
        *
        FOR nPtr := 1 TO len(aReceivers)
          *
          oClear := aReceivers[nPtr]
          *
          oClear:cargo[GC_FLD_VALUE] := ;
            nilType(oClear:cargo[GC_FLD_VALUE])
          *
          oClear:setdata(oClear:cargo[GC_FLD_VALUE])
          *
        NEXT
        *
        *  senders ref
        *
        FOR nPtr := 1 TO len(aSendRef)
          *
          oClear := aSendRef[nPtr]
          *
          oClear:cargo[GC_FLD_VALUE] := ;
            nilType(oClear:cargo[GC_FLD_VALUE])
          *
          oClear:setdata(oClear:cargo[GC_FLD_VALUE])
          *
        NEXT
        *
        *  special instructions
        *
        FOR nPtr := 1 TO len(aSpecIns)
          *
          oClear := aSpecIns[nPtr]
          *
          DO CASE
          CASE nPtr == 1
            *
            oClear:cargo[GC_FLD_VALUE] := ;
              PADR("FULL SIGNATURE REQUIRED",40)
            *
          CASE nPtr == 2
            *
            oClear:cargo[GC_FLD_VALUE] := ;
              nilType(oClear:cargo[GC_FLD_VALUE])
            *
          END CASE
          *
          oClear:setdata(oClear:cargo[GC_FLD_VALUE])
          *
        NEXT
        *
        *   detail fields
        *
        FOR nPtr := 1 TO len(aDesc)
          *
          oClear := aDesc[nPtr]
          *
          oClear:cargo[GC_FLD_VALUE] := ;
            nilType(oClear:cargo[GC_FLD_VALUE])
          *
          oClear:setdata(oClear:cargo[GC_FLD_VALUE])
          *
          oClear := aItems[nPtr]
          *
          oClear:cargo[GC_FLD_VALUE] := ;
            nilType(oClear:cargo[GC_FLD_VALUE])
          *
          oClear:setdata(oClear:cargo[GC_FLD_VALUE])
          *
          oClear := aWeights[nPtr]
          *
          oClear:cargo[GC_FLD_VALUE] := ;
            nilType(oClear:cargo[GC_FLD_VALUE])
          *
          oClear:setdata(oClear:cargo[GC_FLD_VALUE])
          *
        NEXT
        *
        setappfocus(oPrimeGetOne)
        oPrimeGetOne:enable()
        *
        setappfocus(oPrimeGetTwo)
        oPrimeGetTwo:enable()
        *
        setappfocus(oPrimeGetOne)
        oPrimeGetOne:home()
        *
        oStatHead6:setcolorFg(nColor)
        *
        dispdata := ""
        oBlSle:setData(dispdata)
        *
        loop
        *
      case mp1 == xbeK_F10
        *
        oXbp:killinputFocus()
        *
        saveRecord()
        *
        loop
        *
      case mp1 == xbeK_TAB
        *
        IF oXbp:isDerivedFrom("XbpGet")
          *
          oXbp:killinputFocus()
          *
          cFieldName := oXbp:cargo[GC_FIELD]
          *
					/*
					 note the single = sign
					 M Carew 09-12-01 09:42pm ynk
					*/
          DO CASE
          CASE cFieldName = "RECV"
            *
            setappfocus(aSpecIns[1])
            aSpecIns[1]:HOME()
            *
          CASE cFieldName = "SPECINS"
            *
            setappfocus(aSendRef[1])
            aSendRef[1]:HOME()
            *
          CASE cFieldName = "SNDREF"
            *
            setappfocus(aDesc[1])
            aDesc[1]:HOME()
            *
          CASE cFieldName = "DESC" .OR. ;
              cFieldName = "ITEMS" .OR. ;
              cFieldName = "WEIGHT"
            *
            setappfocus(oPushSave)
            *
          end case
          *
          LOOP
          *
        ENDIF
        *
      end case
      *
    endif
    *
    oXbp:handleEvent( nEvent, mp1, mp2 )
    *
  enddo
  *
  ddocket->(dbclosearea())
  *
  oDlg:destroy()
  *
return

function loadCDxDbe()
  *
  IF ! DbeLoad( "CDXDBE",.T.)
    // DC_Alert( "Database-Engine CDXDBE not loaded" , {"OK"} )
  ENDIF

  IF ! DbeBuild( "DBFCDX", "DBFDBE", "CDXDBE" )
    // DC_Alert( "DBFCDX Database-Engine;Could not build engine" , {"OK"} )
  ENDIF

  IF ! DbeLoad( "FOXDBE",.T.)
    // DC_Alert( "Database-Engine FOXDBE not loaded" , {"OK"} )
  ENDIF

  IF ! DbeBuild( "FOXCDX", "FOXDBE", "CDXDBE" )
    // DC_Alert( "FOXCDX Database-Engine;Could not build engine" , {"OK"} )
  ENDIF
  *
return nil

FUNCTION GuiStdDialog(cTitle,aPos,aSize,oParent,oOwner)
  *
  LOCAL oDlg
  *
  DEFAULT cTitle TO "Standard Dialog Window"
  DEFAULT aPos   to {0,0}
  DEFAULT aSize  to {800,640}
  *
  oDlg          := XbpDialog():new(oParent,oOwner,aPos,aSize,, .F. )
  oDlg:icon     :=  1
  oDlg:taskList := .T.
  oDlg:title    := cTitle
  oDlg:create()
  oDlg:drawingArea:setFontCompoundName( FONT_DEFPROP_SMALL )
  *
RETURN oDlg

function oBlk(oget)
  local bBlock
  bBlock := ;
    {|x|iif(x== nil,oget:cargo[GC_FLD_VALUE],oget:cargo[GC_FLD_VALUE]:=x)}
return bBlock

function BrowseMain(oDialog)
  *
  local aKeys
  *
  aKeys := {;
    {xbeK_F1,{|b|browsehelp(b)}},;
    {xbeK_F2,{|b|searchSendRef(b)}},;
    {xbeK_F3,{|b|searchBlNumb(b)}},;
    {xbeK_F4,{|b|searchDDocket(b)}};
    }
  *
return browser(oDialog,"DDOCKET",aKeys)
*
*
*
function sysalert(cText,aOptions, oParent)
  *
  local nAns := 0
  *
  // DEFAULT oParent TO syslist():oPageGets:oGroupBox
  *
  *  solves problem for array browse edits falling over when
  *  esc is pressed to an error alert when in the get system
  *  Esc pressed causes 0 to be returned by alert()
  *
  nAns := ;
    DC_GuiAlert( oParent, cText, aOptions, ,"Screen Error" , , TRUE )
  *
return nAns

function nilType(value)
  *
  local xRetVal
  *
  do case
  case valtype(value) == "C"
    xRetVal := space(len(value))
  case valtype(value) == "A"
    xRetVal := {}
  case valtype(value) == "N"
    xRetVal := value - value
  case valtype(value) == "D"
    xRetVal := ctod("  ")
  case valtype(value) == "L"
    xRetVal := FALSE
  case valtype(value) == "M"
    xRetVal := " "
  endcase
  *
return xRetVal


function readPrimeKey(oThisGet)
  *
  local aPrimeKey := array(2)
  local cKey
  *
  aPrimeKey[1] := oPrimeGetOne:cargo[GC_FLD_VALUE]
  aPrimeKey[2] := oPrimeGetTwo:cargo[GC_FLD_VALUE]
  *
  IF empty(aPrimeKey[1]) .OR. empty(aPrimeKey[2])
    *
    dispdata := ""
    oBlSle:setdata(dispdata)
    *
  else
    *
    cKey := aPrimeKey[1]+str(aPrimeKey[2],8,0)
    *
    if DDOCKET->(DBSEEK(cKey))
      *
      oPrimeGetOne:disable()
      oPrimeGetTwo:disable()
      *
      loadDataToScreen()
      *
      dispdata := alltrim(str(ddocket->blnumb))
      oBlSle:setdata(dispdata)
      *
    else
      *
      dispdata := ""
      oBlSle:setdata(dispdata)
      *
    endif
    *
  ENDIF
  *
return TRUE
*
function loadDataToScreen()
  *
  local aCargo
  local aChildList
  local nLen
  local nLoopit
  local nPtr
  local oXbp
  *
  aCargo := oSntBy:cargo
  *
  aCargo[GC_FLD_VALUE] := ;
    DDOCKET->(fieldget(DDOCKET->(fieldpos(aCargo[GC_FIELD]))))
  *
  oSntBy:setdata()
  *
  aCargo := oSntDate:cargo
  *
  aCargo[GC_FLD_VALUE] := ;
    DDOCKET->(fieldget(DDOCKET->(fieldpos(aCargo[GC_FIELD]))))
  *
  oSntDate:setdata()
  *
  aCargo := oDktDate:cargo
  *
  aCargo[GC_FLD_VALUE] := ;
    DDOCKET->(fieldget(DDOCKET->(fieldpos(aCargo[GC_FIELD]))))
  *
  oDktDate:setdata()
  *
  FOR nLoopit := 1 TO 3
    *
    DO CASE
    case nLoopit == 1
      aChildList := oStat2:ChildList()
    case nLoopit == 2
      aChildList := oStat4:ChildList()
    case nLoopit == 3
      aChildList := oStat5:ChildList()
    end case
    *
    nLen := len(aChildList)
    *
    FOR nPtr := 1 TO nLen
      *
      oXbp  := aChildList[nPtr]
      *
      IF oXbp:isDerivedFrom("XbpGet")
        *
        aCargo := oXbp:cargo
        *
        aCargo[GC_FLD_VALUE] := ;
          DDOCKET->(fieldget(DDOCKET->(fieldpos(aCargo[GC_FIELD]))))
        *
        oXbp:setdata()
        *
      ENDIF
      *
    NEXT
    *
  NEXT
  *
return nil

function saveRecord()
  *
  local aPrimeKey := array(2)
  local cKey
  *
  aPrimeKey[1] := oPrimeGetOne:cargo[GC_FLD_VALUE]
  aPrimeKey[2] := oPrimeGetTwo:cargo[GC_FLD_VALUE]
  *
  IF empty(aPrimeKey[1]) .OR. empty(aPrimeKey[2])
  else
    *
    cKey := aPrimeKey[1]+str(aPrimeKey[2],8,0)
    *
    if DDOCKET->(DBSEEK(cKey))
      *
    else
      *
      ddocket->(dbappend())
      *
      ddocket->custno  := aPrimeKey[1]
      ddocket->ddocket := aPrimeKey[2]
      *
      ddocket->(dbunlock())
      *
    endif
    *
    do while TRUE
      *
      IF ddocket->(dbrlock())
        *
        loadScreenToTable()
        *
        ddocket->printed := space(1)
        *
        ddocket->(dbunlock())
        *
        exit
        *
      endif
      *
    enddo
    *
    nBlNumb := ;
      printDocket(ddocket->custno+str(ddocket->ddocket,8,0),nBlNumb)
    *
    postappevent( xbeP_Keyboard,xbeK_F9,,oPrimeGetOne)
    *
  endif
  *
return nil
*
function loadScreenToTable()
  *
  local aCargo
  local aChildList
  local cValType
  local nLen
  local nLoopit
  local nPtr
  local oXbp
  local xValue
  *
  *   fro the header and footer on the screen
  *
  ddocket->sntDate  := oSntDate:cargo[GC_FLD_VALUE]
  ddocket->sntBy    := oSntBy:cargo[GC_FLD_VALUE]
  ddocket->DktDate  := oDktDate:cargo[GC_FLD_VALUE]
  *
  FOR nLoopit := 1 TO 3
    *
    DO CASE
    case nLoopit == 1
      aChildList := oStat2:ChildList()
    case nLoopit == 2
      aChildList := oStat4:ChildList()
    case nLoopit == 3
      aChildList := oStat5:ChildList()
    end case
    *
    nLen := len(aChildList)
    *
    FOR nPtr := 1 TO nLen
      *
      oXbp  := aChildList[nPtr]
      *
      IF oXbp:isDerivedFrom("XbpGet")
        *
        aCargo := oXbp:cargo
        *
        xValue := aCargo[GC_FLD_VALUE]
        *
        cValType := valtype(xValue)
        *
        IF cValtype == "C"
          *
          xValue := lTrim(xValue)
          *
        ENDIF
        *
        DDOCKET->(fieldput(;
          ddocket->(fieldpos(aCargo[GC_FIELD])),;
          xValue))
        *
      ENDIF
      *
    NEXT
    *
  NEXT
  *
return nil

function setStatus(oStatHead6,nColorUnprint,nColor)
  *
  IF ddocket->printed == "Y"
    *
    oStatHead6:setColorFg(nColor)
    *
  else
    *
    oStatHead6:setcolorFg(nColorUnprint)
    *
  ENDIF
  *
return nil
*
function showBlNumb(o)
  *
  local cRetVal := ""
  *
return cRetVal

function skipSent()
  *
  oSntDate:killInputFocus()
  *
  setappfocus(aReceivers[1])
  aReceivers[1]:home()
  *
return TRUE
*
*
*
function loadSndRef1IfBlank(aSendRef)
  *
  LOCAL cSendRef1
  *
  cSendRef1 := aSendRef[1]:cargo[GC_FLD_VALUE]
  *
  IF EMPTY(cSendRef1)
    *
    cSendRef1 := ALLTRIM(oPrimeGetOne:cargo[GC_FLD_VALUE]) + ;
      space(1) + ;
      alltrim(str(oPrimeGetTwo:cargo[GC_FLD_VALUE]))
    *
    aSendRef[1]:cargo[GC_FLD_VALUE] := PADR(cSendRef1,14)
    *
    aSendRef[1]:setdata()
    *
  ENDIF
  *
return TRUE


function fillSndRef(nRef,aSendref)
  *
  local cCustNo
  local cSendRef
  local nLenCust
  local nLenSendRef
  *
  cSendRef := aSendRef[nRef]:cargo[GC_FLD_VALUE]
  *
  IF EMPTY(cSendRef)
  else
    *
    cCustNo     := oPrimeGetOne:cargo[GC_FLD_VALUE]
    cCustNo     := alltrim(cCustNo)
    nLenCust    := len(cCustNo)
    nLenSendRef := len(cSendRef)
    *
    IF substr(cSendRef,1,nLenCust) == cCustNo
    else
      *
      cSendRef  := cCustNo + space(1) + alltrim(cSendRef)
      cSendRef  := padr(cSendRef,14)
      aSendRef[nRef]:cargo[GC_FLD_VALUE] := cSendRef
      aSendRef[nRef]:setdata()
      *
    ENDIF
    *
  ENDIF
  *
return TRUE
*
function setBlNumb(oDlg,nBlNumb)
  *
  local aValues     := {{++nBlNumb},{}}
  local aLits       := {"Next Bl Number"}
  local aNumbPicts  := {"@K ########"}
  *
  getScreenParameters(;
    "Enter the next Bl Number to Print",;
    aValues,;
    ,;
    aLits,;
    ,;
    oDlg,;
    aNumbPicts)
  *
  nBlNumb := aValues[1][1]
  *
return --nBlNumb
*
*
*
function searchSendRef(oBrowse)
  *
  local aEdVals
  local aLits
  local aNumbPicts
  local aValues
  local aWindows
  local cDesc
  local cKey
  local cSendersRef
  local drawingarea
  local lRetVal
  local nBlNumb
  local nPtr
  local nRecNo
  local oDialog
  *
  aEdVals               := {}
  aWindows              := oBrowse:cargo[BWINDOW]
  oDialog               := aWindows[1]
  drawingarea           := aWindows[3]
  *
  aValues               := {{space(14)},{}}
  *
  aLits                 := {"Senders Reference"}
  *
  aNumbPicts            := {"@!"}
  *
  lRetVal               := ;
    getScreenParameters(;
    "Senders Reference Docket Search",;
    aValues,;
    ,;
    aLits,;
    ,;
    oDialog,;
    aNumbPicts)
  *
  IF lRetVal            == TRUE
    *
    cSendersRef         := aValues[1][1]
    *
    IF empty(cSendersRef)
      *
      lRetVal            := FALSE
      *
    ENDIF
    *
    USE DDOCKET new shared alias SRCHDOCKT VIA "DBFCDX"
    *
    SRCHDOCKT->(ordlistadd("DDOCKET.CDX"))
    *
    for nPtr            := 1 to 6
      *
      SRCHDOCKT->(ORDSETFOCUS(("SNDREF"+ALLTRIM(STR(nPtr)))))
      *
      SRCHDOCKT->(DBGOTOP())
      *
      IF SRCHDOCKT->(dbseek(cSendersRef))
        *
        do while TRUE
          *
          IF upper(alltrim(SRCHDOCKT->&("SNDREF"+ALLTRIM(STR(nPtr))))) == ;
              alltrim(cSendersRef)
            *
            cDesc := ;
              SRCHDOCKT->&("DESC"+ALLTRIM(STR(nPtr)))
            *
            aadd(;
              aEdVals,;
              {;
              str(srchdockt->(recno()),8,0),;
              cDesc,;
              srchdockt->custno,;
              str(srchdockt->blnumb,8,0),;
              dtos(srchdockt->dktdate);
              })
            *
          ENDIF
          *
          srchdockt->(dbskip())
          *
          IF srchdockt->(eof())
            *
            exit
            *
          ENDIF
          *
        enddo
        *
      endif
      *
    next
    *
    SRCHDOCKT->(DBCLOSEAREA())
    *
    *  browse result set
    *
    IF EMPTY(aEdVals)
      *
    else
      *
      nBlNumb := ;
        srchrefBrowse(aEdVals,oBrowse,"Senders Ref")
      *
      IF empty(nBlNumb)
        *
      else
        *
        ddocket->(dbgotop())
        *
        ddocket->(dbseek(STR(nBlNumb,8,0)))
        *
        nRecNo := ddocket->(recno())
        *
        oBrowse:gotorecord(nRecNo)
        *
      ENDIF
      *
    ENDIF
    *
  endif
  *
  setappfocus(oDialog)
  *
  setappfocus(oBrowse)
  *
  oBrowse:Refreshall()
  *
  oBrowse:forcestable()
  *
return nil



function browsehelp(oBrowse)
  *
  local cChoices
  local oDialog := oBrowse:cargo[BWINDOW][1]
  *
  cChoices := ;
    "Help   Main Screen;"                     + ;
    "F1   - General Help;"                    + ;
    "F2   - Look Up Customer Reference;"      + ;
    "F3   - Look Up BL Number;"               + ;
    "F4   - Docket Number"
  *
  *  on the window of the browse
  *
  sysalert(cChoices,,oDialog)
  *
  setappfocus(oDialog)
  setappfocus(oBrowse)
  oBrowse:refreshall()
  oBrowse:forcestable()
  *
return nil

*
*
*
function srchrefBrowse(aEdVals,oBrowse,cTitle)
  *
  local aEmpty := aEdVals[1]
  local aPP
  local drawingarea
  local lForceStable
  local mp1
  local mp2
  local nAcross
  local nBaseColor
  local nDown
  local nEvent
  local nLen
  local nPtr
  local nUp
  local oBrowseDialog
  local oColumn
  local oDlg
  local oOldFocus
  local oSrchBrowse
  local oXbp
  local uRetVal
  *
  oBrowseDialog := oBrowse:cargo[BWINDOW][1]
  *
  nBaseColor      := graMakeRgbColor({30,200,230})
  *
  oDlg := ;
    GuiStdDialog(;
    "Customer Reference Search Results",;
    {050,200},;
    {700,200},;
    oBrowseDialog)
  *
  * stay put you mongrel or i'll have to min you <g>
  * talking to the program a very bad sign that the system
  * must be almost complete  20-09-02 07:10pm Mark
  *
  oDlg:minbutton     := FALSE
  oDlg:maxbutton     := FALSE
  oDlg:hidebutton    := FALSE
  *
  *  for the browse
  *
  drawingArea := oDlg:drawingArea
  drawingArea:setFontCompoundName( "11.Terminal" )
  drawingArea:SetColorBG(nBaseColor)
  *
  oSrchBrowse := ;
    XbpBrowse():new( drawingarea,setappwindow(),{02,02},{696,175}):create()
  *
  oSrchBrowse:cargo            := array(BARR_NO)
  oSrchBrowse:cargo[BDATA]     := aEdVals
  oSrchBrowse:cargo[BCOLS]     := aEmpty
  oSrchBrowse:cargo[BNOLINES]  := 1
  oSrchBrowse:cargo[BCURLINE]  := 1
  oSrchBrowse:cargo[BARR_NO]   := 1
  oSrchBrowse:cargo[BWINDOW]   := {oDlg,,DrawingArea}
  *
  oSrchBrowse:skipBlock        := {|n,obj| SkipArray( n, obj:cargo ) }
  oSrchBrowse:goTopBlock       := {|obj| obj:cargo[ BARR_NO ] := 1 }
  oSrchBrowse:goBottomBlock    := {|obj| obj:cargo[ BARR_NO ] := Len( obj:cargo[ BDATA ] ) }
  oSrchBrowse:posBlock         := {|obj| obj:cargo[ BARR_NO ]  }
  oSrchBrowse:phyposblock      := {|obj| obj:cargo[ BARR_NO ]}
  oSrchBrowse:lastPosBlock     := {|obj| Len( obj:cargo[ BDATA ] ) }
  oSrchBrowse:firstPosBlock    := {|obj| 1  }
  oSrchBrowse:softTrack        := .F.
  *
  aPP                        := loadArrayApp()
  *
  *  if any of these fail with a len in column create
  *  then you have loaded rubbish into the array
  *
  oColumn                  := ;
    makeAnXbpArrayColumn(oSrchBrowse,1,aPP,"Rec No","y")
  oColumn                  := ;
    makeAnXbpArrayColumn(oSrchBrowse,2,aPP,"Description","b")
  oColumn                  := ;
    makeAnXbpArrayColumn(oSrchBrowse,3,aPP,"Cust No")
  oColumn                  := ;
    makeAnXbpArrayColumn(oSrchBrowse,4,aPP,"Bl Numb")
  oColumn                  := ;
    makeAnXbpArrayColumn(oSrchBrowse,5,aPP,"Dkt Date")
  *
  drawingArea:resize      := ;
    {|mp1,mp2,obj| ;
    Resize(oSrchBrowse,mp2) }
  *
  nEvent                  := 0
  *
  oDlg:show()
  oSrchBrowse:show()
  oSrchBrowse:gotop()
  SetAppFocus( oSrchBrowse:GetColumn(1) )
  oSrchBrowse:refreshAll()
  *
  nEvent                  := 0
  *
  DO WHILE TRUE
    *
    nEvent                := AppEvent( @mp1, @mp2, @oXbp )
    *
    DO CASE
    CASE nEvent           == xbeP_Keyboard
      *
      lForceStable        := FALSE
      *
      nPtr                := oSrchBrowse:cargo[BARR_NO]
      *
      do case
        *
      case mp1            == xbeK_ESC
        *
        postappevent(xbeP_Close,,,oSrchBrowse)
        *
        exit
        *
      case mp1            == xbeK_F1
        *
      case mp1            == xbeK_ENTER
        *
        *  blnumb
        *
        uRetVal           := val(aEdvals[nPtr][4])
        *
        postappevent(xbeP_Keyboard,xbeK_ESC,,oSrchBrowse)
        *
        loop
        *
      otherwise
        *
        oXbp:handleEvent( nEvent, mp1, mp2 )
        *
      end case
      *
      IF lForceStable     == TRUE
        *
        oSrchBrowse:forceStable()
        *
      ENDIF
      *
    otherwise
      *
      IF nEvent           == xbeP_Close
        *
        exit
        *
      ENDIF
      *
      oXbp:handleEvent( nEvent, mp1, mp2 )
      *
    END CASE
    *
  enddo
  *
  oSrchBrowse:destroy()
  *
  oDlg:destroy()
  *
return uRetVal
*

function makeAnXbpArrayColumn(oBrowse,nWhichOne,aPP,cTitle,cType)
  *
  local bColorBlock
  local oColumn
  *
  DEFAULT cType TO ""
  *
  aPP[1,2] := cTitle
  *
  oColumn := XbpColumn():new(,,,,aPP)
  *
  oColumn:dataLink := ;
    {|| oBrowse:cargo[BDATA][oBrowse:cargo[BARR_NO]][nWhichOne] }
  *
  oColumn:create()
  *
  DO CASE
  CASE empty(cType)
    *
    bColorBlock := {|| IIF(.T.,ABROWCOLORONE,ABROWCOLORONE)}
    *
  CASE ASC(cType) > 96
    *
    do case
    case cType == "y"
      *
      bColorBlock := ;
        {|xValue,oCol,nRow| ;
        sysColorBlockTransYellow(oCol:setowner(),nRow)}
      *
    case cType == "b"
      *
      bColorBlock := ;
        {|xValue,oCol,nRow| ;
        sysColorBlockTransBlue(oCol:setowner(),nRow)}
      *
    end case
    *
  END CASE
  *
  oColumn:colorBlock := bColorBlock
  *
  * add col to browse
  *
  oBrowse:addColumn(oColumn)
  *
return oColumn



function sysColorBlockTransBlue(oBrowse,nRow)
return DRTRANS_BLUE

function sysColorBlockTransYellow(oBrowse,nRow)
return DRTRANS_YELLOW


FUNCTION SkipArray( nWantSkip, aArray )
  LOCAL nDidSkip, nLastRec := Len( aArray[ BDATA ] )

  IF aArray[ BARR_NO ] + nWantSkip < 1           // "BoF"
    nDidSkip := 1 - aArray[ BARR_NO ]
  ELSEIF aArray[ BARR_NO ] + nWantSkip > nLastRec// "EoF"
    nDidSkip := nLastRec - aArray[ BARR_NO ]
  ELSE
    nDidSkip := nWantSkip
  ENDIF

  aArray[ BARR_NO ] += nDidSkip

RETURN nDidSkip


function searchBlNumb(oBrowse)
  *
  local aLits
  local aNumbPicts
  local aValues
  local aWindows
  local drawingarea
  local lRetVal
  local nBlNumb
  local nRecNo
  local oDialog
  *
  aWindows              := oBrowse:cargo[BWINDOW]
  oDialog               := aWindows[1]
  drawingarea           := aWindows[3]
  *
  aValues               := {{0},{}}
  *
  aLits                 := {"Bl Number To Find"}
  *
  aNumbPicts            := {"@K ########"}
  *
  lRetVal               := ;
    getScreenParameters(;
    "Bl Number Search",;
    aValues,;
    ,;
    aLits,;
    ,;
    oDialog,;
    aNumbPicts)
  *
  IF lRetVal            == TRUE
    *
    nBlNumb             := aValues[1][1]
    *
    IF empty(nBlNumb)
      *
    else
      *
      *
      ddocket->(dbgotop())
      *
      if ddocket->(dbseek(STR(nBlNumb,8,0)))
        *
        nRecNo          := ddocket->(recno())
        *
        oBrowse:gotorecord(nRecNo)
        *
      endif
      *
    ENDIF
    *
  endif
  *
  setappfocus(oDialog)
  *
  setappfocus(oBrowse)
  *
  oBrowse:Refreshall()
  *
  oBrowse:forcestable()
  *
return nil

function loadArrayApp()
  *
  local aPP := ;
    { ;
    { XBP_PP_COL_HA_CAPTION          , ""               }, ;
    { XBP_PP_COL_DA_FGCLR            , GRA_CLR_BLACK    }, ;
    { XBP_PP_COL_DA_BGCLR            , GRA_CLR_WHITE    }, ;
    { XBP_PP_COL_DA_HILITE_FGCLR     , GRA_CLR_WHITE    }, ;
    { XBP_PP_COL_DA_HILITE_BGCLR     , GRA_CLR_DARKGRAY }, ;
    { XBP_PP_COL_DA_HILITEFRAMELAYOUT, XBPFRAME_BOX + XBPFRAME_RECT + XBPFRAME_DOTTED }, ;
    { XBP_PP_COL_DA_CELLFRAMELAYOUT  , XBPFRAME_BOX               }, ;
    { XBP_PP_COL_DA_COLSEPARATOR     , XBPCOL_SEP_NONE            }, ;
    { XBP_PP_COL_DA_FRAMELAYOUT      , XBPFRAME_BOX               }, ;
    { XBP_PP_COL_DA_HILITE_BGCLR     , XBPSYSCLR_HILITEBACKGROUND }  }
  /*
		{ XBP_PP_COL_FA_CAPTION          , ""               }, ;
  */
return aPP
*
*
*
function searchDDocket(oBrowse)
  *
  local aEdVals
  local aLits
  local aNumbPicts
  local aValues
  local aWindows
  local cDesc
  local nDDocket
  local drawingarea
  local lRetVal
  local nBlNumb
  local nPtr
  local nRecNo
  local oDialog
  *
  aEdVals               := {}
  aWindows              := oBrowse:cargo[BWINDOW]
  oDialog               := aWindows[1]
  drawingarea           := aWindows[3]
  *
  aValues               := {{0},{}}
  *
  aLits                 := {"Docket Number"}
  *
  aNumbPicts            := {"@K ########"}
  *
  lRetVal               := ;
    getScreenParameters(;
    "Docket Number Search",;
    aValues,;
    ,;
    aLits,;
    ,;
    oDialog,;
    aNumbPicts)
  *
  IF lRetVal            == TRUE
    *
    nDdocket            := aValues[1][1]
    *
    IF empty(nDDocket)
      *
      lRetVal            := FALSE
      *
    ENDIF
    *
    USE DDOCKET new shared alias SRCHDOCKT VIA "DBFCDX"
    *
    SRCHDOCKT->(ordlistadd("DDOCKET.CDX"))
    *
    SRCHDOCKT->(ORDSETFOCUS("DDOCKET"))
    *
    SRCHDOCKT->(DBGOTOP())
    *
    IF SRCHDOCKT->(dbseek(str(nDDocket,8,0)))
      *
      do while TRUE
        *
        IF nDdocket == SRCHDOCKT->ddocket
          *
          cDesc := SRCHDOCKT->desc1
          *
          aadd(;
            aEdVals,;
            {;
            str(srchdockt->(recno()),8,0),;
            cDesc,;
            srchdockt->custno,;
            str(srchdockt->blnumb,8,0),;
            dtos(srchdockt->dktdate);
            })
          *
        ENDIF
        *
        srchdockt->(dbskip())
        *
        IF srchdockt->(eof())
          *
          exit
          *
        ENDIF
        *
      enddo
      *
    endif
    *
    SRCHDOCKT->(DBCLOSEAREA())
    *
    *  browse result set
    *
    IF EMPTY(aEdVals)
      *
    else
      *
      nBlNumb := ;
        srchrefBrowse(aEdVals,oBrowse,"Docket Number")
      *
      IF empty(nBlNumb)
        *
      else
        *
        ddocket->(dbgotop())
        *
        ddocket->(dbseek(STR(nBlNumb,8,0)))
        *
        nRecNo := ddocket->(recno())
        *
        oBrowse:gotorecord(nRecNo)
        *
      ENDIF
      *
    ENDIF
    *
  endif
  *
  setappfocus(oDialog)
  *
  setappfocus(oBrowse)
  *
  oBrowse:Refreshall()
  *
  oBrowse:forcestable()
  *
return nil
