Re: Any better ideas for file sharing?

"Yantis, Richard" <[email protected]> Mon, 26 Mar 2012 12:39:40 -0500
Newsgroups gmane.comp.finance.moneydance.general
Message-ID <[email protected]>
I have recently started keeping my MoneyDance file in Evernote so that I can get to it from my home, work, or laptop machines.  I think it may leave a copy on the hard drive, so this may not address your issue.  But, I really like the way Evernote works for this and many other things.  It's free, although I paid an extra $50 per year for some extra features.

Richard

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Yaron Y. goland
Sent: Monday, March 26, 2012 12:08 AM
To: [email protected]
Subject: [moneydance] Any better ideas for file sharing?

We run our finances off Moneydance on my main machine. My wife wants to be able to run reports and generally nose around our finances but that requires going to the main machine which for various reasons is inconvenient for her. She wanted me to put a copy of our Moneydance file on her laptop for read only purposes but this really freaked me out because that file is one stop shopping for stealing everything we own.
So the compromise I came up with is the jython script below. It goes through and deletes all online service info, strips account numbers and routing numbers from all accounts, deletes all reminders and the address book. The workflow is:

1) Make a copy of the master file
2) Run the script below via the Jython extension
3) Save the copy and give to my wife

A few questions:

1) Any other data I can safely nuke from the master file that will make stealing the copy less useful while still leaving all the core data so my wife can run reports, investigate expenses, etc.?

2) I hate the workflow. I wanted to automatically create a copy, clean up the copy, save it and then re-load the master. But while there is a method to point the Moneydance file at a new location I couldn't find an API to force Moneydance to save to the new location nor could I find an API to make Moneydance re-load from the old location. Any ideas there?

         Thanks,

                 Yaron

from com.moneydance.apps.md.model import Account

# Thanks to
http://help.infinitekind.com/discussions/financial-institution-direct-connection-support-requests/382-vanguard-download-http-error400
for this function
def deleteAllOnlineInfo(root):
   onlineInfo = root.getOnlineInfo()
   while onlineInfo.getServiceCount()>0:
     onlineInfo.removeService(0)

def cleanAccount(acct):
   acct.setOFXAccountKey("0")
   acct.setOFXAccountNumber("0")
   acct.setOFXAccountType("0")
   acct.setOFXBankID("0")
   acct.setOFXBranchID("0")
   acct.setOFXBrokerID("0")

def cleanBankAccount(acct):
   acct.setBankAccountNumber("0")

def cleanCreditCard(acct):
   acct.setAnnualFee(0)
   acct.setAPRPercent(0)
   acct.setCardExpirationMonth(1)
   acct.setCardExpirationYear(2000)
   acct.setCardNumber("0")
   acct.setCreditLimit(0)
   acct.setOFXAccountNumber("0")

def cleanInvestment(acct):
   acct.setInvestAccountNumber("0")
   acct.setOFXBrokerID("0")

def cleanSecurity(acct):
   acct.setBrokerPhone("0")

def doNothing(acct):
     pass

def cleanAllAccounts(root):
   for id in range(root.getHighestAccountNum() + 1):
     acct = root.getAccountById(id)
     if (acct != None):
       cleanAccount(acct)
       pass # Moneydance Jython won't seem to let me define a dictionary on multiple lines
       { Account.ACCOUNT_TYPE_BANK : cleanBankAccount, Account.ACCOUNT_TYPE_CREDIT_CARD : cleanCreditCard, Account.ACCOUNT_TYPE_INVESTMENT : cleanInvestment, Account.ACCOUNT_TYPE_SECURITY :
cleanSecurity}.get(acct.getAccountType(),doNothing)(acct)

def deleteReminders(root):
   reminderSet = root.getReminderSet()
   reminderCount = reminderSet.getReminderCount()
   if (reminderCount > 0):
     for id in range(reminderSet.getReminderCount() + 1):
       reminderSet.removeReminder(reminderSet.getReminder(id))

def deleteAddresses(root):
   addressBook = root.getAddressBook()
   while addressBook.getSize() > 0:
     addressBook.removeEntry(addressBook.getEntry(0))

def cleanEntireFile(theFileToNeverRunThisProgramOn):
   root = moneydance.getRootAccount()

   if (root.getDataFile().getName() == theFileToNeverRunThisProgramOn):
       print "You idiot! You tried to run this data destroyer on your primary file!!!!"
       return

   print "Starting to nuke things"
   deleteAllOnlineInfo(root)
   cleanAllAccounts(root)
   deleteReminders(root)
   deleteAddresses(root)
   print "Nuking is complete, have a nice day"

theFileToNeverRunThisProgramOn = "Moneydance.md"
cleanEntireFile(theFileToNeverRunThisProgramOn)
_______________________________________________
For Moneydance customer support, please visit http://help.infinitekind.com [email protected] http://moneydance.com/mailman/listinfo/moneydance-info
_______________________________________________
For Moneydance customer support, please visit http://help.infinitekind.com
[email protected]
http://moneydance.com/mailman/listinfo/moneydance-info