{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Integrating Chrome River Expenses & Invoices with Elite 3E\n", "\n", "**Source:** https://github.com/junctionapps/3e-notebooks/ \n", "**Author:** aaron@junctionapps.ca\n", "\n", "## Considerations\n", "Controlling everything from 3E requires some forethought. Some notes breaking it down follow - I hope to update this notebook as I re-write the whole process in Python. I've done this with Intapp Integration Builder already, but having gone through it, there are few things I'd do differently to make it better. The same decisions/choices/details must be determined in any case. \n", "\n", "My personal preference is to use Integration Builder if you have it (with logging being one of the main drivers of that recommendation), otherwise, let 3E handle the scheduling and create a Python endpoint using Bottle, Flask, Django, Pyramid or whatever framework to do the calls to Chrome River. It is possible to do it all in VB, but the libraries and support for Python far outweight keeping it all under the IDE and it's aging interface.\n", "\n", "If it is not clear, the intent here is to automate everything. No person should be manually controlling this process, with exception granted on the import's timing if Finance staffing has such a requirement. The accounts payable clerk could be responsible for kicking off an import when ready to process instead of having the imports run on a pre-defined schedule.\n", "\n", "- Manage variables (url, user, password) (Override System Options)\n", " - Create a Chrome River Section\n", " - Add option for chrome_api_user\n", " - Add option for chrome_api_password\n", " - Add option for chrome_api_url\n", " - Update your instance cloning instructions to ensure URL gets updated when copying prod to qa\n", " \n", "- Voucher\n", " - Alter Voucher to include Chrome River report_id \n", " - Alter Voucher to include a boolean for images attached if importing images\n", " - Detemine values for load source, load group for voucher and children (GL or Matter Charges)\n", " \n", "- Create Import Event archetype, object\n", " - Create a tax mapping for Chrome River Taxes to tax fields in Voucher GL and Matter Charge grids. If significant numbers, it may be worth creating an archtype/object/forms/process to manage.\n", " - Thoroughly understand taxes\n", "- Create instances of the Import event (NxNtfEvent) which handle invidually or in groups\n", " - Expense import\n", " - Vendor invoice import\n", " \n", "- Create Export Event archetype, object and decide if feeding all everytime or separating by the various feeds. Decide if updating in bulk, or at times of change. \n", " - Discuss Security Tree placement.\n", "- Create instances of the Export event(s) (NxNtfEvent) which handle invidually or in groups.\n", " - Matter/Allocations\n", " - People\n", " - Entity\n", " - GL\n", " - Vendor\n", " - Paid Expenses\n", " \n", "- Create a set of tasks (Notification Task Manager). Keep in mind the desire to coordinate with the schedule on Chrome River. Also good to remember at time of writing, Chrome River is not timezone aware so must be manually adjusted when the clocks change for daylight savings.\n", " - Imports to 3E, including decision if images are imported and when (time of import or nightly). Decide if landing in an action list for a particular role/user, or posting immediately.\n", " - Review AP account for Expenses, Invoices, Visa\n", " - Review business rules for AP account (ex: certain office triggers specific unit)\n", " - Pull/Import to 3E the Chrome River Expense Export\n", " - Pull/Import to 3E the Chrome River Vendor Invoice Export\n", " \n", "- Create a 3E application to log requests, feed totals, and responses to the 3E web service calls, with ability to re-run a given import. This is handy in the event an import is run, lands on an action list and gets cancelled in error.\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }