Skip to content

[HOLD for payment 2024-07-24] [#Wave-Control - Add Sage Intacct] Settings Configuration in NewDot: Export #43534

Closed

Description

@yuwenmemon

Tracking GH: https://github.com/Expensify/Expensify/issues/388780

Design doc section: https://docs.google.com/document/d/1k3ZFw8KB55yPUSCG6KYZlwpwEtmRt3eUshwxs7bZq5I/edit#heading=h.vn04szhrriv7


You will find in the following issue the pseudocode for the different flows. Use them as a guide in your implementation.

Export flow

Main page

function SageIntacctExportPage({policy}: WithPolicyProps) {
    const {export: exportConfig, pendingFields, errorFields} = policy?.connections?.intacct?.config ?? {};

    const currentSageIntacctOrganizationName = useMemo(() => getCurrentSageIntacctOrganizationName(policy ?? undefined), [policy]);

    const sections = useMemo(
        () => [
            {
                description: translate('workspace.sageIntacct.preferredExporter'),
                action: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_PREFERRED_EXPORTER.getRoute(policyID)),
                title: exportConfig.exporter || translate('workspace.sageIntacct.notConfigured'),
                hasError: !!errorFields?.export.exporter,
                pendingAction: pendingFields?.export.exporter,
            },
            {
                description: translate('workspace.sageIntacct.exportDate'),
                action: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT_DATE.getRoute(policyID)),
                title: translate('workspace.sageIntacct.exportDate'),
                hasError: !!errorFields?.export.exportDate,
                pendingAction: pendingFields?.export.exportDate,
            },
            {
                description: translate('workspace.sageIntacct.exportReimbursableExpensesAs'),
                action: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_REIMBURSABLE_EXPENSES.getRoute(policyID)),
                title: exportConfig.reimbursable ? translate(`workspace.accounting.reimbursable.${exportConfig.reimbursable}`) : translate('workspace.sageIntacct.notConfigured'),
                hasError: !!errorFields?.export.reimbursable,
                pendingAction: pendingFields?.export.reimbursable,
            },
            {
                description: translate('workspace.sageIntacct.exportNonReimbursableExpensesAs'),
                action: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES.getRoute(policyID)),
                title: exportConfig.nonReimbursable ? translate(`workspace.accounting.nonReimbursable.${exportConfig.nonReimbursable}`) : translate('workspace.sageIntacct.notConfigured'),
                hasError: !!errorFields?.export.nonReimbursable,
                pendingAction: pendingFields?.export.nonReimbursable,
            },
        ],
        [
		//... useMemo() dependencies
        ],
    );

    return (
        <ConnectionLayout
            displayName={SageIntacctExportPage.displayName}
            headerTitle="workspace.accounting.export"
            headerSubtitle={currentSageIntacctOrganizationName}
            accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.PAID]}
            policyID={policyID}
            featureName={CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED}
            contentContainerStyle={styles.pb2}
            titleStyle={styles.ph5}
            connectionName={CONST.POLICY.CONNECTIONS.NAME.SAGE_INTACCT}
        >
	                <Text style={[styles.ph5, styles.pb5]}>{translate('workspace.sageIntacct.exportDescription')}</Text>
            {sections.map((section) => (
                <OfflineWithFeedback key={section.description} pendingAction={section.pendingAction}>
                    <MenuItemWithTopDescription
                        title={section.title}
                        description={section.description}
                        shouldShowRightIcon
                        onPress={section.action}
                        brickRoadIndicator={section.hasError ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined}
                    />
                </OfflineWithFeedback>
            ))}
        </ConnectionLayout>
    );
}

SageIntacctExportPage.displayName = 'PolicySageIntacctExportPage';

export default withPolicy(SageIntacctExportPage);
Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~017260ab59e4fe16a6
  • Upwork Job ID: 1800760782833912827
  • Last Price Increase: 2024-06-12
  • Automatic offers:
    • hungvu193 | Contributor | 102699116
Issue OwnerCurrent Issue Owner: @puneetlath

Activity

  1. self-assigned this
    on Jun 12, 2024
  2. added
    NewFeatureSomething to build that is a new item.
    ExternalAdded to denote the issue can be worked on by a contributor
    and removed on Jun 12, 2024
  3. melvin-bot commented on Jun 12, 2024

    @melvin-bot

    Triggered auto assignment to @puneetlath (NewFeature), see https://stackoverflowteams.com/c/expensify/questions/14418#:~:text=BugZero%20process%20steps%20for%20feature%20requests for more details. Please add this Feature request to a GH project, as outlined in the SO.

  4. melvin-bot commented on Jun 12, 2024

    @melvin-bot

    ⚠️ It looks like this issue is labelled as a New Feature but not tied to any GitHub Project. Keep in mind that all new features should be tied to GitHub Projects in order to properly track external CAP software time ⚠️

  5. changed the title [-][#Wave-Control - Add Sage Intacct] Settings Configuration in NewDot: Export[/-] [+][$250] [#Wave-Control - Add Sage Intacct] Settings Configuration in NewDot: Export[/+] on Jun 12, 2024
  6. melvin-bot commented on Jun 12, 2024

    @melvin-bot
  7. added
    Help WantedApply this label when an issue is open to proposals by contributors
    on Jun 12, 2024
  8. melvin-bot commented on Jun 12, 2024

    @melvin-bot

    Triggered auto assignment to Contributor-plus team member for initial proposal review - @s77rt (External)

  9. 45 remaining items

  10. added
    Awaiting PaymentAuto-added when associated PR is deployed to production
    and removed on Jul 17, 2024
  11. changed the title [-][#Wave-Control - Add Sage Intacct] Settings Configuration in NewDot: Export[/-] [+][HOLD for payment 2024-07-24] [#Wave-Control - Add Sage Intacct] Settings Configuration in NewDot: Export[/+] on Jul 17, 2024
  12. melvin-bot commented on Jul 17, 2024

    @melvin-bot

    Reviewing label has been removed, please complete the "BugZero Checklist".

  13. melvin-bot commented on Jul 17, 2024

    @melvin-bot

    The solution for this issue has been 🚀 deployed to production 🚀 in version 9.0.7-8 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:

    If no regressions arise, payment will be issued on 2024-07-24. 🎊

    For reference, here are some details about the assignees on this issue:

  14. melvin-bot commented on Jul 17, 2024

    @melvin-bot

    BugZero Checklist: The PR adding this new feature has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:

    • [@hungvu193] Please propose regression test steps to ensure the new feature will work correctly on production in further releases.
    • [@puneetlath] Link the GH issue for creating/updating the regression test once above steps have been agreed upon.
  15. hungvu193 commented on Jul 17, 2024

    @hungvu193
    Contributor

    No payment needed for me here. Feel free to close this one.

  16. puneetlath commented on Jul 17, 2024

    @puneetlath
    Contributor

    Got it, thanks!

  17. QichenZhu commented on Jul 10, 2026

    @QichenZhu
    Contributor

    This is linked to an issue where enabling the Sage Intacct Default vendor switch while the vendors list is empty caused the app to crash. Fixed via PR #95345.

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 productionExternalAdded to denote the issue can be worked on by a contributorNewFeatureSomething to build that is a new item.WeeklyKSv2

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions