Category Archives: Dong Shin

Dong Shin 01.06.2012

  • deployed the latest PPM and PA
  • reviewed with Tangie
    • She wants to be able to review the budget amounts info for individual sub projects
  • working on viewing budget amount of sub projects
    • query to retrieve yearly budget amounts
    • SELECT c.uid , SUM(amount), year
      FROM budget_centers c
      LEFT JOIN budget_amounts a
      ON c.uid = a.budget_center_id
      WHERE project_id = 99
      GROUP BY year
    • made windows non-modal, can view multiple projects. close all on Create Project panel close

Dong Shin 01.03.2011

  • met with Tangie and got some enhancement requests.
    • list of project as Excel spreadsheet
    • sortable columns on people
    • parent/child projects for TST projects
  • removed splash screen and help section from Project Assistant
  • add export to Excel for the list of projects
  • enabled sorting on people columns in Project Management

Dong Shin 12.29.2011

  • working at home
  • nicer interface on upgraded blog!
  • working on Project Manager GWT
    • finally got the financial data displayed just like PPM
      • fetching all the data at once, getProjectDetails. This returns all Budget Centers, Budget Amounts, and Obligations/Outlays
    • NULL fields displaying 0.0, need to work on parsing data correctly
    • works really fast in compiled mode, unlike slow PPM
    • working on data formatting/editing

Dong Shin 12.21.2011

  • developing PPM with GWT
    • spent past few days creating UI mimicking PPM
    • mixing GWT with SmartGWT is not very good… Some dynamic object creation throws exceptions that are hard to find where it came from.
    • getting list of projects from database
    • displaying list of projects in SmartGWT
      • special parsing required to use their ListGridRecord

Dong Shin 12.06.2011

  • added auto-fill to Create/Edit projects. This fills specified data up to the current month and year
  • Updating PM Actuals to PM Actuals (Invoiced) broke Funding Request/Financial Status Data. Updated all references to PM Actuals
  • uploaded the latest PPM and PA to fgmdev
  • looking into incorporate HTML’s to Flex easy way….

Dong Shin 12.02.2011

  • changes to PPM and PA
    • removed Incomplete projects from the list
    • changed Spark Label to MX Text to wordwrap the Budget Details
    • changed the Current month to Reporting month
    • rearranging visual components in Financial Data Navigator to clarify the layout

Dong Shin 11.30.2011

  • Financial Data navigation in Project Assistant
    • takes to the beginning of the records when option changes
    • combined checkbox navigation – done
    • working on current months navigation – done coding
    • testing would take a while….
    • revised the Budget Details query to ignore $0 budgets and years beyond current year
      • SELECT c.*, a.uid as a_uid, a.amount as amount, o.year, o.year_count, r.duration,
        IF (amount = 0 OR o.year + o.year_count – 1 > 2012, ‘IGNORE’, (IF(SUM(IF(ISNULL(month_1), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_1), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)))) as month_1_status,
        IF (amount = 0 OR o.year + o.year_count – 1 > 2012, ‘IGNORE’, (IF(SUM(IF(ISNULL(month_2), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_2), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)))) as month_2_status,
        IF (amount = 0 OR o.year + o.year_count – 1 > 2012, ‘IGNORE’, (IF(SUM(IF(ISNULL(month_3), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_3), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)))) as month_3_status,
        IF (amount = 0 OR o.year + o.year_count – 1 > 2012, ‘IGNORE’, (IF(SUM(IF(ISNULL(month_4), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_4), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)))) as month_4_status,
        IF (amount = 0 OR o.year + o.year_count – 1 > 2012, ‘IGNORE’, (IF(SUM(IF(ISNULL(month_5), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_5), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)))) as month_5_status,
        IF (amount = 0 OR o.year + o.year_count – 1 > 2012, ‘IGNORE’, (IF(SUM(IF(ISNULL(month_6), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_6), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)))) as month_6_status,
        IF (amount = 0 OR o.year + o.year_count – 1 > 2012, ‘IGNORE’, (IF(SUM(IF(ISNULL(month_7), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_7), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)))) as month_7_status,
        IF (amount = 0 OR o.year + o.year_count – 1 > 2012, ‘IGNORE’, (IF(SUM(IF(ISNULL(month_8), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_8), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)))) as month_8_status,
        IF (amount = 0 OR o.year + o.year_count – 1 > 2012, ‘IGNORE’, (IF(SUM(IF(ISNULL(month_9), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_9), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)))) as month_9_status,
        IF (amount = 0 OR o.year + o.year_count – 1 > 2012, ‘IGNORE’, (IF(SUM(IF(ISNULL(month_10), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_10), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)))) as month_10_status,
        IF (amount = 0 OR o.year + o.year_count – 1 > 2012, ‘IGNORE’, (IF(SUM(IF(ISNULL(month_11), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_11), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)))) as month_11_status,
        IF (amount = 0 OR o.year + o.year_count – 1 > 2012, ‘IGNORE’, (IF(SUM(IF(ISNULL(month_12), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_12), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)))) as month_12_status
        FROM budget_centers c, obligations_outlays o, budget_amounts a, appropriations r, projects p
        WHERE p.uid = 174 AND c.project_id = p.uid AND c.uid = a.budget_center_id AND a.year = o.year – p.begin_year + 1 AND c.uid = o.funding_id AND c.appropriation = r.type
        AND o.type <> ‘Reported Outlay $:’ AND o.type <> ‘Outlay $ (Reported in FACTS)’ GROUP BY a.uid, o.year, o.year_count ORDER BY c.uid, o.year, o.year_count

Dong Shin 11.28.2011

  • revised Budget Details Query so that the navigation is bit easier….
    • SELECT c.*, a.uid as a_uid, a.amount as amount, o.year, o.year_count, p.duration,
      IF(SUM(IF(ISNULL(month_1), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_1), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)) as month_1_status,
      IF(SUM(IF(ISNULL(month_2), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_2), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)) as month_2_status,
      IF(SUM(IF(ISNULL(month_3), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_3), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)) as month_3_status,
      IF(SUM(IF(ISNULL(month_4), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_4), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)) as month_4_status,
      IF(SUM(IF(ISNULL(month_5), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_5), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)) as month_5_status,
      IF(SUM(IF(ISNULL(month_6), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_6), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)) as month_6_status,
      IF(SUM(IF(ISNULL(month_7), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_7), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)) as month_7_status,
      IF(SUM(IF(ISNULL(month_8), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_8), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)) as month_8_status,
      IF(SUM(IF(ISNULL(month_9), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_9), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)) as month_9_status,
      IF(SUM(IF(ISNULL(month_10), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_10), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)) as month_10_status,
      IF(SUM(IF(ISNULL(month_11), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_11), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)) as month_11_status,
      IF(SUM(IF(ISNULL(month_12), 1, 0)) >= 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(month_12), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)) as month_12_status
      FROM budget_centers c, obligations_outlays o, budget_amounts a, appropriations p
      WHERE c.project_id = 173
      AND c.uid = o.funding_id
      AND a.budget_center_id = c.uid
      AND a.year = o.year_count
      AND c.appropriation = p.type
      AND o.type <> ‘Reported Outlay $:’ AND o.type <> ‘Outlay $ (Reported in FACTS)’
      GROUP BY o.year, o.year_count
      ORDER BY c.uid, o.year, o.year_count
  • looks like a separate list of current months’ status is needed to handle all/current months navigation…
    • query
      • SELECT o.year, o.year_count, o.project_id
        IF(SUM(IF(ISNULL(o.month_2), 1, 0)) = 4, ‘OVERDUE’, IF(SUM(IF(ISNULL(o.month_2), 1, 0)) > 0, ‘INCOMPLETE’, ‘CURRENT’)) as status
        FROM obligations_outlays o
        WHERE o.project_id=172
        AND (o.year + o.year_count) = 2013
        AND o.type <> ‘Reported Outlay $:’ AND o.type <> ‘Outlay $ (Reported in FACTS)’
        GROUP BY year, year_count

Dong Shin 11.25.2011

  • created ItemRenderer and skin for Month Status ComboBox
  • realized that Reported Outlay and Outlay $ (Reported in FACTS) are not shown to Project Managers. These should not be counted in Project Status
  • new Query
    • SELECT
      IF ( (((SUM(IF(ISNULL(month_1), 1, 0)) = 4 OR SUM(IF(ISNULL(month_2), 1, 0)) = 4) AND o.year+year_count=2013) OR ((SUM(IF(ISNULL(month_1), 1, 0)) = 4 OR SUM(IF(ISNULL(month_2), 1, 0)) = 4 OR SUM(IF(ISNULL(month_3), 1, 0)) = 4 OR SUM(IF(ISNULL(month_4), 1, 0)) = 4 OR SUM(IF(ISNULL(month_5), 1, 0)) = 4 OR SUM(IF(ISNULL(month_6), 1, 0)) = 4 OR SUM(IF(ISNULL(month_7), 1, 0)) = 4 OR SUM(IF(ISNULL(month_8), 1, 0)) = 4 OR SUM(IF(ISNULL(month_9), 1, 0)) = 4 OR SUM(IF(ISNULL(month_10), 1, 0)) = 4 OR SUM(IF(ISNULL(month_11), 1, 0)) = 4 OR SUM(IF(ISNULL(month_12), 1, 0)) = 4) AND o.year+year_count<2013)) ,’OVERDUE’,  ‘CURRENT’) as status,
      (
      IF ((SUM(IF(ISNULL(month_1), 1, 0)) = 4 AND o.year+year_count=2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_2), 1, 0)) = 4 AND o.year+year_count=2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_1), 1, 0)) = 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_2), 1, 0)) = 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_3), 1, 0)) = 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_4), 1, 0)) = 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_5), 1, 0)) = 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_6), 1, 0)) = 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_7), 1, 0)) = 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_8), 1, 0)) = 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_9), 1, 0)) = 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_10), 1, 0)) = 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_11), 1, 0)) = 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_12), 1, 0)) = 4 AND o.year+year_count<2013), 1, 0)
      )
      as overdue_count,
      (
      IF ((SUM(IF(ISNULL(month_1), 1, 0)) > 0 AND SUM(IF(ISNULL(month_1), 1, 0)) < 4 AND o.year+year_count=2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_2), 1, 0)) > 0 AND SUM(IF(ISNULL(month_2), 1, 0)) < 4  AND o.year+year_count=2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_1), 1, 0)) > 0 AND SUM(IF(ISNULL(month_1), 1, 0)) < 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_2), 1, 0)) > 0 AND SUM(IF(ISNULL(month_2), 1, 0)) < 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_3), 1, 0)) > 0 AND SUM(IF(ISNULL(month_3), 1, 0)) < 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_4), 1, 0)) > 0 AND SUM(IF(ISNULL(month_4), 1, 0)) < 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_5), 1, 0)) > 0 AND SUM(IF(ISNULL(month_5), 1, 0)) < 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_6), 1, 0)) > 0 AND SUM(IF(ISNULL(month_6), 1, 0)) < 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_7), 1, 0)) > 0 AND SUM(IF(ISNULL(month_7), 1, 0)) < 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_8), 1, 0)) > 0 AND SUM(IF(ISNULL(month_8), 1, 0)) < 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_9), 1, 0)) > 0 AND SUM(IF(ISNULL(month_9), 1, 0)) < 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_10), 1, 0)) > 0 AND SUM(IF(ISNULL(month_10), 1, 0)) < 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_11), 1, 0)) > 0 AND SUM(IF(ISNULL(month_11), 1, 0)) < 4 AND o.year+year_count<2013), 1, 0) +
      IF ((SUM(IF(ISNULL(month_12), 1, 0)) > 0 AND SUM(IF(ISNULL(month_12), 1, 0)) < 4 AND o.year+year_count<2013), 1, 0)
      )
      as incomplete_count,
      c.*, a.uid as a_uid, a.amount as amount, o.year, o.year_count,  p.duration
      FROM budget_centers c, obligations_outlays o, budget_amounts a, appropriations p
      WHERE o.project_id = 173 AND c.uid = o.funding_id AND a.budget_center_id = c.uid AND a.year = year_count AND c.appropriation = p.type
      AND o.type <> ‘Reported Outlay $:’ AND o.type <> ‘Outlay $ (Reported in FACTS)’
      GROUP BY o.year, year_count

Dong Shin 11.23.2011

  • more PA changes
    • queries done, tested
    • changed BudgetCenter and created BudgetCenterDetail classes to map the new queries to AS objects
    • overhauling Financial Data Navigator to use new data types
    • realized that there could be more than one overdue/incomplete columns in a year, tweaked the query (longer!).
      • SELECT
        IF ( (((SUM(IF(ISNULL(month_1), 1, 0)) = 6 OR SUM(IF(ISNULL(month_2), 1, 0)) = 6) AND o.year+year_count=2013) OR ((SUM(IF(ISNULL(month_1), 1, 0)) = 6 OR SUM(IF(ISNULL(month_2), 1, 0)) = 6 OR SUM(IF(ISNULL(month_3), 1, 0)) = 6 OR SUM(IF(ISNULL(month_4), 1, 0)) = 6 OR SUM(IF(ISNULL(month_5), 1, 0)) = 6 OR SUM(IF(ISNULL(month_6), 1, 0)) = 6 OR SUM(IF(ISNULL(month_7), 1, 0)) = 6 OR SUM(IF(ISNULL(month_8), 1, 0)) = 6 OR SUM(IF(ISNULL(month_9), 1, 0)) = 6 OR SUM(IF(ISNULL(month_10), 1, 0)) = 6 OR SUM(IF(ISNULL(month_11), 1, 0)) = 6 OR SUM(IF(ISNULL(month_12), 1, 0)) = 6) AND o.year+year_count<2013)) ,’OVERDUE’,  ‘CURRENT’) as status,
        (
        IF ((SUM(IF(ISNULL(month_1), 1, 0)) = 6 AND o.year+year_count=2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_2), 1, 0)) = 6 AND o.year+year_count=2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_1), 1, 0)) = 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_2), 1, 0)) = 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_3), 1, 0)) = 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_4), 1, 0)) = 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_5), 1, 0)) = 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_6), 1, 0)) = 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_7), 1, 0)) = 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_8), 1, 0)) = 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_9), 1, 0)) = 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_10), 1, 0)) = 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_11), 1, 0)) = 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_12), 1, 0)) = 6 AND o.year+year_count<2013), 1, 0)
        )
        as overdueCount,
        (
        IF ((SUM(IF(ISNULL(month_1), 1, 0)) > 0 AND SUM(IF(ISNULL(month_1), 1, 0)) < 6 AND o.year+year_count=2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_2), 1, 0)) > 0 AND SUM(IF(ISNULL(month_2), 1, 0)) < 6  AND o.year+year_count=2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_1), 1, 0)) > 0 AND SUM(IF(ISNULL(month_1), 1, 0)) < 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_2), 1, 0)) > 0 AND SUM(IF(ISNULL(month_2), 1, 0)) < 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_3), 1, 0)) > 0 AND SUM(IF(ISNULL(month_3), 1, 0)) < 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_4), 1, 0)) > 0 AND SUM(IF(ISNULL(month_4), 1, 0)) < 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_5), 1, 0)) > 0 AND SUM(IF(ISNULL(month_5), 1, 0)) < 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_6), 1, 0)) > 0 AND SUM(IF(ISNULL(month_6), 1, 0)) < 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_7), 1, 0)) > 0 AND SUM(IF(ISNULL(month_7), 1, 0)) < 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_8), 1, 0)) > 0 AND SUM(IF(ISNULL(month_8), 1, 0)) < 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_9), 1, 0)) > 0 AND SUM(IF(ISNULL(month_9), 1, 0)) < 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_10), 1, 0)) > 0 AND SUM(IF(ISNULL(month_10), 1, 0)) < 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_11), 1, 0)) > 0 AND SUM(IF(ISNULL(month_11), 1, 0)) < 6 AND o.year+year_count<2013), 1, 0) +
        IF ((SUM(IF(ISNULL(month_12), 1, 0)) > 0 AND SUM(IF(ISNULL(month_12), 1, 0)) < 6 AND o.year+year_count<2013), 1, 0)
        )
        as incompleteCount,
        c.*, a.uid as a_uid, a.amount as amount, o.year, o.year_count,  p.duration FROM budget_centers c, obligations_outlays o, budget_amounts a, appropriations p WHERE o.project_id = 100 AND c.uid = o.funding_id AND a.budget_center_id = c.uid AND a.year = year_count AND c.appropriation = p.type GROUP BY o.year, year_count