Compare commits

..

2 Commits

Author SHA1 Message Date
Ramon Ramirez
932215b81a update payload request account 2026-01-07 16:18:21 -04:00
Ramon Ramirez
186dc8ec36 Update models 2026-01-07 10:23:00 -04:00
21 changed files with 313 additions and 233 deletions

View File

@ -22,10 +22,10 @@ RUN mkdir -p /work
ENV TZ="America/Caracas" ENV TZ="America/Caracas"
ENV LANGUAGE='en_US:en' ENV LANGUAGE='en_US:en'
VOLUME /tmp VOLUME /tmp
COPY /file/*-runner /work/recLegalCustomerProductDirectory COPY /file/*-runner /work/app
RUN chmod -R 775 /work RUN chmod -R 775 /work
RUN ls -ltra /work/ RUN ls -ltra /work/
EXPOSE 8080 EXPOSE 8080
WORKDIR /work/ WORKDIR /work/
ENTRYPOINT ["./recLegalCustomerProductDirectory", "-Dquarkus.http.host=0.0.0.0"] ENTRYPOINT ["./app", "-Dquarkus.http.host=0.0.0.0"]

View File

@ -0,0 +1,26 @@
package com.banesco.common.domain.model;
public enum BalanceType {
OPENING_BALANCE,
CLOSING_BALANCE,
CURRENT_BALANCE,
AVAILABLE_BALANCE,
LEDGER_BALANCE,
RESERVE_BALANCE,
FREE_BALANCE,
PRINCIPAL_BALANCE,
CLOSING_AVAILABLE,
CLOSING_BOOKED,
FORWARD_AVAILABLE,
INFORMATION,
INTERIM_AVAILABLE,
INTERIM_BOOKED,
OPENING_AVAILABLE,
OPENING_BOOKED,
PREVIOUSLY_CLOSED_BOOKED,
EXPECTED,
DAILY_MAXIMUM,
MONTHLY_MAXIMUM,
TRANSACTION_MAXIMUM,
TRANSACTION_MINIMUM,
}

View File

@ -11,5 +11,4 @@ import lombok.*;
@RegisterForReflection @RegisterForReflection
public class Identifier { public class Identifier {
private String identifierValue; private String identifierValue;
private String issuingAuthority;
} }

View File

@ -1,7 +1,9 @@
package com.banesco.module.account.domain.model; package com.banesco.module.account.domain.model;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.quarkus.runtime.annotations.RegisterForReflection; import io.quarkus.runtime.annotations.RegisterForReflection;
import lombok.*; import lombok.*;
import org.eclipse.microprofile.openapi.annotations.media.Schema;
import java.util.List; import java.util.List;
@ -11,15 +13,20 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@RegisterForReflection @RegisterForReflection
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Account { public class Account {
@Schema(description = "Estado de la cuenta")
private AccountStatus accountStatus; private AccountStatus accountStatus;
@Schema(description = "Lista de datos de identificación de la cuenta")
private List<AccountIdentification> accountIdentification; private List<AccountIdentification> accountIdentification;
private List<AccountDateTime> accountDate; @Schema(description = "Tipo de cuenta")
private String accountType; private String accountType;
private String accountPurpose; @Schema(description = "Información de los tipos de balances de la cuenta")
private List<AccountBalance> accountBalance; private List<AccountBalance> accountBalance;
@Schema(description = "Información de la moneda de la cuenta")
private List<AccountCurrency> accountCurrency; private List<AccountCurrency> accountCurrency;
private String accountDescription; @Schema(description = "Información complementaria de la cuenta")
private String accountName;
private List<AccountInvolvement> accountInvolvement; private List<AccountInvolvement> accountInvolvement;
@Schema(description = "Información relacional de la cuenta con otras o consigo misma")
private List<AccountRelationship> accountRelationship;
} }

View File

@ -1,5 +1,6 @@
package com.banesco.module.account.domain.model; package com.banesco.module.account.domain.model;
import com.banesco.common.domain.model.BalanceType;
import io.quarkus.runtime.annotations.RegisterForReflection; import io.quarkus.runtime.annotations.RegisterForReflection;
import lombok.*; import lombok.*;
@ -13,5 +14,5 @@ import java.math.BigDecimal;
@RegisterForReflection @RegisterForReflection
public class AccountBalance { public class AccountBalance {
private BigDecimal balanceAmount; private BigDecimal balanceAmount;
private String balanceType; private BalanceType balanceType;
} }

View File

@ -11,6 +11,6 @@ import lombok.*;
@AllArgsConstructor @AllArgsConstructor
@RegisterForReflection @RegisterForReflection
public class AccountIdentification { public class AccountIdentification {
private String accountIdentificationType; private AccountIdentificationType accountIdentificationType;
private Identifier accountIdentification; private Identifier accountIdentification;
} }

View File

@ -0,0 +1,15 @@
package com.banesco.module.account.domain.model;
public enum AccountIdentificationType {
BBAN,
IBAN,
UPIC,
ACCOUNT_NUMBER,
PAN,
PAYM,
WALLET,
SORT_CODE_AND_ACCOUNT_NUMBER,
PRODUCT_CODE,
BANK_NUMBER,
ACCOUNT_CLASS
}

View File

@ -11,6 +11,6 @@ import lombok.*;
@AllArgsConstructor @AllArgsConstructor
@RegisterForReflection @RegisterForReflection
public class AccountInvolvement { public class AccountInvolvement {
private String accountInvolvementType; private AccountInvolvementType accountInvolvementType;
private Party partyReference; private Party partyReference;
} }

View File

@ -0,0 +1,10 @@
package com.banesco.module.account.domain.model;
public enum AccountInvolvementType {
PARTY_IS_OWNER_OF_ACCOUNT,
PARTY_IS_SERVICER_OF_ACCOUNT,
PARTY_IS_PAYEE_ON_ACCOUNT,
PARTY_IS_PRIMARY_OWNER_OF_ACCOUNT,
PARTY_IS_CO_OWNER_OF_ACCOUNT,
PARTY_IS_JOINT_OWNER_OF_ACCOUNT,
}

View File

@ -9,7 +9,6 @@ import lombok.*;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@RegisterForReflection @RegisterForReflection
public class AccountDateTime { public class AccountRelationship {
private String dateType; private AccountRelationshipType accountRelationshipType;
private String date;
} }

View File

@ -0,0 +1,7 @@
package com.banesco.module.account.domain.model;
public enum AccountRelationshipType {
ACCOUNT_IS_PARENT_ACCOUNT_FOR_ACCOUNT,
ACCOUNT_IS_SUB_ACCOUNT_FOR_ACCOUNT,
ACCOUNT_IS_LINKED_TO_ACCOUNT,
}

View File

@ -11,5 +11,5 @@ import lombok.*;
@RegisterForReflection @RegisterForReflection
public class AccountStatus { public class AccountStatus {
private String status; private String status;
private String statusType; private AccountStatusType statusType;
} }

View File

@ -0,0 +1,9 @@
package com.banesco.module.account.domain.model;
public enum AccountStatusType {
ENABLED,
DISABLED,
DELETED,
PROFORMA,
PENDING,
}

View File

@ -1,6 +1,5 @@
package com.banesco.module.legal_customer_product_directory.application.service; package com.banesco.module.legal_customer_product_directory.application.service;
import com.banesco.common.application.helper.ErrorResponseHelper;
import com.banesco.common.application.helper.RequestValidatorHelper; import com.banesco.common.application.helper.RequestValidatorHelper;
import com.banesco.common.domain.exception.BaseApiException; import com.banesco.common.domain.exception.BaseApiException;
import com.banesco.common.domain.exception.ServiceUnavailableException; import com.banesco.common.domain.exception.ServiceUnavailableException;
@ -21,6 +20,7 @@ import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
@Slf4j @Slf4j
@ -32,7 +32,6 @@ public class LegalCustomerProductDirectoryService implements LegalCustomerProduc
@Inject @Inject
public LegalCustomerProductDirectoryService( public LegalCustomerProductDirectoryService(
ErrorResponseHelper errorResponseHelper,
RequestValidatorHelper requestValidatorHelper, RequestValidatorHelper requestValidatorHelper,
BusinessUseCase businessUseCase BusinessUseCase businessUseCase
) { ) {
@ -68,7 +67,6 @@ public class LegalCustomerProductDirectoryService implements LegalCustomerProduc
LegalCustomerProductDirectoryRequest request LegalCustomerProductDirectoryRequest request
) { ) {
requestValidatorHelper.validateRequired(request); requestValidatorHelper.validateRequired(request);
requestValidatorHelper.validateFieldValues(request);
} }
private ApiResponse<LegalCustomerProductDirectoryResponse> business( private ApiResponse<LegalCustomerProductDirectoryResponse> business(
@ -79,134 +77,137 @@ public class LegalCustomerProductDirectoryService implements LegalCustomerProduc
return businessUseCase.execute( return businessUseCase.execute(
true, true,
request.getCustomerIbsNumber(), request.getCustomerIbsNumber(),
request.toBusinessRequest(), Map.of(),
request.toBusinessHeaders(), request.toBusinessHeaders(),
LegalCustomerProductDirectoryResponse.class LegalCustomerProductDirectoryResponse.class
); );
} }
private ApiResponse<LegalCustomerProductDirectoryResponse> createSuccessMock() { private ApiResponse<LegalCustomerProductDirectoryResponse> createSuccessMock() {
StatusResponse statusResponse = StatusResponse.builder() return new ApiResponse<>(
LegalCustomerProductDirectoryResponse.builder()
.customerProductAndServiceDirectory(
CustomerProductAndServiceDirectory.builder()
.party(getParty())
.accounts(List.of(getAccount()))
.build()
)
.build(),
StatusResponse.builder()
.statusCode("200") .statusCode("200")
.message("Operación exitosa") .message("Operación exitosa")
.build(); .build()
return new ApiResponse<>(
LegalCustomerProductDirectoryResponse.builder()
.customerProductAndServiceDirectory(CustomerProductAndServiceDirectory.builder()
.party(Party.builder()
.partyName(List.of(
Name.builder()
.fullName("TASCA RESTAURANT GOOD WORLD CEN, C.A.")
.build()
))
.partyType(PartyType.ORGANISATION)
.partyDateTime(List.of())
.partyIdentification(List.of(
PartyIdentification.builder()
.partyIdentificationType(PartyIdentificationType.TAX_IDENTIFICATION_NUMBER)
.partyIdentification(Identifier.builder()
.identifierValue("J000000001")
.issuingAuthority("")
.build())
.build()
))
.partyLegalStructureType("")
.build())
.accounts(List.of(
Account.builder()
.accountStatus(AccountStatus.builder()
.status("D")
.build())
.accountIdentification(List.of(
AccountIdentification.builder()
.accountIdentificationType("NUMERO_CUENTA")
.accountIdentification(Identifier.builder()
.identifierValue("01340025330253093528")
.issuingAuthority("")
.build())
.build(),
AccountIdentification.builder()
.accountIdentificationType("NUMERO_BANCO")
.accountIdentification(Identifier.builder()
.identifierValue("01")
.issuingAuthority("")
.build())
.build(),
AccountIdentification.builder()
.accountIdentificationType("CODIGO_PRODUCTO")
.accountIdentification(Identifier.builder()
.identifierValue("3980")
.issuingAuthority("")
.build())
.build(),
AccountIdentification.builder()
.accountIdentificationType("CLASE_CUENTA")
.accountIdentification(Identifier.builder()
.identifierValue("80")
.issuingAuthority("")
.build())
.build(),
AccountIdentification.builder()
.accountIdentificationType("TIPO_CUENTA")
.accountIdentification(Identifier.builder()
.identifierValue("MMK")
.issuingAuthority("")
.build())
.build()
))
.accountDate(List.of())
.accountBalance(List.of(
AccountBalance.builder()
.balanceAmount(BigDecimal.valueOf(390417.36))
.balanceType("SALDO_DISPONIBLE")
.build(),
AccountBalance.builder()
.balanceAmount(BigDecimal.valueOf(100000.00))
.balanceType("MAXIMO_DIARIO")
.build(),
AccountBalance.builder()
.balanceAmount(BigDecimal.valueOf(100000.00))
.balanceType("MAXIMO_TRANSACCION")
.build(),
AccountBalance.builder()
.balanceAmount(BigDecimal.valueOf(3000000.00))
.balanceType("MAXIMO_MENSUAL")
.build(),
AccountBalance.builder()
.balanceAmount(BigDecimal.valueOf(0.01))
.balanceType("MINIMO_TRANSACCION")
.build()
))
.accountCurrency(List.of(
AccountCurrency.builder()
.currencyCode("BS")
.currencyType(CurrencyType.BASE)
.build()
))
.accountDescription("TASCA RESTAURANT GOOD WORLD CEN, C.A.")
.accountName("")
.accountInvolvement(List.of(
AccountInvolvement.builder()
.accountInvolvementType("CONTACTO_TELEFONICO")
.partyReference(Party.builder()
.partyIdentification(List.of(
PartyIdentification.builder()
.partyIdentificationType(PartyIdentificationType.TELEPHONE_NUMBER)
.partyIdentification(Identifier.builder()
.identifierValue("04122710660")
.issuingAuthority("")
.build())
.build()
))
.build())
.build()
))
.build()
))
.build())
.build(),
statusResponse
); );
} }
private Party getParty() {
return Party.builder()
.partyName(List.of(
Name.builder()
.fullName("TASCA RESTAURANT GOOD WORLD CEN, C.A.")
.build()
))
.partyType(PartyType.ORGANISATION)
.partyIdentification(List.of(
PartyIdentification.builder()
.partyIdentificationType(PartyIdentificationType.TAX_IDENTIFICATION_NUMBER)
.partyIdentification(Identifier.builder()
.identifierValue("J000000001")
.build())
.build()
))
.build();
}
private Account getAccount() {
return Account.builder()
.accountStatus(AccountStatus.builder()
.status("A")
.statusType(AccountStatusType.ENABLED)
.build())
.accountType("MMK")
.accountIdentification(List.of(
AccountIdentification.builder()
.accountIdentificationType(AccountIdentificationType.ACCOUNT_NUMBER)
.accountIdentification(Identifier.builder()
.identifierValue("01340025330253093528")
.build())
.build(),
AccountIdentification.builder()
.accountIdentificationType(AccountIdentificationType.BANK_NUMBER)
.accountIdentification(Identifier.builder()
.identifierValue("01")
.build())
.build(),
AccountIdentification.builder()
.accountIdentificationType(AccountIdentificationType.PRODUCT_CODE)
.accountIdentification(Identifier.builder()
.identifierValue("3980")
.build())
.build(),
AccountIdentification.builder()
.accountIdentificationType(AccountIdentificationType.ACCOUNT_CLASS)
.accountIdentification(Identifier.builder()
.identifierValue("80")
.build())
.build()
))
.accountBalance(List.of(
AccountBalance.builder()
.balanceAmount(BigDecimal.valueOf(390417.36))
.balanceType(BalanceType.AVAILABLE_BALANCE)
.build(),
AccountBalance.builder()
.balanceAmount(BigDecimal.valueOf(100000.00))
.balanceType(BalanceType.DAILY_MAXIMUM)
.build(),
AccountBalance.builder()
.balanceAmount(BigDecimal.valueOf(3000000.00))
.balanceType(BalanceType.MONTHLY_MAXIMUM)
.build(),
AccountBalance.builder()
.balanceAmount(BigDecimal.valueOf(0.01))
.balanceType(BalanceType.TRANSACTION_MINIMUM)
.build(),
AccountBalance.builder()
.balanceAmount(BigDecimal.valueOf(100000.00))
.balanceType(BalanceType.TRANSACTION_MAXIMUM)
.build()
))
.accountCurrency(List.of(
AccountCurrency.builder()
.currencyCode("BS")
.currencyType(CurrencyType.BASE)
.build()
))
.accountInvolvement(List.of(
AccountInvolvement.builder()
.accountInvolvementType(AccountInvolvementType.PARTY_IS_OWNER_OF_ACCOUNT)
.partyReference(
Party.builder()
.partyIdentification(List.of(
PartyIdentification.builder()
.partyIdentificationType(PartyIdentificationType.TELEPHONE_NUMBER)
.partyIdentification(Identifier.builder()
.identifierValue("04122710660")
.build())
.build(),
PartyIdentification.builder()
.partyIdentificationType(PartyIdentificationType.TELEPHONE_OPERATOR)
.partyIdentification(Identifier.builder()
.identifierValue("0412")
.build())
.build()
))
.build()
)
.build()
))
.accountRelationship(List.of(
AccountRelationship.builder()
.accountRelationshipType(AccountRelationshipType.ACCOUNT_IS_SUB_ACCOUNT_FOR_ACCOUNT)
.build()
))
.build();
}
} }

View File

@ -3,6 +3,7 @@ package com.banesco.module.legal_customer_product_directory.domain.dto.response;
import com.banesco.module.legal_customer_product_directory.domain.model.CustomerProductAndServiceDirectory; import com.banesco.module.legal_customer_product_directory.domain.model.CustomerProductAndServiceDirectory;
import io.quarkus.runtime.annotations.RegisterForReflection; import io.quarkus.runtime.annotations.RegisterForReflection;
import lombok.*; import lombok.*;
import org.eclipse.microprofile.openapi.annotations.media.Schema;
@Getter @Getter
@ToString @ToString
@ -10,6 +11,8 @@ import lombok.*;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@RegisterForReflection @RegisterForReflection
@Schema(description = "Respuesta del directorio de cuentas de cliente legal")
public class LegalCustomerProductDirectoryResponse { public class LegalCustomerProductDirectoryResponse {
@Schema(description = "Directorio de cuentas")
private CustomerProductAndServiceDirectory customerProductAndServiceDirectory; private CustomerProductAndServiceDirectory customerProductAndServiceDirectory;
} }

View File

@ -4,6 +4,7 @@ import com.banesco.module.account.domain.model.Account;
import com.banesco.module.party.domain.model.Party; import com.banesco.module.party.domain.model.Party;
import io.quarkus.runtime.annotations.RegisterForReflection; import io.quarkus.runtime.annotations.RegisterForReflection;
import lombok.*; import lombok.*;
import org.eclipse.microprofile.openapi.annotations.media.Schema;
import java.util.List; import java.util.List;
@ -13,7 +14,10 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@RegisterForReflection @RegisterForReflection
@Schema(description = "Directorio de cuentas")
public class CustomerProductAndServiceDirectory { public class CustomerProductAndServiceDirectory {
@Schema(description = "Información del cliente")
private Party party; private Party party;
@Schema(description = "Lista de cuentas")
private List<Account> accounts; private List<Account> accounts;
} }

View File

@ -3,8 +3,10 @@ package com.banesco.module.legal_customer_product_directory.infrastructure.resou
import com.banesco.common.application.helper.ErrorResponseHelper; import com.banesco.common.application.helper.ErrorResponseHelper;
import com.banesco.common.domain.exception.BaseApiException; import com.banesco.common.domain.exception.BaseApiException;
import com.banesco.common.domain.model.ApiResponse; import com.banesco.common.domain.model.ApiResponse;
import com.banesco.common.domain.model.StatusResponse;
import com.banesco.module.legal_customer_product_directory.application.usecase.LegalCustomerProductDirectoryUseCase; import com.banesco.module.legal_customer_product_directory.application.usecase.LegalCustomerProductDirectoryUseCase;
import com.banesco.module.legal_customer_product_directory.domain.dto.request.LegalCustomerProductDirectoryRequest; import com.banesco.module.legal_customer_product_directory.domain.dto.request.LegalCustomerProductDirectoryRequest;
import com.banesco.module.legal_customer_product_directory.domain.dto.response.LegalCustomerProductDirectoryResponse;
import jakarta.inject.Inject; import jakarta.inject.Inject;
import jakarta.ws.rs.*; import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
@ -14,6 +16,7 @@ import org.eclipse.microprofile.openapi.annotations.Operation;
import org.eclipse.microprofile.openapi.annotations.media.Content; import org.eclipse.microprofile.openapi.annotations.media.Content;
import org.eclipse.microprofile.openapi.annotations.media.ExampleObject; import org.eclipse.microprofile.openapi.annotations.media.ExampleObject;
import org.eclipse.microprofile.openapi.annotations.media.Schema; import org.eclipse.microprofile.openapi.annotations.media.Schema;
import org.eclipse.microprofile.openapi.annotations.media.SchemaProperty;
import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; import org.eclipse.microprofile.openapi.annotations.parameters.Parameter;
import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
import org.eclipse.microprofile.openapi.annotations.responses.APIResponses; import org.eclipse.microprofile.openapi.annotations.responses.APIResponses;
@ -49,7 +52,19 @@ public class LegalCustomerProductDirectoryResource {
description = "Operación exitosa", description = "Operación exitosa",
content = @Content( content = @Content(
mediaType = MediaType.APPLICATION_JSON, mediaType = MediaType.APPLICATION_JSON,
schema = @Schema(implementation = ApiResponse.class), schema = @Schema(
implementation = ApiResponse.class,
properties = {
@SchemaProperty(
name = "data",
oneOf = {LegalCustomerProductDirectoryResponse.class}
),
@SchemaProperty(
name = "statusResponse",
implementation = StatusResponse.class
)
}
),
examples = @ExampleObject( examples = @ExampleObject(
name = "Ejemplo exitoso", name = "Ejemplo exitoso",
value = """ value = """
@ -63,80 +78,68 @@ public class LegalCustomerProductDirectoryResource {
} }
], ],
"partyType": "ORGANISATION", "partyType": "ORGANISATION",
"partyDateTime": [],
"partyIdentification": [ "partyIdentification": [
{ {
"partyIdentificationType": "TAX_IDENTIFICATION_NUMBER", "partyIdentificationType": "TAX_IDENTIFICATION_NUMBER",
"partyIdentification": { "partyIdentification": {
"identifierValue": "J000000001", "identifierValue": "J000000001"
"issuingAuthority": ""
} }
} }
], ]
"partyLegalStructureType": ""
}, },
"accounts": [ "accounts": [
{ {
"accountStatus": { "accountStatus": {
"status": "D" "status": "A",
"statusType": "ENABLED"
}, },
"accountType": "MMK",
"accountIdentification": [ "accountIdentification": [
{ {
"accountIdentificationType": "NUMERO_CUENTA", "accountIdentificationType": "ACCOUNT_NUMBER",
"accountIdentification": { "accountIdentification": {
"identifierValue": "01340025330253093528", "identifierValue": "01340025330253093528"
"issuingAuthority": ""
} }
}, },
{ {
"accountIdentificationType": "NUMERO_BANCO", "accountIdentificationType": "BANK_NUMBER",
"accountIdentification": { "accountIdentification": {
"identifierValue": "01", "identifierValue": "01"
"issuingAuthority": ""
} }
}, },
{ {
"accountIdentificationType": "CODIGO_PRODUCTO", "accountIdentificationType": "PRODUCT_CODE",
"accountIdentification": { "accountIdentification": {
"identifierValue": "3980", "identifierValue": "3980"
"issuingAuthority": ""
} }
}, },
{ {
"accountIdentificationType": "CLASE_CUENTA", "accountIdentificationType": "ACCOUNT_CLASS",
"accountIdentification": { "accountIdentification": {
"identifierValue": "80", "identifierValue": "80"
"issuingAuthority": ""
}
},
{
"accountIdentificationType": "TIPO_CUENTA",
"accountIdentification": {
"identifierValue": "MMK",
"issuingAuthority": ""
} }
} }
], ],
"accountBalance": [ "accountBalance": [
{ {
"balanceAmount": 390417.36, "balanceAmount": 390417.36,
"balanceType": "SALDO_DISPONIBLE" "balanceType": "AVAILABLE_BALANCE"
}, },
{ {
"balanceAmount": 100000.00, "balanceAmount": 100000.00,
"balanceType": "MAXIMO_DIARIO" "balanceType": "DAILY_MAXIMUM"
},
{
"balanceAmount": 100000.00,
"balanceType": "MAXIMO_TRANSACCION"
}, },
{ {
"balanceAmount": 3000000.00, "balanceAmount": 3000000.00,
"balanceType": "MAXIMO_MENSUAL" "balanceType": "MONTHLY_MAXIMUM"
}, },
{ {
"balanceAmount": 0.01, "balanceAmount": 0.01,
"balanceType": "MINIMO_TRANSACCION" "balanceType": "TRANSACTION_MINIMUM"
},
{
"balanceAmount": 100000.00,
"balanceType": "TRANSACTION_MAXIMUM"
} }
], ],
"accountCurrency": [ "accountCurrency": [
@ -145,22 +148,31 @@ public class LegalCustomerProductDirectoryResource {
"currencyType": "BASE" "currencyType": "BASE"
} }
], ],
"accountDescription": "TASCA RESTAURANT GOOD WORLD CEN, C.A.",
"accountInvolvement": [ "accountInvolvement": [
{ {
"accountInvolvementType": "CONTACTO_TELEFONICO", "accountInvolvementType": "PARTY_IS_OWNER_OF_ACCOUNT",
"partyReference": { "partyReference": {
"partyIdentification": [ "partyIdentification": [
{ {
"partyIdentificationType": "TELEPHONE_NUMBER", "partyIdentificationType": "TELEPHONE_NUMBER",
"partyIdentification": { "partyIdentification": {
"identifierValue": "04122710660", "identifierValue": "04122710660"
"issuingAuthority": "" }
},
{
"partyIdentificationType": "TELEPHONE_OPERATOR",
"partyIdentification": {
"identifierValue": "0412"
} }
} }
] ]
} }
} }
],
"accountRelationship": [
{
"accountRelationshipType": "ACCOUNT_IS_SUB_ACCOUNT_FOR_ACCOUNT"
}
] ]
} }
] ]
@ -180,7 +192,19 @@ public class LegalCustomerProductDirectoryResource {
description = "Error en formato o campo requerido", description = "Error en formato o campo requerido",
content = @Content( content = @Content(
mediaType = MediaType.APPLICATION_JSON, mediaType = MediaType.APPLICATION_JSON,
schema = @Schema(implementation = ApiResponse.class), schema = @Schema(
implementation = ApiResponse.class,
properties = {
@SchemaProperty(
name = "data",
oneOf = {LegalCustomerProductDirectoryResponse.class}
),
@SchemaProperty(
name = "statusResponse",
implementation = StatusResponse.class
)
}
),
examples = { examples = {
@ExampleObject( @ExampleObject(
name = "Error VDE01 - Campo obligatorio", name = "Error VDE01 - Campo obligatorio",
@ -214,7 +238,19 @@ public class LegalCustomerProductDirectoryResource {
description = "No autorizado", description = "No autorizado",
content = @Content( content = @Content(
mediaType = MediaType.APPLICATION_JSON, mediaType = MediaType.APPLICATION_JSON,
schema = @Schema(implementation = ApiResponse.class), schema = @Schema(
implementation = ApiResponse.class,
properties = {
@SchemaProperty(
name = "data",
oneOf = {LegalCustomerProductDirectoryResponse.class}
),
@SchemaProperty(
name = "statusResponse",
implementation = StatusResponse.class
)
}
),
examples = { examples = {
@ExampleObject( @ExampleObject(
name = "Error VRN08 - Identificación del fintechId no coincide", name = "Error VRN08 - Identificación del fintechId no coincide",
@ -236,7 +272,19 @@ public class LegalCustomerProductDirectoryResource {
description = "Servicio no disponible", description = "Servicio no disponible",
content = @Content( content = @Content(
mediaType = MediaType.APPLICATION_JSON, mediaType = MediaType.APPLICATION_JSON,
schema = @Schema(implementation = ApiResponse.class), schema = @Schema(
implementation = ApiResponse.class,
properties = {
@SchemaProperty(
name = "data",
oneOf = {LegalCustomerProductDirectoryResponse.class}
),
@SchemaProperty(
name = "statusResponse",
implementation = StatusResponse.class
)
}
),
examples = { examples = {
@ExampleObject( @ExampleObject(
name = "Error VRN04 - Fuera de horario", name = "Error VRN04 - Fuera de horario",
@ -277,47 +325,7 @@ public class LegalCustomerProductDirectoryResource {
@PathParam("customerIbsNumber") @PathParam("customerIbsNumber")
@Parameter(description = "Número de cliente IBS (VCUSCUN)", example = "200053197") @Parameter(description = "Número de cliente IBS (VCUSCUN)", example = "200053197")
String customerIbsNumber, String customerIbsNumber
@QueryParam("bankNumber")
@Parameter(description = "Número de banco (VACMBNK)", example = "01")
String bankNumber,
@QueryParam("currencyCode")
@Parameter(description = "Código de moneda (VACMCCY)", example = "BS")
String currencyCode,
@QueryParam("accountStatus")
@Parameter(description = "Estatus de cuenta (VACMAST). 'A'=Activa BS, 'O'=Activa USD, 'ACTBSUSD'=Ambas", example = "A")
String accountStatus,
@QueryParam("productCvCode")
@Parameter(description = "Código de Producto Cuenta Verde (VACMPROCV). 'CV'=Cuenta verde, 'CVFL'=Cuenta verde con opción activa", example = "CV")
String productCvCode,
@QueryParam("productCode")
@Parameter(description = "Código de producto (VACMPRO)", example = "3980")
String productCode,
@QueryParam("channelCode")
@Parameter(description = "Código de canal (VAFILICANAL)", example = "APP")
String channelCode,
@QueryParam("serviceType")
@Parameter(description = "Tipo de servicio (VAFILICOSER)", example = "P2P")
String serviceType,
@QueryParam("affiliationStatus")
@Parameter(description = "Estatus de afiliación (VAFILISTATU)", example = "A")
String affiliationStatus,
@QueryParam("limitType")
@Parameter(description = "Pagador/Receptor (VALIMIT). 'PAG'=Pagadora, 'REC'=Receptora", example = "PAG")
String limitType,
@QueryParam("casheaIndicator")
@Parameter(description = "Indicador cash (VCASHEA). 'SI'=En tabla cashea, 'NO'=No en tabla cashea", example = "SI")
String casheaIndicator
) { ) {
log.info("Iniciando consulta para cliente IBS: {}", customerIbsNumber); log.info("Iniciando consulta para cliente IBS: {}", customerIbsNumber);
@ -327,16 +335,6 @@ public class LegalCustomerProductDirectoryResource {
.customerIbsNumber(Objects.toString(customerIbsNumber, "")) .customerIbsNumber(Objects.toString(customerIbsNumber, ""))
.customerReferenceFintechId(customerReferenceFintechId) .customerReferenceFintechId(customerReferenceFintechId)
.appId(appId) .appId(appId)
.bankNumber(Objects.toString(bankNumber, ""))
.currencyCode(Objects.toString(currencyCode, ""))
.accountStatus(Objects.toString(accountStatus, ""))
.productCvCode(Objects.toString(productCvCode, ""))
.productCode(Objects.toString(productCode, ""))
.channelCode(Objects.toString(channelCode, ""))
.serviceType(Objects.toString(serviceType, ""))
.affiliationStatus(Objects.toString(affiliationStatus, ""))
.limitType(Objects.toString(limitType, ""))
.casheaIndicator(Objects.toString(casheaIndicator, ""))
.build() .build()
)).build(); )).build();
} catch (BaseApiException e) { } catch (BaseApiException e) {

View File

@ -1,6 +1,7 @@
package com.banesco.module.party.domain.model; package com.banesco.module.party.domain.model;
import com.banesco.common.domain.model.Name; import com.banesco.common.domain.model.Name;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.quarkus.runtime.annotations.RegisterForReflection; import io.quarkus.runtime.annotations.RegisterForReflection;
import lombok.*; import lombok.*;
@ -12,10 +13,9 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@RegisterForReflection @RegisterForReflection
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Party { public class Party {
private List<Name> partyName; private List<Name> partyName;
private PartyType partyType; private PartyType partyType;
private List<PartyDateTime> partyDateTime;
private List<PartyIdentification> partyIdentification; private List<PartyIdentification> partyIdentification;
private String partyLegalStructureType;
} }

View File

@ -15,5 +15,6 @@ public enum PartyIdentificationType {
IDENTITY_CARD_NUMBER, IDENTITY_CARD_NUMBER,
CONCAT, CONCAT,
NATIONAL_REGISTRATION_IDENTIFICATION_NUMBER, NATIONAL_REGISTRATION_IDENTIFICATION_NUMBER,
TELEPHONE_NUMBER TELEPHONE_NUMBER,
TELEPHONE_OPERATOR,
} }

View File

@ -11,7 +11,7 @@ api:
allowed: allowed:
request-validation: request-validation:
customer-ibs-number: '\d+' customer-ibs-number: '\d+'
account-status: '^(A|O|ACTBSUSD)$' account-status: '^(A)$'
product-cv-code: '^(CV|CVFL)$' product-cv-code: '^(CV|CVFL)$'
limit-type: '^(PAG|REC)$' limit-type: '^(PAG|REC)$'
cachea-indicator: '^(SI|NO)$' cachea-indicator: '^(SI|NO)$'