Repository navigation
Closed
Labels
Awaiting PaymentAuto-added when associated PR is deployed to productionAuto-added when associated PR is deployed to productionExternalAdded to denote the issue can be worked on by a contributorAdded to denote the issue can be worked on by a contributorNewFeatureSomething to build that is a new item.Something to build that is a new item.WeeklyKSv2KSv2
Description
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 Owner
Current Issue Owner: @puneetlathMetadata
Metadata
Labels
Awaiting PaymentAuto-added when associated PR is deployed to productionAuto-added when associated PR is deployed to productionExternalAdded to denote the issue can be worked on by a contributorAdded to denote the issue can be worked on by a contributorNewFeatureSomething to build that is a new item.Something to build that is a new item.WeeklyKSv2KSv2
Type
Projects
- StatusShow more project fieldsDone
Activity
melvin-bot commentedon Jun 12, 2024
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.melvin-bot commentedon Jun 12, 2024
[-][#Wave-Control - Add Sage Intacct] Settings Configuration in NewDot: Export[/-][+][$250] [#Wave-Control - Add Sage Intacct] Settings Configuration in NewDot: Export[/+]melvin-bot commentedon Jun 12, 2024
Job added to Upwork: https://www.upwork.com/jobs/~017260ab59e4fe16a6
melvin-bot commentedon Jun 12, 2024
Triggered auto assignment to Contributor-plus team member for initial proposal review - @s77rt (
External)45 remaining items
[-][#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[/+]melvin-bot commentedon Jul 17, 2024
Reviewinglabel has been removed, please complete the "BugZero Checklist".melvin-bot commentedon Jul 17, 2024
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:
melvin-bot commentedon Jul 17, 2024
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 commentedon Jul 17, 2024
No payment needed for me here. Feel free to close this one.
puneetlath commentedon Jul 17, 2024
Got it, thanks!
QichenZhu commentedon Jul 10, 2026
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.