-
Notifications
You must be signed in to change notification settings - Fork 0
/
Family Anniversaries.fh_lua
75 lines (71 loc) · 2.61 KB
/
Family Anniversaries.fh_lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
--[[
@title: Family Anniversaries
@author: Calico Pie
@lastupdated: July 2011
@version: 1.0
@description:
List Event's which occur in the next 7 days (regardless of Year)
]]
------------------------------------------------------------------------ Main Code
recordtypes = {'INDI','FAM'}
eventtypes = {'BAPM','BIRT','MARR'}
local iCount = fhGetRecordTypeCount() -- Get Count of Record types
-- Loop through Record Types
local ptr = fhNewItemPtr()
local ptrEvent = fhNewItemPtr()
local ptrDate = fhNewItemPtr()
local dpToday = fhCallBuiltInFunction('Today')
local dpPlus7 = fhCallBuiltInFunction('CalcDate',dpToday,0,0,7)
local dtToday = fhNewDate()
local dtPlus7 = fhNewDate()
-- Define Result Tables
tblRecord = {}
tblDate = {}
tblADate = {}
tblFact = {}
tblYears = {}
for i,strRecType in pairs(recordtypes) do
ptr:MoveToFirstRecord(strRecType)
while ptr:IsNotNull() do
for j,strEventType in pairs(eventtypes) do
-- Check for Each Event Type
ptrEvent:MoveTo(ptr,'~.'..strEventType)
while ptrEvent:IsNotNull() do
ptrDate:MoveTo(ptrEvent,'~.DATE')
dtDate = fhGetValueAsDate(ptrDate)
dpDate = dtDate:GetDatePt1()
year = dpDate:GetYear()
month = dpDate:GetMonth()
day = dpDate:GetDay()
yearcur = dpToday:GetYear()
dptest = fhNewDatePt(yearcur,month,day)
if (dptest:Compare(dpToday) > -1) and (dptest:Compare(dpPlus7) < 1) then
-- Matching Date Add to Result Set
table.insert(tblRecord,ptr:Clone())
table.insert(tblFact,ptrEvent:Clone())
table.insert(tblADate,dptest:Clone())
table.insert(tblDate,dpDate:Clone())
table.insert(tblYears,(yearcur - year))
end
ptrEvent:MoveNext('SAME_TAG')
end
end
ptr:MoveNext()
end
end
if #tblRecord == 0 then
fhMessageBox('No Event Anniversaries in the next 7 days')
else
dtToday = fhNewDate()
dtToday:SetSimpleDate(dpToday)
dtPlus7 = fhNewDate()
dtPlus7:SetSimpleDate(dpPlus7)
title = "Event Anniversaries"
subtitle = dtToday:GetValueAsText()..'-'..dtPlus7:GetValueAsText()
fhOutputResultSetTitles(title..' '..subtitle, title,subtitle.." Printed: %#x")
fhOutputResultSetColumn("Record", "item", tblRecord, #tblRecord, 220, "align_left")
fhOutputResultSetColumn("Event", "item", tblFact, #tblRecord, 180, "align_left")
fhOutputResultSetColumn("Date", "date-point", tblDate, #tblRecord, 70, "align_left",2)
fhOutputResultSetColumn("Anniversary", "date-point", tblADate, #tblRecord, 70, "align_left",1)
fhOutputResultSetColumn("Years Ago", "integer", tblYears, #tblRecord, 40, "align_right")
end