diff --git a/obp-api/src/main/scala/code/accountattribute/AccountAttribute.scala b/obp-api/src/main/scala/code/accountattribute/AccountAttribute.scala index b6ff504ca..1def75c39 100644 --- a/obp-api/src/main/scala/code/accountattribute/AccountAttribute.scala +++ b/obp-api/src/main/scala/code/accountattribute/AccountAttribute.scala @@ -55,12 +55,14 @@ trait AccountAttributeProvider { accountAttributeId: Option[String], name: String, attributeType: AccountAttributeType.Value, - value: String): Future[Box[AccountAttribute]] + value: String, + productInstanceCode: Option[String]): Future[Box[AccountAttribute]] def createAccountAttributes(bankId: BankId, accountId: AccountId, productCode: ProductCode, - accountAttributes: List[ProductAttribute]): Future[Box[List[AccountAttribute]]] + accountAttributes: List[ProductAttribute], + productInstanceCode: Option[String]): Future[Box[List[AccountAttribute]]] def deleteAccountAttribute(accountAttributeId: String): Future[Box[Boolean]] @@ -87,12 +89,14 @@ class RemotedataAccountAttributeCaseClasses { accountAttributeId: Option[String], name: String, attributeType: AccountAttributeType.Value, - value: String) + value: String, + productInstanceCode: Option[String]) case class createAccountAttributes(bankId: BankId, accountId: AccountId, productCode: ProductCode, - accountAttributes: List[ProductAttribute]) + accountAttributes: List[ProductAttribute], + productInstanceCode: Option[String]) case class deleteAccountAttribute(accountAttributeId: String) diff --git a/obp-api/src/main/scala/code/accountattribute/MappedAccountAttributeProvider.scala b/obp-api/src/main/scala/code/accountattribute/MappedAccountAttributeProvider.scala index 5398720e2..0761b14a1 100644 --- a/obp-api/src/main/scala/code/accountattribute/MappedAccountAttributeProvider.scala +++ b/obp-api/src/main/scala/code/accountattribute/MappedAccountAttributeProvider.scala @@ -90,7 +90,8 @@ object MappedAccountAttributeProvider extends AccountAttributeProvider { accountAttributeId: Option[String], name: String, attributeType: AccountAttributeType.Value, - value: String): Future[Box[AccountAttribute]] = { + value: String, + productInstanceCode: Option[String]): Future[Box[AccountAttribute]] = { accountAttributeId match { case Some(id) => Future { MappedAccountAttribute.find(By(MappedAccountAttribute.mAccountAttributeId, id)) match { @@ -102,6 +103,7 @@ object MappedAccountAttributeProvider extends AccountAttributeProvider { .mName(name) .mType(attributeType.toString) .mValue(value) + .mProductInstanceCode(productInstanceCode.getOrElse("")) .saveMe() } case _ => Empty @@ -116,6 +118,7 @@ object MappedAccountAttributeProvider extends AccountAttributeProvider { .mName(name) .mType(attributeType.toString()) .mValue(value) + .mProductInstanceCode(productInstanceCode.getOrElse("")) .saveMe() } } @@ -124,7 +127,8 @@ object MappedAccountAttributeProvider extends AccountAttributeProvider { override def createAccountAttributes(bankId: BankId, accountId: AccountId, productCode: ProductCode, - accountAttributes: List[ProductAttribute]): Future[Box[List[AccountAttribute]]] = { + accountAttributes: List[ProductAttribute], + productInstanceCode: Option[String]): Future[Box[List[AccountAttribute]]] = { Future { tryo { for { @@ -136,6 +140,7 @@ object MappedAccountAttributeProvider extends AccountAttributeProvider { .mName(accountAttribute.name) .mType(accountAttribute.attributeType.toString()) .mValue(accountAttribute.value) + .mProductInstanceCode(productInstanceCode.getOrElse("")) .saveMe() } } @@ -188,6 +193,8 @@ class MappedAccountAttribute extends AccountAttribute with LongKeyedMapper[Mappe object mType extends MappedString(this, 50) object mValue extends MappedString(this, 255) + + object mProductInstanceCode extends MappedString(this, 255) override def bankId: BankId = BankId(mBankIdId.get) @@ -203,6 +210,8 @@ class MappedAccountAttribute extends AccountAttribute with LongKeyedMapper[Mappe override def attributeType: AccountAttributeType.Value = AccountAttributeType.withName(mType.get) override def value: String = mValue.get + + override def productInstanceCode: Option[String] = Some(mProductInstanceCode.get) } diff --git a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala index 3e63b1b24..56eb9f77c 100644 --- a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala +++ b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala @@ -3590,14 +3590,16 @@ object SwaggerDefinitionsJSON { val accountAttributeJson = AccountAttributeJson( name = "OVERDRAFT_START_DATE", `type` = "DATE_WITH_DAY", - value = "2012-04-23" + value = "2012-04-23", + product_instance_code = Some("LKJL98769F"), ) val accountAttributeResponseJson = AccountAttributeResponseJson( product_code = productCodeExample.value, account_attribute_id = "613c83ea-80f9-4560-8404-b9cd4ec42a7f", name = "OVERDRAFT_START_DATE", `type` = "DATE_WITH_DAY", - value = "2012-04-23" + value = "2012-04-23", + product_instance_code = Some("LKJL98769F"), ) val moderatedAccountJSON310 = ModeratedAccountJSON310( diff --git a/obp-api/src/main/scala/code/api/util/NewStyle.scala b/obp-api/src/main/scala/code/api/util/NewStyle.scala index 8a0362254..5e3950ec6 100644 --- a/obp-api/src/main/scala/code/api/util/NewStyle.scala +++ b/obp-api/src/main/scala/code/api/util/NewStyle.scala @@ -1748,6 +1748,7 @@ object NewStyle extends MdcLoggable{ name: String, attributeType: AccountAttributeType.Value, value: String, + productInstanceCode: Option[String], callContext: Option[CallContext] ): OBPReturnType[AccountAttribute] = { Connector.connector.vend.createOrUpdateAccountAttribute( @@ -1758,6 +1759,7 @@ object NewStyle extends MdcLoggable{ name: String, attributeType: AccountAttributeType.Value, value: String, + productInstanceCode: Option[String], callContext: Option[CallContext] ) map { i => (connectorEmptyResponse(i._1, callContext), i._2) @@ -1847,12 +1849,14 @@ object NewStyle extends MdcLoggable{ accountId: AccountId, productCode: ProductCode, accountAttributes: List[ProductAttribute], + productInstanceCode: Option[String], callContext: Option[CallContext]): OBPReturnType[List[AccountAttribute]] = { Connector.connector.vend.createAccountAttributes( bankId: BankId, accountId: AccountId, productCode: ProductCode, accountAttributes, + productInstanceCode: Option[String], callContext: Option[CallContext] ) map { i => (connectorEmptyResponse(i._1, callContext), i._2) diff --git a/obp-api/src/main/scala/code/api/v3_1_0/APIMethods310.scala b/obp-api/src/main/scala/code/api/v3_1_0/APIMethods310.scala index b22fe925e..d6983df5f 100644 --- a/obp-api/src/main/scala/code/api/v3_1_0/APIMethods310.scala +++ b/obp-api/src/main/scala/code/api/v3_1_0/APIMethods310.scala @@ -2764,6 +2764,7 @@ trait APIMethods310 { postedData.name, accountAttributeType, postedData.value, + postedData.product_instance_code, callContext: Option[CallContext] ) } yield { @@ -2841,6 +2842,7 @@ trait APIMethods310 { postedData.name, accountAttributeType, postedData.value, + postedData.product_instance_code, callContext: Option[CallContext] ) } yield { @@ -5378,6 +5380,7 @@ trait APIMethods310 { accountId, ProductCode(accountType), productAttributes, + None, callContext: Option[CallContext] ) } yield { diff --git a/obp-api/src/main/scala/code/api/v3_1_0/JSONFactory3.1.0.scala b/obp-api/src/main/scala/code/api/v3_1_0/JSONFactory3.1.0.scala index 2682f551a..f4ceeda39 100644 --- a/obp-api/src/main/scala/code/api/v3_1_0/JSONFactory3.1.0.scala +++ b/obp-api/src/main/scala/code/api/v3_1_0/JSONFactory3.1.0.scala @@ -410,6 +410,7 @@ case class AccountAttributeJson( name: String, `type`: String, value: String, + product_instance_code: Option[String], ) case class CardAttributeJson( @@ -423,7 +424,8 @@ case class AccountAttributeResponseJson( account_attribute_id: String, name: String, `type`: String, - value: String + value: String, + product_instance_code: Option[String], ) case class AccountAttributesResponseJson(list: List[AccountAttributeResponseJson]) @@ -1245,7 +1247,8 @@ object JSONFactory310{ account_attribute_id = accountAttribute.accountAttributeId, name = accountAttribute.name, `type` = accountAttribute.attributeType.toString, - value = accountAttribute.value + value = accountAttribute.value, + product_instance_code = accountAttribute.productInstanceCode ) } def createAccountAttributesJson(productsList: List[AccountAttribute]) : AccountAttributesResponseJson = { diff --git a/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala b/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala index f17e15394..47a3a51f5 100644 --- a/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala +++ b/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala @@ -523,6 +523,7 @@ trait APIMethods400 { accountId, ProductCode("SETTLEMENT"), productAttributes, + None, callContext: Option[CallContext] ) } yield { @@ -2484,6 +2485,7 @@ trait APIMethods400 { accountId, ProductCode(accountType), productAttributes, + None, callContext: Option[CallContext] ) } yield { diff --git a/obp-api/src/main/scala/code/bankconnectors/Connector.scala b/obp-api/src/main/scala/code/bankconnectors/Connector.scala index 18ba107ad..ac85cb8fb 100644 --- a/obp-api/src/main/scala/code/bankconnectors/Connector.scala +++ b/obp-api/src/main/scala/code/bankconnectors/Connector.scala @@ -2129,6 +2129,7 @@ trait Connector extends MdcLoggable { name: String, accountAttributeType: AccountAttributeType.Value, value: String, + productInstanceCode: Option[String], callContext: Option[CallContext] ): OBPReturnType[Box[AccountAttribute]] = Future{(Failure(setUnimplementedError), callContext)} @@ -2200,6 +2201,7 @@ trait Connector extends MdcLoggable { accountId: AccountId, productCode: ProductCode, accountAttributes: List[ProductAttribute], + productInstanceCode: Option[String], callContext: Option[CallContext]): OBPReturnType[Box[List[AccountAttribute]]] = Future{(Failure(setUnimplementedError), callContext)} diff --git a/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala b/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala index c7a7e5c87..61a2d6631 100644 --- a/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala +++ b/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala @@ -3731,6 +3731,7 @@ object LocalMappedConnector extends Connector with MdcLoggable { name: String, attributeType: AccountAttributeType.Value, value: String, + productInstanceCode: Option[String], callContext: Option[CallContext] ): OBPReturnType[Box[AccountAttribute]] = { AccountAttributeX.accountAttributeProvider.vend.createOrUpdateAccountAttribute(bankId: BankId, @@ -3739,7 +3740,8 @@ object LocalMappedConnector extends Connector with MdcLoggable { accountAttributeId: Option[String], name: String, attributeType: AccountAttributeType.Value, - value: String) map { + value: String, + productInstanceCode: Option[String]) map { (_, callContext) } } @@ -3748,13 +3750,15 @@ object LocalMappedConnector extends Connector with MdcLoggable { accountId: AccountId, productCode: ProductCode, accountAttributes: List[ProductAttribute], + productInstanceCode: Option[String], callContext: Option[CallContext] ): OBPReturnType[Box[List[AccountAttribute]]] = { AccountAttributeX.accountAttributeProvider.vend.createAccountAttributes( bankId: BankId, accountId: AccountId, productCode: ProductCode, - accountAttributes: List[ProductAttribute]) map { + accountAttributes: List[ProductAttribute], + productInstanceCode: Option[String]) map { (_, callContext) } } diff --git a/obp-api/src/main/scala/code/bankconnectors/akka/AkkaConnector_vDec2018.scala b/obp-api/src/main/scala/code/bankconnectors/akka/AkkaConnector_vDec2018.scala index 8df38a14c..2670128c0 100644 --- a/obp-api/src/main/scala/code/bankconnectors/akka/AkkaConnector_vDec2018.scala +++ b/obp-api/src/main/scala/code/bankconnectors/akka/AkkaConnector_vDec2018.scala @@ -4835,7 +4835,8 @@ object AkkaConnector_vDec2018 extends Connector with AkkaConnectorActorInit { adapterImplementation = Some(AdapterImplementation("- Core", 1)) ) - override def createOrUpdateAccountAttribute(bankId: BankId, accountId: AccountId, productCode: ProductCode, productAttributeId: Option[String], name: String, accountAttributeType: AccountAttributeType.Value, value: String, callContext: Option[CallContext]): OBPReturnType[Box[AccountAttribute]] = { + override def createOrUpdateAccountAttribute(bankId: BankId, accountId: AccountId, productCode: ProductCode, productAttributeId: Option[String], name: String, accountAttributeType: AccountAttributeType.Value, value: String, + productInstanceCode: Option[String],callContext: Option[CallContext]): OBPReturnType[Box[AccountAttribute]] = { import com.openbankproject.commons.dto.{InBoundCreateOrUpdateAccountAttribute => InBound, OutBoundCreateOrUpdateAccountAttribute => OutBound} val req = OutBound(callContext.map(_.toOutboundAdapterCallContext).orNull, bankId, accountId, productCode, productAttributeId, name, accountAttributeType, value) val response: Future[Box[InBound]] = (southSideActor ? req).mapTo[InBound].recoverWith(recoverFunction).map(Box !! _) @@ -4948,7 +4949,8 @@ object AkkaConnector_vDec2018 extends Connector with AkkaConnectorActorInit { adapterImplementation = Some(AdapterImplementation("- Core", 1)) ) - override def createAccountAttributes(bankId: BankId, accountId: AccountId, productCode: ProductCode, accountAttributes: List[ProductAttribute], callContext: Option[CallContext]): OBPReturnType[Box[List[AccountAttribute]]] = { + override def createAccountAttributes(bankId: BankId, accountId: AccountId, productCode: ProductCode, accountAttributes: List[ProductAttribute], + productInstanceCode: Option[String], callContext: Option[CallContext]): OBPReturnType[Box[List[AccountAttribute]]] = { import com.openbankproject.commons.dto.{InBoundCreateAccountAttributes => InBound, OutBoundCreateAccountAttributes => OutBound} val req = OutBound(callContext.map(_.toOutboundAdapterCallContext).orNull, bankId, accountId, productCode, accountAttributes) val response: Future[Box[InBound]] = (southSideActor ? req).mapTo[InBound].recoverWith(recoverFunction).map(Box !! _) diff --git a/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala b/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala index 60268e724..d59ddcf87 100644 --- a/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala +++ b/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala @@ -5021,7 +5021,8 @@ trait RestConnector_vMar2019 extends Connector with KafkaHelper with MdcLoggable adapterImplementation = Some(AdapterImplementation("- Core", 1)) ) - override def createOrUpdateAccountAttribute(bankId: BankId, accountId: AccountId, productCode: ProductCode, productAttributeId: Option[String], name: String, accountAttributeType: AccountAttributeType.Value, value: String, callContext: Option[CallContext]): OBPReturnType[Box[AccountAttribute]] = { + override def createOrUpdateAccountAttribute(bankId: BankId, accountId: AccountId, productCode: ProductCode, productAttributeId: Option[String], name: String, accountAttributeType: AccountAttributeType.Value, value: String, + productInstanceCode: Option[String], callContext: Option[CallContext]): OBPReturnType[Box[AccountAttribute]] = { import com.openbankproject.commons.dto.{InBoundCreateOrUpdateAccountAttribute => InBound, OutBoundCreateOrUpdateAccountAttribute => OutBound} val req = OutBound(callContext.map(_.toOutboundAdapterCallContext).orNull, bankId, accountId, productCode, productAttributeId, name, accountAttributeType, value) val response: Future[Box[InBound]] = sendRequest[InBound](getUrl(callContext, "createOrUpdateAccountAttribute"), HttpMethods.POST, req, callContext) @@ -5134,7 +5135,8 @@ trait RestConnector_vMar2019 extends Connector with KafkaHelper with MdcLoggable adapterImplementation = Some(AdapterImplementation("- Core", 1)) ) - override def createAccountAttributes(bankId: BankId, accountId: AccountId, productCode: ProductCode, accountAttributes: List[ProductAttribute], callContext: Option[CallContext]): OBPReturnType[Box[List[AccountAttribute]]] = { + override def createAccountAttributes(bankId: BankId, accountId: AccountId, productCode: ProductCode, accountAttributes: List[ProductAttribute], + productInstanceCode: Option[String], callContext: Option[CallContext]): OBPReturnType[Box[List[AccountAttribute]]] = { import com.openbankproject.commons.dto.{InBoundCreateAccountAttributes => InBound, OutBoundCreateAccountAttributes => OutBound} val req = OutBound(callContext.map(_.toOutboundAdapterCallContext).orNull, bankId, accountId, productCode, accountAttributes) val response: Future[Box[InBound]] = sendRequest[InBound](getUrl(callContext, "createAccountAttributes"), HttpMethods.POST, req, callContext) diff --git a/obp-api/src/main/scala/code/bankconnectors/storedprocedure/StoredProcedureConnector_vDec2019.scala b/obp-api/src/main/scala/code/bankconnectors/storedprocedure/StoredProcedureConnector_vDec2019.scala index 7424c6778..3cd93481d 100644 --- a/obp-api/src/main/scala/code/bankconnectors/storedprocedure/StoredProcedureConnector_vDec2019.scala +++ b/obp-api/src/main/scala/code/bankconnectors/storedprocedure/StoredProcedureConnector_vDec2019.scala @@ -4999,7 +4999,8 @@ trait StoredProcedureConnector_vDec2019 extends Connector with MdcLoggable { adapterImplementation = Some(AdapterImplementation("- Core", 1)) ) - override def createOrUpdateAccountAttribute(bankId: BankId, accountId: AccountId, productCode: ProductCode, productAttributeId: Option[String], name: String, accountAttributeType: AccountAttributeType.Value, value: String, callContext: Option[CallContext]): OBPReturnType[Box[AccountAttribute]] = { + override def createOrUpdateAccountAttribute(bankId: BankId, accountId: AccountId, productCode: ProductCode, productAttributeId: Option[String], name: String, accountAttributeType: AccountAttributeType.Value, value: String, + productInstanceCode: Option[String],callContext: Option[CallContext]): OBPReturnType[Box[AccountAttribute]] = { import com.openbankproject.commons.dto.{InBoundCreateOrUpdateAccountAttribute => InBound, OutBoundCreateOrUpdateAccountAttribute => OutBound} val req = OutBound(callContext.map(_.toOutboundAdapterCallContext).orNull, bankId, accountId, productCode, productAttributeId, name, accountAttributeType, value) val response: Future[Box[InBound]] = sendRequest[InBound]("obp_create_or_update_account_attribute", req, callContext) @@ -5112,7 +5113,8 @@ trait StoredProcedureConnector_vDec2019 extends Connector with MdcLoggable { adapterImplementation = Some(AdapterImplementation("- Core", 1)) ) - override def createAccountAttributes(bankId: BankId, accountId: AccountId, productCode: ProductCode, accountAttributes: List[ProductAttribute], callContext: Option[CallContext]): OBPReturnType[Box[List[AccountAttribute]]] = { + override def createAccountAttributes(bankId: BankId, accountId: AccountId, productCode: ProductCode, accountAttributes: List[ProductAttribute], + productInstanceCode: Option[String], callContext: Option[CallContext]): OBPReturnType[Box[List[AccountAttribute]]] = { import com.openbankproject.commons.dto.{InBoundCreateAccountAttributes => InBound, OutBoundCreateAccountAttributes => OutBound} val req = OutBound(callContext.map(_.toOutboundAdapterCallContext).orNull, bankId, accountId, productCode, accountAttributes) val response: Future[Box[InBound]] = sendRequest[InBound]("obp_create_account_attributes", req, callContext) diff --git a/obp-api/src/main/scala/code/remotedata/RemotedataAccountAttribute.scala b/obp-api/src/main/scala/code/remotedata/RemotedataAccountAttribute.scala index d42a14d51..90d5e5825 100644 --- a/obp-api/src/main/scala/code/remotedata/RemotedataAccountAttribute.scala +++ b/obp-api/src/main/scala/code/remotedata/RemotedataAccountAttribute.scala @@ -40,14 +40,16 @@ object RemotedataAccountAttribute extends ObpActorInit with AccountAttributeProv productAttributeId: Option[String], name: String, attributeType: AccountAttributeType.Value, - value: String): Future[Box[AccountAttribute]] = - (actor ? cc.createOrUpdateAccountAttribute(bankId, accountId, productCode, productAttributeId , name , attributeType , value )).mapTo[Box[AccountAttribute]] + value: String, + productInstanceCode: Option[String]): Future[Box[AccountAttribute]] = + (actor ? cc.createOrUpdateAccountAttribute(bankId, accountId, productCode, productAttributeId , name , attributeType , value, productInstanceCode )).mapTo[Box[AccountAttribute]] override def createAccountAttributes(bankId: BankId, accountId: AccountId, productCode: ProductCode, - productAttributes: List[ProductAttribute]): Future[Box[List[AccountAttribute]]] = - (actor ? cc.createAccountAttributes(bankId, accountId, productCode, productAttributes)).mapTo[Box[List[AccountAttribute]]] + productAttributes: List[ProductAttribute], + productInstanceCode: Option[String]): Future[Box[List[AccountAttribute]]] = + (actor ? cc.createAccountAttributes(bankId, accountId, productCode, productAttributes, productInstanceCode)).mapTo[Box[List[AccountAttribute]]] override def deleteAccountAttribute(accountAttributeId: String): Future[Box[Boolean]] = (actor ? cc.deleteAccountAttribute(accountAttributeId)).mapTo[Box[Boolean]] diff --git a/obp-api/src/main/scala/code/remotedata/RemotedataAccountAttributeActor.scala b/obp-api/src/main/scala/code/remotedata/RemotedataAccountAttributeActor.scala index a905762f4..1dd80bae4 100644 --- a/obp-api/src/main/scala/code/remotedata/RemotedataAccountAttributeActor.scala +++ b/obp-api/src/main/scala/code/remotedata/RemotedataAccountAttributeActor.scala @@ -44,22 +44,26 @@ class RemotedataAccountAttributeActor extends Actor with ObpActorHelper with Mdc accountAttributeId: Option[String], name: String, attributeType: AccountAttributeType.Value, - value: String) => + value: String, + productInstanceCode: Option[String]) => logger.debug(s"createOrUpdateAccountAttribute(${bankId}, ${accountId}, ${productCode}, ${accountAttributeId}, ${name}, ${attributeType}, ${value})") mapper.createOrUpdateAccountAttribute(bankId, accountId, productCode, accountAttributeId, name, attributeType, - value) pipeTo sender + value, + productInstanceCode: Option[String]) pipeTo sender case cc.createAccountAttributes(bankId: BankId, accountId: AccountId, productCode: ProductCode, - accountAttributes: List[ProductAttribute]) => + accountAttributes: List[ProductAttribute], + productInstanceCode: Option[String]) => mapper.createAccountAttributes(bankId, accountId, productCode, - accountAttributes) pipeTo sender + accountAttributes, + productInstanceCode: Option[String]) pipeTo sender case cc.deleteAccountAttribute(accountAttributeId: String) => logger.debug(s"deleteAccountAttribute(${accountAttributeId})") diff --git a/obp-api/src/test/resources/frozen_type_meta_data b/obp-api/src/test/resources/frozen_type_meta_data index f316dfd67..16644ec28 100644 Binary files a/obp-api/src/test/resources/frozen_type_meta_data and b/obp-api/src/test/resources/frozen_type_meta_data differ diff --git a/obp-api/src/test/scala/code/api/v4_0_0/DeleteAccountCascadeTest.scala b/obp-api/src/test/scala/code/api/v4_0_0/DeleteAccountCascadeTest.scala index 724f7b2f1..78fc1d02c 100644 --- a/obp-api/src/test/scala/code/api/v4_0_0/DeleteAccountCascadeTest.scala +++ b/obp-api/src/test/scala/code/api/v4_0_0/DeleteAccountCascadeTest.scala @@ -82,7 +82,8 @@ class DeleteAccountCascadeTest extends V400ServerSetup { account.account_id, "REQUIRED_CHALLENGE_ANSWERS", "2", - "INTEGER" + "INTEGER", + Some("LKJL98769F") ) grantUserAccessToViewViaEndpoint( diff --git a/obp-api/src/test/scala/code/api/v4_0_0/DeleteBankCascadeTest.scala b/obp-api/src/test/scala/code/api/v4_0_0/DeleteBankCascadeTest.scala index 0574ccc18..3a555758d 100644 --- a/obp-api/src/test/scala/code/api/v4_0_0/DeleteBankCascadeTest.scala +++ b/obp-api/src/test/scala/code/api/v4_0_0/DeleteBankCascadeTest.scala @@ -84,7 +84,8 @@ class DeleteBankCascadeTest extends V400ServerSetup { account.account_id, "REQUIRED_CHALLENGE_ANSWERS", "2", - "INTEGER" + "INTEGER", + Some("LKJL98769F") ) grantUserAccessToViewViaEndpoint( diff --git a/obp-api/src/test/scala/code/api/v4_0_0/TransactionRequestsTest.scala b/obp-api/src/test/scala/code/api/v4_0_0/TransactionRequestsTest.scala index 7b5e82d18..87ebc6221 100644 --- a/obp-api/src/test/scala/code/api/v4_0_0/TransactionRequestsTest.scala +++ b/obp-api/src/test/scala/code/api/v4_0_0/TransactionRequestsTest.scala @@ -1141,7 +1141,8 @@ class TransactionRequestsTest extends V400ServerSetup with DefaultUsers { helper.accountId1.value, "REQUIRED_CHALLENGE_ANSWERS", "2", - "INTEGER" + "INTEGER", + Some("LKJL98769F") ) val grantedView = grantUserAccessToViewViaEndpoint( @@ -1389,7 +1390,8 @@ class TransactionRequestsTest extends V400ServerSetup with DefaultUsers { helper.accountId1.value, "REQUIRED_CHALLENGE_ANSWERS", "2", - "INTEGER" + "INTEGER", + Some("LKJL98769F") ) val grantedView = grantUserAccessToViewViaEndpoint( diff --git a/obp-api/src/test/scala/code/api/v4_0_0/V400ServerSetup.scala b/obp-api/src/test/scala/code/api/v4_0_0/V400ServerSetup.scala index 934c729a5..9baf55342 100644 --- a/obp-api/src/test/scala/code/api/v4_0_0/V400ServerSetup.scala +++ b/obp-api/src/test/scala/code/api/v4_0_0/V400ServerSetup.scala @@ -151,7 +151,7 @@ trait V400ServerSetup extends ServerSetupWithTestData with DefaultUsers { product } - def createAccountAttributeViaEndpoint(bankId: String, accountId: String, name: String, value: String, `type`: String): AccountAttributeResponseJson = { + def createAccountAttributeViaEndpoint(bankId: String, accountId: String, name: String, value: String, `type`: String, productInstanceCode: Option[String]): AccountAttributeResponseJson = { val putProductJsonV400 = PutProductJsonV400( name = "product name", parent_product_code = "", @@ -169,7 +169,8 @@ trait V400ServerSetup extends ServerSetupWithTestData with DefaultUsers { val accountAttributeJson = AccountAttributeJson( name = name, `type` = `type`, - value = value + value = value, + productInstanceCode ) val entitlement = Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanCreateAccountAttributeAtOneBank.toString) val requestCreate310 = (v4_0_0_Request / "banks" / bankId / "accounts" / accountId / diff --git a/obp-api/src/test/scala/code/connector/RestConnector_vMar2019_frozen_meta_data b/obp-api/src/test/scala/code/connector/RestConnector_vMar2019_frozen_meta_data index 6cf424993..a6ced7296 100644 Binary files a/obp-api/src/test/scala/code/connector/RestConnector_vMar2019_frozen_meta_data and b/obp-api/src/test/scala/code/connector/RestConnector_vMar2019_frozen_meta_data differ diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/dto/JsonsTransfer.scala b/obp-commons/src/main/scala/com/openbankproject/commons/dto/JsonsTransfer.scala index 0f3b2d59e..34fbb9a5b 100644 --- a/obp-commons/src/main/scala/com/openbankproject/commons/dto/JsonsTransfer.scala +++ b/obp-commons/src/main/scala/com/openbankproject/commons/dto/JsonsTransfer.scala @@ -401,7 +401,8 @@ case class OutBoundCreateOrUpdateAccountAttribute(outboundAdapterCallContext: Ou productAttributeId: Option[String], name: String, accountAttributeType: enums.AccountAttributeType.Value, - value: String) extends TopicTrait + value: String, + productInstanceCode: Option[String] = None) extends TopicTrait case class InBoundCreateOrUpdateAccountAttribute(inboundAdapterCallContext: InboundAdapterCallContext, status: Status, data: AccountAttributeCommons) extends InBoundTrait[AccountAttributeCommons] @@ -585,7 +586,8 @@ case class OutBoundCreateAccountAttributes(outboundAdapterCallContext: OutboundA bankId: BankId, accountId: AccountId, productCode: ProductCode, - accountAttributes: List[ProductAttribute] + accountAttributes: List[ProductAttribute], + productInstanceCode: Option[String] = None, ) extends TopicTrait case class InBoundCreateAccountAttributes(inboundAdapterCallContext: InboundAdapterCallContext, status: Status, data: List[AccountAttributeCommons]) extends InBoundTrait[List[AccountAttributeCommons]] diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala index 06364c000..7e540954d 100644 --- a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala +++ b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModel.scala @@ -91,7 +91,8 @@ case class AccountAttributeCommons( accountAttributeId :String, name :String, attributeType : AccountAttributeType.Value, - value :String) extends AccountAttribute + value :String, + productInstanceCode: Option[String] = None) extends AccountAttribute object AccountAttributeCommons extends Converter[AccountAttribute, AccountAttributeCommons] diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModelTrait.scala b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModelTrait.scala index 75ccdfee8..37e361c19 100644 --- a/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModelTrait.scala +++ b/obp-commons/src/main/scala/com/openbankproject/commons/model/CommonModelTrait.scala @@ -112,6 +112,7 @@ trait AccountAttribute { def name: String def attributeType: AccountAttributeType.Value def value: String + def productInstanceCode: Option[String] } trait CardAttribute {