1- import type { OnyxEntry , OnyxUpdate } from 'react-native-onyx' ;
1+ import type { NullishDeep , OnyxEntry , OnyxUpdate } from 'react-native-onyx' ;
22import Onyx from 'react-native-onyx' ;
33import * as API from '@libs/API' ;
44import type {
@@ -8,6 +8,7 @@ import type {
88 OpenPolicyExpensifyCardsPageParams ,
99 RequestFeedSetupParams ,
1010 SetCompanyCardExportAccountParams ,
11+ SetFeedStatementPeriodEndDayParams ,
1112 UpdateCompanyCardNameParams ,
1213} from '@libs/API/parameters' ;
1314import { READ_COMMANDS , WRITE_COMMANDS } from '@libs/API/types' ;
@@ -21,7 +22,7 @@ import CONST from '@src/CONST';
2122import ONYXKEYS from '@src/ONYXKEYS' ;
2223import type { Card , CardFeeds } from '@src/types/onyx' ;
2324import type { AssignCard , AssignCardData } from '@src/types/onyx/AssignCard' ;
24- import type { AddNewCardFeedData , AddNewCardFeedStep , CardFeedDetails , CompanyCardFeed } from '@src/types/onyx/CardFeeds' ;
25+ import type { AddNewCardFeedData , AddNewCardFeedStep , CardFeedData , CardFeedDetails , CompanyCardFeed , StatementPeriodEnd , StatementPeriodEndDay } from '@src/types/onyx/CardFeeds' ;
2526import type { OnyxData } from '@src/types/onyx/Request' ;
2627
2728type AddNewCompanyCardFlowData = {
@@ -47,7 +48,7 @@ function clearAssignCardStepAndData() {
4748 Onyx . set ( ONYXKEYS . ASSIGN_CARD , { } ) ;
4849}
4950
50- function setAddNewCompanyCardStepAndData ( { data, isEditing, step} : AddNewCompanyCardFlowData ) {
51+ function setAddNewCompanyCardStepAndData ( { data, isEditing, step} : NullishDeep < AddNewCompanyCardFlowData > ) {
5152 Onyx . merge ( ONYXKEYS . ADD_NEW_COMPANY_CARD , { data, isEditing, currentStep : step } ) ;
5253}
5354
@@ -58,7 +59,15 @@ function clearAddNewCardFlow() {
5859 } ) ;
5960}
6061
61- function addNewCompanyCardsFeed ( policyID : string | undefined , cardFeed : CompanyCardFeed , feedDetails : CardFeedDetails , cardFeeds : OnyxEntry < CardFeeds > , lastSelectedFeed ?: CompanyCardFeed ) {
62+ function addNewCompanyCardsFeed (
63+ policyID : string | undefined ,
64+ cardFeed : CompanyCardFeed ,
65+ feedDetails : CardFeedDetails ,
66+ cardFeeds : OnyxEntry < CardFeeds > ,
67+ statementPeriodEnd : StatementPeriodEnd | undefined ,
68+ statementPeriodEndDay : StatementPeriodEndDay | undefined ,
69+ lastSelectedFeed ?: CompanyCardFeed ,
70+ ) {
6271 const authToken = NetworkStore . getAuthToken ( ) ;
6372 const workspaceAccountID = PolicyUtils . getWorkspaceAccountID ( policyID ) ;
6473
@@ -82,6 +91,7 @@ function addNewCompanyCardsFeed(policyID: string | undefined, cardFeed: CompanyC
8291 settings : {
8392 companyCards : {
8493 [ feedType ] : {
94+ statementPeriodEndDay : statementPeriodEndDay ?? statementPeriodEnd ?? null ,
8595 errors : null ,
8696 } ,
8797 } ,
@@ -134,6 +144,8 @@ function addNewCompanyCardsFeed(policyID: string | undefined, cardFeed: CompanyC
134144 feedDetails : Object . entries ( feedDetails )
135145 . map ( ( [ key , value ] ) => `${ key } : ${ value } ` )
136146 . join ( ', ' ) ,
147+ statementPeriodEnd,
148+ statementPeriodEndDay,
137149 } ;
138150
139151 API . write ( WRITE_COMMANDS . REQUEST_FEED_SETUP , parameters , { optimisticData, failureData, successData, finallyData} ) ;
@@ -811,6 +823,104 @@ function openPolicyAddCardFeedPage(policyID: string | undefined) {
811823 API . write ( WRITE_COMMANDS . OPEN_POLICY_ADD_CARD_FEED_PAGE , parameters ) ;
812824}
813825
826+ function setFeedStatementPeriodEndDay (
827+ policyID : string ,
828+ bankName : string ,
829+ domainAccountID : number ,
830+ newStatementPeriodEnd : StatementPeriodEnd | undefined ,
831+ newStatementPeriodEndDay : StatementPeriodEndDay | undefined ,
832+ oldStatementPeriodEndDay : StatementPeriodEnd | StatementPeriodEndDay | undefined ,
833+ ) {
834+ const authToken = NetworkStore . getAuthToken ( ) ;
835+
836+ const optimisticData : OnyxUpdate [ ] = [
837+ {
838+ onyxMethod : Onyx . METHOD . MERGE ,
839+ key : `${ ONYXKEYS . COLLECTION . SHARED_NVP_PRIVATE_DOMAIN_MEMBER } ${ domainAccountID } ` ,
840+ value : {
841+ settings : {
842+ companyCards : {
843+ [ bankName ] : {
844+ statementPeriodEndDay : newStatementPeriodEndDay ?? newStatementPeriodEnd ?? null ,
845+ pendingFields : {
846+ statementPeriodEndDay : CONST . RED_BRICK_ROAD_PENDING_ACTION . UPDATE ,
847+ } ,
848+ errorFields : {
849+ statementPeriodEndDay : null ,
850+ } ,
851+ } ,
852+ } ,
853+ } ,
854+ } ,
855+ } ,
856+ ] ;
857+
858+ const successData : OnyxUpdate [ ] = [
859+ {
860+ onyxMethod : Onyx . METHOD . MERGE ,
861+ key : `${ ONYXKEYS . COLLECTION . SHARED_NVP_PRIVATE_DOMAIN_MEMBER } ${ domainAccountID } ` ,
862+ value : {
863+ settings : {
864+ companyCards : {
865+ [ bankName ] : {
866+ pendingFields : {
867+ statementPeriodEndDay : null ,
868+ } ,
869+ } ,
870+ } ,
871+ } ,
872+ } ,
873+ } ,
874+ ] ;
875+
876+ const failureData : OnyxUpdate [ ] = [
877+ {
878+ onyxMethod : Onyx . METHOD . MERGE ,
879+ key : `${ ONYXKEYS . COLLECTION . SHARED_NVP_PRIVATE_DOMAIN_MEMBER } ${ domainAccountID } ` ,
880+ value : {
881+ settings : {
882+ companyCards : {
883+ [ bankName ] : {
884+ statementPeriodEndDay : oldStatementPeriodEndDay ?? null ,
885+ pendingFields : {
886+ statementPeriodEndDay : null ,
887+ } ,
888+ errorFields : {
889+ statementPeriodEndDay : ErrorUtils . getMicroSecondOnyxErrorWithTranslationKey ( 'common.genericErrorMessage' ) ,
890+ } ,
891+ } ,
892+ } ,
893+ } ,
894+ } ,
895+ } ,
896+ ] ;
897+
898+ const parameters : SetFeedStatementPeriodEndDayParams = {
899+ authToken,
900+ policyID,
901+ bankName,
902+ domainAccountID,
903+ statementPeriodEnd : newStatementPeriodEnd ,
904+ statementPeriodEndDay : newStatementPeriodEndDay ,
905+ } ;
906+
907+ API . write ( WRITE_COMMANDS . SET_FEED_STATEMENT_PERIOD_END_DAY , parameters , { optimisticData, successData, failureData} ) ;
908+ }
909+
910+ function clearErrorField ( bankName : string , domainAccountID : number , fieldName : keyof CardFeedData ) {
911+ Onyx . merge ( `${ ONYXKEYS . COLLECTION . SHARED_NVP_PRIVATE_DOMAIN_MEMBER } ${ domainAccountID } ` , {
912+ settings : {
913+ companyCards : {
914+ [ bankName ] : {
915+ errorFields : {
916+ [ fieldName ] : null ,
917+ } ,
918+ } ,
919+ } ,
920+ } ,
921+ } ) ;
922+ }
923+
814924export {
815925 setWorkspaceCompanyCardFeedName ,
816926 deleteWorkspaceCompanyCardFeed ,
@@ -831,4 +941,6 @@ export {
831941 openAssignFeedCardPage ,
832942 openPolicyAddCardFeedPage ,
833943 setTransactionStartDate ,
944+ setFeedStatementPeriodEndDay ,
945+ clearErrorField ,
834946} ;
0 commit comments