Skip to content

[$250] [Awaiting Payment May 1st] [Wave Collect][QBO] Implement Export-related screens #37780

Description

@hayata-suenaga

Implement pages related to the import configurations for the QuickBooks Online (QBO) connection project.

QBO is a well-known accounting software that Expensify supports integration with. Once the user establishes a connection to QBO, Expensify exports expense reports, also known as money requests, to QBO. This enables expenses, referred to as transactions in QBO terminology, to appear in the accounting software.

Each page implemented in this issue lets the user specify how expense reports and other financial records are exported to QBO. Essentially, we map each expense type to an account (i.e., category) in QBO. This way, when expense reports and other data are exported to the accounting software, we know which account on QBO to export them to.

Terminologies

  • Accounts: categories used to classify transactions on QBO

  • Chart of Accounts: A list of available accounts

  • Kinds of entities on QBO
    These are entities you can create on QBO. Each entity represents different kind of financial transactions

Product Specifications

Export Main Page Screenshot 2024-03-05 at 10 44 43 AM Screenshot 2024-03-05 at 10 44 51 AM
Preferred Exporter Screenshot 2024-03-05 at 10 45 09 AM
Export Date Screenshot 2024-03-05 at 10 45 24 AM Screenshot 2024-03-05 at 10 45 38 AM
Out-of-pocket expenses Screenshot 2024-03-05 at 10 45 52 AM
Out-of-pocket expenses on a "Tax"-enabled workspace Screenshot 2024-03-05 at 10 46 00 AM
Invoices Screenshot 2024-03-05 at 10 46 18 AM
Company cards Screenshot 2024-03-05 at 10 46 26 AM
Company cards Screenshot 2024-03-05 at 10 46 26 AM

Design documentation excerpts

Intro Screenshot 2024-03-05 at 10 47 47 AM
Menu items page Screenshot 2024-03-05 at 11 53 58 AM Screenshot 2024-03-05 at 11 54 12 AM
Configuration Detail page Screenshot 2024-03-05 at 11 54 57 AM Screenshot 2024-03-05 at 11 55 06 AM Screenshot 2024-03-05 at 11 55 14 AM
Data retrieval Screenshot 2024-03-05 at 10 48 58 AM Screenshot 2024-03-05 at 10 49 08 AM

Notes

The configuration data resides under the connections property of the policy object in Onyx. While policy objects currently exist, the configuration data may not yet be accessible on the front end due to the pending implementation of backend code that pushes this data.

When writing your code, you can assume the connections data already exists and use mocked data for now. For the connections data format, refer to the provided example data.

If the function to call when any configuration data is updated is not yet available, leave the callback blank.

{"lastSync":{"successfulDate":"2024-02-14T19:27:47+0000","isSuccessful":true,"errorDate":"","source":"EXPENSIFYWEB"},"data":{"journalEntryAccounts":[{"glCode":"","name":"Accounts Payable","currency":"USD","id":"54"},{"glCode":"","name":"Don Donny Donaldson the Donny Don","currency":"USD","id":"94"},{"glCode":"","name":"Employee expenses","currency":"USD","id":"75"},{"glCode":"","name":"Inventory Asset","currency":"USD","id":"74"},{"glCode":"","name":"Prepaid Expenses","currency":"USD","id":"3"},{"glCode":"","name":"Uncategorized Asset","currency":"USD","id":"55"},{"glCode":"","name":"Undeposited Funds","currency":"USD","id":"4"}],"country":"US","bankAccounts":[{"glCode":"1071","name":"Bill.com Money In Clearing","currency":"USD","id":"93"},{"glCode":"1072","name":"Bill.com Money Out Clearing","currency":"USD","id":"92"},{"glCode":"","name":"Cash on hand","currency":"USD","id":"62"},{"glCode":"","name":"Checking Checks","currency":"USD","id":"61"},{"glCode":"","name":"Expensify Clearing Account","currency":"USD","id":"143"},{"glCode":"","name":"John's Checking (Remove later)","currency":"USD","id":"115"},{"glCode":"","name":"Previous Owner's Distributions","currency":"USD","id":"113"},{"glCode":"","name":"Test reactivate","currency":"USD","id":"131"}],"edition":"QuickBooks Online Plus","isMultiCurrencyEnabled":false,"homeCurrency":"USD","creditCards":[{"glCode":"","name":"Expensify Card Liability Account","currency":"USD","id":"135"},{"glCode":"","name":"walmartmoneycard (XXXXXXXXXXXX card)","currency":"USD","id":"58"}],"accountsReceivable":[{"glCode":"","name":"Accounts Receivable","currency":"USD","id":"53"}],"accountPayable":[{"glCode":"","name":"Accounts Payable","currency":"USD","id":"54"},{"glCode":"","name":"Don Donny Donaldson the Donny Don","currency":"USD","id":"94"}],"taxCodes":[],"otherCurrentAssetAccounts":[{"glCode":"","name":"Inventory Asset","currency":"USD","id":"74"},{"glCode":"","name":"Prepaid Expenses","currency":"USD","id":"3"},{"glCode":"","name":"Uncategorized Asset","currency":"USD","id":"55"},{"glCode":"","name":"Undeposited Funds","currency":"USD","id":"4"}],"employees":[{"firstName":"Pamela","lastName":"Beesly","name":"Beesly, Pamela","id":"76","email":"pamb@dkfjhskdfjhk.com"},{"firstName":"Lois","lastName":"Steam","name":"Dr. Steam, Lois","id":"77","email":"d2woeirjw@dfskjdfh.com"},{"firstName":"Integrations","lastName":"Test","name":"Integrations Creds Test","id":"131","email":"integrationtestingcreds@expensify.com"},{"firstName":"Dwight","lastName":"Schrute","name":"Mr Dwight K. Schrute","id":"30","email":"sdlfkjsl@ssldkfjsdlkfj.com"},{"firstName":"NonTerminated","lastName":"Employee","name":"NonTerminated Employee","id":"125","email":"nmurray@expensifail.com"}],"vendors":[{"name":"+14153166423@expensify.sms","currency":"USD","id":"94","email":"+14153166423@expensify.sms"},{"name":"Account Maintenance Fee","currency":"USD","id":"141","email":""},{"name":"Admin Test","currency":"USD","id":"119","email":"admin@qbocard.com"},{"name":"Alberto Gonzalez-Cela","currency":"USD","id":"104","email":"alberto@expensify.com"},{"name":"Aldo test QBO2 QBO2 Last name","currency":"USD","id":"140","email":"admin@qbo.com"},{"name":"Brandon Stites","currency":"USD","id":"117","email":"bstites+qbo@expensify.com"},{"name":"Carlos Alvarez","currency":"USD","id":"92","email":"carlos@expensify.com"},{"name":"Carlos Martins","currency":"USD","id":"129","email":"cmartins@expensify.com"},{"name":"Credit Card Misc.","currency":"USD","id":"18","email":""},{"name":"Cristi Dev5","currency":"USD","id":"146","email":"cristi+dev5@expensify.com"},{"name":"Cristi Exfy21","currency":"USD","id":"147","email":"cristi+exfy21@gmail.com"},{"name":"Daniel Viiiii","currency":"USD","id":"42","email":""},{"name":"David Drake","currency":"USD","id":"111","email":"ddrake@expensify.com"},{"name":"Debit Card Misc.","currency":"USD","id":"28","email":""},{"name":"Doe, Jane","currency":"USD","id":"97","email":""},{"name":"Expensify Multi Email Vendor","currency":"USD","id":"31","email":"francois+dev1@expensify.com,francois+dev2@expensify.com"},{"name":"Expensify QA","currency":"USD","id":"12","email":"qa@expensify.com"},{"name":"FirstName LastName","currency":"USD","id":"143","email":"test41232523@gmail.com"},{"name":"FirstName2 LastName","currency":"USD","id":"144","email":"test999912341@gmail.com"},{"name":"Francois %&#';","currency":"USD","id":"85","email":"francois+dev@expensify.com"},{"name":"Francois Laithier","currency":"USD","id":"115","email":"francois@expensify.com"},{"name":"Gabe M Essner","currency":"USD","id":"38","email":"employee.gabe@expensicorp.com"},{"name":"Home Depot","currency":"USD","id":"62","email":""},{"name":"James Payee","currency":"USD","id":"135","email":"admin@payee.com"},{"name":"Jane Doe","currency":"USD","id":"96","email":""},{"name":"John 🔥 Lee","currency":"USD","id":"106","email":"john@expensify.com"},{"name":"Kevin Sullivan","currency":"USD","id":"47","email":"employee.kevin@expensicorp.com"},{"name":"Kosuke Integrate","currency":"USD","id":"86","email":"kosuke@integrations.com"},{"name":"Manchu Wok","currency":"USD","id":"71","email":""},{"name":"Marc Glasser","currency":"USD","id":"88","email":"marc+2@expensify.com"},{"name":"Matador","currency":"USD","id":"70","email":""},{"name":"Mcdonalds","currency":"USD","id":"61","email":""},{"name":"Nathalie Kuoch","currency":"USD","id":"32","email":"nkuoch@expensify.com"},{"name":"Nikki Admin 3","currency":"USD","id":"114","email":"nikki@admintest3.com"},{"name":"Nikki Wines","currency":"USD","id":"93","email":"nikkiwines@expensify.com"},{"name":"Office Depot","currency":"USD","id":"64","email":""},{"name":"Phone Number Only Vendor","currency":"USD","id":"90","email":""},{"name":"Qadir Haqq","currency":"USD","id":"87","email":"qadir@expensify.com"},{"name":"Quick Fish","currency":"USD","id":"63","email":""},{"name":"Starbucks","currency":"USD","id":"60","email":""},{"name":"Test duplicate vendor","currency":"USD","id":"132","email":""},{"name":"Testy McTesterson","currency":"USD","id":"84","email":"test@somethingneat.com"},{"name":"Vendor No Nothing","currency":"USD","id":"91","email":""},{"name":"Vincent Vega","currency":"USD","id":"103","email":"me@francois.lt"},{"name":"Walgreens","currency":"USD","id":"43","email":""},{"name":"Yuwen Failure UK","currency":"USD","id":"113","email":"yuwen@expensifail.com"},{"name":"a a","currency":"USD","id":"121","email":"test@continuousreconciliation.com"},{"name":"aa@aa.aa","currency":"USD","id":"98","email":"aa@aa.aa"},{"name":"abcdef","currency":"USD","id":"116","email":"qbotest@qbotest.com"},{"name":"admin1@dell.com","currency":"USD","id":"100","email":"admin1@dell.com"},{"name":"admin2@domain1.com","currency":"USD","id":"109","email":"admin2@domain1.com"},{"name":"aldo+qbo@expensifail.com","currency":"USD","id":"138","email":"aldo+qbo@expensifail.com"},{"name":"aldo+test-tags-expense-filter@expensifail.com","currency":"USD","id":"136","email":"aldo+test-tags-expense-filter@expensifail.com"},{"name":"alexbeaman@expensifail.com","currency":"USD","id":"123","email":"alexbeaman@expensifail.com"},{"name":"applausetester+qbo@applause.expensifail.com","currency":"USD","id":"78","email":"applausetester+qbo@applause.expensifail.com"},{"name":"autoqaqbd@expensifail.com","currency":"USD","id":"69","email":"autoqaqbd@expensifail.com"},{"name":"autoqaqbo@expensifail.com","currency":"USD","id":"52","email":"autoqaqbo@expensifail.com"},{"name":"autoqaqbouk@expensifail.com","currency":"USD","id":"79","email":"autoqaqbouk@expensifail.com"},{"name":"bmeeks@expensify.com","currency":"USD","id":"65","email":"bmeeks@expensify.com"},{"name":"bondydaa@gmail.com","currency":"USD","id":"80","email":"bondydaa@gmail.com"},{"name":"brian@expensifail.com","currency":"USD","id":"51","email":"brian@expensifail.com"},{"name":"brianqatest+44@gmail.com","currency":"USD","id":"75","email":"brianqatest+44@gmail.com"},{"name":"ddrake@expensifail.com","currency":"USD","id":"112","email":"ddrake@expensifail.com"},{"name":"employee.oswalt@expensicorp.com","currency":"USD","id":"26","email":"employee.oswalt@expensicorp.com"},{"name":"employee.sasha@expensicorp.com","currency":"USD","id":"37","email":"employee.sasha@expensicorp.com"},{"name":"francois+dev@expensify.com","currency":"USD","id":"21","email":"francois+dev@expensify.com"},{"name":"francois@expensifail.com","currency":"USD","id":"107","email":"francois@expensifail.com"},{"name":"horus@expensify.com","currency":"USD","id":"127","email":"horus@expensify.com"},{"name":"manager.caitlin@expensicorp.com","currency":"USD","id":"46","email":"manager.caitlin@expensicorp.com"},{"name":"manager.kluger@expensicorp.com","currency":"USD","id":"29","email":"manager.kluger@expensicorp.com"},{"name":"manager.liapounova@expensicorp.com","currency":"USD","id":"48","email":"manager.liapounova@expensicorp.com"},{"name":"manager.matt@expensicorp.com","currency":"USD","id":"27","email":"manager.matt@expensicorp.com"},{"name":"manager.oswalt@expensicorp.com","currency":"USD","id":"34","email":"manager.oswalt@expensicorp.com"},{"name":"manager.perkins@expensicorp.com","currency":"USD","id":"33","email":"manager.perkins@expensicorp.com"},{"name":"manager.plaat@expensicorp.com","currency":"USD","id":"68","email":"manager.plaat@expensicorp.com"},{"name":"manager.reid@expensicorp.com","currency":"USD","id":"49","email":"manager.reid@expensicorp.com"},{"name":"manager.singuanti@expensicorp.com","currency":"USD","id":"40","email":"manager.singuanti@expensicorp.com"},{"name":"member1@domain1.com","currency":"USD","id":"108","email":"member1@domain1.com"},{"name":"neil+integration-dep@expensifail.com","currency":"USD","id":"137","email":"neil+integration-dep@expensifail.com"},{"name":"puneet@expensifail.com","currency":"USD","id":"53","email":"puneet@expensifail.com"},{"name":"ray@expensifail.com","currency":"USD","id":"50","email":"ray@expensifail.com"},{"name":"ray@expensify.com","currency":"USD","id":"102","email":"ray@expensify.com"},{"name":"rchang+billingreceipt2@expensify.com","currency":"USD","id":"101","email":"rchang+billingreceipt2@expensify.com"},{"name":"richards.tests+52@gmail.com","currency":"USD","id":"67","email":"richards.tests+52@gmail.com"},{"name":"richards.tests+80@gmail.com","currency":"USD","id":"66","email":"richards.tests+80@gmail.com"},{"name":"rohan@expensifail.com","currency":"USD","id":"59","email":"rohan@expensifail.com"},{"name":"scott@expensifail.com","currency":"USD","id":"56","email":"scott@expensifail.com"},{"name":"test@balancedebits.com","currency":"USD","id":"142","email":"test@balancedebits.com"},{"name":"test@billcomaddon.com","currency":"USD","id":"120","email":"test@billcomaddon.com"},{"name":"testFirst testSecondd","currency":"USD","id":"105","email":"rchang+billingreceipt11@expensify.com"},{"name":"testing-old-qbo-connections-bla@expensifail.com","currency":"USD","id":"145","email":"testing-old-qbo-connections-bla@expensifail.com"},{"name":"vit@expensify.com","currency":"USD","id":"128","email":"vit@expensify.com"},{"name":"yuwen@expensify.com","currency":"USD","id":"36","email":"yuwen@expensify.com"},{"name":"yuwen@qbocardusers.com","currency":"USD","id":"110","email":"yuwen@qbocardusers.com"},{"name":"yuwen@yuwenmemon.com","currency":"USD","id":"57","email":"yuwen@yuwenmemon.com"},{"name":"zl@expensify.com","currency":"USD","id":"39","email":"zl@expensify.com"}]},"config":{"realmId":"1423559500","credentials":{"access_token":"qJ0f8ponYY0HjHRv2FPfwwGefXELYDKvN1AP9OzvPbDtMcv9/ySH0dSUZV4kJCmbvNcWLrJOG9AGWwvROdu+ky5QqvTFSNOfD8oYqNJXeeUpj+OBcnzyjFaUaCwHOWFKFSsDB4rwnIQdJGBJ/OScBIOB4onFluqy9H3HkcGDtVYMmST1kHNU621nwslZv5y+D6h+jTa6ijkTknVJb98QrQ+qKflCBP+3OJ/mnv/Kx1BULBwduFY6kxj+MYLqBee4AfaPZIVrAwPE1TTdC0WNX9NijRmNLF/qpOsSyIvN9lacWeETCqsF3sRVZfT6pw87fF9/jwqSFtNFX39FHvTumzrE+NGNjXYU/+f9bqB7tdegI7ygJk+lXvaAgo9em+WWM3NRsyhy6bgiYDgZItdg+FWIWfxpYZvAJcxgmpeZgZ2EBjbuURJx685hne6N0k7aS6ZhUQyL2KG0DqbKhEzOt7jvT7Fe5n5HekVFf5F3TUIrXSvQAVekptbU3iAWE5I09JQznHzE21t+hxavL7vrLdaJ41aF8anP1eagCHIBSDfu668ZamsnWyxcqwKWskaBqoqZmPgbgWQvYimvH6WIR4ciCOaKKKVzalmynEdvE3QS+7643t641R5NTc8temL6iZJ0hG6Q1dlGmzU6JT388x9/6fhSCI+QfDq8N6o+0Mvecb9T2MEcwOTkCQkZcyJ1r+6SuLVi0BYSuaBmIN0uv+PzpD1gQU1AJKcgNxkX/sReLelwA+kwRbVyc0zonewabItszWmbymr5ECBI+JlTNk8O3D5stMTxrZgUE8dF0KnNMJSCqD0yPzcJ+UFVTRmU4QOSRICWwsZwKrEXVn6eZLiYfRrLX1NBMEKYpMxwmO4PZKAQrOupWKIKCL7+c8bXC7KtHI56Z9sGP7KxtXpwsG3ZvLR84iY7l65QHtKXG4sDyMefDBIKT/fox+kLajuAxS1pFC10y7LSrYXo1VRXiVcAhftTKbWy7jsDSMRLmAcWT8MQLc43hDTFV3j1ZbtcAzCw5FLZpQp67EdWx+NWyv1Mx4mnxK1BvHPnQXhKDS8=;ydb44p5qLeQAydq3v5s20w==;ZtEy+UadbfITMaQ4pQgBPKQITGXuGXKqaOnyr7+8PblVuF1FVNxag8qKNOHtxOfDwiQRkApoB/mALmaeMWt8qw==","refresh_token":"+XurJAK/cV4oWdGPs0mxZ+6cet751ltxmCtyM8e+hu1K/qssa3O2b14ExQhoU1gBxEW+0t2xamm1E3e9O4X3EA==;5oylvn/1xhDCavMV3wW9XA==;qFf/QXBz6RUVniniKiHXMuCFX1j+NMIxfMg89PpOYRBFypF0tnei+DNBxD7m+YMQKdoKb2DcINJZxpLaDwKYkg==","expires":1709240280,"companyID":"1423559500","realmId":"1423559500","scope":"Accounting","companyName":"Expensify","token_type":"bearer"},"companyName":"Expensify","autoSync":{"jobID":"153232671","enabled":true},"syncPeople":false,"syncItems":false,"markChecksToBePrinted":false,"reimbursableExpensesExportDestination":"check","nonReimbursableExpensesExportDestination":"credit_card","reimbursableExpensesAccount":null,"nonReimbursableExpensesAccount":null,"autoCreateVendor":true,"hasChosenAutoSyncOption":true,"syncClasses":"TAG","syncCustomers":"TAG","syncLocations":"NONE","exportDate":"LAST_EXPENSE","lastConfigurationTime":0,"syncTax":false,"enableNewCategories":true,"export":{"exporter":"hayata+test0214test1@expensifail.com"}}}

Please ask questions

This task comes with a lengthy list of specifications. Please direct any questions you may have to @hayata-suenaga. You most likely will have some. 🙇

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~0101e324b223d9ddab
  • Upwork Job ID: 1788004110853746688
  • Last Price Increase: 2024-05-08
  • Automatic offers:
    • s77rt | Contributor | 0
Issue OwnerCurrent Issue Owner: @abdulrahuman5196

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionDailyKSv2ExternalAdded to denote the issue can be worked on by a contributorNewFeatureSomething to build that is a new item.

Type

No type

Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions