-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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 Issue: https://github.com/Expensify/Expensify/issues/377671
Design Doc Section: https://docs.google.com/document/d/1WubNv_VAv78IxG4FKsi9aS0pWESfWvUYbqBAAy5b4bc/edit#heading=h.ursdzd4yhqi0
Route
- Route:
/settings/workspaces/{policyID}/accounting/netsuite/subsidiary - PageComponent:
NetSuiteSubsidiarySelector - Calls
UpdateNetSuiteSubsidiarysubsidiaryName: name of the selected subsidiary fromoptions.data.subsidiaryListarray.- The pendingAction for the OfflineWithFeedback component will be
policy.pendingFields.subsidiary
We’ll have a NetSuiteSubsidiarySelectorPage, which will populate the list of subsidiaries from the data.subsidiaryList. The sample data shows the list of subsidiaries here.
The basic code for the page will look as follows:
function NetSuiteNetSuiteSubsidiarySelectorPage({policy}: WithPolicyConnectionsProps) {
const policyID = policy?.id ?? '';
const { subsidiary } = policy?.connections?.netsuite?.config ?? {};
const subsidiaryOptions = useMemo<SelectorType[]>(() => {
const subsidiaryList = policy?.connections?.netsuite?.options?.data.subsidiaryList ?? {} ?? [];
const isMatchFound = subsidiaryList?.some(({subsidiaryObj}) => subsidiaryObj === subsidiary); // toLowerCase() ?
return (subsidiaryList ?? []).map(({id, name}, index) => ({
value: name,
text: name,
keyForList: id,
isSelected: isMatchFound ? subsidiary === id : index === 0,
}));
});
const listHeaderComponent = useMemo( // Move this to another file as a standalone component.
() => (
<View style={[styles.pb2, styles.ph5]}>
<Text style={[styles.pb5, styles.textNormal]}>{translate('workspace.netsuite.subsidiary.description')}</Text>
</View>
),
[translate, styles.pb2, styles.ph5, styles.pb5, styles.textNormal],
);
const initiallyFocusedOptionKey = useMemo(() => subsidiaryList?.find((subsidiary) => subsidiary.isSelected)?.keyForList, [subsidiaryOptions]);
const updateSubsidiary = useCallback(
({value}: SelectorType) => {
Connections.updateNetSuiteSubsidiary(policyID, CONST.POLICY.CONNECTIONS.NAME.NET_SUITE, CONST.NET_SUITE_CONFIG, {
subsidiary: value,
subsidiaryID: //
});
Navigation.goBack(ROUTES.POLICY_ACCOUNTING.getRoute(policyID));
},
[policyID],
);
return (
<SelectionScreen
policyID={policyID}
accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.PAID]}
featureName={CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED}
displayName={NetSuiteNetSuiteSubsidiarySelectorPage.displayName}
sections={[{data: subsidiaryOptions}]}
listItem={RadioListItem}
onSelectRow={updateSubsidiary}
initiallyFocusedOptionKey={initiallyFocusedOptionKey}
headerContent={listHeaderComponent}
onBackButtonPress={() => Navigation.goBack(ROUTES.POLICY_ACCOUNTING.getRoute(policyID))}
title="workspace.netsuite.subsidiary.title"
/>
);
}
NetSuiteNetSuiteSubsidiarySelectorPage.displayName = 'NetSuiteNetSuiteSubsidiarySelectorPage';
export default withPolicyConnections(NetSuiteNetSuiteSubsidiarySelectorPage);Upwork Automation - Do Not Edit
- Upwork Job URL: https://www.upwork.com/jobs/~01d62f33ad0e1e9fe6
- Upwork Job ID: 1800281430610989476
- Last Price Increase: 2024-06-10
Issue Owner
Current Issue Owner: @Issue Owner
Current Issue Owner: @JmillsExpensifyReactions are currently unavailable
Metadata
Metadata
Assignees
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
Status
Done
