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.