Thursday, September 10, 2015

GnuCash Encountered System Error while Retrieving Price Quotes

While I was installing GnuCash 2.6.7 on a Windows 10 computer, I encountered a "System Error" while retrieving the price quotes. To be exact, when I opened the "Price Editor" from GnuCash, and attempted to "Get Quotes", GnuCash popped up a dialogue window with the error message "There was a system error while retrieving the price quotes"

By resolving this problem, I have the following observations,
  • GnuCash may still fail to retrieve price quotes even if GnuCash's gnc-fq-check program reports no problem.
  • GnuCash's gnc-fq-update program is designed to install the Finance::Quote Perl module; however, it may not install all dependencies that the GnuCash's Price Editor functionality requires.
  • GnuCash's gnc-fq-helper program can provide additional diagnostic information, such as, missing dependent Perl modules.
Below is a detailed description on what happened and how the problem was resolved.

  1. To install the Finance::Quote Perl module, we run GnuCash's gnc-fq-update program as the System Administrator, e.g.,
    
    C:\Program Files (x86)\gnucash\bin>perl gnc-fq-update
    

  2. To verify that the Finance:Quote Perl module is successfully installed and we can retrieve price quotes online, we run GnuCash's gnc-fq-check, e.g.,

    
    C:\Program Files (x86)\gnucash\bin>perl gnc-fq-check
    ("1.38" "tdefunds" "adig" "bet" "sixshares" "nz" "unionfunds" "romania" "cominvest" "dwsfunds" "asegr" "tiaacref" "seb_funds" "cse" "nasdaq" "goldmoney" "bamosz" "tsp" "yahoo_json" "hungary" "fidelityfixed" "bourso" "yahoo_nz" "usfedbonds" "yahoo_europe" "ftportfolios_direct" "platinum" "hustock" "bse" "bsero" "ukfunds" "aex" "vanguard" "dutch" "tdwaterhouse" "yahoo_brasil" "maninv" "trustnet" "uk_unit_trusts" "yahoo_australia" "morningstarjp" "brasil" "known_currencies" "canadamutual" "deka" "finanzpartner" "fool" "bmonesbittburns" "ftfunds" "yahoo_yql" "finland" "europe" "za_unittrusts" "nzx" "morningstar" "fidelity_direct" "asx" "za" "troweprice_direct" "greece" "lerevenu" "hu" "tsx" "sixfunds" "fetch_live_currencies" "troweprice" "indiamutual" "hufund" "yahoo" "australia" "asia" "usa" "aiahk" "stockhousecanada_fund" "fidelity" "ftportfolios" "vwd" "france" "mstaruk" "canada" "financecanada" "fundlibrary" "tnetuk" "nyse" "yahoo_asia" "citywire" "hex" "amfiindia")
    
    
    

Since gnc-fq-check does not complain that there might be a problem, we would assume that the GnuCash's Price Eiditor functionality should work. In particular, the GnuCash's Online Quotes wiki page does not appear to suggest anything else may have to be performed. However, I encountered the error that "There was a system error while retrieving the price quotes".

Following the GnuCash's Tracefile wiki page, I initially attempted to observe what may have been wrong by examining GnuCash trace files. However, the trace files did not appear to reveal anything useful to me. Finally, a web search yielded a clue that we might be able to find out more using GnuCash's gnc-fq-helper program. Below is what I found out by attempting to retrieve the ticket CSCO's price quote from Yahoo,


C:\Program Files (x86)\gnucash\bin>echo (yahoo "CSCO") | perl gnc-fq-helper
Can't locate Date/Manip.pm in @INC (you may need to install the Date::Manip module) (@INC contains: C:/Strawberry/perl/site/lib C:/Strawberry/perl/vendor/lib C:/Strawberry/perl/lib .) at gnc-fq-helper line 33.
BEGIN failed--compilation aborted at gnc-fq-helper line 33.

that clearly indicated that the Date::Manip Perl module was missing. Then the fix is to install the Perl module, e.g., invoking Perl shell as the System Administrator as follows,

C:\Program Files (x86)\gnucash\bin>perl -MCPAN -e shell
cpan> install Date::Manip

Now let us run the gnc-fq-helper and attempt to retrieve the ticket CSCO's price quote from Yahoo again. The gnc-fq-helper stopped complaining and successfully retrieved the price quote.

C:\Program Files (x86)\gnucash\bin>echo (yahoo "CSCO") | perl gnc-fq-helper
WARNING: the TZ Date::Manip config variable is deprecated
         and will be removed in March 2016.  Please use
         the SetDate or ForceDate config variables instead.
(("CSCO" (symbol . "CSCO") (gnc:time-no-zone . "2015-09-09 16:00:00") (last . 25.94) (currency . "USD")))

This experience is actually another time that the gnc-fq-helper program saves the day. In the past, I encountered a similar problem, but with a different error message.

4 comments:

  1. Thanks for the helpful post. I am having the same issue with Date::Manip not getting installed correctly. I tried following the steps above, but get an error towards the end of the "install Date:Manip" routine. The error reads:

    dmake.exe: Error: -- 'Manip::TZ::afalgi00=>{' not found, and can't be made.

    In essence, I cannot install the package correctly. Any suggestions?

    ReplyDelete
  2. Thanks for the helpful post. I am having the same issue with Date::Manip not getting installed correctly. I tried following the steps above, but get an error towards the end of the "install Date:Manip" routine. The error reads:

    dmake.exe: Error: -- 'Manip::TZ::afalgi00=>{' not found, and can't be made.

    In essence, I cannot install the package correctly. Any suggestions?

    ReplyDelete
    Replies
    1. That is strange. What if you try the following from the command line?

      perl -MCPAN -e "install 'SBECK/Date-Manip-6.54.tar.gz'"

      Delete
    2. Thanks Gary,

      I googled around and found others with similar problems. In essence, I ended up installing version 6.44 and that worked. More info here:

      http://stackoverflow.com/questions/24252166/datemanip-not-installing

      Delete