Parramatta City
Embed Size (px)
description
Transcript of Parramatta City
CiviCRM
Parramatta Citymeals on wheels (MOW)Brian ShaughnessyLighthouse Consulting & Designwww.lcdservices.biz
backgrounddistrict/region of Sydneyprovides services to the residentsCiviCRM used extensively for back-office supportmeals on wheels
meals on wheelsserves elderly citizens of the districtdelivers meals at discounted prices M-Fprovides various optionschilled/frozen mealssoupssaladsjuicedessert
meals on wheelscreative use of CiviCRM architectureallows full integration with other services managed through the siterequired extensive customization, but also relies heavily on the core data structuresactivity recordclients place orders on a weekly basisorder detailsweek/year [one order per week/year; future only]exceptions [skipped by bulk generator]custom data set for M-F with fields for each meal typedietary details stored in custom data attached to contact record
payment recordseparated order (activity) from financial obligation (contribution)modeled after event/membership structurelink activity to contribution orders_activity_payment (activity_id, contribution_id)added support for > 1 payment per order
payment recordauto-created with activity ordercalculates total due based on standard meal ratesconstants defined in codeeventually place in option valuesdetail the order in contribution recordrecord changes to the orderadjustment to contribution recordorder history through notes (>1 per contrib)
bulk order generationclients place orders on a weekly basismost orders are exactly the same from one week to the nextneeded to develop method for quickly generating future-week activity records based on prior weekbulk order generationmanually triggered, but options locked downlog table tracks bulk order historydetermine last week runlog order counts and activity IDs
bulk order: special handlingorder exceptionsskipped by bulk order generatormost immediate prior non-exception order usedaccount for existing orders for a given week/yearon-holdhold start date/hold end dateif any overlap, skip bulk generation
bulk order: special handlingthird party payersoft credit to clientpayment to TPP entityhandled with relationship defining when TPP begins/endsadmin feesystem default; contact overridedirect depositset contrib status = completedelse = pending
stock managementset starting valuesupdate when order is created/updated/deletedspecial contact: Parramatta Stock Managerstock adjustment activity typesdashlet report to summarize current levelssummary data handled in stock_log tabletracks current levelsline item stored as activities
reportingughhhhoriginally planned to use reporting frameworkspecs required many unique calculationsunique data handling (field criteria interaction)too many optionsmost reports built (or rebuilt) as purely custom implementations
packaging labelsgenerate by week number/yearcalculate number of packages based on meal/salad/soup/dessert combotrack frozen/chilled
packaging labels
full delivery run sheetused by delivery staffeach contact is assigned a run number (geographic assignment)MS Word export (scalability/easy to modify)
full delivery run sheetorder invoicesgenerate invoices for pending payments or by date range
order invoices
order statementsfilter by payment status, contact, date rangecalculate balance based on various criteria
order statementother stuffactive servicescustom data groupother data groups dependent on active status
quarterly stats reportgenerate calculations per service for a variety of stats
quarterly stats report
what Id do differentlytorture by custom field proliferationmove as much as possible into dedicated CRM pathspend more time working through data model with clientbetter method for classifying meal field typesspend more time developing specs. for report requirements (much time was spent, but it always seems like more is needed)challengesdeciding what to lock down to prevent user-created failuresdate-model (week/year): effective for the situation, but required some "translation" for end usersend of year wrap-around a painmission-critical system with constantly evolving specsproject statuscore system in production for approx. 1 yearongoing report/statement/invoice tweaking for quite some timecurrently wrapping up final adjustments for reports and closing the project