Files
delphi-database-v2/old-database/FILCABNT.SC

1040 lines
40 KiB
Plaintext
Executable File

MESSAGE "Writing file cabinet procedures to library..."
PROC File_Cabinet_Wait(M_Tbl, D_Tbl)
; M_Tbl (master = files of files_x) D_Tbl (detail = ledger or ledger_x)
PRIVATE Fld_Prompt, Answer_Menu, Cabinet, Employee, Hourly_Rate, Timing, Start_Time,
File_No, Id, File_Type, Regarding, Opened, Closed, Status,
Empl_Num, Trust_Bal, Total_Charges, Amount_Owing, Transferable
PROC Start_Ticker()
Timing = TRUE
Start_Time = Ticks()
MESSAGE "Press Alt-T to stop timer"
ENDPROC; Start_Ticker
PROC Stop_Ticker()
PRIVATE Secs, Hrs, Seconds, Minutes, Hours, Button_Val
Secs = (Ticks() - Start_Time) / 1000;
Hrs = Round(Secs / 3600, 2)
Hours = INT(Secs / 3600)
Minutes = INT((Secs - Hours * 3600) / 60)
Seconds = ROUND(MOD((Secs - Hours * 3600), 60), 0)
Hours = STRVAL(Hours)
if (LEN(Hours) < 2) then
Hours = "0" + Hours
endif
Minutes = STRVAL(Minutes)
if (LEN(Minutes) < 2) then
Minutes = "0" + Minutes
endif
Seconds = STRVAL(Seconds)
if (LEN(Seconds) < 2) then
Seconds = "0" + Seconds
endif
SHOWDIALOG "Elapsed Time"
@10,20 HEIGHT 7 WIDTH 40
@1, 1 ?? FORMAT("W36,AC", "Time: " + Hours + ":" + Minutes + ":" + Seconds + " (" + FORMAT("W6.2",Hrs) +" hours)")
PUSHBUTTON @3,13 WIDTH 12
"~O~K"
OK
VALUE "OK"
TAG "OK_Button"
TO Button_Val
ENDDIALOG
if (SYSMODE() = "CoEdit") then
REFRESH
endif
Timing = FALSE
ENDPROC; Stop_Ticker
PROC Show_Rolodex_Info()
PRIVATE Owner_Id, Form_No, Image_No, Msg_Str
if (TABLE() = "Files_r") OR (TABLE() = "Files_rx")then
Owner_Id = [Rolodex_Id]
Msg_Str = "Related Party Details - Press ESC to return to file cabinet."
else if (TABLE() = M_Tbl) AND (FIELD() = "Opposing") then
Owner_Id = [Opposing]
Msg_Str = "Opposing Party Details - Press ESC to return to file cabinet."
else Owner_Id = ""
endif
endif
Image_No = IMAGENO()
MOVETO M_Tbl
Form_No = FORM()
if (Owner_Id = "") then
Owner_Id = [Id]
Msg_Str = "File Owner Details - Press ESC to return to file cabinet."
endif
ECHO OFF
FORMKEY
VIEW "ROLODEX"
WINDOW MOVE GETWINDOW() TO -100, -100 ; move rolodex table off screen
TAB
LOCATE Owner_Id
if RetVal then
SHOWPULLDOWN
ENDMENU ; hide main menu
PICKFORM "4"
ECHO NORMAL
MESSAGE Msg_Str
WAIT WORKSPACE
UNTIL "ESC"
ECHO OFF
Main_Table_Menu()
else MESSAGE "No matching rolodex entry found!"
ENDIF
CLEARIMAGE; remove rolodex image
MOVETO M_Tbl
PICKFORM Form_No
MOVETO Image_No
ECHO NORMAL
ENDPROC; Show_Rolodex_Info
PROC If_Status_Send_Or_Hold(Stat)
PRIVATE Tmp_Tbl, Q_St, N, I
{Ask} {Filestat} TAB CHECK TAB TAB
if (Stat = "SEND") then
TYPEIN "\"YES\""
else TYPEIN "\"NO\""
endif
DO_IT!
Tmp_Tbl = TABLE()
MOVETO "Filestat(Q)"
CLEARIMAGE ; erase query image
MOVETO Tmp_Tbl
N = NRECORDS(Tmp_Tbl)
if (N = 0) then
CLEARIMAGE
RETURN Stat
endif
TAB
Q_St = []
FOR I FROM 1 TO N-1
DOWN
Q_St = Q_St + " OR " + []
ENDFOR
CLEARIMAGE
RETURN Q_St
ENDPROC; If_Status_Send_Or_Hold
PROC Ask_File_Cabinet(F_Num)
PRIVATE Subset_Table, Temp_Status, Button, I, Form_List
FORMKEY
SHOWPULLDOWN
ENDMENU
CLEARSPEEDBAR
PROMPT "Enter selection criteria. Press Search to find matches, Cancel to quit."
MOUSE SHOW
SHOWDIALOG "File Cabinet Selection Criteria"
@6, 3 HEIGHT 15 WIDTH 74
@1, 2 ?? "File No."
ACCEPT @1,14
WIDTH 20 "A45" PICTURE "*!"
TAG ""
TO File_No
@2, 2 ?? "Owner ID"
ACCEPT @2,14
WIDTH 20 "A45" PICTURE "*!"
TAG ""
TO Id
@3, 2 ?? "Area of Law"
ACCEPT @3,14
WIDTH 20 "A45" PICTURE "*!"
TAG ""
TO File_Type
@4, 2 ?? "Regarding"
ACCEPT @4,14
WIDTH 20 "A45"
TAG ""
TO Regarding
@5, 2 ?? "Opened"
ACCEPT @5,14
WIDTH 20 "A45" PICTURE "*!"
TAG ""
TO Opened
@6, 2 ?? "Closed"
ACCEPT @6,14
WIDTH 20 "A45" PICTURE "*!"
TAG ""
TO Closed
@7, 2 ?? "Status"
ACCEPT @7,14
WIDTH 20 "A45" PICTURE "*!"
TAG ""
TO Status
@8, 2 ?? "Employee"
ACCEPT @8,14
WIDTH 20 "A45" PICTURE "*!"
TAG ""
TO Empl_Num
@1, 40 ?? "**** Account Balances ****"
@2, 38 ?? "Trust"
ACCEPT @2,48
WIDTH 20 "A35"
TAG ""
TO Trust_Bal
@3, 38 ?? "Charges"
ACCEPT @3,48
WIDTH 20 "A35"
TAG ""
TO Total_Charges
@4, 38 ?? "Owing"
ACCEPT @4,48
WIDTH 20 "A35"
TAG ""
TO Amount_Owing
@5, 38 ?? "Transfer"
ACCEPT @5,48
WIDTH 20 "A35"
TAG ""
TO Transferable
@12, 7 ?? "STATUS: SEND = Print set to YES, HOLD = Print set to NO"
PUSHBUTTON @10,24 WIDTH 10
"~S~earch"
OK
DEFAULT
VALUE ""
TAG "OK"
TO Button
PUSHBUTTON @10,37 WIDTH 10
"~C~ancel"
CANCEL
VALUE ""
TAG "Cancel"
TO Button
ENDDIALOG
PROMPT ""
MOUSE HIDE
if (RetVal = True) then
MESSAGE "Searching..."
ECHO OFF
if (Status = "SEND") OR (Status = "HOLD") then
Temp_Status = If_Status_Send_Or_Hold(Status)
else Temp_Status = Status
endif
{Ask} TYPEIN M_Tbl ENTER CheckPlus
[File_No] = File_No
[Id] = Id
[File_Type] = File_Type
[Regarding] = Regarding
[Opened] = Opened
[Closed] = Closed
[Status] = Temp_Status
[Empl_Num] = Empl_Num
[Trust_Bal] = Trust_Bal
[Total_Charges] = Total_Charges
[Amount_Owing] = Amount_Owing
[Transferable] = Transferable
DO_IT!
; if error in query form, abort selection process
if (TABLE() <> "Answer") then
; erase query image(s)
WHILE (IMAGETYPE() = "Query")
CLEARIMAGE
ENDWHILE
MESSAGE "Invalid selection criteria. Query unsuccessful."
PICKFORM F_Num
RETURN
endif
Subset_Table = PRIVDIR() + "SUBSET"
RENAME TABLE() Subset_Table
MOVETO (M_Tbl + "(Q)")
CLEARIMAGE ; erase query image
MOVETO Subset_Table
if ISEMPTY(Subset_Table) then
CLEARIMAGE
No_Matches_Found()
else ; copy form and display on screen
COPYFORM M_Tbl F_Num Subset_Table "1"
COPYREPORT "Files" "1" Subset_Table "1" ; detailed file info
COPYREPORT "Files" "2" Subset_Table "2" ; summary file info
COPYREPORT "Files" "3" Subset_Table "3" ; detailed account summary
COPYREPORT "Files" "4" Subset_Table "4" ; short account summary
View_Answer_Table(Subset_Table, 1, 0)
FORMTABLES Subset_Table "1" Form_List
FOR I FROM 1 to ARRAYSIZE(Form_List)
MOVETO Form_List[I]
IMAGERIGHTS READONLY ; make all detail records uneditable
ENDFOR
MOVETO Subset_Table
File_Cabinet_Answer_Wait()
if ISTABLE(Subset_Table) then ; delete subset table
ECHO OFF
DELETE(Subset_Table)
endif
endif
endif
PICKFORM F_Num
ENDPROC; Ask_File_Cabinet
PROC Locate_Record()
PRIVATE Search_St, Choice, Fld_Name
Choice = 2
SHOWDIALOG "Locate Record"
@7, 14 HEIGHT 11 WIDTH 48
@2,2 ?? "Search field:"
RADIOBUTTONS @1,18 HEIGHT 3 WIDTH 20
"File Number",
"File Owner",
"Regarding"
TAG "Button_Tag"
TO Choice
@5,2 ?? "Search pattern:"
ACCEPT @5,18
WIDTH 25 "A35"
TAG "Search_St"
TO Search_St
PUSHBUTTON @7,13 WIDTH 10
"~S~earch"
OK
DEFAULT
VALUE ""
TAG "OK"
TO Button
PUSHBUTTON @7,26 WIDTH 10
"~C~ancel"
CANCEL
VALUE ""
TAG "Cancel"
TO Button
ENDDIALOG
if (RetVal = True) And (Search_St <> "") then
SWITCH
CASE (Choice = 1) : Fld_Name = "File_No"
CASE (Choice = 2) : Fld_Name = "Id"
CASE (Choice = 3) : Fld_Name = "Regarding"
OTHERWISE : RETURN
ENDSWITCH
MESSAGE "Searching..."
MOVETO M_Tbl
MOVETO FIELD Fld_Name
LOCATE INDEXORDER PATTERN Search_St
if (RetVal = True) then
MESSAGE ""
WHILE (RetVal = True)
SHOWPOPUP "Continue Search?" @17,63
"Next" : "Search for next match" : "Next",
"Quit" : "Terminate search" : "Quit"
ENDMENU
TO Choice
if (Choice = "Next") then
MESSAGE "Searching..."
ECHO OFF
CTRLPGDN
LOCATE INDEXORDER NEXT PATTERN Search_St
MESSAGE ""
if (RetVal = False) then
CTRLPGUP
BEEP
MESSAGE "No more matches found."
endif
ECHO NORMAL
else QUITLOOP
endif
ENDWHILE
else BEEP
MESSAGE "No matches found."
endif; initial match was found
endif; search requested
ENDPROC; Locate_Record
PROC Close_Account()
; must be files table & in coedit mode
PRIVATE Temp_Amount, Temp_Empl
ECHO OFF
[Closed] = TODAY()
[Status] = "INACTIVE"
Temp_Amount = [Amount_Owing]
Temp_Empl = [Empl_Num]
if (Temp_Amount > 0) then
MOVETO D_Tbl ; move to detail table (ledger)
END
if NOT RECORDSTATUS("New") then
DOWN ; move to new blank record
endif
[Date] = TODAY()
[Item_No] = 1
[Empl_Num] = Temp_Empl
[T_Code] = "PMT"
[T_Type] = "5"
[T_Type_L] = "C"
[Amount] = Temp_Amount
[Billed] = "Y"
WHILE TRUE ; must post record
POSTRECORD NOPOST LEAVELOCKED
if RetVal then
QUITLOOP
else [Item_No] = [Item_No] + 1
endif
ENDWHILE
endif
if (Temp_Amount > 0) then
Tally_Ledger()
endif
REFRESH
MESSAGE "Account has been closed."
ENDPROC; Close_Account
PROC Reopen_Account()
; must be in coedit mode
ECHO OFF
MOVETO M_Tbl ; move to master table (files)
[Closed] = BLANKDATE()
[Status] = "FOLLOW UP"
REFRESH
MESSAGE "Account has been reopened."
ENDPROC; Reopen_Account
PROC Update_Billed_Status()
PRIVATE Old_FN, F_Nos, I, Add_Tbl
DYNARRAY F_Nos[]
if Response_Is_Yes("Change Transaction Status", "Change all transactions to BILLED - YES status?") then
MESSAGE "Changing transactions to BILLED - YES status. One moment please..."
; make answer table match ledger table structure, change billed to yes
ECHO OFF
{Ask} TYPEIN Answer_Tbl ENTER
CHECKPLUS TAB TAB CHECKPLUS TAB CHECKPLUS
MOVETO FIELD "Billed"
TYPEIN "N"
DO_IT!
Answer_Tbl = PRIVDIR() + TABLE()
if ISEMPTY(Answer_Tbl) then
MESSAGE ""
CLEARIMAGE; remove answer table image
RETURN
endif
I = 1
TAB
COEDITKEY
SCAN
F_Nos[I] = [File_No] ; get list of file numbers
[Billed] = "Y"
I = I + 1
ENDSCAN
DO_IT!
CLEARIMAGE; remove answer table image
ADD Answer_Tbl D_Tbl; Target = Ledger or Ledger_x table
CLEARIMAGE; remove "changed" ledger table image
CLEARIMAGE; erase target table image
MESSAGE ""
; update file account totals
if (DYNARRAYSIZE(F_Nos) > 0) then ; update accounts
MOVETO M_Tbl
PICKFORM "1"
COEDITKEY
Old_FN = ""
FOREACH I IN F_Nos ; array of files to be updated
if (F_Nos[I] <> Old_FN) then
Old_FN = F_Nos[I]
MOVETO M_Tbl
MOVETO FIELD "File_No"
LOCATE F_Nos[I]
if RetVal then ; file number was found
MOVETO D_Tbl ; move to ledger table
Tally_Ledger() ; total accounts for this file
endif
endif
ENDFOREACH
DO_IT! ; end edit
FORMKEY
Sound_Off()
Message_Box("Updating File Account Balances", "All modified file accounts have been updated.")
endif
endif
ENDPROC; Update_Billed_Status
PROC Query_Ledger(S_Tbl, Billed, Rpt_No)
PRIVATE All_Billed
{Ask} TYPEIN S_Tbl ENTER
TAB CHECKPLUS EXAMPLE "LINK" TYPEIN "!" ; check file no field
TAB CHECKPLUS ; check owner id field
MOVETO FIELD "Footer_Code" CheckPlus
{Ask} TYPEIN D_Tbl ENTER
CHECKPLUS TAB CHECKPLUS EXAMPLE "LINK" ; check all fields except file no
MOVETO FIELD "Billed" TYPEIN Billed
DO_IT!
Answer_Tbl = PRIVDIR() + TABLE()
MOVETO FIELD "Billed"
All_Billed = TRUE
WHILE All_Billed
if ([Billed] = "Y") OR ISBLANK([Billed]) then
if ATLAST() then
QUITLOOP
else DOWN
endif
else All_Billed = FALSE
endif
ENDWHILE
CLEARIMAGE ; erase answer image
MOVETO (D_Tbl + "(Q)")
CLEARIMAGE ; erase 1st query image
MOVETO (S_Tbl + "(Q)")
CLEARIMAGE ; erase 2nd query image
if ISEMPTY(Answer_Tbl) then
No_Matches_Found()
else COPYREPORT "Trnsactn" Rpt_No Answer_Tbl "1"
Print_Report(Answer_Tbl, "1", Rpt_St["Statements"])
if (Billed <> "Y") AND NOT All_Billed then
Update_Billed_Status()
endif
endif
ENDPROC; Query_Ledger
PROC Credit_History()
{Ask} TYPEIN Subset_Table ENTER
TAB CHECKPLUS EXAMPLE "LINK" TYPEIN "!" ; check file no field
TAB CHECKPLUS ; check owner id field
MOVETO FIELD "Footer_Code" CHECKPLUS
{Ask} TYPEIN D_Tbl ENTER
CHECKPLUS TAB CHECKPLUS EXAMPLE "LINK" ; check all fields except file no
MOVETO FIELD "T_Type_L" TYPEIN "C" ; include only credit transactions
DO_IT!
Answer_Tbl = PRIVDIR() + TABLE()
CLEARIMAGE ; erase answer image
MOVETO (Subset_Table + "(Q)")
CLEARIMAGE ; erase 1st query image
MOVETO (D_Tbl + "(Q)")
CLEARIMAGE ; erase 2nd query image
if ISEMPTY(Answer_Tbl) then
No_Matches_Found()
else COPYREPORT "Trnsactn" "7" Answer_Tbl "1"
Print_Report(Answer_Tbl, "1", "")
endif
ENDPROC; Credit_History
PROC File_Cabinet_Answer_Menu()
SHOWPULLDOWN
"Modify" : "Toggle between edit and main mode" : "Modify"
SUBMENU
"Edit Mode - F9" : "Allow data to be edited, deleted, etc." : "Edit\Mode",
"Main Mode - F2" : "Discontinue editing" : "Main\Mode"
ENDSUBMENU,
"Reports" : "Choose report to generate" : "Reports"
SUBMENU
"Envelope" : "Create an envelope" : "R_Envelope",
"Phone Book" : "Generate list of phone numbers & addresses" : ""
SUBMENU
"Address & Phone #" : "List address & phone numbers" : "R_Phone_Address",
"Phone # Only" : "List only names & phone numbers" : "R_Phone"
ENDSUBMENU,
"Rolodex Info" : "All info in rolodex" : "R_Rolodex",
"File Cabinet Info" : "Show file cabinet data by file owner" : ""
SUBMENU
"Detailed" : "All data for files, with account balances" : "R_File_Detail",
"Short Form" : "Summarize file data and account balances" : "R_File_Short"
ENDSUBMENU,
"Account Balances" : "Summarize accounts in file cabinet by employee and file status" : ""
SUBMENU
"Detailed" : "Show balances by billed & unbilled amounts" : "R_Account_Detail",
"Short Form" : "Summarize amount owing & amount to transfer" : "R_Account_Short"
ENDSUBMENU,
"Statements" : "Statement of billable services" : ""
SUBMENU
"All Transactions" : "Include all transactions for file" : ""
SUBMENU
"Total Hours" : "Include only total for all hourly transactions" : "R_Statements_All",
"Itemize Hours" : "Itemize hours for each hourly transaction" : "R_Statements_All_I"
ENDSUBMENU,
"Billed Previously" : "Select only previously billed transactions" : ""
SUBMENU
"Total Hours" : "Include only total for all hourly transactions" : "R_Statements_Billed",
"Itemize Hours" : "Itemize hours for each hourly transaction" : "R_Statements_Billed_I"
ENDSUBMENU,
"Unbilled Only " : "Select only unbilled transactions" : ""
SUBMENU
"Total Hours" : "Include only total for all hourly transactions" : "R_Statements_Unbilled",
"Itemize Hours" : "Itemize hours for each hourly transaction" : "R_Statements_Unbilled_I"
ENDSUBMENU
ENDSUBMENU,
"Credit/Payment History" : "Report on credit/payment history for each account" : "R_Credit_History"
ENDSUBMENU,
"Assemble" : "Combine data and forms into documents" : "Assemble",
"Quit" : "Return to previous menu" : ""
SUBMENU
"No " : "Continue working with selected data" : "Return\No",
"Yes - F8" : "Return to complete data set" : "Return\Yes"
ENDSUBMENU
ENDMENU
if (SYSMODE() = "Main") then
MENUDISABLE "Main\Mode"
else MENUDISABLE "Edit\Mode"
MENUDISABLE "Assemble"
MENUDISABLE "Reports"
endif
File_Cabinet_Speedbar()
ENDPROC; File_Cabinet_Answer_Menu
PROC File_Cabinet_Answer_Wait_Proc(TriggerType, EventInfo, CycleNumber)
PRIVATE Answer_Tbl, Menu_Tag, Return_Code
if (TriggerType = "ARRIVEFIELD") then
PROMPT Fld_Prompt[FIELD()]
RETURN 1
endif
if (EventInfo["TYPE"] = "MESSAGE") AND
(EventInfo["MESSAGE"] = "MENUSELECT") AND
(SUBSTR(EventInfo["MENUTAG"],1,2) = "R_") then
Menu_Tag = EventInfo["MENUTAG"]
SHOWPULLDOWN
ENDMENU
CLEARSPEEDBAR
MESSAGE "One moment please..."
ECHO OFF
SWITCH
; ***** envelope *****
CASE (Menu_Tag = "R_Envelope") :
MESSAGE ""
Return_Code = Yes_No_Cancel("Duplicate Envelope Removal", "Print only one envelope per file owner?")
if (Return_Code = "Yes") then
{Ask} {Rolodex} CHECK TAB EXAMPLE "LINK"
else if (Return_Code = "No") then
{Ask} {Rolodex} CHECKPLUS TAB EXAMPLE "LINK"
else FORMKEY
endif
endif
if (Return_Code <> "Cancel") then
MESSAGE "One moment please..."
{Ask} TYPEIN Subset_Table ENTER
MOVETO FIELD "Id" EXAMPLE "LINK"
DO_IT!
Answer_Tbl = PRIVDIR() + TABLE()
SORT Answer_Tbl ON "Id"
CLEARIMAGE ; erase answer image
MOVETO "Rolodex(Q)"
CLEARIMAGE ; erase 1st query image
MOVETO (Subset_Table + "(Q)")
CLEARIMAGE ; erase 2nd query image
if ISEMPTY(Answer_Tbl) then
No_Matches_Found()
else COPYREPORT "Rolodex" "1" Answer_Tbl "R"
Print_Report(Answer_Tbl, "R", Rpt_St["Envelope"])
endif
endif
; ***** rolodex address & phone information *****
CASE (Menu_Tag = "R_Phone_Address") OR (Menu_Tag = "R_Phone") OR (Menu_Tag = "R_Rolodex") :
{Ask} TYPEIN Subset_Table ENTER
TAB TAB CHECK EXAMPLE "LINK" TYPEIN "!"
{Ask} {Phone} CHECK TAB CHECK EXAMPLE "LINK"
DO_IT!
Answer_Tbl = PRIVDIR() + TABLE()
CLEARIMAGE ; erase answer image
MOVETO "Phone(Q)"
CLEARIMAGE ; erase 1st query image
MOVETO (Subset_Table + "(Q)")
CLEARIMAGE ; erase 2nd query image
if ISEMPTY(Answer_Tbl) then
No_Matches_Found()
else if (Menu_Tag = "R_Phone") then
COPYREPORT "Phone" "1" Answer_Tbl "R"
Print_Report(Answer_Tbl, "R", Rpt_St["Phone_Book"])
else if (Menu_Tag = "R_Phone_Address") then
COPYREPORT "Phone" "2" Answer_Tbl "R"
Print_Report(Answer_Tbl, "R", Rpt_St["Phone_Book"])
else COPYREPORT "Phone" "3" Answer_Tbl "R"
Print_Report(Answer_Tbl, "R", Rpt_St["Rolodex_Info"])
endif
endif
endif
; ***** detailed file cabinet information *****
CASE (Menu_Tag = "R_File_Detail"):
FORMKEY
Print_Report(Subset_Table, "1", Rpt_St["File_Cabinet"])
; ***** summarized file cabinet information *****
CASE (Menu_Tag = "R_File_Short"):
FORMKEY
Print_Report(Subset_Table, "2", Rpt_St["File_Cabinet"])
; ***** detailed accounts receivable information *****
CASE (Menu_Tag = "R_Account_Detail") :
FORMKEY
Print_Report(Subset_Table, "3", Rpt_St["Accounts"])
; ***** summarized accounts receivable information *****
CASE (Menu_Tag = "R_Account_Short") :
FORMKEY
Print_Report(Subset_Table, "4", Rpt_St["Accounts"])
; ***** statement, unbilled transactions only *****
CASE (Menu_Tag = "R_Statements_Unbilled") :
Query_Ledger(Subset_Table, "N", "1")
; ***** statement, unbilled transactions only, itemized *****
CASE (Menu_Tag = "R_Statements_Unbilled_I") :
Query_Ledger(Subset_Table, "N", "2")
; ***** statement, billed & unbilled *****
CASE (Menu_Tag = "R_Statements_All") :
Query_Ledger(Subset_Table, "", "3")
; ***** statement, billed & unbilled, itemized *****
CASE (Menu_Tag = "R_Statements_All_I") :
Query_Ledger(Subset_Table, "", "4")
; ***** statement, previously billed transactions only *****
CASE (Menu_Tag = "R_Statements_Billed") :
Query_Ledger(Subset_Table, "Y", "5")
; ***** statement, previously billed transactions only *****
CASE (Menu_Tag = "R_Statements_Billed_I") :
Query_Ledger(Subset_Table, "Y", "6")
; ***** last credit to account *****
CASE (Menu_Tag = "R_Credit_History") :
Credit_History()
ENDSWITCH
MOVETO Subset_Table
FORMKEY
ECHO NORMAL
EXECPROC "File_Cabinet_Answer_Menu"
RETURN 1
else Return_Code = Answer_Table_Wait_Proc(TriggerType, EventInfo, CycleNumber)
if (SYSMODE() = "Main") then
MENUENABLE "Assemble"
else MENUDISABLE "Assemble"
endif
RETURN Return_Code
endif
ENDPROC; File_Cabinet_Answer_Wait_Proc
PROC File_Cabinet_Answer_Wait()
File_Cabinet_Answer_Menu()
Sound_Off()
ECHO NORMAL
Message_Box("Search Completed", "Matching File Cabinet Entries: " + STRVAL(NRECORDS(Subset_Table)))
WAIT WORKSPACE
PROC "File_Cabinet_Answer_Wait_Proc"
MESSAGE "MENUSELECT"
TRIGGER "ARRIVEFIELD"
KEY -60, -66, -67, -83, -50, -48, 43, 45
; DO_IT Clear Edit Delete Alt-M Alt-B + -
; F2 F8 F9 DEL Memo Summarize Balances
ENDWAIT
CLEARSPEEDBAR
MESSAGE ""
ENDPROC; File_Cabinet_Answer_Wait
PROC Summarize_Accounts(Tbl, I_No)
; pops up window with summary of billed, unbilled & total accounts
PRIVATE Button_Val
MOVETO Tbl
SHOWDIALOG "Account Balances - File No: " + [File_No]
@3,8 HEIGHT 18 WIDTH 63
@1, 17 ?? " Billed Not Billed Total"
@2, 17 ?? "========== ========== ========="
@3, 2 ?? "Trust Acnt. "+FORMAT("W13.2,E$C,AR", [Trust_Bal_P]) +FORMAT("W15.2,E$C,AR", [Trust_Bal]-[Trust_Bal_P]) +FORMAT("W15.2,E$C,AR", [Trust_Bal])
@4, 2 ?? "Hours "+FORMAT("W13.2,EC,AR", [Hours_P]) +FORMAT("W15.2,EC,AR", [Hours]-[Hours_P]) +FORMAT("W15.2,EC,AR", [Hours])
@6, 2 ?? "Hourly Fees "+FORMAT("W13.2,EC,AR", [Hourly_Fees_P]) +FORMAT("W15.2,EC,AR", [Hourly_Fees]-[Hourly_Fees_P]) +FORMAT("W15.2,EC,AR", [Hourly_Fees])
@7, 2 ?? "Flat Fees "+FORMAT("W13.2,EC,AR", [Flat_Fees_P]) +FORMAT("W15.2,EC,AR", [Flat_Fees]-[Flat_Fees_P]) +FORMAT("W15.2,EC,AR", [Flat_Fees])
@8, 2 ?? "Disburse. "+FORMAT("W13.2,EC,AR", [Disbursements_P])+FORMAT("W15.2,EC,AR", [Disbursements]-[Disbursements_P])+FORMAT("W15.2,EC,AR", [Disbursements])
@9, 2 ?? "Tot. Charges"+FORMAT("W13.2,EC,AR", [Total_Charges_P])+FORMAT("W15.2,EC,AR", [Total_Charges]-[Total_Charges_P])+FORMAT("W15.2,EC,AR", [Total_Charges])
@10,2 ?? "Credits "+FORMAT("W13.2,EC,AR", [Credit_Bal_P]) +FORMAT("W15.2,EC,AR", [Credit_Bal]-[Credit_Bal_P]) +FORMAT("W15.2,EC,AR", [Credit_Bal])
@11,17 ?? "========== ========== ========="
@12,2 ?? "Balance Due "+FORMAT("W13.2,E$C,AR", [Amount_Owing_P]) +FORMAT("W15.2,E$C,AR", [Amount_Owing]-[Amount_Owing_P]) +FORMAT("W15.2,E$C,AR", [Amount_Owing])
@14,32 ?? "Transferable: "+FORMAT("W11.2,E$C,AR", [Transferable])
PUSHBUTTON @14,10 WIDTH 12
"~O~K"
OK
VALUE "OK"
TAG "OK_Button"
TO Button_Val
ENDDIALOG
MOVETO I_No
if (SYSMODE() = "CoEdit") then
REFRESH
endif
ENDPROC; Summarize_Accounts
PROC Depart_Cabinet_Row()
PRIVATE In_Form
if (SYSMODE() <> "CoEdit") OR FORMTYPE("Detail") then
RETURN TRUE
endif
if NOT ISVALID() then
Message_Box("Invalid Field Entry", "The data for this field is invalid.")
RETURN FALSE
endif
; depart row if record is new & blank
if RECORDSTATUS("New") AND NOT RECORDSTATUS("Modified") then
RETURN TRUE
endif
if ISBLANK([File_No]) then
MOVETO [File_No]
Message_Box("Incomplete Entry", "This file requires a file number.")
RETURN FALSE
endif
if ISBLANK([Id]) then
MOVETO [Id]
Message_Box("Incomplete Entry", "This file requires a file owner ID.")
RETURN FALSE
endif
if ISBLANK([Empl_Num]) then
MOVETO [Empl_Num]
Message_Box("Incomplete Entry", "This file requires an employee number.")
RETURN FALSE
endif
if ISBLANK([File_Type]) then
MOVETO [File_Type]
Message_Box("Incomplete Entry", "This file requires an law area designation.")
RETURN FALSE
endif
if ISBLANK([Opened]) then
MOVETO [Opened]
Message_Box("Incomplete Entry", "This file requires a date of opening.")
RETURN FALSE
endif
if ISBLANK([Status]) then
MOVETO [Status]
Message_Box("Incomplete Entry", "This file requires a status designation.")
RETURN FALSE
endif
if ISBLANK([Rate_Per_Hour]) then
MOVETO [Rate_Per_Hour]
Message_Box("Incomplete Entry", "This file requires an hourly billing rate.")
RETURN FALSE
endif
if RECORDSTATUS("New") then
[Trust_Bal] = 0
[Hours] = 0
[Hourly_Fees] = 0
[Flat_Fees] = 0
[Disbursements] = 0
[Total_Charges] = 0
[Credit_Bal] = 0
[Amount_Owing] = 0
[Transferable] = 0
endif
RETURN TRUE
ENDPROC; Depart_Cabinet_Row
PROC File_Cabinet_Wait_Proc(TriggerType, EventInfo, CycleNumber)
PRIVATE Key_Code, Menu_Pick, Form_Num
if (TriggerType = "ARRIVEFIELD") then
File_Cabinet_Speedbar()
RETURN 0
endif
if (TriggerType = "DEPARTROW") then
if Depart_Cabinet_Row() then
RETURN 0
endif
RETURN 1
endif
if (TriggerType = "ARRIVETABLE") then
File_Cabinet_Speedbar()
if (SYSMODE() = "CoEdit") AND (TABLE() = D_Tbl) then
Ledger_Table_Wait(TRUE, Employee, Hourly_Rate)
File_Cabinet_Speedbar()
RETURN 1
endif
RETURN 0
endif
if (TriggerType = "DEPARTTABLE") then
if (TABLE() = M_Tbl) then
Hourly_Rate = [Rate_Per_Hour]
Employee = [Empl_Num]
endif
RETURN 0
endif
if (EventInfo["TYPE"] = "KEY") then
Key_Code = EventInfo["KEYCODE"]
SWITCH
; F9 - COEDIT
CASE (Key_Code = -67) : Main_Table_Edit()
if (TABLE() = D_Tbl) then
Ledger_Table_Wait(FALSE, Employee, Hourly_Rate)
if (IMAGENO() > 0) then
File_Cabinet_Speedbar()
endif
endif
RETURN 1
; F2 - DO_IT!
CASE (Key_Code = -60) : if Depart_Cabinet_Row() then
if ISEMPTY(Main_Table) then
RETURN Main_Table_Clear()
else RETURN Main_Table_End_Edit()
endif
else RETURN 1
endif
; F8 - CLEAR
CASE (Key_Code = -66) : if Depart_Cabinet_Row() then
RETURN Main_Table_Clear()
else RETURN 1
endif
; DELETE
CASE (Key_Code = -83) : if (SYSMODE() = "CoEdit") then
if ISFIELDVIEW() then
RETURN 0
endif
; if (TABLE() = M_Tbl) then
; GETRECORD "Timecard" [File_No] TO DYNARRAY A
; if RetVal then
; Message_Box("Timecard Entries Are Outstanding", "Cannot delete if timecard contains related entries!")
; RETURN 1
; endif
; endif
RETURN Display_Delete_Box()
endif
RETURN 1
; Alt-M - Memo
CASE (Key_Code = -50) : Display_Memo(Main_Table)
Main_Table_Menu()
File_Cabinet_Speedbar()
RETURN 1
; Alt-C Close Account
CASE (Key_Code = -46) : if (FORM() = "1") OR (FORM() = "2") then
if (SYSMODE() = "Main") then
COEDITKEY
endif
Close_Account()
endif
RETURN 1
; Alt-R Reopen Account
CASE (Key_Code = -19) : Main_Table_Edit()
if (SYSMODE() = "CoEdit") then
Reopen_Account()
endif
RETURN 1
; ALT-B - Summarize account balances
CASE (Key_Code = -48) : Summarize_Accounts(M_Tbl, IMAGENO())
RETURN 1
; ALT-L - Locate Record
CASE (Key_Code = -38) : Locate_Record()
RETURN 1
; ALT-I - Inquire about Rolodex
CASE (Key_Code = -23) : if (SYSMODE() = "Main")then
Show_Rolodex_Info()
endif
RETURN 1
; ALT-T - Start or stop time keeper
CASE (Key_Code = -20) : if Timing then
Stop_Ticker()
else Start_Ticker()
endif
RETURN 1
; ALT-F - Switch form
CASE (Key_Code = -33) : if (SYSMODE() = "Main") then
ECHO OFF
MOVETO M_Tbl
Form_Num = NUMVAL(FORM()) + 1
if (Form_Num > 2) then
Form_Num = 1
endif
PICKFORM Form_Num
ECHO NORMAL
endif
RETURN 1
; + or - to change current date
CASE (Key_Code = 43) OR (Key_Code = 45) :
RETURN Change_Date(Key_Code)
OTHERWISE : SOUND 400 100 RETURN 1
ENDSWITCH
endif
if (EventInfo["MESSAGE"] = "MENUSELECT") then
Menu_Pick = EventInfo["MENUTAG"]
SWITCH
CASE (Menu_Pick = "Edit\Mode") : Main_Table_Edit()
if (TABLE() = D_Tbl) then
Ledger_Table_Wait(FALSE, Employee, Hourly_Rate)
if (IMAGENO() > 0) then
File_Cabinet_Speedbar()
endif
endif
RETURN 1
CASE (Menu_Pick = "Main\Mode") : if Depart_Cabinet_Row() then
if ISEMPTY(M_Tbl) then
RETURN Main_Table_Clear()
else RETURN Main_Table_End_Edit()
endif
else RETURN 1
endif
CASE (Menu_Pick = "Ask") : MOVETO M_Tbl
if ISBLANK([File_No]) then
File_No = ""
else File_No = [File_No]
endif
if (M_Tbl = "Files") then
Status = "SEND"
else Status = "HOLD"
endif
Ask_File_Cabinet(NUMVAL(FORM()))
Main_Table_Menu()
File_Cabinet_Speedbar()
RETURN 1
CASE (Menu_Pick = "Close\Yes") : if Depart_Cabinet_Row() then
RETURN Main_Table_Clear()
else RETURN 1
endif
CASE (Menu_Pick = "Close\No") : RETURN 1
OTHERWISE : SOUND 400 100 RETURN 1
ENDSWITCH
endif
SOUND 400 100 RETURN 1 ; safety valve, ignore all events not recognized
ENDPROC; File_Cabinet_Wait_Proc
PROC File_Cabinet_Speedbar()
CLEARSPEEDBAR
SPEEDBAR "~F10~ Menu":-68, "~Alt-M~ Memo":-50, "~Alt-B~ Balances":-48
if ISASSIGNED(Fld_Prompt[FIELD()]) then
PROMPT Fld_Prompt[FIELD()]
else PROMPT ""
endif
ENDPROC; File_Cabinet_Speedbar
; MAIN PROCEDURE BEGINS HERE!
; initialize "ASK" dialog box variables not initialized with each ask
Id = ""
File_Type = ""
Regarding = ""
Opened = ""
Closed = ""
Empl_Num = ""
Trust_Bal = ""
Total_Charges = ""
Amount_Owing = ""
Transferable = ""
Answer_Menu = "File_Cabinet_Answer_Menu"
DYNARRAY Fld_Prompt[]
Fld_Prompt["File_No"] = "Unique file number"
Fld_Prompt["Id"] = "F1 to select file owner from rolodex"
Fld_Prompt["Regarding"] = "Description of pertinent matter"
Fld_Prompt["Empl_Num"] = "F1 to assign atty. and default rate"
Fld_Prompt["File_Type"] = "F1 to select area of law"
Fld_Prompt["Opened"] = "Date this file was opened (##/##/##)"
Fld_Prompt["Closed"] = "Date this file closes (##/##/##)"
Fld_Prompt["Status"] = "F1 to select file status"
Fld_Prompt["Footer_Code"] = "F1 to select statement footer"
Fld_Prompt["Opposing"] = "F1 to select opposing atty from rolodex"
Fld_Prompt["Memo"] = "Add or edit notes for this file"
Fld_Prompt["Rate_Per_Hour"] = "Hourly billing rate"
Fld_Prompt["Memo_Date"] = "Enter Date of this memo entry"
Fld_Prompt["Memo_Note"] = "Enter Memo (up to 90 characters)"
Fld_Prompt["Date"] = "Date for this transaction, (##/##/##)"
Fld_Prompt["T_Code"] = "F1 to select trans. code & description"
Fld_Prompt["Quantity"] = "Number of billable units"
Fld_Prompt["Rate"] = "Dollar value per unit"
Fld_Prompt["Amount"] = "Dollar amount of ledger entry"
Fld_Prompt["Billed"] = "Has transaction been billed (Y/N)?"
Fld_Prompt["Note"] = "Note to append to trans. description"
Fld_Prompt["A1"] = "First line of address, or firm name"
Fld_Prompt["Location"] = "Location for this phone number"
Fld_Prompt["Phone"] = "Phone No.: ###-####, 1-###-###-####"
Fld_Prompt["Relationship"] = "Code for type of relationship"
Fld_Prompt["Rolodex_Id"] = "Select Id from Rolodex"
Fld_Prompt["Identifier"] = "Name of variable"
Fld_Prompt["Response"] = "Text to replace variable"
if (M_Tbl = "Files") then
Cabinet = "Open"
else Cabinet = "Archived"
endif
Main_Table_View(M_Tbl, 1, 0)
END
Timing = False
File_Cabinet_Speedbar()
ECHO NORMAL
WAIT WORKSPACE
PROC "File_Cabinet_Wait_Proc"
TRIGGER "ARRIVEFIELD", "ARRIVETABLE", "DEPARTROW", "DEPARTTABLE"
MESSAGE "MENUSELECT"
KEY -60, -66, -67, -83, -50, -46, -19, -48, -38, -23, -33, -20, 43, 45
; DO_IT Clear Edit Del Alt-M Alt-C Alt-R Alt-B Alt-L Alt-I Alt-F Alt-T
; F2 F8 F9 DEL Memo Close Reopen Balnces Locate Inquire Form Timer + -
ENDWAIT
CLEARSPEEDBAR
PROMPT ""
MESSAGE ""
ENDPROC
WRITELIB Off_Lib File_Cabinet_Wait
RELEASE PROCS ALL