Parent: Expensify/Expensify#589894
Design doc: https://docs.google.com/document/d/1qQXU4EIij-OyCpk6z8idi0ch0rP4XtIQ0770STZeF5E/edit
Scope
Build the FFA Advanced page for Certinia with the Auto Sync and Sync Reimbursed Reports toggles. PSA conditional rendering (Tax Non-Billable, Export Foreign Currency) is added in a later Release 2 issue.
Implementation notes (from design doc)
src/pages/workspace/accounting/certinia/advanced/CertiniaAdvancedPage.tsx — Create
Uses ConnectionLayout. For Release 1, FFA-only content. Each row in OfflineWithFeedback with pendingAction, errors, and onCloseError props.
FFA content:
- Auto Sync:
ToggleSettingOptionRow. Subtitle: "Expensify will automatically sync with Certinia every day." isActive={!!config?.autoSync?.enabled}. onToggle={(enabled) => updateFinancialForceAutoSync(policyID, enabled)}.
- Sync Reimbursed Reports:
ToggleSettingOptionRow. Subtitle: "With this option enabled, anytime a Payable Invoice is paid in FFA, the related Expensify report will be automatically marked as reimbursed." isActive={!!config?.advanced?.syncReimbursedReports}. onToggle={(enabled) => updateFinancialForceSyncReimbursedReports(policyID, enabled)}.
Tests
- Advanced page renders both toggles.
- Each toggle fires the corresponding action with the expected optimistic pending indicator and reverts on simulated API failure.
- Offline: toggling queues the update; on reconnect, the API call fires and the indicator clears.
Issue Owner
Current Issue Owner: @thelullabyy
Parent: Expensify/Expensify#589894
Design doc: https://docs.google.com/document/d/1qQXU4EIij-OyCpk6z8idi0ch0rP4XtIQ0770STZeF5E/edit
Scope
Build the FFA Advanced page for Certinia with the Auto Sync and Sync Reimbursed Reports toggles. PSA conditional rendering (Tax Non-Billable, Export Foreign Currency) is added in a later Release 2 issue.
Implementation notes (from design doc)
src/pages/workspace/accounting/certinia/advanced/CertiniaAdvancedPage.tsx— CreateUses
ConnectionLayout. For Release 1, FFA-only content. Each row inOfflineWithFeedbackwithpendingAction,errors, andonCloseErrorprops.FFA content:
ToggleSettingOptionRow. Subtitle: "Expensify will automatically sync with Certinia every day."isActive={!!config?.autoSync?.enabled}.onToggle={(enabled) => updateFinancialForceAutoSync(policyID, enabled)}.ToggleSettingOptionRow. Subtitle: "With this option enabled, anytime a Payable Invoice is paid in FFA, the related Expensify report will be automatically marked as reimbursed."isActive={!!config?.advanced?.syncReimbursedReports}.onToggle={(enabled) => updateFinancialForceSyncReimbursedReports(policyID, enabled)}.Tests
Issue Owner
Current Issue Owner: @thelullabyy