Initial project structure: directories, empty files, requirements.txt, and logo

This commit is contained in:
HotSwapp
2025-10-06 18:18:47 -05:00
commit 36dffd5372
113 changed files with 7103 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

39
.cursor/rules/ai.mdc Normal file
View File

@@ -0,0 +1,39 @@
---
alwaysApply: true
---
PROJECT CONTEXT
Stack: Docker-based Python backend + simple frontends
Version control: Gitea (commit after tasks, no auto-push)
Environment: Docker containers (no venv)
CORE PRINCIPLES
Follow DRY principles and write modular, maintainable code
Include appropriate debug logging and error handling
ALWAYS ask clarifying questions before making assumptions
Choose the simplest solution that solves the problem - avoid over-engineering
Prefer explicit over implicit (Pythonic principle)
CODE STANDARDS
Python: Follow PEP 8, use type hints, docstrings for functions/classes
Use structured logging (loguru or structlog) with appropriate levels
Docker: Multi-stage builds where beneficial, minimize layer count
Keep docker-compose.yml organized and well-commented
Environment variables for all config (never hardcode secrets/URLs)
DEVELOPMENT WORKFLOW
Test changes in Docker container before marking complete
Include error handling and graceful failure modes
Update requirements.txt or pyproject.toml when adding dependencies
After completing each task: create a concise prompt for the next subtask, make a descriptive gitea commit, suggest what to tackle next
DOCKER SPECIFICS
Always update Dockerfile if dependencies change
Use .dockerignore to keep images lean
Verify services can communicate via docker network
Use health checks in docker-compose where appropriate
AVOID
Don't create virtual environments (we use Docker)
Don't over-abstract simple problems
Don't commit untested code
Don't push to remote (manual review first)

39
TODO.md Normal file
View File

@@ -0,0 +1,39 @@
# DelphiCG Minimal Database App — TODO
Refer to `del.plan.md` for context. Check off items as theyre completed.
- [ ] Create project directories and empty files per structure
- [ ] Create requirements.txt with minimal deps
- [ ] Copy delphi-logo.webp into static/logo/
- [ ] Set up SQLAlchemy Base and engine/session helpers
- [ ] Add User model with username and password_hash
- [ ] Add Client model (rolodex_id and core fields)
- [ ] Add Phone model with FK to Client
- [ ] Add Case model (file_no unique, FK to Client)
- [ ] Add Transaction model with FK to Case
- [ ] Add Document model with FK to Case
- [ ] Add Payment model with FK to Case
- [ ] Create tables and seed default admin user
- [ ] Create FastAPI app with DB session dependency
- [ ] Add SessionMiddleware with SECRET_KEY from env
- [ ] Configure Jinja2 templates and mount static files
- [ ] Create base.html with Bootstrap 5 CDN and nav
- [ ] Implement login form, POST handler, and logout
- [ ] Create login.html form
- [ ] Implement dashboard route listing cases
- [ ] Add simple search by file_no/name/keyword
- [ ] Create dashboard.html with table and search box
- [ ] Implement case view and edit POST
- [ ] Create case.html with form and tabs
- [ ] Implement admin page with file upload
- [ ] Create admin.html with upload form and results
- [ ] Build CSV import core with dispatch by filename
- [ ] Importer for ROLODEX → Client
- [ ] Importer for PHONE → Phone
- [ ] Importer for FILES → Case
- [ ] Importer for LEDGER → Transaction
- [ ] Importer for QDROS → Document
- [ ] Importer for PAYMENTS → Payment
- [ ] Wire admin POST to run selected importers
- [ ] Run app and test login/import/list/case-edit
- [ ] Add minimal Dockerfile and compose for local run

1
app/main.py Normal file
View File

@@ -0,0 +1 @@
# FastAPI application entry point

1
app/models.py Normal file
View File

@@ -0,0 +1 @@
# SQLAlchemy models for the Delphi database

1
app/templates/admin.html Normal file
View File

@@ -0,0 +1 @@
<!-- Admin CSV import interface -->

1
app/templates/base.html Normal file
View File

@@ -0,0 +1 @@
<!-- Base template with Bootstrap 5 and navigation -->

1
app/templates/case.html Normal file
View File

@@ -0,0 +1 @@
<!-- Case view/edit form -->

View File

@@ -0,0 +1 @@
<!-- Dashboard with case listing and search -->

1
app/templates/login.html Normal file
View File

@@ -0,0 +1 @@
<!-- Login form template -->

BIN
delphi-logo.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
old-csv/.DS_Store vendored Normal file

Binary file not shown.

1
old-csv/DEPOSITS.csv Executable file
View File

@@ -0,0 +1 @@
Deposit_Date,Total
1 Deposit_Date Total

1
old-csv/EMPLOYEE.csv Executable file
View File

@@ -0,0 +1 @@
Empl_Num,Empl_Id,Rate_Per_Hour
1 Empl_Num Empl_Id Rate_Per_Hour

1
old-csv/FILENOTS.csv Executable file
View File

@@ -0,0 +1 @@
File_No,Memo_Date,Memo_Note
1 File_No Memo_Date Memo_Note

1
old-csv/FILES.csv Executable file
View File

@@ -0,0 +1 @@
File_No,Id,File_Type,Regarding,Opened,Closed,Empl_Num,Rate_Per_Hour,Status,Footer_Code,Opposing,Hours,Hours_P,Trust_Bal,Trust_Bal_P,Hourly_Fees,Hourly_Fees_P,Flat_Fees,Flat_Fees_P,Disbursements,Disbursements_P,Credit_Bal,Credit_Bal_P,Total_Charges,Total_Charges_P,Amount_Owing,Amount_Owing_P,Transferable,Memo
1 File_No Id File_Type Regarding Opened Closed Empl_Num Rate_Per_Hour Status Footer_Code Opposing Hours Hours_P Trust_Bal Trust_Bal_P Hourly_Fees Hourly_Fees_P Flat_Fees Flat_Fees_P Disbursements Disbursements_P Credit_Bal Credit_Bal_P Total_Charges Total_Charges_P Amount_Owing Amount_Owing_P Transferable Memo

1
old-csv/FILESTAT.csv Executable file
View File

@@ -0,0 +1 @@
Status,Definition,Send,Footer_Code
1 Status Definition Send Footer_Code

1
old-csv/FILES_R.csv Executable file
View File

@@ -0,0 +1 @@
File_No,Relationship,Rolodex_Id
1 File_No Relationship Rolodex_Id

1
old-csv/FILES_V.csv Executable file
View File

@@ -0,0 +1 @@
File_No,Identifier,Response
1 File_No Identifier Response

1
old-csv/FILETYPE.csv Executable file
View File

@@ -0,0 +1 @@
File_Type
1 File_Type

1
old-csv/FOOTERS.csv Executable file
View File

@@ -0,0 +1 @@
F_Code,F_Footer
1 F_Code F_Footer

1
old-csv/FVARLKUP.csv Executable file
View File

@@ -0,0 +1 @@
Identifier,Query,Response
1 Identifier Query Response

1
old-csv/Forms/FORM_INX.csv Executable file
View File

@@ -0,0 +1 @@
Name,Keyword
1 Name Keyword

1
old-csv/Forms/FORM_LST.csv Executable file
View File

@@ -0,0 +1 @@
Name,Memo,Status
1 Name Memo Status

1
old-csv/Forms/INX_LKUP.csv Executable file
View File

@@ -0,0 +1 @@
Keyword
1 Keyword

1
old-csv/Forms/LIFETABL.csv Executable file
View File

@@ -0,0 +1 @@
AGE,LE_AA,NA_AA,LE_AM,NA_AM,LE_AF,NA_AF,LE_WA,NA_WA,LE_WM,NA_WM,LE_WF,NA_WF,LE_BA,NA_BA,LE_BM,NA_BM,LE_BF,NA_BF,LE_HA,NA_HA,LE_HM,NA_HM,LE_HF,NA_HF
1 AGE LE_AA NA_AA LE_AM NA_AM LE_AF NA_AF LE_WA NA_WA LE_WM NA_WM LE_WF NA_WF LE_BA NA_BA LE_BM NA_BM LE_BF NA_BF LE_HA NA_HA LE_HM NA_HM LE_HF NA_HF

1
old-csv/Forms/NUMBERAL.csv Executable file
View File

@@ -0,0 +1 @@
Month,NA_AA,NA_AM,NA_AF,NA_WA,NA_WM,NA_WF,NA_BA,NA_BM,NA_BF,NA_HA,NA_HM,NA_HF
1 Month NA_AA NA_AM NA_AF NA_WA NA_WM NA_WF NA_BA NA_BM NA_BF NA_HA NA_HM NA_HF

1
old-csv/GRUPLKUP.csv Executable file
View File

@@ -0,0 +1 @@
Code,Description,Title
1 Code Description Title

1
old-csv/LEDGER.csv Executable file
View File

@@ -0,0 +1 @@
File_No,Date,Item_No,Empl_Num,T_Code,T_Type,T_Type_L,Quantity,Rate,Amount,Billed,Note
1 File_No Date Item_No Empl_Num T_Code T_Type T_Type_L Quantity Rate Amount Billed Note

1
old-csv/PAYMENTS.csv Executable file
View File

@@ -0,0 +1 @@
Deposit_Date,File_No,Id,Regarding,Amount,Note
1 Deposit_Date File_No Id Regarding Amount Note

1
old-csv/PHONE.csv Executable file
View File

@@ -0,0 +1 @@
Id,Phone,Location
1 Id Phone Location

1
old-csv/PLANINFO.csv Executable file
View File

@@ -0,0 +1 @@
Plan_Id,Plan_Name,Plan_Type,Empl_Id_No,Plan_No,NRA,ERA,ERRF,COLAS,Divided_By,Drafted,Benefit_C,QDRO_C,^REV,^PA,Form_Name,Drafted_On,Memo
1 Plan_Id Plan_Name Plan_Type Empl_Id_No Plan_No NRA ERA ERRF COLAS Divided_By Drafted Benefit_C QDRO_C ^REV ^PA Form_Name Drafted_On Memo

1
old-csv/PRINTERS.csv Executable file
View File

@@ -0,0 +1 @@
Number,Name,Port,Page_Break,Setup_St,Phone_Book,Rolodex_Info,Envelope,File_Cabinet,Accounts,Statements,Calendar,Reset_St,B_Underline,E_Underline,B_Bold,E_Bold
1 Number Name Port Page_Break Setup_St Phone_Book Rolodex_Info Envelope File_Cabinet Accounts Statements Calendar Reset_St B_Underline E_Underline B_Bold E_Bold

1
old-csv/Pensions/DEATH.csv Executable file
View File

@@ -0,0 +1 @@
File_No,Version,Lump1,Lump2,Growth1,Growth2,Disc1,Disc2
1 File_No Version Lump1 Lump2 Growth1 Growth2 Disc1 Disc2

1
old-csv/Pensions/LIFETABL.csv Executable file
View File

@@ -0,0 +1 @@
AGE,LE_AA,NA_AA,LE_AM,NA_AM,LE_AF,NA_AF,LE_WA,NA_WA,LE_WM,NA_WM,LE_WF,NA_WF,LE_BA,NA_BA,LE_BM,NA_BM,LE_BF,NA_BF,LE_HA,NA_HA,LE_HM,NA_HM,LE_HF,NA_HF
1 AGE LE_AA NA_AA LE_AM NA_AM LE_AF NA_AF LE_WA NA_WA LE_WM NA_WM LE_WF NA_WF LE_BA NA_BA LE_BM NA_BM LE_BF NA_BF LE_HA NA_HA LE_HM NA_HM LE_HF NA_HF

1
old-csv/Pensions/MARRIAGE.csv Executable file
View File

@@ -0,0 +1 @@
File_No,Version,Married_From,Married_To,Married_Years,Service_From,Service_To,Service_Years,Marital_%
1 File_No Version Married_From Married_To Married_Years Service_From Service_To Service_Years Marital_%

1
old-csv/Pensions/NUMBERAL.csv Executable file
View File

@@ -0,0 +1 @@
Month,NA_AA,NA_AM,NA_AF,NA_WA,NA_WM,NA_WF,NA_BA,NA_BM,NA_BF,NA_HA,NA_HM,NA_HF
1 Month NA_AA NA_AM NA_AF NA_WA NA_WM NA_WF NA_BA NA_BM NA_BF NA_HA NA_HM NA_HF

1
old-csv/Pensions/PENSIONS.csv Executable file
View File

@@ -0,0 +1 @@
File_No,Version,Plan_Id,Plan_Name,Title,First,Last,Birth,Race,Sex,Info,Valu,Accrued,Vested_Per,Start_Age,COLA,Max_COLA,Withdrawal,Pre_DR,Post_DR,Tax_Rate
1 File_No Version Plan_Id Plan_Name Title First Last Birth Race Sex Info Valu Accrued Vested_Per Start_Age COLA Max_COLA Withdrawal Pre_DR Post_DR Tax_Rate

1
old-csv/Pensions/RESULTS.csv Executable file
View File

@@ -0,0 +1 @@
Accrued,Start_Age,COLA,Withdrawal,Pre_DR,Post_DR,Tax_Rate,Age,Years_From,Life_Exp,EV_Monthly,Payments,Pay_Out,Fund_Value,PV,Mortality,PV_AM,PV_AMT,PV_Pre_DB,PV_Annuity,WV_AT,PV_Plan,Years_Married,Years_Service,Marr_Per,Marr_Amt
1 Accrued Start_Age COLA Withdrawal Pre_DR Post_DR Tax_Rate Age Years_From Life_Exp EV_Monthly Payments Pay_Out Fund_Value PV Mortality PV_AM PV_AMT PV_Pre_DB PV_Annuity WV_AT PV_Plan Years_Married Years_Service Marr_Per Marr_Amt

1
old-csv/Pensions/SCHEDULE.csv Executable file
View File

@@ -0,0 +1 @@
File_No,Version,Vests_On,Vests_At
1 File_No Version Vests_On Vests_At

1
old-csv/Pensions/SEPARATE.csv Executable file
View File

@@ -0,0 +1 @@
File_No,Version,Separation_Rate
1 File_No Version Separation_Rate

1
old-csv/QDROS.csv Executable file
View File

@@ -0,0 +1 @@
File_No,Version,Plan_Id,^1,^2,^Part,^AltP,^Pet,^Res,Case_Type,Case_Code,Section,Case_Number,Judgment_Date,Valuation_Date,Married_On,Percent_Awarded,Ven_City,Ven_Cnty,Ven_St,Draft_Out,Draft_Apr,Final_Out,Judge,Form_Name
1 File_No Version Plan_Id ^1 ^2 ^Part ^AltP ^Pet ^Res Case_Type Case_Code Section Case_Number Judgment_Date Valuation_Date Married_On Percent_Awarded Ven_City Ven_Cnty Ven_St Draft_Out Draft_Apr Final_Out Judge Form_Name

1
old-csv/ROLEX_V.csv Executable file
View File

@@ -0,0 +1 @@
Id,Identifier,Response
1 Id Identifier Response

1
old-csv/ROLODEX.csv Executable file
View File

@@ -0,0 +1 @@
Id,Prefix,First,Middle,Last,Suffix,Title,A1,A2,A3,City,Abrev,St,Zip,Email,DOB,SS#,Legal_Status,Group,Memo
1 Id Prefix First Middle Last Suffix Title A1 A2 A3 City Abrev St Zip Email DOB SS# Legal_Status Group Memo

1
old-csv/RVARLKUP.csv Executable file
View File

@@ -0,0 +1 @@
Identifier,Query
1 Identifier Query

2
old-csv/SETUP.csv Executable file
View File

@@ -0,0 +1,2 @@
Appl_Title,L_Head1,L_Head2,L_Head3,L_Head4,L_Head5,L_Head6,L_Head7,L_Head8,L_Head9,L_Head10,Default_Printer
"DELPHI CONSULTING GROUP, INC",,,,,,,,,,,5
1 Appl_Title L_Head1 L_Head2 L_Head3 L_Head4 L_Head5 L_Head6 L_Head7 L_Head8 L_Head9 L_Head10 Default_Printer
2 DELPHI CONSULTING GROUP, INC 5

53
old-csv/STATES.csv Executable file
View File

@@ -0,0 +1,53 @@
Abrev,St
AK,Alaska
AL,Alabama
AR,Arkansas
AZ,Arizona
CA,California
CO,Colorado
CT,Connecticut
DC,DC
DE,Delaware
FL,Florida
GA,Georgia
HI,Hawaii
IA,Iowa
ID,Idaho
IL,Illinois
IN,Indiana
KS,Kansas
KY,Kentucky
LA,Louisiana
MA,Massachusetts
MD,Maryland
ME,Maine
MI,Michigan
MN,Minnesota
MO,Missouri
MS,Mississippi
MT,Montana
NC,North Carolina
ND,North Dakota
NE,Nebraska
NH,New Hampshire
NJ,New Jersey
NM,New Mexico
NV,Nevada
NY,New York
OH,Ohio
OK,Oklahoma
OR,Oregon
PA,Pennsylvania
PR,Puerto Rico
RI,Rhode Island
SC,South Carolina
SD,South Dakota
TN,Tennessee
TX,Texas
UT,Utah
VA,Virginia
VT,Vermont
WA,Washington
WI,Wisconsin
WV,West Virginia
WY,Wyoming
1 Abrev St
2 AK Alaska
3 AL Alabama
4 AR Arkansas
5 AZ Arizona
6 CA California
7 CO Colorado
8 CT Connecticut
9 DC DC
10 DE Delaware
11 FL Florida
12 GA Georgia
13 HI Hawaii
14 IA Iowa
15 ID Idaho
16 IL Illinois
17 IN Indiana
18 KS Kansas
19 KY Kentucky
20 LA Louisiana
21 MA Massachusetts
22 MD Maryland
23 ME Maine
24 MI Michigan
25 MN Minnesota
26 MO Missouri
27 MS Mississippi
28 MT Montana
29 NC North Carolina
30 ND North Dakota
31 NE Nebraska
32 NH New Hampshire
33 NJ New Jersey
34 NM New Mexico
35 NV Nevada
36 NY New York
37 OH Ohio
38 OK Oklahoma
39 OR Oregon
40 PA Pennsylvania
41 PR Puerto Rico
42 RI Rhode Island
43 SC South Carolina
44 SD South Dakota
45 TN Tennessee
46 TX Texas
47 UT Utah
48 VA Virginia
49 VT Vermont
50 WA Washington
51 WI Wisconsin
52 WV West Virginia
53 WY Wyoming

1
old-csv/TRNSACTN.csv Executable file
View File

@@ -0,0 +1 @@
File_No,Id,Footer_Code,Date,Item_No,Empl_Num,T_Code,T_Type,T_Type_L,Quantity,Rate,Amount,Billed,Note
1 File_No Id Footer_Code Date Item_No Empl_Num T_Code T_Type T_Type_L Quantity Rate Amount Billed Note

1
old-csv/TRNSLKUP.csv Executable file
View File

@@ -0,0 +1 @@
T_Code,T_Type,T_Type_L,Amount,Description
1 T_Code T_Type T_Type_L Amount Description

1
old-csv/TRNSTYPE.csv Executable file
View File

@@ -0,0 +1 @@
T_Type,T_Type_L,Header,Footer
1 T_Type T_Type_L Header Footer

BIN
old-database/.DS_Store vendored Normal file

Binary file not shown.

409
old-database/DEPOSITS.SC Executable file
View File

@@ -0,0 +1,409 @@
MESSAGE "Writing deposit procedures to library..."
PROC CLOSED Deposit_Table_Wait(M_Tbl, R, C, F_Num)
USEVARS Autolib, Rpt_St
PRIVATE Answer_Menu, Fld_Prompt, Old_Amt, New_Amt
DYNARRAY Fld_Prompt[]
PROC Ask_Deposit_Book()
PRIVATE
File_No, Id, Re, From_Date, To_Date, Button
File_No = ""
Id = ""
Re = ""
From_Date = ""
To_Date = ""
FORMKEY
SHOWPULLDOWN
ENDMENU
CLEARSPEEDBAR
PROMPT "Enter selection criteria. Press Search to find matches, Cancel to quit."
MOUSE SHOW
SHOWDIALOG "Deposit Book Selection Criteria"
@4, 15 HEIGHT 15 WIDTH 50
@1, 6 ?? "File No(s)."
ACCEPT @1,20
WIDTH 18 "A60" PICTURE "*!"
TAG ""
TO File_No
@3, 6 ?? "Id(s)"
ACCEPT @3,20
WIDTH 18 "A60" PICTURE "*!"
TAG ""
TO Id
@5, 6 ?? "Regarding"
ACCEPT @5,20
WIDTH 18 "A60" PICTURE "*!"
TAG ""
TO Re
@7, 6 ?? "From Date"
ACCEPT @7,20
WIDTH 11 "D" PICTURE "#[#]/##/##"
TAG ""
TO From_Date
@9, 6 ?? "To Date"
ACCEPT @9,20
WIDTH 11 "D" PICTURE "#[#]/##/##"
TAG ""
TO To_Date
PUSHBUTTON @11,12 WIDTH 10
"~S~earch"
OK
DEFAULT
VALUE ""
TAG "OK"
TO Button
PUSHBUTTON @11,25 WIDTH 10
"~C~ancel"
CANCEL
VALUE ""
TAG "Cancel"
TO Button
ENDDIALOG
PROMPT ""
RETURN
if (RetVal = True) then
MESSAGE "Searching..."
ECHO SLOW
{Ask} TYPEIN "PAYMENTS" ENTER CHECK
if NOT ISBLANK(From_Date) then
TYPEIN (">= " + STRVAL(From_Date))
endif
if NOT ISBLANK(From_Date) And NOT ISBLANK(To_Date) then
TYPEIN (", ")
endif
if NOT ISBLANK(To_Date) then
TYPEIN ("<= " + STRVAL(To_Date))
endif
[File_No] = File_No
[Id] = Id
[Regarding] = Regarding
DO_IT!
Subset_Table = PRIVDIR() + "SUBSET"
RENAME TABLE() Subset_Table
MOVETO ("Payments(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 "Payments" "2" Subset_Table "1"
View_Answer_Table(Subset_Table, 4, 0)
SLEEP 10000
; Payments_Answer_Wait()
endif
endif
FORMKEY
MOUSE HIDE
ENDPROC; Ask_Deposit_Book
PROC Edit_Mode_Menu()
MENUENABLE "Main\Mode"
MENUDISABLE "Edit\Mode"
MENUDISABLE "Reports"
ENDPROC; Edit_Mode_Menu
PROC Main_Mode_Menu()
MENUENABLE "Edit\Mode"
MENUENABLE "Reports"
MENUDISABLE "Main\Mode"
ENDPROC; Main_Mode_Menu
PROC Edit_Mode()
if (SYSMODE() = "Main") then
COEDITKEY
Edit_Mode_Menu()
Arrive_Row()
Arrive_Field()
NEWWAITSPEC
MESSAGE "MENUSELECT"
TRIGGER "ARRIVEFIELD", "ARRIVEROW", "DEPARTROW"
KEY -60, -66, -83, 43, 45
; DO_IT Clear Delete + -
; F2 F8 DEL
endif
RETURN 1
ENDPROC; Edit_Mode
PROC Main_Mode()
if (HELPMODE() = "LookupHelp") then ; if in lookup help and pressed
RETURN 0 ; F2 to select, do not exit wait loop
endif
if NOT ISVALID() then ; if field data is not valid,
MESSAGE "Error: The data for this field is not valid."
RETURN 1 ; do not exit wait
endif
if ISFIELDVIEW() then ; if in field view, exit field view
DO_IT!
RETURN 1
endif
DO_IT! ; return to main mode
if (SYSMODE() = "Main") then ; record posted successfully
Main_Mode_Menu()
Arrive_Field()
NEWWAITSPEC
MESSAGE "MENUSELECT"
TRIGGER "ARRIVEFIELD"
KEY -66, -67
; Clear Edit
; F8 F9
else ECHO NORMAL ; key violation exists
DO_IT!
endif
RETURN 1
ENDPROC; Main_Mode
PROC Arrive_Field()
SPEEDBAR "~F10~ Menu":-68
PROMPT Fld_Prompt[FIELD()]
RETURN 0
ENDPROC; Arrive_Field
PROC Arrive_Row()
RETURN 0
ENDPROC; Arrive_Row
PROC Update_Balances()
PRIVATE Prev_Bal, Rec_No, Row_No
RETURN
ECHO OFF
Rec_No = RECNO()
Row_No = ROWNO()
if ATFIRST() then
[Balance] = [Amount]
else UP
Prev_Bal = [Balance]
DOWN
[Balance] = Prev_Bal + [Amount]
endif
Prev_Bal = [Balance]
WHILE NOT ATLAST()
DOWN
[Balance] = Prev_Bal + [Amount]
Prev_Bal = [Balance]
ENDWHILE
MOVETO RECORD Rec_No
FOR I FROM 1 TO Row_No - 1
UP
ENDFOR
MOVETO RECORD Rec_No
ECHO NORMAL
ENDPROC; Update_Balances
PROC Post_It()
RETURN
if ISBLANK([Item_No]) then
[Item_No] = 1
endif
WHILE TRUE
POSTRECORD NOPOST LEAVELOCKED
if RetVal then
QUITLOOP
else [Item_No] = [Item_No] + 1
endif
ENDWHILE
if (Old_Amt <> [Amount]) then
Update_Balances()
endif
ENDPROC; Post_It
PROC Depart_Row() ; do not leave row if essential information is lacking
RETURN 0
; test for valid field data
if NOT ISVALID() then
Message_Box("Invalid Field Entry", "The data for this field is invalid.")
RETURN 1
endif
; depart row if record is new & blank
if RECORDSTATUS("New") AND NOT RECORDSTATUS("Modified") then
RETURN 0
endif
; delete row if all fields are blank
if ISBLANK([File_No]) AND ISBLANK([Date]) AND ISBLANK([Acnt_No]) AND
ISBLANK([Amount]) AND ISBLANK([Billed]) then
DEL
RETURN 0
endif
; test for missing field entries
if ISBLANK([Date]) then
Message_Box("Incomplete Entry", "This record requires a date for the transaction.")
MOVETO [Date]
PROMPT Fld_Prompt[FIELD()]
RETURN 1
endif
if ISBLANK([File_No]) then
Message_Box("Incomplete Entry", "This record requires a file number for the transaction.")
MOVETO [File_No]
PROMPT Fld_Prompt[FIELD()]
RETURN 1
endif
if ISBLANK([Acnt_No]) then
Message_Box("Incomplete Entry", "This record requires an account number.")
MOVETO [Acnt_No]
PROMPT Fld_Prompt[FIELD()]
RETURN 1
endif
if ISBLANK([Amount]) then
Message_Box("Incomplete Entry", "This record requires an amount.")
MOVETO [Amount]
PROMPT Fld_Prompt[FIELD()]
RETURN 1
endif
if ISBLANK([Billed]) then
Message_Box("Incomplete Entry", "Please enter (Y/N) for billed.")
MOVETO [Billed]
PROMPT Fld_Prompt[FIELD()]
RETURN 1
endif
Post_It() ; post record & update balances if needed
RETURN 0
ENDPROC; Depart_Row
PROC Deposit_Table_Wait_Proc(TriggerType, EventInfo, CycleNumber)
PRIVATE Key_Code, Menu_Pick, Temp_File_No, Temp_Date, Temp_Empl_Num
if (TriggerType = "ARRIVEFIELD") then
RETURN Arrive_Field()
endif
if (TriggerType = "DEPARTFIELD") then
RETURN Depart_Field()
endif
if (TriggerType = "ARRIVEROW") then
RETURN Arrive_Row()
endif
if (TriggerType = "DEPARTROW") then
RETURN Depart_Row()
endif
if (EventInfo["TYPE"] = "MESSAGE") then
Menu_Pick = EventInfo["MENUTAG"]
SWITCH
CASE (Menu_Pick = "Edit\Mode") : RETURN Edit_Mode()
CASE (Menu_Pick = "Main\Mode") : if (Depart_Row() = 0) then
if ISEMPTY(M_Tbl) then
RETURN Clear_Table()
else RETURN Main_Mode()
endif
else RETURN 1
endif
CASE (Menu_Pick = "R_Summary") : ECHO OFF
Print_Report("Payments", "1", "")
Trust_Table_Menu()
Arrive_Field()
RETURN 1
CASE (Menu_Pick = "R_Detailed"): ECHO OFF
Print_Report("Payments", "2", "")
Trust_Table_Menu()
Arrive_Field()
RETURN 1
CASE (Menu_Pick = "R_Cancel") : RETURN 1
CASE (Menu_Pick = "Return\Yes") : if (SYSMODE() = "Main") then
RETURN Clear_Table()
else if (Depart_Row() = 0) then
RETURN Clear_Table()
else RETURN 1
endif
endif
CASE (Menu_Pick = "Return\No") : RETURN 1
OTHERWISE : SOUND 400 100 RETURN 1
ENDSWITCH
endif
if (EventInfo["TYPE"] = "KEY") then
Key_Code = EventInfo["KEYCODE"]
SWITCH
; F9 - COEDIT
CASE (Key_Code = -67) : RETURN Edit_Mode()
; F2 - DO_IT!
CASE (Key_Code = -60) : if (Depart_Row() = 0) then
if ISEMPTY(M_Tbl) then
RETURN Clear_Table()
else RETURN Main_Mode()
endif
else RETURN 1
endif
; F8 - CLEAR
CASE (Key_Code = -66) : if (SYSMODE() = "Main") then
RETURN Clear_Table()
else if (Depart_Row() = 0) then
RETURN Clear_Table()
else RETURN 1
endif
endif
; DELETE
CASE (Key_Code = -83) : if (Display_Delete_Box() = 1) then
Update_Balances()
endif
RETURN 1
; + to add one day to current date
CASE (Key_Code = 43) : RETURN Change_Date(43)
; - to subtract one day from current date
CASE (Key_Code = 45) : RETURN Change_Date(45)
OTHERWISE : SOUND 400 100 RETURN 1
ENDSWITCH
endif
SOUND 400 100 RETURN 1
ENDPROC; Deposit_Table_Wait_Proc
PROC Main_Mode_Wait()
Arrive_Field()
WAIT TABLE
PROC "Deposit_Table_Wait_Proc"
MESSAGE "MENUSELECT"
TRIGGER "ARRIVEFIELD"
KEY -66, -67
; Clear Edit
; F8 F9
ENDWAIT
ENDPROC; Main_Mode_Wait
PROC Edit_Mode_Wait()
Arrive_Row()
Arrive_Field()
WAIT TABLE
PROC "Deposit_Table_Wait_Proc"
MESSAGE "MENUSELECT"
TRIGGER "ARRIVEFIELD", "ARRIVEROW", "DEPARTROW"
KEY -60, -66, -83, 43, 45
; DO_IT Clear Delete + -
; F2 F8 DEL
ENDWAIT
ENDPROC; Edit_Mode_Wait
; main body of procedure follows
Fld_Prompt["Date"] = " Date of transaction"
Fld_Prompt["File_No"] = " F1 to select file no. from file cabinet"
Fld_Prompt["Empl_Num"] = " F1 to select employee for this transaction"
Fld_Prompt["T_Code"] = " F1 to select code describing transaction"
Fld_Prompt["Acnt_No"] = " Account number for this entry"
Fld_Prompt["Amount"] = " Dollar amount of this transaction"
Fld_Prompt["Billed"] = " Y if transaction has been billed, N if not"
Fld_Prompt["Note"] = " Notation to help describe this entry"
Answer_Menu = "Deposit_Answer_Menu"
ECHO OFF
VIEW M_Tbl
Deposit_Table_Menu()
WINDOW MOVE GETWINDOW() TO -100, -100
PICKFORM F_Num
WINDOW HANDLE CURRENT TO Form_Win
DYNARRAY Win_Atts[]
Win_Atts["ORIGINROW"] = R
Win_Atts["ORIGINCOL"] = C
Win_Atts["CANMOVE"] = False
Win_Atts["CANRESIZE"] = False
Win_Atts["CANCLOSE"] = False
WINDOW SETATTRIBUTES Form_Win FROM Win_Atts
ECHO NORMAL
KEYENABLE -31
if (SYSMODE() = "Main") then
Main_Mode_Wait()
else Edit_Mode_Wait()
endif
KEYDISABLE -31
CLEARSPEEDBAR
MESSAGE ""
PROMPT ""
ENDPROC
WRITELIB Off_Lib Deposit_Table_Wait
RELEASE PROCS ALL

1040
old-database/FILCABNT.SC Executable file

File diff suppressed because it is too large Load Diff

BIN
old-database/FILCABNT.SC2 Executable file

Binary file not shown.

597
old-database/FORM_MGR.SC Executable file
View File

@@ -0,0 +1,597 @@
MESSAGE "Writing forms procedures to library..."
PROC Select_Forms()
; read list of form files on disk, match with descriptions in form table
; and place info in dialog box for user to select forms
PRIVATE Form_Table, Main_Drv, New_Form_Dir,
File_1, File_2, Form_Array, Form_Description, Button, Element
PROC Get_Form_Info(Key)
PRIVATE Form_Array
GETRECORD Form_Table UPPER(Key) TO Form_Array
if RetVal then
Key = Form_Array["Memo"]
else Key = "This file not listed in table of form names!"
endif
RETURN Key
ENDPROC; Get_Form_Info
PROC Process_Save_As_Dialog(TriggerType, TagValue, EventValue, ElementValue)
PRIVATE FileInfo
if (TriggerType = "SELECT") AND (TagValue = "Pick_Tag") then
PARSEFILENAME Pick_File TO FileInfo
File_Name = UPPER(FileInfo["FILE"])
REFRESHCONTROL "Accept_Tag"
RETURN TRUE
endif; SELECT
if (TriggerType = "ACCEPT") then
if (File_Name = "") then
MESSAGE "Error! File name cannot be blank!"
RETURN FALSE
else Text_File = PRIVDIR() + File_Name + ".MRG"
if ISFILE(Text_File) then
if Response_Is_Yes("Warning: Duplicate File Name!", "File exists, replace?") then
RETURN TRUE ; replace file
else RETURN FALSE ; do not replace file
endif
else RETURN TRUE ; file does not already exist
endif
endif
endif
RETURN TRUE
ENDPROC; Process_Save_As_Dialog
PROC Save_As_Dialog(File_Name)
PRIVATE Pick_File, Button_Val
SHOWDIALOG "Save Merge Configuration"
PROC "Process_Save_As_Dialog"
TRIGGER "SELECT", "ACCEPT"
@4,20 HEIGHT 16 WIDTH 40
@1,3 ?? "Save File As:"
ACCEPT @1,20
WIDTH 11 "A8"
PICTURE "*!"
TAG "Accept_Tag"
TO File_Name
PICKFILE @3,3 HEIGHT 8 WIDTH 32
COLUMNS 2
PRIVDIR() + "*.MRG"
TAG "Pick_Tag"
TO Pick_File
PUSHBUTTON @12,5 WIDTH 12
"~Y~es"
OK
DEFAULT
VALUE "OK"
TAG "OK_Button"
TO Button_Val
PUSHBUTTON @12,22 WIDTH 12
"~N~o"
CANCEL
VALUE "Cancel"
TAG "Cancel_Button"
TO Button_Val
ENDDIALOG
RETURN RetVal
ENDPROC; Save_As_Dialog
PROC Process_Dialog(TriggerType, TagValue, EventValue, ElementValue)
PRIVATE New_Dir, Text_File, Ch, L, Continue
if (TriggerType = "OPEN") then
SELECTCONTROL "Available_Tag"
Form_Description = Get_Form_Info(File_1)
REFRESHCONTROL "Description_Tag"
RETURN TRUE
endif; OPEN
if (TriggerType = "ARRIVE") then
RESYNCDIALOG
if (TagValue = "Available_Tag") then
Form_Description = Get_Form_Info(File_1)
else if (TagValue = "Selected_Tag") then
Form_Description = Get_Form_Info(File_2)
endif
endif
REFRESHCONTROL "Description_Tag"
RETURN TRUE
endif; ARRIVE
if (TriggerType = "UPDATE") then
if (TagValue = "Available_Tag") OR (TagValue = "Selected_Tag") then
Form_Description = Get_Form_Info(EventValue)
REFRESHCONTROL "Description_Tag"
RETURN TRUE
endif
; if user selects new subdirectory, verify then load file list
if (TagValue = "Directory_Tag") then
New_Dir = EventValue
if NOT MATCH(New_Dir, "..\\") then
New_Dir = New_Dir + "\\"
endif
if (New_Dir = Form_Dir) then
RETURN TRUE
endif
if (DIREXISTS(New_Dir) = 1) then ; change directory string
Form_Dir = New_Dir
New_Form_Dir = Form_Dir
File_1 = ""
File_2 = ""
FOREACH Element IN Form_Array
RELEASE VARS Form_Array[Element]
ENDFOREACH
REFRESHCONTROL "Available_Tag"
REFRESHCONTROL "Selected_Tag"
REFRESHCONTROL "Description_Tag"
RETURN TRUE
else BEEP
MESSAGE "Invalid subdirectory. Press any key to continue."
Ch = GETCHAR()
RETURN FALSE
endif
endif; Directory_Tag
endif; UPDATE
if (TriggerType = "SELECT") then
if (TagValue = "Available_Tag") then
if NOT ISFILE(Form_Dir + File_1) then
Form_Dir = SUBSTR(Main_Drv,1,2) + RELATIVEFILENAME(Form_Dir + File_1)
New_Form_Dir = Form_Dir
File_1 = ""
File_2 = ""
FOREACH Element IN Form_Array
RELEASE VARS Form_Array[Element]
ENDFOREACH
REFRESHCONTROL "Available_Tag"
REFRESHCONTROL "Selected_Tag"
REFRESHCONTROL "Description_Tag"
REFRESHCONTROL "Directory_Tag"
RETURN TRUE
else Form_Array[File_1] = File_1
REFRESHCONTROL "Selected_Tag"
endif
else if (TagValue = "Selected_Tag") then
RELEASE VARS Form_Array[File_2]
REFRESHCONTROL "Selected_Tag"
Form_Description = Get_Form_Info(File_2)
REFRESHCONTROL "Description_Tag"
endif
endif
RETURN TRUE
endif; SELECT
if (TriggerType = "ACCEPT") then
if (TagValue = "Save") OR (TagValue = "Run") then
if (DYNARRAYSIZE(Form_Array) <= 0) then
BEEP
SELECTCONTROL "Available_Tag"
MESSAGE("No form(s) selected. Press any key to continue.")
Ch = GETCHAR()
RETURN FALSE
endif
; if (TagValue = "Save") then
; if (USERNAME() <> "") then
; L = LEN(USERNAME())
; if (L > 8) then
; L = 8
; endif
; Text_File = SUBSTR(USERNAME(), 1, L)
; else Text_File = "ASSEMBLE"
; endif
; if ISFILE(PRIVDIR() + Text_File + ".MRG") then
; Text_File = "" ; if file exists, set name to blank
; endif
; Continue = Save_As_Dialog(Text_File)
; else Continue = True
; Text_File = PRIVDIR() + "$$$$$$$$.MRG"
; endif
Text_File = "R:\\PRIVATE\\$$$$$$$$.MRG"
Continue = True
if Continue then
FILEWRITE Text_File FROM Main_Dir + "\n" ; data subdirectory
PRINT FILE Text_File Main_Drv, "DOCUMENT\\WPDOCS\\DOCS\\", "\n" ; target subdirectory
PRINT FILE Text_File UPPER(Main_Table), "\n" ; rolodex, files, etc.
MOVETO Subset_Table
FORMKEY ; show table form view
CTRLHOME
TAB
SCAN
PRINT FILE Text_File FIELDSTR(), "\n"
ENDSCAN
FORMKEY ; return to form view
PRINT FILE Text_File "FORMS\n" ; print full file name for each selected form
if NOT MATCH(Form_Dir, "..\\") then
Form_Dir = Form_Dir + "\\"
endif
FOREACH Element IN Form_Array
PRINT FILE Text_File Form_Dir, Form_Array[Element], "\n"
ENDFOREACH
if (TagValue = "Run") then
MESSAGE "Executing document assembly program..."
RUN BIG "R:\\PRIVATE\\GO.BAT" ; run external dos merge program
MESSAGE ""
else MESSAGE "Configuration file saved successfully."
endif
endif;
RETURN FALSE ; return to dialog box
endif; Save Or Run
if (TagValue = "Tag_All") then
; method to select all available form files
RETURN FALSE
else if (TagValue = "UnTag_All") then
FOREACH Element IN Form_Array
RELEASE VARS Form_Array[Element]
ENDFOREACH
REFRESHCONTROL "Selected_Tag"
REFRESHCONTROL "Description_Tag"
RETURN FALSE
else RETURN TRUE
endif
endif; Tag_All
endif; ACCEPT
RETURN TRUE
ENDPROC; Process_Dialog
; Main procedure begins here
MOUSE SHOW
if (DIREXISTS(Form_Dir) <> 1) then ; does initial subdir exist
Form_Dir = Main_Dir
endif
New_Form_Dir = Form_Dir
Main_Drv = SUBSTR(Main_Dir, 1, 3)
Form_Table = Main_Dir + "FORMS\\FORM_LST"
File_1 = ""
File_2 = ""
DYNARRAY Form_Array[]
ECHO OFF
SHOWDIALOG "Select Forms To Merge With Data"
PROC "Process_Dialog"
TRIGGER "UPDATE", "ARRIVE", "SELECT", "OPEN", "ACCEPT"
@2, 4 HEIGHT 21 WIDTH 71
LABEL @1,1
"~C~urrent Directory:"
FOR "Directory_Tag"
ACCEPT @2,2 WIDTH 65 "A80" PICTURE "*!"
TAG "Directory_Tag"
TO Form_Dir
LABEL @4,1
"~A~vailable Forms: (Space = Tag)"
FOR "Available_Tag"
PICKFILE @5,2 HEIGHT 10 WIDTH 32
COLUMNS 2
Form_Dir
SHOWDIRS
TAG "Available_Tag"
TO File_1
LABEL @16,1
"~F~orm Description:"
FOR "Description_Tag"
ACCEPT @17,2 WIDTH 65
"A150"
TAG "Description_Tag"
TO Form_Description
LABEL @4,36
"~S~elected Forms: (Space = Untag)"
FOR "Selected_Tag"
PICKDYNARRAY @5,37 HEIGHT 10 WIDTH 15
Form_Array
TAG "Selected_Tag"
TO File_2
PUSHBUTTON @6,55 WIDTH 12
"~R~un"
OK
DEFAULT
VALUE ""
TAG "Run"
TO Button
PUSHBUTTON @8,55 WIDTH 12
"~S~ave"
OK
VALUE ""
TAG "Save"
TO Button
PUSHBUTTON @10,55 WIDTH 12
"~T~ag All"
OK
VALUE "ACCEPT"
TAG "Tag_All"
TO Button
PUSHBUTTON @12,55 WIDTH 12
"~U~nTag All"
OK
VALUE "ACCEPT"
TAG "UnTag_All"
TO Button
PUSHBUTTON @14,55 WIDTH 12
"~Q~uit"
CANCEL
VALUE ""
TAG "Cancel"
TO Button
ENDDIALOG
Form_Dir = New_Form_Dir ; use current subdir as default next time
MOUSE HIDE
MOVETO Subset_Table
ENDPROC
WRITELIB Off_Lib Select_Forms
;=============================================================================
PROC Form_Wait()
PRIVATE Fld_Prompt, Answer_Menu
PROC Process_Dialog(TriggerType, TagValue, EventValue, ElementValue)
if (TriggerType = "SELECT") then
if (TagValue = "IndexArrayTag") then
Search_Words[I_Word] = I_Word
else if (TagValue = "SearchArrayTag") then
RELEASE VARS Search_Words[S_Word]
endif
endif
REFRESHCONTROL "SearchArrayTag"
endif
RETURN TRUE
ENDPROC; Process_Dialog
PROC Ask_Form()
; user selects a subset of forms table based on search criteria
PRIVATE Index_Words, Search_Words, I_Word, S_Word, Name, Description, Status, Element
FORMKEY ; switch to table view
SHOWPULLDOWN ; hide main menu
ENDMENU
CLEARSPEEDBAR ; clear form speedbar
PROMPT "Press Search to find matching forms; ESC or Cancel to quit."
MOUSE SHOW
DYNARRAY Index_Words[]
DYNARRAY Search_Words[]
Name = ""
Description = ""
Status = ""
ECHO OFF
; load all index words into a dynamic array
VIEW "Inx_Lkup"
SCAN
Index_Words[STRVAL([Keyword])] = [Keyword]
ENDSCAN
CLEARIMAGE
SHOWDIALOG "Form Selection Criteria"
PROC "Process_Dialog"
TRIGGER "SELECT", "ARRIVE"
@2, 6 HEIGHT 21 WIDTH 68
@1, 2 ?? "Name"
ACCEPT @1,15
WIDTH 48 "A80" PICTURE "*!"
TAG "Name_Tag"
TO Name
@2, 2 ?? "Description"
ACCEPT @2,15
WIDTH 48 "A80"
TAG "Desc_Tag"
TO Description
@3, 2 ?? "Status"
ACCEPT @3,15
WIDTH 15 "A40"
TAG "Status_Tag"
TO Status
LABEL @5,2
"~I~ndex List: (Space = Add)"
FOR "IndexArrayTag"
PICKDYNARRAY @6,2 HEIGHT 10 WIDTH 28
Index_Words
TAG "IndexArrayTag"
TO I_Word
LABEL @5,35
"~S~earch For: (Space = Delete)"
FOR "SearchArrayTag"
PICKDYNARRAY @6,35 HEIGHT 10 WIDTH 28
Search_Words
TAG "SearchArrayTag"
TO S_Word
PUSHBUTTON @17,20 WIDTH 10
"~S~earch"
OK
DEFAULT
VALUE ""
TAG "OK"
TO Button
PUSHBUTTON @17,40 WIDTH 10
"~C~ancel"
CANCEL
VALUE ""
TAG "Cancel"
TO Button
ENDDIALOG
PROMPT ""
if (RetVal = True) then
MESSAGE "Searching..."
ECHO OFF
{Ask} {Form_lst} Check Tab Example "link"
if NOT ISBLANK(Name) then
TYPEIN (", " + Name)
endif
TAB
if NOT ISBLANK(Description) then
TYPEIN Description
endif
TAB
if NOT ISBLANK(Status) then
TYPEIN Status
endif
{Ask} {Form_inx}
FOREACH Element IN Search_Words
if NOT ISBLANK(Search_Words[Element]) then
TAB
EXAMPLE "link"
TAB
TYPEIN Search_Words[Element]
RIGHT
endif
ENDFOREACH
DO_IT!
Subset_Table = PRIVDIR() + "SUBSET"
RENAME TABLE() Subset_Table
MOVETO "Form_lst(Q)" CLEARIMAGE
MOVETO "Form_inx(Q)" CLEARIMAGE
MOVETO Subset_Table
if ISEMPTY(Subset_Table) then
CLEARIMAGE
No_Matches_Found()
else ; copy form and display on screen
{Tools} {Copy} {JustFamily} {Form_lst} TYPEIN Subset_Table ENTER {Replace}
View_Answer_Table(Subset_Table, 1, 3)
DOWNIMAGE
IMAGERIGHTS READONLY
UPIMAGE
Form_Answer_Wait()
endif
endif
FORMKEY ; return to form view
MOUSE HIDE
ENDPROC; Ask_Form
PROC Form_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
"Form List" : "Print list of matching forms" : "Form_List"
ENDSUBMENU,
"Return" : "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 "Reports"
endif
Form_Speedbar()
ENDPROC; Form_Answer_Menu
PROC Form_Answer_Wait_Proc(TriggerType, EventInfo, CycleNumber)
if (EventInfo["TYPE"] = "MESSAGE") And
(EventInfo["MESSAGE"] = "MENUSELECT") And
(EventInfo["MENUTAG"] = "Form_List") then
SHOWPULLDOWN
ENDMENU
CLEARSPEEDBAR
MESSAGE "One moment please..."
ECHO OFF
Print_Report(Subset_Table, "1", "")
EXECPROC Answer_Menu
RETURN 1
else RETURN Answer_Table_Wait_Proc(TriggerType, EventInfo, CycleNumber)
endif
ENDPROC; Form_Answer_Wait_Proc
PROC Form_Answer_Wait()
Form_Answer_Menu()
Sound_Off()
ECHO NORMAL
Message_Box("Search Completed", "Matching Form Entries: " + STRVAL(NRECORDS(Subset_Table)))
WAIT WORKSPACE
PROC "Form_Answer_Wait_Proc"
MESSAGE "MENUSELECT"
TRIGGER "ARRIVEFIELD"
KEY -60, -66, -67, -83, -50
; DO_IT Clear Edit Delete Memo
; F2 F8 F9 DEL Alt-M
ENDWAIT
CLEARSPEEDBAR
MESSAGE ""
ENDPROC; Form_Answer_Wait
PROC Form_Wait_Proc(TriggerType, EventInfo, CycleNumber)
PRIVATE Key_Code, Menu_Pick
if (TriggerType = "ARRIVEFIELD") then
PROMPT Fld_Prompt[FIELD()]
RETURN 1
endif
if (EventInfo["TYPE"] = "KEY") then
Key_Code = EventInfo["KEYCODE"]
SWITCH
; F9 - COEDIT
CASE (Key_Code = -67) : RETURN Main_Table_Edit()
; F2 - DO_IT!
CASE (Key_Code = -60) : if ISEMPTY(Main_Table) then
RETURN Main_Table_Clear()
else RETURN Main_Table_End_Edit()
endif
; F8 - CLEAR
CASE (Key_Code = -66) : RETURN Main_Table_Clear()
; Alt-M - Memo
CASE (Key_Code = -50) : Display_Memo(Main_Table)
Main_Table_Menu()
Form_Speedbar()
RETURN 1
; DELETE
CASE (Key_Code = -83) : if (SYSMODE() = "CoEdit") then
RETURN Display_Delete_Box()
else RETURN 1
endif
OTHERWISE : SOUND 400 100 RETURN 1
ENDSWITCH
endif
if (EventInfo["MESSAGE"] = "MENUSELECT") then
Menu_Pick = EventInfo["MENUTAG"]
SWITCH
CASE (Menu_Pick = "Edit\Mode") : RETURN Main_Table_Edit()
CASE (Menu_Pick = "Main\Mode") : if ISEMPTY(Main_Table) then
RETURN Main_Table_Clear()
else RETURN Main_Table_End_Edit()
endif
CASE (Menu_Pick = "Ask") : Ask_Form()
Main_Table_Menu()
Form_Speedbar()
RETURN 1
CASE (Menu_Pick = "Close\Yes") : RETURN Main_Table_Clear()
CASE (Menu_Pick = "Close\No") : RETURN 1
OTHERWISE : SOUND 400 100 RETURN 1
ENDSWITCH
endif
SOUND 400 100 RETURN 1 ; safety valve
ENDPROC; Form_Wait_Proc
PROC Form_Speedbar()
CLEARSPEEDBAR
SPEEDBAR "~F10~ Menu":-68, "~Alt-M~ Memo":-50
PROMPT Fld_Prompt[FIELD()]
ENDPROC; Form_Speedbar
; MAIN PROCEDURE BEGINS HERE
ECHO OFF
SETDIR "FORMS"
Answer_Menu = "Form_Answer_Menu"
DYNARRAY Fld_Prompt[]
Fld_Prompt["Name"] = "Unique form name (required)."
Fld_Prompt["Memo"] = "Description of form and its usage."
Fld_Prompt["Status"] = "Status code indicating merge availability."
Fld_Prompt["Keyword"] = "Indexed keywords for form. F1 for lookup help."
Main_Table_View(Main_Table, 1, 3)
Form_Speedbar()
ECHO NORMAL
WAIT WORKSPACE
PROC "Form_Wait_Proc"
MESSAGE "MENUSELECT"
TRIGGER "ARRIVEFIELD"
KEY -60, -66, -67, -83, -50
; DO_IT Clear Edit Delete Alt-M
; F2 F8 F9 DEL Memo
ENDWAIT
CLEARSPEEDBAR
PROMPT ""
MESSAGE ""
ECHO OFF
if ISTABLE(Subset_Table) then
DELETE Subset_Table
endif
SETDIR Main_Dir
ENDPROC
WRITELIB Off_Lib Form_Wait
RELEASE PROCS ALL

BIN
old-database/FORM_MGR.SC2 Executable file

Binary file not shown.

262
old-database/GENERATE.SC Executable file
View File

@@ -0,0 +1,262 @@
MESSAGE "Generating Office Library..."
Off_Lib = "OFFICE"
CREATELIB Off_Lib SIZE 128
PROC Change_Date(Sign)
if (SYSMODE() = "CoEdit") AND (FIELDTYPE() = "D") then
if ISBLANK([]) then
[] = TODAY()
else if (Sign = 43) then
[] = [] + 1
else [] = [] - 1
endif
endif
else RETURN 0
endif
RETURN 1
ENDPROC
WRITELIB Off_Lib Change_Date
PROC Main_Table_Edit()
; allowing editing of current table image, do not break wait
if (SYSMODE() = "Main") then
COEDITKEY
MENUDISABLE "Edit\Mode"
MENUDISABLE "Ask"
MENUENABLE "Main\Mode"
endif
RETURN 1
ENDPROC
WRITELIB Off_Lib Main_Table_Edit
PROC Main_Table_End_Edit()
; exit edit mode, if possible, do not break out of wait cycle
if (HELPMODE() = "LookupHelp") then ; if user was in lookup help and pressed
RETURN 0 ; F2 to select, do not exit wait loop
endif
if NOT ISVALID() then ; if in coedit and field data is not valid,
MESSAGE "Error: The data for this field is not valid."
RETURN 1 ; do not exit wait
endif
if ISFIELDVIEW() then ; if in field view, do not exit wait loop
DO_IT!
RETURN 1
endif
DO_IT!
if (SYSMODE() = "Main") then ; record posted successfully
MENUDISABLE "Main\Mode"
MENUENABLE "Edit\Mode"
MENUENABLE "Ask"
else ECHO NORMAL ; key violation exists
DO_IT!
endif
RETURN 1
ENDPROC
WRITELIB Off_Lib Main_Table_End_Edit
PROC Main_Table_Clear()
; exit edit mode by calling main mode, clear workspace and exit wait
if (SYSMODE() = "CoEdit") then
Main_Table_End_Edit()
endif
if (SYSMODE() = "Main") then
ECHO OFF
CLEARALL
ECHO NORMAL
RETURN 2 ; back in main mode so exit wait
else RETURN 1 ; cannot get to main mode - wait continues
endif
ENDPROC
WRITELIB Off_Lib Main_Table_Clear
PROC Display_Memo(Tbl)
; move to proper table image, then memo field, enter field view and pop up
; memo window - if available, wait until F2 is pressed
if ISFIELDVIEW() then ; if in field view, do not exit wait loop
DO_IT!
endif
if NOT ISVALID() then ; if in coedit and field data is not valid,
RETURN 0 ; do not exit wait
endif
MOVETO Tbl
MOVETO FIELD "Memo"
SHOWPULLDOWN
ENDMENU
CLEARSPEEDBAR
if (Field() = "Memo") then
ECHO OFF
FIELDVIEW
WINDOW HANDLE CURRENT TO Memo_Win
DYNARRAY Atts[]
DYNARRAY Colors[]
Colors["1"] = 31
Atts["ORIGINROW"] = 13
Atts["ORIGINCOL"] = 0
Atts["CANMOVE"] = False
Atts["CANRESIZE"] = False
Atts["CANCLOSE"] = False
Atts["HEIGHT"] = 11
Atts["WIDTH"] = 80
Atts["HASSHADOW"] = FALSE
Atts["TITLE"] = " Memo "
WINDOW SETATTRIBUTES Memo_Win FROM Atts
WINDOW SETCOLORS Memo_Win FROM Colors
PROMPT " Press F2 when finished."
ECHO NORMAL
WAIT FIELD
UNTIL "F2"
DO_IT!
else MESSAGE "No memo field is available in this context."
endif
ENDPROC
WRITELIB Off_Lib Display_Memo
PROC Main_Table_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,
"Ask" : "Select data to report on" : "Ask",
"Close" : "Return to main menu when finished" : ""
SUBMENU
"No " : "Continue working with this table" : "Close\No",
"Yes - F8" : "Return to main menu" : "Close\Yes"
ENDSUBMENU
ENDMENU
if ISEMPTY(TABLE()) then
Main_Table_Edit()
else if (SYSMODE() = "Main") then
MENUDISABLE "Main\Mode"
else MENUDISABLE "Edit\Mode"
MENUDISABLE "Ask"
endif
endif
ENDPROC
WRITELIB Off_Lib Main_Table_Menu
PROC Main_Table_View(Tbl, R, C)
; place table on workspace in form view
ECHO OFF
VIEW Tbl
WINDOW MOVE GETWINDOW() TO -100, -100
Main_Table_Menu()
PICKFORM "1"
WINDOW HANDLE CURRENT TO Form_Win
DYNARRAY Win_Atts[]
Win_Atts["ORIGINROW"] = R
Win_Atts["ORIGINCOL"] = C
Win_Atts["CANMOVE"] = False
Win_Atts["CANRESIZE"] = False
Win_Atts["CANCLOSE"] = False
WINDOW SETATTRIBUTES Form_Win FROM Win_Atts
ENDPROC
WRITELIB Off_lib Main_Table_View
PROC View_Answer_Table(Tbl, R, C)
WINDOW MOVE GETWINDOW() TO -100, -100
PICKFORM "1"
WINDOW HANDLE CURRENT TO Form_Win
DYNARRAY Win_Atts[]
Win_Atts["TITLE"] = "RECORDS MATCHING SELECTION CRITERIA"
Win_Atts["ORIGINROW"] = R
Win_Atts["ORIGINCOL"] = C
Win_Atts["CANMOVE"] = False
Win_Atts["CANRESIZE"] = False
Win_Atts["CANCLOSE"] = False
WINDOW SETATTRIBUTES Form_Win FROM Win_Atts
ENDPROC
WRITELIB Off_Lib View_Answer_Table
PROC Answer_Table_Wait_Proc(TriggerType, EventInfo, CycleNumber)
PRIVATE Key_Code, Menu_Pick
if (TriggerType = "ARRIVEFIELD") then
PROMPT Fld_Prompt[FIELD()]
RETURN 1
endif
if (EventInfo["TYPE"] = "KEY") then ; check for hot keys
Key_Code = EventInfo["KEYCODE"]
SWITCH
; F9 - COEDIT
CASE (Key_Code = -67) : RETURN Edit_Mode()
; F2 - DO_IT!
CASE (Key_Code = -60) : if ISEMPTY(Subset_Table) then
RETURN Clear_Table()
else RETURN Main_Mode()
endif
; F8 - CLEAR
CASE (Key_Code = -66) : RETURN Clear_Table()
; DELETE
CASE (Key_Code = -83) : if (SYSMODE() = "CoEdit") then
RETURN Display_Delete_Box()
else RETURN 1
endif
; Alt-M - Memo
CASE (Key_Code = -50) : Display_Memo(Subset_Table)
EXECPROC Answer_Menu
RETURN 1
; Alt-B - Summarize Account Balances
CASE (Key_Code = -48) : Summarize_Accounts(Subset_Table, IMAGENO())
EXECPROC Answer_Menu
RETURN 1
CASE (Key_Code = 43) : RETURN Change_Date(43)
CASE (Key_Code = 45) : RETURN Change_Date(45)
OTHERWISE : SOUND 400 100 RETURN 1
ENDSWITCH
endif; if key was pressed
if (EventInfo["MESSAGE"] = "MENUSELECT") then ; now menu selections
Menu_Pick = EventInfo["MENUTAG"]
SWITCH
CASE (Menu_Pick = "Edit\Mode") : RETURN Edit_Mode()
CASE (Menu_Pick = "Main\Mode") : if ISEMPTY(Subset_Table) then
RETURN Clear_Table()
else RETURN Main_Mode()
endif
CASE (Menu_Pick = "Assemble") : if (SYSMODE() = "CoEdit") then
MESSAGE("You must exit edit mode.")
else Select_Forms()
endif
RETURN 1
CASE (Menu_Pick = "Return\Yes") : RETURN Clear_Table()
CASE (Menu_Pick = "Return\No") : RETURN 1
OTHERWISE : SOUND 400 100 RETURN 1
ENDSWITCH
endif
SOUND 400 100 RETURN 1
ENDPROC
WRITELIB Off_Lib Answer_Table_Wait_Proc
RELEASE PROCS ALL
PLAY "Setup"
PLAY "Rolodex"
PLAY "Filcabnt"
PLAY "Ledger"
PLAY "Utility"
PLAY "Pension"
PLAY "Qdro"
PLAY "Form_Mgr"
; do not PLAY procedures that are no longer used
;PLAY "Calendar"
;PLAY "Timecard"
;PLAY "Trust"
MESSAGE "All procedures successfully written to office library."
SLEEP 2000
MESSAGE ""

BIN
old-database/GENERATE.SC2 Executable file

Binary file not shown.

397
old-database/LEDGER.SC Executable file
View File

@@ -0,0 +1,397 @@
MESSAGE "Writing ledger procedures to library..."
PROC Tally_Ledger()
; starts in ledger table, totals, ends in file cabinet
PRIVATE F_No,
T_Bal, Hours, H_Bal, F_Bal, D_Bal, C_Bal,
T_Bal_P, Hours_P, H_Bal_P, F_Bal_P, D_Bal_P, C_Bal_P
; initialize variables to zero
T_Bal = 0.0 T_Bal_P = 0.0
Hours = 0.0 Hours_P = 0.0
H_Bal = 0.0 H_Bal_P = 0.0
F_Bal = 0.0 F_Bal_P = 0.0
D_Bal = 0.0 D_Bal_P = 0.0
C_Bal = 0.0 C_Bal_P = 0.0
if RECORDSTATUS("New") then ; no records, delete this new record
DEL
else F_No = [File_No]
MESSAGE "Updating " + [File_No] + " account totals..."
SCAN ; total accounts
if ([Billed] = "Y") then
; include transaction in previously billed totals
SWITCH
CASE ([T_Type] = "1") : T_Bal_P = T_Bal_P + [Amount]
CASE ([T_Type] = "2") : Hours_P = Hours_P + [Quantity]
H_Bal_P = H_Bal_P + [Amount]
CASE ([T_Type] = "3") : F_Bal_P = F_Bal_P + [Amount]
CASE ([T_Type] = "4") : D_Bal_P = D_Bal_P + [Amount]
CASE ([T_Type] = "5") : C_Bal_P = C_Bal_P + [Amount]
ENDSWITCH
else ; include transaction in unbilled totals
SWITCH
CASE ([T_Type] = "1") : T_Bal = T_Bal + [Amount]
CASE ([T_Type] = "2") : Hours = Hours + [Quantity]
H_Bal = H_Bal + [Amount]
CASE ([T_Type] = "3") : F_Bal = F_Bal + [Amount]
CASE ([T_Type] = "4") : D_Bal = D_Bal + [Amount]
CASE ([T_Type] = "5") : C_Bal = C_Bal + [Amount]
ENDSWITCH
endif
ENDSCAN
endif
MOVETO M_Tbl ; files table to update totals
; == previously billed balances ==
[Trust_Bal_P] = T_Bal_P
[Hours_P] = Hours_P
[Hourly_Fees_P] = H_Bal_P
[Flat_Fees_P] = F_Bal_P
[Disbursements_P] = D_Bal_P
[Credit_Bal_P] = C_Bal_P
[Total_Charges_P] = H_Bal_P + F_Bal_P + D_Bal_P
[Amount_Owing_P] = Round([Total_Charges_P] - [Credit_Bal_P], 2)
; == current total balances ==
[Trust_Bal] = T_Bal_P + T_Bal
[Hours] = Hours_P + Hours
[Hourly_Fees] = H_Bal_P + H_Bal
[Flat_Fees] = F_Bal_P + F_Bal
[Disbursements] = D_Bal_P + D_Bal
[Credit_Bal] = C_Bal_P + C_Bal
[Total_Charges] = [Hourly_Fees] + [Flat_Fees] + [Disbursements]
[Amount_Owing] = [Total_Charges] - [Credit_Bal]
if ([Amount_Owing] > 0) And ([Trust_Bal] > 0) then
if ([Trust_Bal] >= [Amount_Owing]) then
[Transferable] = [Amount_Owing]
else [Transferable] = [Trust_Bal]
endif
else [Transferable] = 0.0
endif
MESSAGE ""
ENDPROC
WRITELIB Off_Lib Tally_Ledger
PROC Tally_All(M_Tbl, D_Tbl)
if ISEMPTY(M_Tbl) then
RETURN 1
endif
MESSAGE "Updating file accounts..."
ECHO OFF
COEDIT M_Tbl
PICKFORM "1"
SCAN ; assign file numbers to dynamic array
MOVETO D_Tbl ; move to ledger table
Tally_Ledger() ; total accounts for this file
ENDSCAN
DO_IT!
CLEARALL; remove file cabinet images
ECHO NORMAL
Message_Box("Updating Balances", "All accounts have been updated.")
ENDPROC
WRITELIB Off_Lib Tally_All
PROC Update_Accounts()
ECHO OFF
Tally_Ledger()
ENDPROC
WRITELIB Off_Lib Update_Accounts
PROC Total_Row()
PRIVATE New_Amount
if RECORDSTATUS("New") OR RECORDSTATUS("Modified") then
if NOT ISBLANK([Quantity]) AND NOT ISBLANK([Rate]) then
New_Amount = Round([Quantity]*[Rate], 2)
if (New_Amount <> [Amount]) then
[Amount] = New_Amount
endif
endif
endif
ENDPROC
WRITELIB Off_Lib Total_Row
; ************* Local Procedures *****************
PROC Ledger_Table_Wait(New_Row, Empl_Code, Hourly_Rate)
PROC Arr_Field()
File_Cabinet_Speedbar()
ENDPROC; Arr_Field
PROC Arr_Row()
if RECORDSTATUS("New") AND NOT RECORDSTATUS("Modified") then
[Billed] = "N"
endif
ENDPROC; Arr_Row
PROC Dep_Field()
if NOT ISVALID() then
Message_Box("Invalid Field Entry", "The data in this field is invalid.")
RETURN 1
endif
SWITCH
CASE FIELD() = "Date" :
if ISBLANK([]) then
[Date] = TODAY()
endif
CASE FIELD() = "T_Code" :
if ISBLANK([]) then
[T_Type_L] = ""
endif
ECHO OFF
TAB
REVERSETAB
ECHO NORMAL
CASE FIELD() = "Empl_Num" :
if ISBLANK([]) then
[Empl_Num] = Empl_Code
endif
CASE FIELD() = "Quantity" :
Total_Row()
CASE FIELD() = "Rate" :
if ISBLANK([Rate]) AND ([T_Type] = "2") then
if ([Empl_Num] = Empl_Code) then
[Rate] = Hourly_Rate
else if NOT ISBLANK([Empl_Num]) then
GETRECORD "Employee" [Empl_Num] TO DYNARRAY A
if RETVAL then
[Rate] = A["Rate_Per_Hour"]
endif
endif
endif
endif
Total_Row()
CASE FIELD() = "Amount" :
Total_Row()
CASE FIELD() = "Billed" :
if ISBLANK([]) then
[Billed] = "N"
endif
OTHERWISE :
ENDSWITCH
RETURN 0
ENDPROC; Dep_Field
PROC Dep_Row()
; depart row if record is new & blank
if RECORDSTATUS("New") AND NOT RECORDSTATUS("Modified") then
RETURN 0
endif
if ISBLANK([Date]) then
Message_Box("Incomplete Entry", "This transaction requires a date.")
MOVETO [Date]
RETURN 1
endif
if ISBLANK([T_Code]) then
Message_Box("Incomplete Entry", "This transaction requires a transaction code.")
MOVETO [T_Code]
RETURN 1
endif
if ISBLANK([Empl_Num]) then
Message_Box("Incomplete Entry", "This transaction requires an employee number.")
MOVETO [Empl_Num]
RETURN 1
endif
if ISBLANK([Amount]) then
Message_Box("Incomplete Entry", "This transaction requires an hours/dollar amount entry.")
MOVETO [Amount]
RETURN 1
endif
if ISBLANK([Billed]) then
Message_Box("Incomplete Entry", "Specify whether transaction has been billed (Y/N).")
MOVETO [Billed]
RETURN 1
endif
if ISFIELDVIEW() then
DO_IT!
endif
; repeat attempts to post record by changing item_no key until posted
if RECORDSTATUS("New") OR RECORDSTATUS("Modified") then
ECHO OFF
WHILE TRUE
if ISBLANK([Item_No]) then
[Item_No] = 1
endif
POSTRECORD NOPOST LEAVELOCKED
if RetVal then
QUITLOOP
else [Item_No] = [Item_No] + 1
endif
ENDWHILE
ECHO NORMAL
endif
RETURN 0
ENDPROC; Depart_Row
PROC End_Edit(Clear_Table)
if ISFIELDVIEW() then
DO_IT!
RETURN 1
endif
if (Dep_Field() <> 0) then
RETURN 1
endif
if (Dep_Row() = 0) then ; record posted
Update_Accounts()
if Clear_Table then
Main_Table_Clear()
else Main_Table_End_Edit()
endif
if (SYSMODE() = "Main") then
RETURN 2
endif
endif
RETURN 1
ENDPROC; End_Edit
PROC Ledger_Table_Wait_Proc(TriggerType, EventInfo, CycleNumber)
PRIVATE Key_Code, Menu_Pick, Temp_Date, Rec_No, Row_No, I
if (TriggerType = "ARRIVEFIELD") then
Arr_Field()
RETURN 0
endif
if (TriggerType = "ARRIVEROW") then
Arr_Row()
RETURN 0
endif
if (TriggerType = "DEPARTFIELD") then
RETURN Dep_Field()
endif
if (TriggerType = "DEPARTROW") then
RETURN Dep_Row()
endif
if (EventInfo["TYPE"] = "KEY") then
Key_Code = EventInfo["KEYCODE"]
SWITCH
; DELETE
CASE (Key_Code = -83) :
if ISFIELDVIEW() then
RETURN 0
endif
if Response_Is_Yes("Confirm Deletion", "Are you sure you want to delete this entry?") then
if (NIMAGERECORDS() = 1) then
DEL
Update_Accounts()
RETURN 2 ; deletion of only record terminates ledger wait
else DEL
Arr_Row()
Arr_Field()
endif
endif
RETURN 1
; INSERT
CASE (Key_Code = -82) :
if (Dep_Field() <> 0) then
RETURN 1
endif
if (Dep_Row() = 0) then
MOVETO FIELD "Date"
if ATFIRST() then
Temp_Date = BLANKDATE()
else UP
Temp_Date = []
DOWN
endif
INS
[] = Temp_Date
Arr_Row()
Arr_Field()
endif
RETURN 1
; F2 - Do_It!
CASE (Key_Code = -60) : RETURN End_Edit(FALSE)
; F8 - CLEAR
CASE (Key_Code = -66) : RETURN End_Edit(TRUE)
; F3-UPIMAGE, F4-DOWNIMAGE
CASE (Key_Code = -61) OR (Key_Code = -62) :
if (Dep_Field() <> 0) then
RETURN 1
endif
if (Dep_Row() = 0) then ; record posted
Update_Accounts()
DOWNIMAGE ; move to ledger table
HOME ; go to first record
MOVETO M_Tbl ; move back to file cabinet
RETURN 2
else RETURN 1
endif
; ALT-B - Summarize Balances
CASE (Key_Code = -48) :
if (Dep_Field() <> 0) then
RETURN 1
endif
if (Dep_Row() = 0) then ; record posted
Rec_No = RECNO()
Row_No = ROWNO()
Update_Accounts()
Summarize_Accounts(M_Tbl, 1)
DOWNIMAGE ; move back to ledger table
HOME
FOR I FROM 1 TO Row_No-1
DOWN
ENDFOR
MOVETO RECORD Rec_No
REFRESH
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-Y or Alt-N
CASE (Key_Code = -21) OR (Key_Code = -49) :
if ISFIELDVIEW() then
DO_IT!
endif
if (SYSMODE() <> "CoEdit") OR NOT ISVALID() then
RETURN 0
else if (Key_Code = -21) then
[Billed] = "Y"
else [Billed] = "N"
endif
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
RETURN 1
endif; key type
if (EventInfo["MESSAGE"] = "MENUSELECT") then
Menu_Pick = EventInfo["MENUTAG"]
SWITCH
CASE (Menu_Pick = "Main\Mode") : RETURN End_Edit(FALSE)
CASE (Menu_Pick = "Return\Yes") : RETURN End_Edit(TRUE)
CASE (Menu_Pick = "Return\No") : RETURN 1
OTHERWISE : SOUND 400 100 RETURN 1
ENDSWITCH
endif
SOUND 400 100 RETURN 1 ; safety valve, ignore all events not recognized
ENDPROC; Ledger_Table_Wait_Proc
; ********** MAIN PROCEDURE BEGINS HERE **********
if New_Row then
if (RecordStatus("New") = FALSE) then ; table is not empty
END ; open up new row
DOWN
endif
endif
MOVETO FIELD "Date"
Arr_Field()
Arr_Row()
ECHO NORMAL
WAIT WORKSPACE
PROC "Ledger_Table_Wait_Proc"
MESSAGE "MENUSELECT"
TRIGGER "ARRIVEFIELD", "DEPARTFIELD", "ARRIVEROW", "DEPARTROW"
KEY -60, -66, -48, -83, -82, -61, -62, -20, 43, 45, -49, -21
; DO_IT Clear Alt-B Del Ins UpI DnI Alt-T + -
; F2 F8 Sum Balances Del Ins F3 F4 Timer AltN,Y
ENDWAIT
CLEARSPEEDBAR
MESSAGE ""
ENDPROC
WRITELIB Off_Lib Ledger_Table_Wait
RELEASE PROCS ALL

BIN
old-database/LEDGER.SC2 Executable file

Binary file not shown.

BIN
old-database/MAIN_RH.SC2 Executable file

Binary file not shown.

155
old-database/Main_RH.SC Executable file
View File

@@ -0,0 +1,155 @@
; clear workspace, procedures, variables, etc.
ECHO OFF
RELEASE VARS ALL
RELEASE PROCS ALL
ALTSPACE {Desktop} {Empty}
MOUSE HIDE
SHOWPULLDOWN
ENDMENU
PROMPT ""
PROC Show_Main_Menu()
SHOWPULLDOWN
"Open" : "Select area to work in" : "Open"
SUBMENU
"Rolodex" : "Names, addresses and phone numbers of clients, etc." : "Rolodex",
"File Cabinet" : "Client file and billing information" : "Files",
"QDRO Screen" : "Enter/edit information for drafting QDROs" : "QDROs",
SEPARATOR,
"Plan Information" : "Summary of Retirement Plan Particulars" : "PlanInfo",
"Annuity Evaluator" : "Calculate present value of an annuity" : "Pensions",
"Deposit Book" : "Record bank deposits" : "Deposits"
ENDSUBMENU,
"Utilities" : "System utilities" : "Utilities"
SUBMENU
"Basic Data" : "Enter and modify basic data" : ""
SUBMENU
"Areas of Law" : "File relate to a specific area of law (e.g. divorce)" : "FileType",
"Employee Info" : "Name, number & hourly rates of attorneys/employees" : "Employee",
"Ledger Groupings" : "Ledger transactions belong to groups (e.g. trust, credit, hourly charge)" : "TrnsType",
"Footers in Bills" : "Text to print at bottom of statements for reminders/information" : "Footers",
"Rolodex Groups" : "Rolodex members belong to groups (e.g. client, opposing counsel, personal)" : "GrupLkup",
"Transaction Codes" : "Codes & descriptions of ledger transactions (e.g. PMT for payment)" : "TrnsLkup",
"Status of Files" : "Designate files as open, closed, contingent, bankrupt, etc." : "FileStat",
"States" : "Abbreviations & names of states" : "States"
ENDSUBMENU,
"Tally Accounts" : "Total ledger entries for all files" : "Tally_All"
ENDSUBMENU,
"System" : "Customize program for your office" : ""
SUBMENU
"Customize" : "Customize program for your office, letterhead, etc." : "Customize",
"Printers" : "Set up printers to use with application" : ""
SUBMENU
"Settings" : "Add, delete or change printer settings" : "Printers",
"Default" : "Select printer to use for output" : "Printer_Default"
ENDSUBMENU
ENDSUBMENU,
"Exit" : "Terminate application" : "Exit"
SUBMENU
"No " : "Do not exit - return to application" : "Exit\No",
"Yes " : "Exit application and return to DOS" : "Exit\Yes"
ENDSUBMENU
ENDMENU
ENDPROC; Show_Main_Menu
PROC CLOSED Main_Menu()
USEVARS Form_Dir, Main_Dir, Off_Lib, Autolib, Ltr_Hd, Appl_Title, Default_Printer
; disable some paradox keys
KEYDISABLE "DOS", "DOSBIG", "MINIEDIT", "ORDERTABLE", "WINNEXT"
; define report strings and read from disk
DYNARRAY Rpt_St[]
Rpt_St["Port"] = ""
Rpt_St["Page_Break"] = ""
Rpt_St["Setup_St"] = ""
Rpt_St["Reset_St"] = ""
Rpt_St["Phone_Book"] = ""
Rpt_St["Rolodex_Info"] = ""
Rpt_St["Envelope"] = ""
Rpt_St["File_Cabinet"] = ""
Rpt_St["Accounts"] = ""
Rpt_St["Statements"] = ""
Rpt_St["Calendar"] = ""
Rpt_St["B_Underline"] = ""
Rpt_St["E_Underline"] = ""
Rpt_St["B_Bold"] = ""
Rpt_St["E_Bold"] = ""
if NOT ISBLANK(Default_Printer) then
Setup_Printer(Default_Printer)
endif
Answer_Table = ""
WHILE TRUE
Show_Main_Menu()
GETMENUSELECTION TO Choice
Main_Table = Choice
SWITCH
CASE (Choice = "Rolodex") : Rolodex_Wait("Rolodex")
CASE (Choice = "Files") : File_Cabinet_Wait("Files", "Ledger")
CASE (Choice = "Pensions") : ECHO OFF
SETDIR "PENSIONS"
Pension_Table_Wait()
ECHO OFF
SETDIR Main_Dir
CASE (Choice = "QDROs") : Qdro_Table_Wait()
CASE (Choice = "Deposits") : Setup_Table_Wait(Choice, 2, 1, "1")
CASE (Choice = "PlanInfo") : Setup_Table_Wait(Choice, 1, 0, "1")
CASE (Choice = "Employee") : Setup_Table_Wait(Choice, 4, 14, "1")
CASE (Choice = "TrnsType") : Setup_Table_Wait(Choice, 6, 1, "1")
CASE (Choice = "Footers") : Setup_Table_Wait(Choice, 2, 0, "1")
CASE (Choice = "GrupLkup") : Setup_Table_Wait(Choice, 3, 1, "1")
CASE (Choice = "TrnsLkup") : Setup_Table_Wait(Choice, 2, 2, "1")
CASE (Choice = "FileStat") : Setup_Table_Wait(Choice, 4, 2, "1")
CASE (Choice = "FileType") : Setup_Table_Wait(Choice, 4, 23, "1")
CASE (Choice = "States") : Setup_Table_Wait(Choice, 3, 18, "1")
CASE (Choice = "Printers") : Setup_Table_Wait(Choice, 1, 2, "1")
; reset default printer values
if NOT Setup_Printer(Default_Printer) then
Select_Printer()
endif
CASE (Choice = "Printer_Default"): Select_Printer()
CASE (Choice = "Customize") : Customize_Setup()
CASE (Choice = "Tally_All") : Tally_All("Files", "Ledger")
CASE (Choice = "Exit\Yes") : QUITLOOP
ENDSWITCH
ENDWHILE
CLEARPULLDOWN
ENDPROC; Main_Menu
; =========== MAIN SCRIPT BEGINS HERE =======
; define subdirectory and library file where application is located
Form_Dir = "R:\\DOCUMENT\\WPDOCS\\FORMS\\"
Main_Dir = "R:\\PDOXDATA\\OFFICE\\" ; location of data files
Off_Lib = "OFFICE" ; name of procedure library
if ISFILE(Off_Lib + ".LIB") then ; look for procedure library
Autolib = SDIR() + Off_Lib ; autoload library
else Quit "Cannot locate library, please recreate."
endif
SETDIR Main_Dir
; define letterhead array/application title and read from disk
ARRAY Ltr_Hd[10]
; assign default printer & read in system variables
Default_Printer = Get_Custom_Setup_Variables()
; show splash screen
ECHO NORMAL ; display empty desktop
DYNARRAY Att[]
Att["HASFRAME"] = False
Att["CANMOVE"] = False
Att["CANRESIZE"] = False
Att["Style"] = 116
WINDOW CREATE ATTRIBUTES Att HEIGHT 13 WIDTH 52 @6,14 TO Splash_Screen
PAINTCANVAS BORDER ATTRIBUTE 16 0, 0, 12, 51
@5,1 ?? FORMAT("W50,AC", Appl_Title)
@7,1 ?? FORMAT("W50,AC","CLIENT AND BILLING DATABASE")
SLEEP 1000
FOR I FROM 6 TO 23
SLEEP 10
WINDOW MOVE Splash_Screen TO I,14
ENDFOR
WINDOW CLOSE
; execute top level procedure
Main_Menu()
ECHO OFF
SETDIR SDIR()
; clean up before exiting
RESET
RELEASE PROCS ALL
RELEASE VARS ALL

BIN
old-database/OFFICE.LIB Executable file

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
Empl_Num,Empl_Id,Rate_Per_Hour
1 Empl_Num Empl_Id Rate_Per_Hour

View File

@@ -0,0 +1,10 @@
File_No,Memo_Date,Memo_Note
,,
,,
,,
,,
,,
,,
,,
,,
,,
1 File_No Memo_Date Memo_Note
2
3
4
5
6
7
8
9
10

View File

@@ -0,0 +1 @@
File_No,Id,File_Type,Regarding,Opened,Closed,Empl_Num,Rate_Per_Hour,Status,Footer_Code,Opposing,Hours,Hours_P,Trust_Bal,Trust_Bal_P,Hourly_Fees,Hourly_Fees_P,Flat_Fees,Flat_Fees_P,Disbursements,Disbursements_P,Credit_Bal,Credit_Bal_P,Total_Charges,Total_Charges_P,Amount_Owing,Amount_Owing_P,Transferable,Memo
1 File_No Id File_Type Regarding Opened Closed Empl_Num Rate_Per_Hour Status Footer_Code Opposing Hours Hours_P Trust_Bal Trust_Bal_P Hourly_Fees Hourly_Fees_P Flat_Fees Flat_Fees_P Disbursements Disbursements_P Credit_Bal Credit_Bal_P Total_Charges Total_Charges_P Amount_Owing Amount_Owing_P Transferable Memo

View File

@@ -0,0 +1 @@
Status,Definition,Send,Footer_Code
1 Status Definition Send Footer_Code

View File

@@ -0,0 +1 @@
File_No,Relationship,Rolodex_Id
1 File_No Relationship Rolodex_Id

View File

@@ -0,0 +1 @@
File_No,Identifier,Response
1 File_No Identifier Response

View File

@@ -0,0 +1 @@
File_Type
1 File_Type

View File

@@ -0,0 +1 @@
F_Code,F_Footer
1 F_Code F_Footer

View File

@@ -0,0 +1 @@
Identifier,Query,Response
1 Identifier Query Response

View File

@@ -0,0 +1 @@
Name,Keyword
1 Name Keyword

View File

@@ -0,0 +1 @@
Name,Memo,Status
1 Name Memo Status

View File

@@ -0,0 +1 @@
Keyword
1 Keyword

View File

@@ -0,0 +1 @@
AGE,LE_AA,NA_AA,LE_AM,NA_AM,LE_AF,NA_AF,LE_WA,NA_WA,LE_WM,NA_WM,LE_WF,NA_WF,LE_BA,NA_BA,LE_BM,NA_BM,LE_BF,NA_BF,LE_HA,NA_HA,LE_HM,NA_HM,LE_HF,NA_HF
1 AGE LE_AA NA_AA LE_AM NA_AM LE_AF NA_AF LE_WA NA_WA LE_WM NA_WM LE_WF NA_WF LE_BA NA_BA LE_BM NA_BM LE_BF NA_BF LE_HA NA_HA LE_HM NA_HM LE_HF NA_HF

View File

@@ -0,0 +1 @@
Month,NA_AA,NA_AM,NA_AF,NA_WA,NA_WM,NA_WF,NA_BA,NA_BM,NA_BF,NA_HA,NA_HM,NA_HF
1 Month NA_AA NA_AM NA_AF NA_WA NA_WM NA_WF NA_BA NA_BM NA_BF NA_HA NA_HM NA_HF

View File

@@ -0,0 +1 @@
Code,Description,Title
1 Code Description Title

View File

@@ -0,0 +1 @@
File_No,Date,Item_No,Empl_Num,T_Code,T_Type,T_Type_L,Quantity,Rate,Amount,Billed,Note
1 File_No Date Item_No Empl_Num T_Code T_Type T_Type_L Quantity Rate Amount Billed Note

View File

@@ -0,0 +1 @@
Deposit_Date,File_No,Id,Regarding,Amount,Note
1 Deposit_Date File_No Id Regarding Amount Note

View File

@@ -0,0 +1 @@
Id,Phone,Location
1 Id Phone Location

View File

@@ -0,0 +1 @@
Plan_Id,Plan_Name,Plan_Type,Empl_Id_No,Plan_No,NRA,ERA,ERRF,COLAS,Divided_By,Drafted,Benefit_C,QDRO_C,^REV,^PA,Form_Name,Drafted_On,Memo
1 Plan_Id Plan_Name Plan_Type Empl_Id_No Plan_No NRA ERA ERRF COLAS Divided_By Drafted Benefit_C QDRO_C ^REV ^PA Form_Name Drafted_On Memo

View File

@@ -0,0 +1 @@
Number,Name,Port,Page_Break,Setup_St,Phone_Book,Rolodex_Info,Envelope,File_Cabinet,Accounts,Statements,Calendar,Reset_St,B_Underline,E_Underline,B_Bold,E_Bold
1 Number Name Port Page_Break Setup_St Phone_Book Rolodex_Info Envelope File_Cabinet Accounts Statements Calendar Reset_St B_Underline E_Underline B_Bold E_Bold

View File

@@ -0,0 +1 @@
File_No,Version,Lump1,Lump2,Growth1,Growth2,Disc1,Disc2
1 File_No Version Lump1 Lump2 Growth1 Growth2 Disc1 Disc2

View File

@@ -0,0 +1 @@
AGE,LE_AA,NA_AA,LE_AM,NA_AM,LE_AF,NA_AF,LE_WA,NA_WA,LE_WM,NA_WM,LE_WF,NA_WF,LE_BA,NA_BA,LE_BM,NA_BM,LE_BF,NA_BF,LE_HA,NA_HA,LE_HM,NA_HM,LE_HF,NA_HF
1 AGE LE_AA NA_AA LE_AM NA_AM LE_AF NA_AF LE_WA NA_WA LE_WM NA_WM LE_WF NA_WF LE_BA NA_BA LE_BM NA_BM LE_BF NA_BF LE_HA NA_HA LE_HM NA_HM LE_HF NA_HF

View File

@@ -0,0 +1 @@
File_No,Version,Married_From,Married_To,Married_Years,Service_From,Service_To,Service_Years,Marital_%
1 File_No Version Married_From Married_To Married_Years Service_From Service_To Service_Years Marital_%

View File

@@ -0,0 +1 @@
Month,NA_AA,NA_AM,NA_AF,NA_WA,NA_WM,NA_WF,NA_BA,NA_BM,NA_BF,NA_HA,NA_HM,NA_HF
1 Month NA_AA NA_AM NA_AF NA_WA NA_WM NA_WF NA_BA NA_BM NA_BF NA_HA NA_HM NA_HF

View File

@@ -0,0 +1 @@
File_No,Version,Plan_Id,Plan_Name,Title,First,Last,Birth,Race,Sex,Info,Valu,Accrued,Vested_Per,Start_Age,COLA,Max_COLA,Withdrawal,Pre_DR,Post_DR,Tax_Rate
1 File_No Version Plan_Id Plan_Name Title First Last Birth Race Sex Info Valu Accrued Vested_Per Start_Age COLA Max_COLA Withdrawal Pre_DR Post_DR Tax_Rate

View File

@@ -0,0 +1 @@
Accrued,Start_Age,COLA,Withdrawal,Pre_DR,Post_DR,Tax_Rate,Age,Years_From,Life_Exp,EV_Monthly,Payments,Pay_Out,Fund_Value,PV,Mortality,PV_AM,PV_AMT,PV_Pre_DB,PV_Annuity,WV_AT,PV_Plan,Years_Married,Years_Service,Marr_Per,Marr_Amt
1 Accrued Start_Age COLA Withdrawal Pre_DR Post_DR Tax_Rate Age Years_From Life_Exp EV_Monthly Payments Pay_Out Fund_Value PV Mortality PV_AM PV_AMT PV_Pre_DB PV_Annuity WV_AT PV_Plan Years_Married Years_Service Marr_Per Marr_Amt

View File

@@ -0,0 +1 @@
File_No,Version,Vests_On,Vests_At
1 File_No Version Vests_On Vests_At

View File

@@ -0,0 +1 @@
File_No,Version,Separation_Rate
1 File_No Version Separation_Rate

View File

@@ -0,0 +1 @@
File_No,Version,Plan_Id,^1,^2,^Part,^AltP,^Pet,^Res,Case_Type,Case_Code,Section,Case_Number,Judgment_Date,Valuation_Date,Married_On,Percent_Awarded,Ven_City,Ven_Cnty,Ven_St,Draft_Out,Draft_Apr,Final_Out,Judge,Form_Name
1 File_No Version Plan_Id ^1 ^2 ^Part ^AltP ^Pet ^Res Case_Type Case_Code Section Case_Number Judgment_Date Valuation_Date Married_On Percent_Awarded Ven_City Ven_Cnty Ven_St Draft_Out Draft_Apr Final_Out Judge Form_Name

View File

@@ -0,0 +1 @@
Id,Identifier,Response
1 Id Identifier Response

View File

@@ -0,0 +1 @@
Id,Prefix,First,Middle,Last,Suffix,Title,A1,A2,A3,City,Abrev,St,Zip,Email,DOB,SS#,Legal_Status,Group,Memo
1 Id Prefix First Middle Last Suffix Title A1 A2 A3 City Abrev St Zip Email DOB SS# Legal_Status Group Memo

View File

@@ -0,0 +1 @@
Identifier,Query
1 Identifier Query

View File

@@ -0,0 +1 @@
Appl_Title,L_Head1,L_Head2,L_Head3,L_Head4,L_Head5,L_Head6,L_Head7,L_Head8,L_Head9,L_Head10,Default_Printer
1 Appl_Title L_Head1 L_Head2 L_Head3 L_Head4 L_Head5 L_Head6 L_Head7 L_Head8 L_Head9 L_Head10 Default_Printer

View File

@@ -0,0 +1 @@
Abrev,St
1 Abrev St

View File

@@ -0,0 +1 @@
File_No,Id,Footer_Code,Date,Item_No,Empl_Num,T_Code,T_Type,T_Type_L,Quantity,Rate,Amount,Billed,Note
1 File_No Id Footer_Code Date Item_No Empl_Num T_Code T_Type T_Type_L Quantity Rate Amount Billed Note

View File

@@ -0,0 +1 @@
T_Code,T_Type,T_Type_L,Amount,Description
1 T_Code T_Type T_Type_L Amount Description

Some files were not shown because too many files have changed in this diff Show More