Monthly Archives: April 2010
My Favorite Tools
Kathy Brown today asked “What’s Your Favorite Tool“, so I thought I wanted to share the tools I use.
My favorite tool is probably NoteMan from MartinScott. If I have to pick one tool from the suite, it would be either NoteMan.Editor or NoteMan.DocDelta. It is very hard to decide between the two of them. Editor is great for editing documents, see the contents of different fields and even change data types. I use it to get the UniversalID of documents and much more. DocDelta help me solve replication conflicts quickly and easy. I can higly recommend the NoteMan suite of tools to any Notes/Docmino developer, and for the price ($395 for the whole suite), you get a lot of functionality.
I also use several tools from TeamStudio and Ytria. Yes, I am lucky enough to have a boss who believe in getting me the tools I need.
From TeamStudio I use Undo (previously called Snapper) to make snapshots of the design while developing for easy roll-back, Profiler to find performance issues in my code and Configurator for search-and-replace through-out a database (design and/or documents). Those tools run around $500 each, if I recall correctly. I also use their free class browser, a tool I highly recommend to everyone doing object oriented Lotusscript development.
From Ytria I use a number of tools.The two I use the most are scanEZ and actionBarEZ. The latter is great when I want to apply a specific design of action bars to many forms and/or views. I design the action bar in one view, with colors, fonts, backgrounds, etc. When I am satisfied I can update all views and forms the the database with the new design. I don’t use scanEZ as much, but still on a regular basis. It also have functions to identify replication conflicts, like NoteMan.DocDelta, but the two tools complement each other. Using scanEZ, I can locate and delete documents of a particular type, including profile documents, and much more. I also sometimes use designPropEZ to check the design of a database and make sure it does not inherit element from the wrong templates/databases.
Here is a screenshot of my currect toolbar with all my development tools:

In addition I use Photoshop CS2 for graphics editing, TechSmith Jing to create screencam demos for managers/users, and Notepad++ for some HTML/Javascript/jQuery editing.
Object Oriented Lotusscript for beginners – Part 1
Object Oriented Lotusscript for beginners – Part 2
When payments are made, the reserve amounts are reduced, until reaching zero. No more payments can be done then until the reserve is increased. Each adjuster have a limit to how large reserve he or she can set, higher reserve must be approved by a manager.
Class AmountData
Public lr As Currency ' Loss Reserve
Public er As Currency ' Expense Reserve
Public lp As Currency ' Loss Payments
Public ep As Currency ' Expense Payments
Public slp As Currency ' Supplemental Loss Payments
Public sep As Currency ' Supplemental Expense Payments
Public rec As Currency ' Recovery amount
Public lossavail As Currency
Public expavail As Currency
Public Sub New()
rec = 0
slp = 0
sep = 0
lr = 0
er = 0
lp = 0
ep = 0
lossavail = -1
expavail = -1
End Sub
Public Sub Load(claimnumber As String, claimant As Integer)
Dim success As Integer
Dim servaddress As String
Dim xmldata As String
Dim claimlink As ClaimLink ' Object to connect to backend
Set ClaimLink = New ClaimLink() ' Create object/class
If claimant = 0 Then ' Get total amounts for all claimants
success = claimlink.GetClaimStatus(claimnumber, Today())
Else ' Get amounts for selected claimant
success = claimlink.GetAmountsByClaimant(claimnumber, claimant, Today())
End If
If success = True Then ' Data returned successfully
xmldata = claimlink.GetDataXML()
rec = Cstr(Ccur(XMLGetValue(xmldata,"recovery")))
slp = Cstr(0-Ccur(XMLGetValue(xmldata,"losssup")))
sep = Cstr(0-Ccur(XMLGetValue(xmldata,"expsup")))
If claimant = 0 Then ' All claimants
lr = Cstr(Ccur(XMLGetValue(xmldata,"lossorig")) + Ccur(XMLGetValue(xmldata,"losschg")))
er = Cstr(Ccur(XMLGetValue(xmldata,"exporig")) + Ccur(XMLGetValue(xmldata,"expchg")))
Else ' Specified claimant
lr = Cstr(Ccur(XMLGetValue(xmldata,"lossres")) - Ccur(slp) + Ccur(rec))
er = Cstr(Ccur(XMLGetValue(xmldata,"expres")) - Ccur(sep))
End If
lp = Cstr(0-Ccur(XMLGetValue(xmldata,"losspaid")) - Ccur(slp))
ep = Cstr(0-Ccur(XMLGetValue(xmldata,"exppaid")) - Ccur(sep))
lossavail = Ccur(lr) - Ccur(lp)
expavail = Ccur(er) - Ccur(ep)
End If
End Sub
End Class
Class ClaimantStatusData
Public loss As String
Public expense As String
Public claimant As String
Public Sub new(doc As NotesDocument)
If Lcase(doc.LossClosed(0)) = "yes" Then
Me.loss = "closed"
Else
Me.loss = "open"
End If
If Lcase(doc.ExpensesClosed(0)) = "yes" Then
Me.expense = "closed"
Else
Me.expense = "open"
End If
If Me.expense = "closed" Then
If Me.loss = "closed" Then
Me.claimant = "closed"
Else
Me.claimant = "open"
End If
Else
Me.claimant = "open"
End If
End Sub
End Class
Class ClaimantData
Public claimantdoc As NotesDocument
Public unid As String ' Store UniversalID of claimant document
Public parentunid As String
Public amounts As AmountData
Public claimcare As ClaimCareData
Public status As ClaimantStatusData
Public Parallel As Integer
Public Sub New(doc As NotesDocument)
Dim claimnumber As String
Dim claimant As Integer
Set claimantdoc = doc
unid = doc.UniversalID
parentunid = doc.GetItemValue("ParentUNID")(0)
claimnumber = doc.GetItemValue("ClaimNumber")(0)
claimant = Cint(doc.GetItemValue("Claimant_Number")(0))
If Lcase(doc.GetItemValue("TransferredToParallel")(0)) = "yes" Then
Parallel = True
Else
Parallel = False
End If
Set amounts = New Amounts(claimnumber, claimant)
Set status = New ClaimantStatusData(doc)
End Sub
Public Function GetValue(fieldname) As Variant
GetValue = claimantdoc.GetItemValue(fieldname)(0)
End Function
Public Function SetValue(fieldname, Byval value As Variant) As Variant
Call claimantdoc.ReplaceItemValue(fieldname, value)
End Function
Public Function GetVariant(fieldname) As Variant
GetVariant = claimantdoc.GetItemValue(fieldname)
End Function
Public Sub Save()
Call claimantdoc.Save(True,True)
End Sub
Public Function DisplayName() As String
If Fulltrim(GetValue("Claimant_Name")) = "" Then
DisplayName = GetValue("Claimant_Company")
Else
DisplayName = GetValue("Claimant_Name")
End If
End Function
Public Function GetXML()
Dim tempxml As String
If claimantdoc Is Nothing Then
Msgbox "Claimant document is not loaded, no data returned.",,"ClaimantData.GetXML()"
GetXML = ""
Exit Function
End If
tempxml = "<claimntno>" & claimantdoc.GetValue("Claimant_Number") & "</claimntno>" & CRLF
tempxml = tempxml + "<extclmntno>" & claimantdoc.getValue("ClaimantNumberExternal") & "</extclmntno>" & CRLF
tempxml = tempxml + "<classcode>" & claimantdoc.pClassCode(0) & "</classcode>" & CRLF
tempxml = tempxml + "<cvgcode>" & claimantdoc.Claimant_LossType(0) & "</cvgcode>" & CRLF
tempxml = tempxml + "<table>" & claimantdoc.pTable(0) & "</table>" & CRLF
If claimantdoc.Unknown(0)="Yes" Then
tempxml = tempxml + "<claimntnam>* unknown *</claimntnam>" & CRLF
Elseif claimantdoc.Claimant_Name(0)="" Then
tempxml = tempxml + "<claimntnam>" & dsClaimLink.EncodeXML(claimantdoc.Claimant_Company(0)) & "</claimntnam>" & CRLF
Else
tempxml = tempxml + "<claimntnam>" & dsClaimLink.EncodeXML(claimantdoc.Claimant_Name(0)) & "</claimntnam>" & CRLF
End If
' Check if we have amounts loaded
If Not amounts Is Nothing Then
tempxml = tempxml + "<lossamt>" & Format$(amounts.lp,"###0.00") & "</lossamt>" & CRLF
tempxml = tempxml + "<expamt>" & Format$(amounts.ep,"###0.00") & "</expamt>" & CRLF
End If
GetXML = tempxml
End Function
End Class
Project Vulcan – my thoughts
Ubuntu 10.04
Vanity domains and personal website

AddItem("Menu","Item Label", "/mylink.html");
I also plan to start learning Xpages soon, when I get the time. But for now I work in "classic" Notes/Domino, as that is what we use at work.
I'm back.
